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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.ApplicationModel.UserDataAccounts.idl";

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        namespace UserDataAccounts
        {
            typedef enum UserDataAccountContentKinds UserDataAccountContentKinds;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace UserDataAccounts
        {
            namespace Provider
            {
                typedef enum UserDataAccountProviderOperationKind UserDataAccountProviderOperationKind;

                typedef enum UserDataAccountProviderPartnerAccountKind UserDataAccountProviderPartnerAccountKind;

                interface IUserDataAccountPartnerAccountInfo;

                interface IUserDataAccountProviderAddAccountOperation;

                interface IUserDataAccountProviderOperation;

                interface IUserDataAccountProviderResolveErrorsOperation;

                interface IUserDataAccountProviderSettingsOperation;

                runtimeclass UserDataAccountPartnerAccountInfo;

                runtimeclass UserDataAccountProviderAddAccountOperation;

                runtimeclass UserDataAccountProviderResolveErrorsOperation;

                runtimeclass UserDataAccountProviderSettingsOperation;
            }
        }
    }
}

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

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

                    interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.UserDataAccounts.Provider.UserDataAccountPartnerAccountInfo*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace UserDataAccounts
        {
            namespace Provider
            {
                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                enum UserDataAccountProviderOperationKind
                {
                    AddAccount    = 0,
                    Settings      = 1,
                    ResolveErrors = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                enum UserDataAccountProviderPartnerAccountKind
                {
                    Exchange  = 0,
                    PopOrImap = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.ApplicationModel.UserDataAccounts.Provider.UserDataAccountPartnerAccountInfo)]
                [uuid(5F200037-F6EF-4EC3-8630-012C59C1149F)]
                interface IUserDataAccountPartnerAccountInfo : IInspectable
                {
                    [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                    [propget] HRESULT Priority([out] [retval] UINT32* value);
                    [propget] HRESULT AccountKind([out] [retval] Windows.ApplicationModel.UserDataAccounts.Provider.UserDataAccountProviderPartnerAccountKind* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.ApplicationModel.UserDataAccounts.Provider.UserDataAccountProviderAddAccountOperation)]
                [uuid(B9C72530-3F84-4B5D-8EAA-45E97AA842ED)]
                interface IUserDataAccountProviderAddAccountOperation : IInspectable
                    requires
                        Windows.ApplicationModel.UserDataAccounts.Provider.IUserDataAccountProviderOperation
                {
                    [propget] HRESULT ContentKinds([out] [retval] Windows.ApplicationModel.UserDataAccounts.UserDataAccountContentKinds* value);
                    [propget] HRESULT PartnerAccountInfos([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.UserDataAccounts.Provider.UserDataAccountPartnerAccountInfo*>** value);
                    HRESULT ReportCompleted([in] HSTRING userDataAccountId);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [uuid(A20AAD63-888C-4A62-A3DD-34D07A802B2B)]
                interface IUserDataAccountProviderOperation : IInspectable
                {
                    [propget] HRESULT Kind([out] [retval] Windows.ApplicationModel.UserDataAccounts.Provider.UserDataAccountProviderOperationKind* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.ApplicationModel.UserDataAccounts.Provider.UserDataAccountProviderResolveErrorsOperation)]
                [uuid(6235DC15-BFCB-41E1-9957-9759A28846CC)]
                interface IUserDataAccountProviderResolveErrorsOperation : IInspectable
                    requires
                        Windows.ApplicationModel.UserDataAccounts.Provider.IUserDataAccountProviderOperation
                {
                    [propget] HRESULT UserDataAccountId([out] [retval] HSTRING* value);
                    HRESULT ReportCompleted();
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.ApplicationModel.UserDataAccounts.Provider.UserDataAccountProviderSettingsOperation)]
                [uuid(92034DB7-8648-4F30-ACFA-3002658CA80D)]
                interface IUserDataAccountProviderSettingsOperation : IInspectable
                    requires
                        Windows.ApplicationModel.UserDataAccounts.Provider.IUserDataAccountProviderOperation
                {
                    [propget] HRESULT UserDataAccountId([out] [retval] HSTRING* value);
                    HRESULT ReportCompleted();
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                runtimeclass UserDataAccountPartnerAccountInfo
                {
                    [default] interface Windows.ApplicationModel.UserDataAccounts.Provider.IUserDataAccountPartnerAccountInfo;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                runtimeclass UserDataAccountProviderAddAccountOperation
                {
                    [default] interface Windows.ApplicationModel.UserDataAccounts.Provider.IUserDataAccountProviderAddAccountOperation;
                    interface Windows.ApplicationModel.UserDataAccounts.Provider.IUserDataAccountProviderOperation;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                runtimeclass UserDataAccountProviderResolveErrorsOperation
                {
                    [default] interface Windows.ApplicationModel.UserDataAccounts.Provider.IUserDataAccountProviderResolveErrorsOperation;
                    interface Windows.ApplicationModel.UserDataAccounts.Provider.IUserDataAccountProviderOperation;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                runtimeclass UserDataAccountProviderSettingsOperation
                {
                    [default] interface Windows.ApplicationModel.UserDataAccounts.Provider.IUserDataAccountProviderSettingsOperation;
                    interface Windows.ApplicationModel.UserDataAccounts.Provider.IUserDataAccountProviderOperation;
                }
            }
        }
    }
}
