//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0013
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.ApplicationModel.Appointments.idl";
import "Windows.ApplicationModel.Contacts.idl";
import "Windows.ApplicationModel.Email.idl";
import "Windows.Storage.Streams.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Eapplicationmodel2Eappointments_h__)")
cpp_quote("#include <Windows.ApplicationModel.Appointments.h>")
cpp_quote("#endif // !defined(__windows2Eapplicationmodel2Eappointments_h__)")
cpp_quote("#if !defined(__windows2Eapplicationmodel2Econtacts_h__)")
cpp_quote("#include <Windows.ApplicationModel.Contacts.h>")
cpp_quote("#endif // !defined(__windows2Eapplicationmodel2Econtacts_h__)")
cpp_quote("#if !defined(__windows2Eapplicationmodel2Eemail_h__)")
cpp_quote("#include <Windows.ApplicationModel.Email.h>")
cpp_quote("#endif // !defined(__windows2Eapplicationmodel2Eemail_h__)")
cpp_quote("#if !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#include <Windows.Storage.Streams.h>")
cpp_quote("#endif // !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Appointments
        {
            runtimeclass AppointmentCalendar;
        }
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Contacts
        {
            runtimeclass ContactAnnotationList;

            runtimeclass ContactList;
        }
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Email
        {
            runtimeclass EmailMailbox;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IRandomAccessStreamReference;
        }
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace UserDataAccounts
        {
            typedef enum UserDataAccountOtherAppReadAccess UserDataAccountOtherAppReadAccess;

            typedef enum UserDataAccountStoreAccessType UserDataAccountStoreAccessType;

            typedef enum UserDataAccountContentKinds UserDataAccountContentKinds;

            interface IUserDataAccount;

            interface IUserDataAccountStore;

            interface IUserDataAccountManagerStatics;

            runtimeclass UserDataAccount;

            runtimeclass UserDataAccountStore;

            runtimeclass UserDataAccountManager;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace ApplicationModel
    {
        namespace UserDataAccounts
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.UserDataAccounts.UserDataAccount*>;

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.UserDataAccounts.UserDataAccount*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.UserDataAccounts.UserDataAccount*>;

                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.UserDataAccounts.UserDataAccount*>;

                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.UserDataAccounts.UserDataAccountStore*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.UserDataAccounts.UserDataAccount*>*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace UserDataAccounts
        {
            [version(0x0A000000)]
            enum UserDataAccountOtherAppReadAccess
            {
                SystemOnly = 0,
                Full       = 1
            };

            [version(0x0A000000)]
            enum UserDataAccountStoreAccessType
            {
                AllAccountsReadOnly  = 0,
                AppAccountsReadWrite = 1
            };

            [flags]
            [version(0x0A000000)]
            enum UserDataAccountContentKinds
            {
                Email       = 0x1,
                Contact     = 0x2,
                Appointment = 0x4
            };

            [exclusiveto(Windows.ApplicationModel.UserDataAccounts.UserDataAccount)]
            [uuid(B9C4367E-B348-4910-BE94-4AD4BBA6DEA7)]
            [version(0x0A000000)]
            interface IUserDataAccount : IInspectable
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [propget] HRESULT UserDisplayName([out] [retval] HSTRING* value);
                [propput] HRESULT UserDisplayName([in] HSTRING value);
                [propget] HRESULT OtherAppReadAccess([out] [retval] Windows.ApplicationModel.UserDataAccounts.UserDataAccountOtherAppReadAccess* value);
                [propput] HRESULT OtherAppReadAccess([in] Windows.ApplicationModel.UserDataAccounts.UserDataAccountOtherAppReadAccess value);
                [propget] HRESULT Icon([out] [retval] Windows.Storage.Streams.IRandomAccessStreamReference** value);
                [propget] HRESULT DeviceAccountTypeId([out] [retval] HSTRING* value);
                [propget] HRESULT PackageFamilyName([out] [retval] HSTRING* value);
                HRESULT SaveAsync([out] [retval] Windows.Foundation.IAsyncAction** result);
                HRESULT DeleteAsync([out] [retval] Windows.Foundation.IAsyncAction** result);
                HRESULT FindAppointmentCalendarsAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Appointments.AppointmentCalendar*>*>** result);
                HRESULT FindEmailMailboxesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Email.EmailMailbox*>*>** result);
                HRESULT FindContactListsAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.ContactList*>*>** result);
                HRESULT FindContactAnnotationListsAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.ContactAnnotationList*>*>** result);
            }

            [exclusiveto(Windows.ApplicationModel.UserDataAccounts.UserDataAccountStore)]
            [uuid(2073B0AD-7D0A-4E76-BF45-2368F978A59A)]
            [version(0x0A000000)]
            interface IUserDataAccountStore : IInspectable
            {
                HRESULT FindAccountsAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.UserDataAccounts.UserDataAccount*>*>** result);
                HRESULT GetAccountAsync([in] HSTRING id, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.UserDataAccounts.UserDataAccount*>** result);
                HRESULT CreateAccountAsync([in] HSTRING userDisplayName, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.UserDataAccounts.UserDataAccount*>** result);
            }

            [exclusiveto(Windows.ApplicationModel.UserDataAccounts.UserDataAccountManager)]
            [uuid(0D9B89EA-1928-4A20-86D5-3C737F7DC3B0)]
            [version(0x0A000000)]
            interface IUserDataAccountManagerStatics : IInspectable
            {
                HRESULT RequestStoreAsync([in] Windows.ApplicationModel.UserDataAccounts.UserDataAccountStoreAccessType storeAccessType, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.UserDataAccounts.UserDataAccountStore*>** result);
                HRESULT ShowAddAccountAsync([in] Windows.ApplicationModel.UserDataAccounts.UserDataAccountContentKinds contentKinds, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** result);
                HRESULT ShowAccountSettingsAsync([in] HSTRING id, [out] [retval] Windows.Foundation.IAsyncAction** result);
                HRESULT ShowAccountErrorResolverAsync([in] HSTRING id, [out] [retval] Windows.Foundation.IAsyncAction** result);
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass UserDataAccount
            {
                [default] interface Windows.ApplicationModel.UserDataAccounts.IUserDataAccount;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass UserDataAccountStore
            {
                [default] interface Windows.ApplicationModel.UserDataAccounts.IUserDataAccountStore;
            }

            [marshaling_behavior(agile)]
            [static(Windows.ApplicationModel.UserDataAccounts.IUserDataAccountManagerStatics, 0x0A000000)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass UserDataAccountManager
            {
            }
        }
    }
}
