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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Security.Credentials.idl";
import "Windows.System.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(__windows2Esecurity2Ecredentials_h__)")
cpp_quote("#include <Windows.Security.Credentials.h>")
cpp_quote("#endif // !defined(__windows2Esecurity2Ecredentials_h__)")
cpp_quote("#if !defined(__windows2Esystem_h__)")
cpp_quote("#include <Windows.System.h>")
cpp_quote("#endif // !defined(__windows2Esystem_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Credentials
        {
            runtimeclass WebAccount;

            runtimeclass WebAccountProvider;
        }
    }
}
namespace Windows
{
    namespace System
    {
        runtimeclass User;
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Authentication
        {
            namespace Web
            {
                namespace Core
                {
                    typedef enum WebTokenRequestPromptType WebTokenRequestPromptType;

                    typedef enum WebTokenRequestStatus WebTokenRequestStatus;

                    interface IWebTokenRequest;

                    interface IWebTokenRequest2;

                    interface IWebTokenRequestFactory;

                    interface IWebAuthenticationCoreManagerStatics;

                    interface IWebAuthenticationCoreManagerStatics2;

                    interface IWebProviderError;

                    interface IWebProviderErrorFactory;

                    interface IWebTokenRequestResult;

                    interface IWebTokenResponse;

                    interface IWebTokenResponseFactory;

                    runtimeclass WebTokenRequest;

                    runtimeclass WebAuthenticationCoreManager;

                    runtimeclass WebProviderError;

                    runtimeclass WebTokenResponse;

                    runtimeclass WebTokenRequestResult;
                }
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Security
    {
        namespace Authentication
        {
            namespace Web
            {
                namespace Core
                {
                    declare
                    {
                        interface Windows.Foundation.Collections.IIterable<Windows.Security.Authentication.Web.Core.WebTokenResponse*>;

                        interface Windows.Foundation.Collections.IIterator<Windows.Security.Authentication.Web.Core.WebTokenResponse*>;

                        interface Windows.Foundation.Collections.IVectorView<Windows.Security.Authentication.Web.Core.WebTokenResponse*>;

                        interface Windows.Foundation.IAsyncOperation<Windows.Security.Authentication.Web.Core.WebTokenRequestResult*>;
                    }
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Security
    {
        namespace Authentication
        {
            namespace Web
            {
                namespace Core
                {
                    [version(0x0A000000)]
                    enum WebTokenRequestPromptType
                    {
                        Default             = 0,
                        ForceAuthentication = 1
                    };

                    [version(0x0A000000)]
                    enum WebTokenRequestStatus
                    {
                        Success                     = 0,
                        UserCancel                  = 1,
                        AccountSwitch               = 2,
                        UserInteractionRequired     = 3,
                        AccountProviderNotAvailable = 4,
                        ProviderError               = 5
                    };

                    [exclusiveto(Windows.Security.Authentication.Web.Core.WebTokenRequest)]
                    [uuid(B77B4D68-ADCB-4673-B364-0CF7B35CAF97)]
                    [version(0x0A000000)]
                    interface IWebTokenRequest : IInspectable
                    {
                        [propget] HRESULT WebAccountProvider([out] [retval] Windows.Security.Credentials.WebAccountProvider** value);
                        [propget] HRESULT Scope([out] [retval] HSTRING* value);
                        [propget] HRESULT ClientId([out] [retval] HSTRING* value);
                        [propget] HRESULT PromptType([out] [retval] Windows.Security.Authentication.Web.Core.WebTokenRequestPromptType* value);
                        [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IMap<HSTRING, HSTRING>** requestProperties);
                    }

                    [exclusiveto(Windows.Security.Authentication.Web.Core.WebTokenRequest)]
                    [uuid(D700C079-30C8-4397-9654-961C3BE8B855)]
                    [version(0x0A000000)]
                    interface IWebTokenRequest2 : IInspectable
                    {
                        [propget] HRESULT AppProperties([out] [retval] Windows.Foundation.Collections.IMap<HSTRING, HSTRING>** requestProperties);
                    }

                    [exclusiveto(Windows.Security.Authentication.Web.Core.WebTokenRequest)]
                    [uuid(6CF2141C-0FF0-4C67-B84F-99DDBE4A72C9)]
                    [version(0x0A000000)]
                    interface IWebTokenRequestFactory : IInspectable
                    {
                        HRESULT Create([in] Windows.Security.Credentials.WebAccountProvider* provider, [in] HSTRING scope, [in] HSTRING clientId, [out] [retval] Windows.Security.Authentication.Web.Core.WebTokenRequest** webTokenRequest);
                        HRESULT CreateWithPromptType([in] Windows.Security.Credentials.WebAccountProvider* provider, [in] HSTRING scope, [in] HSTRING clientId, [in] Windows.Security.Authentication.Web.Core.WebTokenRequestPromptType promptType, [out] [retval] Windows.Security.Authentication.Web.Core.WebTokenRequest** webTokenRequest);
                        HRESULT CreateWithProvider([in] Windows.Security.Credentials.WebAccountProvider* provider, [out] [retval] Windows.Security.Authentication.Web.Core.WebTokenRequest** webTokenRequest);
                        HRESULT CreateWithScope([in] Windows.Security.Credentials.WebAccountProvider* provider, [in] HSTRING scope, [out] [retval] Windows.Security.Authentication.Web.Core.WebTokenRequest** webTokenRequest);
                    }

                    [exclusiveto(Windows.Security.Authentication.Web.Core.WebAuthenticationCoreManager)]
                    [uuid(6ACA7C92-A581-4479-9C10-752EFF44FD34)]
                    [version(0x0A000000)]
                    interface IWebAuthenticationCoreManagerStatics : IInspectable
                    {
                        [overload("GetTokenSilentlyAsync")] HRESULT GetTokenSilentlyAsync([in] Windows.Security.Authentication.Web.Core.WebTokenRequest* request, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Authentication.Web.Core.WebTokenRequestResult*>** asyncInfo);
                        [overload("GetTokenSilentlyAsync")] HRESULT GetTokenSilentlyWithWebAccountAsync([in] Windows.Security.Authentication.Web.Core.WebTokenRequest* request, [in] Windows.Security.Credentials.WebAccount* webAccount, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Authentication.Web.Core.WebTokenRequestResult*>** asyncInfo);
                        [overload("RequestTokenAsync")] HRESULT RequestTokenAsync([in] Windows.Security.Authentication.Web.Core.WebTokenRequest* request, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Authentication.Web.Core.WebTokenRequestResult*>** asyncInfo);
                        [overload("RequestTokenAsync")] HRESULT RequestTokenWithWebAccountAsync([in] Windows.Security.Authentication.Web.Core.WebTokenRequest* request, [in] Windows.Security.Credentials.WebAccount* webAccount, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Authentication.Web.Core.WebTokenRequestResult*>** asyncInfo);
                        HRESULT FindAccountAsync([in] Windows.Security.Credentials.WebAccountProvider* provider, [in] HSTRING webAccountId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Credentials.WebAccount*>** asyncInfo);
                        [overload("FindAccountProviderAsync")] HRESULT FindAccountProviderAsync([in] HSTRING webAccountProviderId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Credentials.WebAccountProvider*>** asyncInfo);
                        [overload("FindAccountProviderAsync")] HRESULT FindAccountProviderWithAuthorityAsync([in] HSTRING webAccountProviderId, [in] HSTRING authority, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Credentials.WebAccountProvider*>** asyncInfo);
                    }

                    [exclusiveto(Windows.Security.Authentication.Web.Core.WebAuthenticationCoreManager)]
                    [uuid(F584184A-8B57-4820-B6A4-70A5B6FCF44A)]
                    [version(0x0A000000)]
                    interface IWebAuthenticationCoreManagerStatics2 : IInspectable
                        requires
                            Windows.Security.Authentication.Web.Core.IWebAuthenticationCoreManagerStatics
                    {
                        [overload("FindAccountProviderAsync")] HRESULT FindAccountProviderWithAuthorityForUserAsync([in] HSTRING webAccountProviderId, [in] HSTRING authority, [in] Windows.System.User* user, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Credentials.WebAccountProvider*>** asyncInfo);
                    }

                    [exclusiveto(Windows.Security.Authentication.Web.Core.WebProviderError)]
                    [uuid(DB191BB1-50C5-4809-8DCA-09C99410245C)]
                    [version(0x0A000000)]
                    interface IWebProviderError : IInspectable
                    {
                        [propget] HRESULT ErrorCode([out] [retval] UINT32* value);
                        [propget] HRESULT ErrorMessage([out] [retval] HSTRING* value);
                        [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IMap<HSTRING, HSTRING>** value);
                    }

                    [exclusiveto(Windows.Security.Authentication.Web.Core.WebProviderError)]
                    [uuid(E3C40A2D-89EF-4E37-847F-A8B9D5A32910)]
                    [version(0x0A000000)]
                    interface IWebProviderErrorFactory : IInspectable
                    {
                        HRESULT Create([in] UINT32 errorCode, [in] HSTRING errorMessage, [out] [retval] Windows.Security.Authentication.Web.Core.WebProviderError** webProviderError);
                    }

                    [exclusiveto(Windows.Security.Authentication.Web.Core.WebTokenRequestResult)]
                    [uuid(C12A8305-D1F8-4483-8D54-38FE292784FF)]
                    [version(0x0A000000)]
                    interface IWebTokenRequestResult : IInspectable
                    {
                        [propget] HRESULT ResponseData([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Security.Authentication.Web.Core.WebTokenResponse*>** value);
                        [propget] HRESULT ResponseStatus([out] [retval] Windows.Security.Authentication.Web.Core.WebTokenRequestStatus* value);
                        [propget] HRESULT ResponseError([out] [retval] Windows.Security.Authentication.Web.Core.WebProviderError** value);
                        HRESULT InvalidateCacheAsync([out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                    }

                    [exclusiveto(Windows.Security.Authentication.Web.Core.WebTokenResponse)]
                    [uuid(67A7C5CA-83F6-44C6-A3B1-0EB69E41FA8A)]
                    [version(0x0A000000)]
                    interface IWebTokenResponse : IInspectable
                    {
                        [propget] HRESULT Token([out] [retval] HSTRING* value);
                        [propget] HRESULT ProviderError([out] [retval] Windows.Security.Authentication.Web.Core.WebProviderError** value);
                        [propget] HRESULT WebAccount([out] [retval] Windows.Security.Credentials.WebAccount** value);
                        [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IMap<HSTRING, HSTRING>** value);
                    }

                    [exclusiveto(Windows.Security.Authentication.Web.Core.WebTokenResponse)]
                    [uuid(AB6BF7F8-5450-4EF6-97F7-052B0431C0F0)]
                    [version(0x0A000000)]
                    interface IWebTokenResponseFactory : IInspectable
                    {
                        HRESULT CreateWithToken([in] HSTRING token, [out] [retval] Windows.Security.Authentication.Web.Core.WebTokenResponse** webTokenResponse);
                        HRESULT CreateWithTokenAndAccount([in] HSTRING token, [in] Windows.Security.Credentials.WebAccount* webAccount, [out] [retval] Windows.Security.Authentication.Web.Core.WebTokenResponse** webTokenResponse);
                        HRESULT CreateWithTokenAccountAndError([in] HSTRING token, [in] Windows.Security.Credentials.WebAccount* webAccount, [in] Windows.Security.Authentication.Web.Core.WebProviderError* error, [out] [retval] Windows.Security.Authentication.Web.Core.WebTokenResponse** webTokenResponse);
                    }

                    [activatable(Windows.Security.Authentication.Web.Core.IWebTokenRequestFactory, 0x0A000000)]
                    [marshaling_behavior(agile)]
                    [threading(both)]
                    [version(0x0A000000)]
                    runtimeclass WebTokenRequest
                    {
                        [default] interface Windows.Security.Authentication.Web.Core.IWebTokenRequest;
                    }

                    [marshaling_behavior(agile)]
                    [static(Windows.Security.Authentication.Web.Core.IWebAuthenticationCoreManagerStatics, 0x0A000000)]
                    [static(Windows.Security.Authentication.Web.Core.IWebAuthenticationCoreManagerStatics2, 0x0A000000)]
                    [threading(both)]
                    [version(0x0A000000)]
                    runtimeclass WebAuthenticationCoreManager
                    {
                    }

                    [activatable(Windows.Security.Authentication.Web.Core.IWebProviderErrorFactory, 0x0A000000)]
                    [marshaling_behavior(agile)]
                    [version(0x0A000000)]
                    runtimeclass WebProviderError
                    {
                        [default] interface Windows.Security.Authentication.Web.Core.IWebProviderError;
                    }

                    [activatable(0x0A000000)]
                    [activatable(Windows.Security.Authentication.Web.Core.IWebTokenResponseFactory, 0x0A000000)]
                    [marshaling_behavior(agile)]
                    [threading(both)]
                    [version(0x0A000000)]
                    runtimeclass WebTokenResponse
                    {
                        [default] interface Windows.Security.Authentication.Web.Core.IWebTokenResponse;
                    }

                    [marshaling_behavior(agile)]
                    [version(0x0A000000)]
                    runtimeclass WebTokenRequestResult
                    {
                        [default] interface Windows.Security.Authentication.Web.Core.IWebTokenRequestResult;
                    }
                }
            }
        }
    }
}
