//
// 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";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            runtimeclass ValueSet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Authentication
        {
            namespace Web
            {
                typedef enum TokenBindingKeyType TokenBindingKeyType;

                typedef enum WebAuthenticationOptions WebAuthenticationOptions;

                typedef enum WebAuthenticationStatus WebAuthenticationStatus;

                interface IWebAuthenticationBrokerStatics;

                interface IWebAuthenticationBrokerStatics2;

                interface IWebAuthenticationResult;

                runtimeclass WebAuthenticationBroker;

                runtimeclass WebAuthenticationResult;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Security
    {
        namespace Authentication
        {
            namespace Web
            {
                declare
                {
                    interface Windows.Foundation.IAsyncOperation<Windows.Security.Authentication.Web.WebAuthenticationResult*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Security
    {
        namespace Authentication
        {
            namespace Web
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum TokenBindingKeyType
                {
                    Rsa2048     = 0,
                    EcdsaP256   = 1,
                    [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                    AnyExisting = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [flags]
                enum WebAuthenticationOptions
                {
                    None                = 0x0,
                    SilentMode          = 0x1,
                    UseTitle            = 0x2,
                    UseHttpPost         = 0x4,
                    UseCorporateNetwork = 0x8
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum WebAuthenticationStatus
                {
                    Success    = 0,
                    UserCancel = 1,
                    ErrorHttp  = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Authentication.Web.WebAuthenticationBroker)]
                [uuid(2F149F1A-E673-40B5-BC22-201A6864A37B)]
                interface IWebAuthenticationBrokerStatics : IInspectable
                {
                    [overload("AuthenticateAsync")] HRESULT AuthenticateWithCallbackUriAsync([in] Windows.Security.Authentication.Web.WebAuthenticationOptions options, [in] Windows.Foundation.Uri* requestUri, [in] Windows.Foundation.Uri* callbackUri, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Authentication.Web.WebAuthenticationResult*>** asyncInfo);
                    [overload("AuthenticateAsync")] HRESULT AuthenticateWithoutCallbackUriAsync([in] Windows.Security.Authentication.Web.WebAuthenticationOptions options, [in] Windows.Foundation.Uri* requestUri, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Authentication.Web.WebAuthenticationResult*>** asyncInfo);
                    HRESULT GetCurrentApplicationCallbackUri([out] [retval] Windows.Foundation.Uri** callbackUri);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Authentication.Web.WebAuthenticationBroker)]
                [uuid(73CDFB9E-14E7-41DA-A971-AAF4410B621E)]
                interface IWebAuthenticationBrokerStatics2 : IInspectable
                {
                    [overload("AuthenticateAndContinue")] HRESULT AuthenticateAndContinue([in] Windows.Foundation.Uri* requestUri);
                    [overload("AuthenticateAndContinue")] HRESULT AuthenticateWithCallbackUriAndContinue([in] Windows.Foundation.Uri* requestUri, [in] Windows.Foundation.Uri* callbackUri);
                    [overload("AuthenticateAndContinue")] HRESULT AuthenticateWithCallbackUriContinuationDataAndOptionsAndContinue([in] Windows.Foundation.Uri* requestUri, [in] Windows.Foundation.Uri* callbackUri, [in] Windows.Foundation.Collections.ValueSet* continuationData, [in] Windows.Security.Authentication.Web.WebAuthenticationOptions options);
                    [overload("AuthenticateSilentlyAsync")] HRESULT AuthenticateSilentlyAsync([in] Windows.Foundation.Uri* requestUri, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Authentication.Web.WebAuthenticationResult*>** asyncInfo);
                    [overload("AuthenticateSilentlyAsync")] HRESULT AuthenticateSilentlyWithOptionsAsync([in] Windows.Foundation.Uri* requestUri, [in] Windows.Security.Authentication.Web.WebAuthenticationOptions options, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Authentication.Web.WebAuthenticationResult*>** asyncInfo);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Authentication.Web.WebAuthenticationResult)]
                [uuid(64002B4B-EDE9-470A-A5CD-0323FAF6E262)]
                interface IWebAuthenticationResult : IInspectable
                {
                    [propget] HRESULT ResponseData([out] [retval] HSTRING* value);
                    [propget] HRESULT ResponseStatus([out] [retval] Windows.Security.Authentication.Web.WebAuthenticationStatus* value);
                    [propget] HRESULT ResponseErrorDetail([out] [retval] UINT32* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.Security.Authentication.Web.IWebAuthenticationBrokerStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.Security.Authentication.Web.IWebAuthenticationBrokerStatics2, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass WebAuthenticationBroker
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass WebAuthenticationResult
                {
                    [default] interface Windows.Security.Authentication.Web.IWebAuthenticationResult;
                }
            }
        }
    }
}
