# WARNING: Please don't edit this file. It was generated by Python/WinRT v3.0.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.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.system as windows_system

from winrt.windows.security.authentication.onlineid import CredentialPromptType, OnlineIdSystemTicketStatus

Self = typing.TypeVar('Self')

@typing.final
class OnlineIdAuthenticator(winrt.system.Object):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Security.Authentication.OnlineId.UserAuthenticationOperation Windows.Security.Authentication.OnlineId.OnlineIdAuthenticator::AuthenticateUserAsync(Windows.Security.Authentication.OnlineId.OnlineIdServiceTicketRequest)
    def authenticate_user_async(self, request: OnlineIdServiceTicketRequest, /) -> UserAuthenticationOperation: ...
    # Windows.Security.Authentication.OnlineId.UserAuthenticationOperation Windows.Security.Authentication.OnlineId.OnlineIdAuthenticator::AuthenticateUserAsync(Windows.Foundation.Collections.IIterable`1<Windows.Security.Authentication.OnlineId.OnlineIdServiceTicketRequest>,Windows.Security.Authentication.OnlineId.CredentialPromptType)
    def authenticate_user_async_advanced(self, requests: typing.Iterable[OnlineIdServiceTicketRequest], credential_prompt_type: CredentialPromptType, /) -> UserAuthenticationOperation: ...
    # Windows.Security.Authentication.OnlineId.SignOutUserOperation Windows.Security.Authentication.OnlineId.OnlineIdAuthenticator::SignOutUserAsync()
    def sign_out_user_async(self) -> SignOutUserOperation: ...
    # System.Guid Windows.Security.Authentication.OnlineId.OnlineIdAuthenticator::get_ApplicationId()
    @_property
    def application_id(self) -> _uuid.UUID: ...
    # System.Void Windows.Security.Authentication.OnlineId.OnlineIdAuthenticator::put_ApplicationId(System.Guid)
    @application_id.setter
    def application_id(self, value: _uuid.UUID) -> None: ...
    # System.String Windows.Security.Authentication.OnlineId.OnlineIdAuthenticator::get_AuthenticatedSafeCustomerId()
    @_property
    def authenticated_safe_customer_id(self) -> str: ...
    # System.Boolean Windows.Security.Authentication.OnlineId.OnlineIdAuthenticator::get_CanSignOut()
    @_property
    def can_sign_out(self) -> bool: ...

@typing.final
class OnlineIdServiceTicket(winrt.system.Object):
    # System.Int32 Windows.Security.Authentication.OnlineId.OnlineIdServiceTicket::get_ErrorCode()
    @_property
    def error_code(self) -> winrt.system.Int32: ...
    # Windows.Security.Authentication.OnlineId.OnlineIdServiceTicketRequest Windows.Security.Authentication.OnlineId.OnlineIdServiceTicket::get_Request()
    @_property
    def request(self) -> OnlineIdServiceTicketRequest: ...
    # System.String Windows.Security.Authentication.OnlineId.OnlineIdServiceTicket::get_Value()
    @_property
    def value(self) -> str: ...

@typing.final
class OnlineIdServiceTicketRequest(winrt.system.Object):
    @typing.overload
    def __new__(cls: typing.Type[Self], service: str, policy: str) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], service: str) -> Self: ...
    # System.String Windows.Security.Authentication.OnlineId.OnlineIdServiceTicketRequest::get_Policy()
    @_property
    def policy(self) -> str: ...
    # System.String Windows.Security.Authentication.OnlineId.OnlineIdServiceTicketRequest::get_Service()
    @_property
    def service(self) -> str: ...

@typing.final
class OnlineIdSystemAuthenticator_Static(winrt._winrt.IInspectable_Static):
    # Windows.Security.Authentication.OnlineId.OnlineIdSystemAuthenticatorForUser Windows.Security.Authentication.OnlineId.OnlineIdSystemAuthenticator::GetForUser(Windows.System.User)
    def get_for_user(cls, user: windows_system.User, /) -> OnlineIdSystemAuthenticatorForUser: ...
    # Windows.Security.Authentication.OnlineId.OnlineIdSystemAuthenticatorForUser Windows.Security.Authentication.OnlineId.OnlineIdSystemAuthenticator::get_Default()
    @_property
    def default(cls) -> OnlineIdSystemAuthenticatorForUser: ...

@typing.final
class OnlineIdSystemAuthenticator(winrt.system.Object, metaclass=OnlineIdSystemAuthenticator_Static):
    pass

@typing.final
class OnlineIdSystemAuthenticatorForUser(winrt.system.Object):
    # Windows.Foundation.IAsyncOperation`1<Windows.Security.Authentication.OnlineId.OnlineIdSystemTicketResult> Windows.Security.Authentication.OnlineId.OnlineIdSystemAuthenticatorForUser::GetTicketAsync(Windows.Security.Authentication.OnlineId.OnlineIdServiceTicketRequest)
    def get_ticket_async(self, request: OnlineIdServiceTicketRequest, /) -> windows_foundation.IAsyncOperation[OnlineIdSystemTicketResult]: ...
    # System.Guid Windows.Security.Authentication.OnlineId.OnlineIdSystemAuthenticatorForUser::get_ApplicationId()
    @_property
    def application_id(self) -> _uuid.UUID: ...
    # System.Void Windows.Security.Authentication.OnlineId.OnlineIdSystemAuthenticatorForUser::put_ApplicationId(System.Guid)
    @application_id.setter
    def application_id(self, value: _uuid.UUID) -> None: ...
    # Windows.System.User Windows.Security.Authentication.OnlineId.OnlineIdSystemAuthenticatorForUser::get_User()
    @_property
    def user(self) -> windows_system.User: ...

@typing.final
class OnlineIdSystemIdentity(winrt.system.Object):
    # System.String Windows.Security.Authentication.OnlineId.OnlineIdSystemIdentity::get_Id()
    @_property
    def id(self) -> str: ...
    # Windows.Security.Authentication.OnlineId.OnlineIdServiceTicket Windows.Security.Authentication.OnlineId.OnlineIdSystemIdentity::get_Ticket()
    @_property
    def ticket(self) -> OnlineIdServiceTicket: ...

@typing.final
class OnlineIdSystemTicketResult(winrt.system.Object):
    # Windows.Foundation.HResult Windows.Security.Authentication.OnlineId.OnlineIdSystemTicketResult::get_ExtendedError()
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...
    # Windows.Security.Authentication.OnlineId.OnlineIdSystemIdentity Windows.Security.Authentication.OnlineId.OnlineIdSystemTicketResult::get_Identity()
    @_property
    def identity(self) -> OnlineIdSystemIdentity: ...
    # Windows.Security.Authentication.OnlineId.OnlineIdSystemTicketStatus Windows.Security.Authentication.OnlineId.OnlineIdSystemTicketResult::get_Status()
    @_property
    def status(self) -> OnlineIdSystemTicketStatus: ...

@typing.final
class SignOutUserOperation(winrt.system.Object, windows_foundation.IAsyncAction, windows_foundation.IAsyncInfo):
    def __await__(self) -> typing.Generator[typing.Any, None, None]: ...
    # System.Void Windows.Security.Authentication.OnlineId.SignOutUserOperation::Cancel()
    def cancel(self) -> None: ...
    # System.Void Windows.Security.Authentication.OnlineId.SignOutUserOperation::Close()
    def close(self) -> None: ...
    # System.Void Windows.Security.Authentication.OnlineId.SignOutUserOperation::GetResults()
    def get_results(self) -> None: ...
    # Windows.Foundation.HResult Windows.Security.Authentication.OnlineId.SignOutUserOperation::get_ErrorCode()
    @_property
    def error_code(self) -> windows_foundation.HResult: ...
    # System.UInt32 Windows.Security.Authentication.OnlineId.SignOutUserOperation::get_Id()
    @_property
    def id(self) -> winrt.system.UInt32: ...
    # Windows.Foundation.AsyncStatus Windows.Security.Authentication.OnlineId.SignOutUserOperation::get_Status()
    @_property
    def status(self) -> windows_foundation.AsyncStatus: ...
    # Windows.Foundation.AsyncActionCompletedHandler Windows.Security.Authentication.OnlineId.SignOutUserOperation::get_Completed()
    @_property
    def completed(self) -> windows_foundation.AsyncActionCompletedHandler: ...
    # System.Void Windows.Security.Authentication.OnlineId.SignOutUserOperation::put_Completed(Windows.Foundation.AsyncActionCompletedHandler)
    @completed.setter
    def completed(self, value: windows_foundation.AsyncActionCompletedHandler) -> None: ...

@typing.final
class UserAuthenticationOperation(winrt.system.Object, windows_foundation.IAsyncOperation[UserIdentity], windows_foundation.IAsyncInfo):
    def __await__(self) -> typing.Generator[typing.Any, None, UserIdentity]: ...
    # System.Void Windows.Security.Authentication.OnlineId.UserAuthenticationOperation::Cancel()
    def cancel(self) -> None: ...
    # System.Void Windows.Security.Authentication.OnlineId.UserAuthenticationOperation::Close()
    def close(self) -> None: ...
    # Windows.Security.Authentication.OnlineId.UserIdentity Windows.Security.Authentication.OnlineId.UserAuthenticationOperation::GetResults()
    def get_results(self) -> UserIdentity: ...
    # Windows.Foundation.HResult Windows.Security.Authentication.OnlineId.UserAuthenticationOperation::get_ErrorCode()
    @_property
    def error_code(self) -> windows_foundation.HResult: ...
    # System.UInt32 Windows.Security.Authentication.OnlineId.UserAuthenticationOperation::get_Id()
    @_property
    def id(self) -> winrt.system.UInt32: ...
    # Windows.Foundation.AsyncStatus Windows.Security.Authentication.OnlineId.UserAuthenticationOperation::get_Status()
    @_property
    def status(self) -> windows_foundation.AsyncStatus: ...
    # Windows.Foundation.AsyncOperationCompletedHandler`1<Windows.Security.Authentication.OnlineId.UserIdentity> Windows.Security.Authentication.OnlineId.UserAuthenticationOperation::get_Completed()
    @_property
    def completed(self) -> windows_foundation.AsyncOperationCompletedHandler[UserIdentity]: ...
    # System.Void Windows.Security.Authentication.OnlineId.UserAuthenticationOperation::put_Completed(Windows.Foundation.AsyncOperationCompletedHandler`1<Windows.Security.Authentication.OnlineId.UserIdentity>)
    @completed.setter
    def completed(self, value: windows_foundation.AsyncOperationCompletedHandler[UserIdentity]) -> None: ...

@typing.final
class UserIdentity(winrt.system.Object):
    # System.String Windows.Security.Authentication.OnlineId.UserIdentity::get_FirstName()
    @_property
    def first_name(self) -> str: ...
    # System.String Windows.Security.Authentication.OnlineId.UserIdentity::get_Id()
    @_property
    def id(self) -> str: ...
    # System.Boolean Windows.Security.Authentication.OnlineId.UserIdentity::get_IsBetaAccount()
    @_property
    def is_beta_account(self) -> bool: ...
    # System.Boolean Windows.Security.Authentication.OnlineId.UserIdentity::get_IsConfirmedPC()
    @_property
    def is_confirmed_pc(self) -> bool: ...
    # System.String Windows.Security.Authentication.OnlineId.UserIdentity::get_LastName()
    @_property
    def last_name(self) -> str: ...
    # System.String Windows.Security.Authentication.OnlineId.UserIdentity::get_SafeCustomerId()
    @_property
    def safe_customer_id(self) -> str: ...
    # System.String Windows.Security.Authentication.OnlineId.UserIdentity::get_SignInName()
    @_property
    def sign_in_name(self) -> str: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Security.Authentication.OnlineId.OnlineIdServiceTicket> Windows.Security.Authentication.OnlineId.UserIdentity::get_Tickets()
    @_property
    def tickets(self) -> typing.Sequence[OnlineIdServiceTicket]: ...

