# WARNING: Please don't edit this file. It was generated by Python/WinRT v3.1.0

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property

import winrt._winrt
import winrt.system
import winrt.windows.data.json as windows_data_json
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.web.http as windows_web_http
import winrt.windows.web.http.headers as windows_web_http_headers
import winui3.microsoft.ui as microsoft_ui

from winui3.microsoft.security.authentication.oauth import CodeChallengeMethodKind, TokenFailureKind

Self = typing.TypeVar('Self')

@typing.final
class AuthFailure(winrt.system.Object):
    # Windows.Foundation.Collections.IMapView`2<System.String,System.String> Microsoft.Security.Authentication.OAuth.AuthFailure::get_AdditionalParams()
    @_property
    def additional_params(self) -> typing.Mapping[str, str]: ...
    # System.String Microsoft.Security.Authentication.OAuth.AuthFailure::get_Error()
    @_property
    def error(self) -> str: ...
    # System.String Microsoft.Security.Authentication.OAuth.AuthFailure::get_ErrorDescription()
    @_property
    def error_description(self) -> str: ...
    # Windows.Foundation.Uri Microsoft.Security.Authentication.OAuth.AuthFailure::get_ErrorUri()
    @_property
    def error_uri(self) -> windows_foundation.Uri: ...
    # System.String Microsoft.Security.Authentication.OAuth.AuthFailure::get_State()
    @_property
    def state(self) -> str: ...

@typing.final
class AuthRequestParams_Static(winrt._winrt.IInspectable_Static):
    # Microsoft.Security.Authentication.OAuth.AuthRequestParams Microsoft.Security.Authentication.OAuth.AuthRequestParams::CreateForAuthorizationCodeRequest(System.String)
    def create_for_authorization_code_request(cls, client_id: str, /) -> AuthRequestParams: ...
    # Microsoft.Security.Authentication.OAuth.AuthRequestParams Microsoft.Security.Authentication.OAuth.AuthRequestParams::CreateForAuthorizationCodeRequest(System.String,Windows.Foundation.Uri)
    def create_for_authorization_code_request2(cls, client_id: str, redirect_uri: windows_foundation.Uri, /) -> AuthRequestParams: ...

@typing.final
class AuthRequestParams(winrt.system.Object, metaclass=AuthRequestParams_Static):
    @typing.overload
    def __new__(cls: typing.Type[Self], response_type: str, client_id: str) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], response_type: str, client_id: str, redirect_uri: windows_foundation.Uri) -> Self: ...
    # System.String Microsoft.Security.Authentication.OAuth.AuthRequestParams::get_State()
    @_property
    def state(self) -> str: ...
    # System.Void Microsoft.Security.Authentication.OAuth.AuthRequestParams::put_State(System.String)
    @state.setter
    def state(self, value: str) -> None: ...
    # System.String Microsoft.Security.Authentication.OAuth.AuthRequestParams::get_Scope()
    @_property
    def scope(self) -> str: ...
    # System.Void Microsoft.Security.Authentication.OAuth.AuthRequestParams::put_Scope(System.String)
    @scope.setter
    def scope(self, value: str) -> None: ...
    # System.String Microsoft.Security.Authentication.OAuth.AuthRequestParams::get_ResponseType()
    @_property
    def response_type(self) -> str: ...
    # System.Void Microsoft.Security.Authentication.OAuth.AuthRequestParams::put_ResponseType(System.String)
    @response_type.setter
    def response_type(self, value: str) -> None: ...
    # Windows.Foundation.Uri Microsoft.Security.Authentication.OAuth.AuthRequestParams::get_RedirectUri()
    @_property
    def redirect_uri(self) -> windows_foundation.Uri: ...
    # System.Void Microsoft.Security.Authentication.OAuth.AuthRequestParams::put_RedirectUri(Windows.Foundation.Uri)
    @redirect_uri.setter
    def redirect_uri(self, value: windows_foundation.Uri) -> None: ...
    # Microsoft.Security.Authentication.OAuth.CodeChallengeMethodKind Microsoft.Security.Authentication.OAuth.AuthRequestParams::get_CodeChallengeMethod()
    @_property
    def code_challenge_method(self) -> CodeChallengeMethodKind: ...
    # System.Void Microsoft.Security.Authentication.OAuth.AuthRequestParams::put_CodeChallengeMethod(Microsoft.Security.Authentication.OAuth.CodeChallengeMethodKind)
    @code_challenge_method.setter
    def code_challenge_method(self, value: CodeChallengeMethodKind) -> None: ...
    # System.String Microsoft.Security.Authentication.OAuth.AuthRequestParams::get_CodeChallenge()
    @_property
    def code_challenge(self) -> str: ...
    # System.Void Microsoft.Security.Authentication.OAuth.AuthRequestParams::put_CodeChallenge(System.String)
    @code_challenge.setter
    def code_challenge(self, value: str) -> None: ...
    # System.String Microsoft.Security.Authentication.OAuth.AuthRequestParams::get_ClientId()
    @_property
    def client_id(self) -> str: ...
    # System.Void Microsoft.Security.Authentication.OAuth.AuthRequestParams::put_ClientId(System.String)
    @client_id.setter
    def client_id(self, value: str) -> None: ...
    # Windows.Foundation.Collections.IMap`2<System.String,System.String> Microsoft.Security.Authentication.OAuth.AuthRequestParams::get_AdditionalParams()
    @_property
    def additional_params(self) -> typing.MutableMapping[str, str]: ...

@typing.final
class AuthRequestResult(winrt.system.Object):
    # Microsoft.Security.Authentication.OAuth.AuthFailure Microsoft.Security.Authentication.OAuth.AuthRequestResult::get_Failure()
    @_property
    def failure(self) -> AuthFailure: ...
    # Microsoft.Security.Authentication.OAuth.AuthResponse Microsoft.Security.Authentication.OAuth.AuthRequestResult::get_Response()
    @_property
    def response(self) -> AuthResponse: ...
    # Windows.Foundation.Uri Microsoft.Security.Authentication.OAuth.AuthRequestResult::get_ResponseUri()
    @_property
    def response_uri(self) -> windows_foundation.Uri: ...

@typing.final
class AuthResponse(winrt.system.Object):
    # System.String Microsoft.Security.Authentication.OAuth.AuthResponse::get_AccessToken()
    @_property
    def access_token(self) -> str: ...
    # Windows.Foundation.Collections.IMapView`2<System.String,System.String> Microsoft.Security.Authentication.OAuth.AuthResponse::get_AdditionalParams()
    @_property
    def additional_params(self) -> typing.Mapping[str, str]: ...
    # System.String Microsoft.Security.Authentication.OAuth.AuthResponse::get_Code()
    @_property
    def code(self) -> str: ...
    # System.String Microsoft.Security.Authentication.OAuth.AuthResponse::get_ExpiresIn()
    @_property
    def expires_in(self) -> str: ...
    # System.String Microsoft.Security.Authentication.OAuth.AuthResponse::get_Scope()
    @_property
    def scope(self) -> str: ...
    # System.String Microsoft.Security.Authentication.OAuth.AuthResponse::get_State()
    @_property
    def state(self) -> str: ...
    # System.String Microsoft.Security.Authentication.OAuth.AuthResponse::get_TokenType()
    @_property
    def token_type(self) -> str: ...

@typing.final
class ClientAuthentication_Static(winrt._winrt.IInspectable_Static):
    # Microsoft.Security.Authentication.OAuth.ClientAuthentication Microsoft.Security.Authentication.OAuth.ClientAuthentication::CreateForBasicAuthorization(System.String,System.String)
    def create_for_basic_authorization(cls, client_id: str, client_secret: str, /) -> ClientAuthentication: ...

@typing.final
class ClientAuthentication(winrt.system.Object, metaclass=ClientAuthentication_Static):
    @typing.overload
    def __new__(cls: typing.Type[Self], authorization: windows_web_http_headers.HttpCredentialsHeaderValue) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Web.Http.Headers.HttpCredentialsHeaderValue Microsoft.Security.Authentication.OAuth.ClientAuthentication::get_ProxyAuthorization()
    @_property
    def proxy_authorization(self) -> windows_web_http_headers.HttpCredentialsHeaderValue: ...
    # System.Void Microsoft.Security.Authentication.OAuth.ClientAuthentication::put_ProxyAuthorization(Windows.Web.Http.Headers.HttpCredentialsHeaderValue)
    @proxy_authorization.setter
    def proxy_authorization(self, value: windows_web_http_headers.HttpCredentialsHeaderValue) -> None: ...
    # Windows.Web.Http.Headers.HttpCredentialsHeaderValue Microsoft.Security.Authentication.OAuth.ClientAuthentication::get_Authorization()
    @_property
    def authorization(self) -> windows_web_http_headers.HttpCredentialsHeaderValue: ...
    # System.Void Microsoft.Security.Authentication.OAuth.ClientAuthentication::put_Authorization(Windows.Web.Http.Headers.HttpCredentialsHeaderValue)
    @authorization.setter
    def authorization(self, value: windows_web_http_headers.HttpCredentialsHeaderValue) -> None: ...
    # Windows.Foundation.Collections.IMap`2<System.String,System.String> Microsoft.Security.Authentication.OAuth.ClientAuthentication::get_AdditionalHeaders()
    @_property
    def additional_headers(self) -> typing.MutableMapping[str, str]: ...

@typing.final
class OAuth2Manager_Static(winrt._winrt.IInspectable_Static):
    # System.Boolean Microsoft.Security.Authentication.OAuth.OAuth2Manager::CompleteAuthRequest(Windows.Foundation.Uri)
    def complete_auth_request(cls, response_uri: windows_foundation.Uri, /) -> bool: ...
    # Windows.Foundation.IAsyncOperation`1<Microsoft.Security.Authentication.OAuth.AuthRequestResult> Microsoft.Security.Authentication.OAuth.OAuth2Manager::RequestAuthWithParamsAsync(Microsoft.UI.WindowId,Windows.Foundation.Uri,Microsoft.Security.Authentication.OAuth.AuthRequestParams)
    def request_auth_with_params_async(cls, parent_window_id: typing.Union[microsoft_ui.WindowId, typing.Tuple[winrt.system.UInt64]], auth_endpoint: windows_foundation.Uri, params: AuthRequestParams, /) -> windows_foundation.IAsyncOperation[AuthRequestResult]: ...
    # Windows.Foundation.IAsyncOperation`1<Microsoft.Security.Authentication.OAuth.TokenRequestResult> Microsoft.Security.Authentication.OAuth.OAuth2Manager::RequestTokenAsync(Windows.Foundation.Uri,Microsoft.Security.Authentication.OAuth.TokenRequestParams)
    def request_token_async(cls, token_endpoint: windows_foundation.Uri, params: TokenRequestParams, /) -> windows_foundation.IAsyncOperation[TokenRequestResult]: ...
    # Windows.Foundation.IAsyncOperation`1<Microsoft.Security.Authentication.OAuth.TokenRequestResult> Microsoft.Security.Authentication.OAuth.OAuth2Manager::RequestTokenAsync(Windows.Foundation.Uri,Microsoft.Security.Authentication.OAuth.TokenRequestParams,Microsoft.Security.Authentication.OAuth.ClientAuthentication)
    def request_token_async2(cls, token_endpoint: windows_foundation.Uri, params: TokenRequestParams, client_auth: ClientAuthentication, /) -> windows_foundation.IAsyncOperation[TokenRequestResult]: ...

@typing.final
class OAuth2Manager(winrt.system.Object, metaclass=OAuth2Manager_Static):
    pass

@typing.final
class TokenFailure(winrt.system.Object):
    # Windows.Foundation.Collections.IMapView`2<System.String,Windows.Data.Json.IJsonValue> Microsoft.Security.Authentication.OAuth.TokenFailure::get_AdditionalParams()
    @_property
    def additional_params(self) -> typing.Mapping[str, windows_data_json.IJsonValue]: ...
    # System.String Microsoft.Security.Authentication.OAuth.TokenFailure::get_Error()
    @_property
    def error(self) -> str: ...
    # Windows.Foundation.HResult Microsoft.Security.Authentication.OAuth.TokenFailure::get_ErrorCode()
    @_property
    def error_code(self) -> windows_foundation.HResult: ...
    # System.String Microsoft.Security.Authentication.OAuth.TokenFailure::get_ErrorDescription()
    @_property
    def error_description(self) -> str: ...
    # Windows.Foundation.Uri Microsoft.Security.Authentication.OAuth.TokenFailure::get_ErrorUri()
    @_property
    def error_uri(self) -> windows_foundation.Uri: ...
    # Microsoft.Security.Authentication.OAuth.TokenFailureKind Microsoft.Security.Authentication.OAuth.TokenFailure::get_Kind()
    @_property
    def kind(self) -> TokenFailureKind: ...

@typing.final
class TokenRequestParams_Static(winrt._winrt.IInspectable_Static):
    # Microsoft.Security.Authentication.OAuth.TokenRequestParams Microsoft.Security.Authentication.OAuth.TokenRequestParams::CreateForAuthorizationCodeRequest(Microsoft.Security.Authentication.OAuth.AuthResponse)
    def create_for_authorization_code_request(cls, auth_response: AuthResponse, /) -> TokenRequestParams: ...
    # Microsoft.Security.Authentication.OAuth.TokenRequestParams Microsoft.Security.Authentication.OAuth.TokenRequestParams::CreateForClientCredentials()
    def create_for_client_credentials(cls) -> TokenRequestParams: ...
    # Microsoft.Security.Authentication.OAuth.TokenRequestParams Microsoft.Security.Authentication.OAuth.TokenRequestParams::CreateForExtension(Windows.Foundation.Uri)
    def create_for_extension(cls, extension_uri: windows_foundation.Uri, /) -> TokenRequestParams: ...
    # Microsoft.Security.Authentication.OAuth.TokenRequestParams Microsoft.Security.Authentication.OAuth.TokenRequestParams::CreateForRefreshToken(System.String)
    def create_for_refresh_token(cls, refresh_token: str, /) -> TokenRequestParams: ...

@typing.final
class TokenRequestParams(winrt.system.Object, metaclass=TokenRequestParams_Static):
    def __new__(cls: typing.Type[Self], grant_type: str) -> Self: ...
    # System.String Microsoft.Security.Authentication.OAuth.TokenRequestParams::get_Username()
    @_property
    def username(self) -> str: ...
    # System.Void Microsoft.Security.Authentication.OAuth.TokenRequestParams::put_Username(System.String)
    @username.setter
    def username(self, value: str) -> None: ...
    # System.String Microsoft.Security.Authentication.OAuth.TokenRequestParams::get_Scope()
    @_property
    def scope(self) -> str: ...
    # System.Void Microsoft.Security.Authentication.OAuth.TokenRequestParams::put_Scope(System.String)
    @scope.setter
    def scope(self, value: str) -> None: ...
    # System.String Microsoft.Security.Authentication.OAuth.TokenRequestParams::get_RefreshToken()
    @_property
    def refresh_token(self) -> str: ...
    # System.Void Microsoft.Security.Authentication.OAuth.TokenRequestParams::put_RefreshToken(System.String)
    @refresh_token.setter
    def refresh_token(self, value: str) -> None: ...
    # Windows.Foundation.Uri Microsoft.Security.Authentication.OAuth.TokenRequestParams::get_RedirectUri()
    @_property
    def redirect_uri(self) -> windows_foundation.Uri: ...
    # System.Void Microsoft.Security.Authentication.OAuth.TokenRequestParams::put_RedirectUri(Windows.Foundation.Uri)
    @redirect_uri.setter
    def redirect_uri(self, value: windows_foundation.Uri) -> None: ...
    # System.String Microsoft.Security.Authentication.OAuth.TokenRequestParams::get_Password()
    @_property
    def password(self) -> str: ...
    # System.Void Microsoft.Security.Authentication.OAuth.TokenRequestParams::put_Password(System.String)
    @password.setter
    def password(self, value: str) -> None: ...
    # System.String Microsoft.Security.Authentication.OAuth.TokenRequestParams::get_GrantType()
    @_property
    def grant_type(self) -> str: ...
    # System.Void Microsoft.Security.Authentication.OAuth.TokenRequestParams::put_GrantType(System.String)
    @grant_type.setter
    def grant_type(self, value: str) -> None: ...
    # System.String Microsoft.Security.Authentication.OAuth.TokenRequestParams::get_CodeVerifier()
    @_property
    def code_verifier(self) -> str: ...
    # System.Void Microsoft.Security.Authentication.OAuth.TokenRequestParams::put_CodeVerifier(System.String)
    @code_verifier.setter
    def code_verifier(self, value: str) -> None: ...
    # System.String Microsoft.Security.Authentication.OAuth.TokenRequestParams::get_Code()
    @_property
    def code(self) -> str: ...
    # System.Void Microsoft.Security.Authentication.OAuth.TokenRequestParams::put_Code(System.String)
    @code.setter
    def code(self, value: str) -> None: ...
    # System.String Microsoft.Security.Authentication.OAuth.TokenRequestParams::get_ClientId()
    @_property
    def client_id(self) -> str: ...
    # System.Void Microsoft.Security.Authentication.OAuth.TokenRequestParams::put_ClientId(System.String)
    @client_id.setter
    def client_id(self, value: str) -> None: ...
    # Windows.Foundation.Collections.IMap`2<System.String,System.String> Microsoft.Security.Authentication.OAuth.TokenRequestParams::get_AdditionalParams()
    @_property
    def additional_params(self) -> typing.MutableMapping[str, str]: ...

@typing.final
class TokenRequestResult(winrt.system.Object):
    # Microsoft.Security.Authentication.OAuth.TokenFailure Microsoft.Security.Authentication.OAuth.TokenRequestResult::get_Failure()
    @_property
    def failure(self) -> TokenFailure: ...
    # Microsoft.Security.Authentication.OAuth.TokenResponse Microsoft.Security.Authentication.OAuth.TokenRequestResult::get_Response()
    @_property
    def response(self) -> TokenResponse: ...
    # Windows.Web.Http.HttpResponseMessage Microsoft.Security.Authentication.OAuth.TokenRequestResult::get_ResponseMessage()
    @_property
    def response_message(self) -> windows_web_http.HttpResponseMessage: ...

@typing.final
class TokenResponse(winrt.system.Object):
    # System.String Microsoft.Security.Authentication.OAuth.TokenResponse::get_AccessToken()
    @_property
    def access_token(self) -> str: ...
    # Windows.Foundation.Collections.IMapView`2<System.String,Windows.Data.Json.IJsonValue> Microsoft.Security.Authentication.OAuth.TokenResponse::get_AdditionalParams()
    @_property
    def additional_params(self) -> typing.Mapping[str, windows_data_json.IJsonValue]: ...
    # System.Double Microsoft.Security.Authentication.OAuth.TokenResponse::get_ExpiresIn()
    @_property
    def expires_in(self) -> winrt.system.Double: ...
    # System.String Microsoft.Security.Authentication.OAuth.TokenResponse::get_RefreshToken()
    @_property
    def refresh_token(self) -> str: ...
    # System.String Microsoft.Security.Authentication.OAuth.TokenResponse::get_Scope()
    @_property
    def scope(self) -> str: ...
    # System.String Microsoft.Security.Authentication.OAuth.TokenResponse::get_TokenType()
    @_property
    def token_type(self) -> str: ...

