//
// 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.Storage.Streams.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Credentials
        {
            namespace UI
            {
                typedef enum AuthenticationProtocol AuthenticationProtocol;

                typedef enum CredentialSaveOption CredentialSaveOption;

                typedef enum UserConsentVerificationResult UserConsentVerificationResult;

                typedef enum UserConsentVerifierAvailability UserConsentVerifierAvailability;

                interface ICredentialPickerOptions;

                interface ICredentialPickerResults;

                interface ICredentialPickerStatics;

                interface IUserConsentVerifierStatics;

                runtimeclass CredentialPicker;

                runtimeclass CredentialPickerOptions;

                runtimeclass CredentialPickerResults;

                runtimeclass UserConsentVerifier;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Security
    {
        namespace Credentials
        {
            namespace UI
            {
                declare
                {
                    interface Windows.Foundation.IAsyncOperation<Windows.Security.Credentials.UI.CredentialPickerResults*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Security.Credentials.UI.UserConsentVerificationResult>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Security.Credentials.UI.UserConsentVerifierAvailability>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Security
    {
        namespace Credentials
        {
            namespace UI
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum AuthenticationProtocol
                {
                    Basic     = 0,
                    Digest    = 1,
                    Ntlm      = 2,
                    Kerberos  = 3,
                    Negotiate = 4,
                    CredSsp   = 5,
                    Custom    = 6
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum CredentialSaveOption
                {
                    Unselected = 0,
                    Selected   = 1,
                    Hidden     = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum UserConsentVerificationResult
                {
                    Verified             = 0,
                    DeviceNotPresent     = 1,
                    NotConfiguredForUser = 2,
                    DisabledByPolicy     = 3,
                    DeviceBusy           = 4,
                    RetriesExhausted     = 5,
                    Canceled             = 6
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum UserConsentVerifierAvailability
                {
                    Available            = 0,
                    DeviceNotPresent     = 1,
                    NotConfiguredForUser = 2,
                    DisabledByPolicy     = 3,
                    DeviceBusy           = 4
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Credentials.UI.CredentialPickerOptions)]
                [uuid(965A0B4C-95FA-467F-992B-0B22E5859BF6)]
                interface ICredentialPickerOptions : IInspectable
                {
                    [propput] HRESULT Caption([in] HSTRING value);
                    [propget] HRESULT Caption([out] [retval] HSTRING* value);
                    [propput] HRESULT Message([in] HSTRING value);
                    [propget] HRESULT Message([out] [retval] HSTRING* value);
                    [propput] HRESULT ErrorCode([in] UINT32 value);
                    [propget] HRESULT ErrorCode([out] [retval] UINT32* value);
                    [propput] HRESULT TargetName([in] HSTRING value);
                    [propget] HRESULT TargetName([out] [retval] HSTRING* value);
                    [propput] HRESULT AuthenticationProtocol([in] Windows.Security.Credentials.UI.AuthenticationProtocol value);
                    [propget] HRESULT AuthenticationProtocol([out] [retval] Windows.Security.Credentials.UI.AuthenticationProtocol* value);
                    [propput] HRESULT CustomAuthenticationProtocol([in] HSTRING value);
                    [propget] HRESULT CustomAuthenticationProtocol([out] [retval] HSTRING* value);
                    [propput] HRESULT PreviousCredential([in] Windows.Storage.Streams.IBuffer* value);
                    [propget] HRESULT PreviousCredential([out] [retval] Windows.Storage.Streams.IBuffer** value);
                    [propput] HRESULT AlwaysDisplayDialog([in] boolean value);
                    [propget] HRESULT AlwaysDisplayDialog([out] [retval] boolean* value);
                    [propput] HRESULT CallerSavesCredential([in] boolean value);
                    [propget] HRESULT CallerSavesCredential([out] [retval] boolean* value);
                    [propput] HRESULT CredentialSaveOption([in] Windows.Security.Credentials.UI.CredentialSaveOption value);
                    [propget] HRESULT CredentialSaveOption([out] [retval] Windows.Security.Credentials.UI.CredentialSaveOption* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Credentials.UI.CredentialPickerResults)]
                [uuid(1948F99A-CC30-410C-9C38-CC0884C5B3D7)]
                interface ICredentialPickerResults : IInspectable
                {
                    [propget] HRESULT ErrorCode([out] [retval] UINT32* value);
                    [propget] HRESULT CredentialSaveOption([out] [retval] Windows.Security.Credentials.UI.CredentialSaveOption* value);
                    [propget] HRESULT CredentialSaved([out] [retval] boolean* value);
                    [propget] HRESULT Credential([out] [retval] Windows.Storage.Streams.IBuffer** value);
                    [propget] HRESULT CredentialDomainName([out] [retval] HSTRING* value);
                    [propget] HRESULT CredentialUserName([out] [retval] HSTRING* value);
                    [propget] HRESULT CredentialPassword([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Credentials.UI.CredentialPicker)]
                [uuid(AA3A5C73-C9EA-4782-99FB-E6D7E938E12D)]
                interface ICredentialPickerStatics : IInspectable
                {
                    [overload("PickAsync")] HRESULT PickWithOptionsAsync([in] Windows.Security.Credentials.UI.CredentialPickerOptions* options, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Credentials.UI.CredentialPickerResults*>** operation);
                    [overload("PickAsync")] HRESULT PickWithMessageAsync([in] HSTRING targetName, [in] HSTRING message, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Credentials.UI.CredentialPickerResults*>** operation);
                    [overload("PickAsync")] HRESULT PickWithCaptionAsync([in] HSTRING targetName, [in] HSTRING message, [in] HSTRING caption, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Credentials.UI.CredentialPickerResults*>** operation);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Security.Credentials.UI.UserConsentVerifier)]
                [uuid(AF4F3F91-564C-4DDC-B8B5-973447627C65)]
                interface IUserConsentVerifierStatics : IInspectable
                {
                    HRESULT CheckAvailabilityAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Credentials.UI.UserConsentVerifierAvailability>** result);
                    HRESULT RequestVerificationAsync([in] HSTRING message, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Credentials.UI.UserConsentVerificationResult>** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [static(Windows.Security.Credentials.UI.ICredentialPickerStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass CredentialPicker
                {
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(standard)]
                [threading(both)]
                runtimeclass CredentialPickerOptions
                {
                    [default] interface Windows.Security.Credentials.UI.ICredentialPickerOptions;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass CredentialPickerResults
                {
                    [default] interface Windows.Security.Credentials.UI.ICredentialPickerResults;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Security.Credentials.UI.IUserConsentVerifierStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass UserConsentVerifier
                {
                }
            }
        }
    }
}
