# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.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.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):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> OnlineIdAuthenticator: ...
    def __new__(cls: typing.Type[OnlineIdAuthenticator]) -> OnlineIdAuthenticator: ...
    @typing.overload
    def authenticate_user_async(self, request: typing.Optional[OnlineIdServiceTicketRequest], /) -> UserAuthenticationOperation: ...
    @typing.overload
    def authenticate_user_async(self, requests: typing.Iterable[OnlineIdServiceTicketRequest], credential_prompt_type: CredentialPromptType, /) -> UserAuthenticationOperation: ...
    def sign_out_user_async(self) -> SignOutUserOperation: ...
    @_property
    def application_id(self) -> _uuid.UUID: ...
    @application_id.setter
    def application_id(self, value: _uuid.UUID) -> None: ...
    @_property
    def authenticated_safe_customer_id(self) -> str: ...
    @_property
    def can_sign_out(self) -> bool: ...

@typing.final
class OnlineIdServiceTicket(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> OnlineIdServiceTicket: ...
    @_property
    def error_code(self) -> winrt.system.Int32: ...
    @_property
    def request(self) -> typing.Optional[OnlineIdServiceTicketRequest]: ...
    @_property
    def value(self) -> str: ...

@typing.final
class OnlineIdServiceTicketRequest(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> OnlineIdServiceTicketRequest: ...
    @typing.overload
    def __new__(cls: typing.Type[OnlineIdServiceTicketRequest], service: str, policy: str) -> OnlineIdServiceTicketRequest: ...
    @typing.overload
    def __new__(cls: typing.Type[OnlineIdServiceTicketRequest], service: str) -> OnlineIdServiceTicketRequest: ...
    @_property
    def policy(self) -> str: ...
    @_property
    def service(self) -> str: ...

@typing.final
class OnlineIdSystemAuthenticator_Static(type):
    def get_for_user(cls, user: typing.Optional[windows_system.User], /) -> typing.Optional[OnlineIdSystemAuthenticatorForUser]: ...
    @_property
    def default(cls) -> typing.Optional[OnlineIdSystemAuthenticatorForUser]: ...

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

@typing.final
class OnlineIdSystemAuthenticatorForUser(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> OnlineIdSystemAuthenticatorForUser: ...
    def get_ticket_async(self, request: typing.Optional[OnlineIdServiceTicketRequest], /) -> windows_foundation.IAsyncOperation[OnlineIdSystemTicketResult]: ...
    @_property
    def application_id(self) -> _uuid.UUID: ...
    @application_id.setter
    def application_id(self, value: _uuid.UUID) -> None: ...
    @_property
    def user(self) -> typing.Optional[windows_system.User]: ...

@typing.final
class OnlineIdSystemIdentity(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> OnlineIdSystemIdentity: ...
    @_property
    def id(self) -> str: ...
    @_property
    def ticket(self) -> typing.Optional[OnlineIdServiceTicket]: ...

@typing.final
class OnlineIdSystemTicketResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> OnlineIdSystemTicketResult: ...
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...
    @_property
    def identity(self) -> typing.Optional[OnlineIdSystemIdentity]: ...
    @_property
    def status(self) -> OnlineIdSystemTicketStatus: ...

@typing.final
class SignOutUserOperation(winrt.system.Object):
    def __await__(self) -> typing.Generator[typing.Any, None, None]: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> SignOutUserOperation: ...
    def cancel(self) -> None: ...
    def close(self) -> None: ...
    def get_results(self) -> None: ...
    @_property
    def error_code(self) -> windows_foundation.HResult: ...
    @_property
    def id(self) -> winrt.system.UInt32: ...
    @_property
    def status(self) -> windows_foundation.AsyncStatus: ...
    @_property
    def completed(self) -> typing.Optional[windows_foundation.AsyncActionCompletedHandler]: ...
    @completed.setter
    def completed(self, value: typing.Optional[windows_foundation.AsyncActionCompletedHandler]) -> None: ...

@typing.final
class UserAuthenticationOperation(winrt.system.Object):
    def __await__(self) -> typing.Generator[typing.Any, None, typing.Optional[UserIdentity]]: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> UserAuthenticationOperation: ...
    def cancel(self) -> None: ...
    def close(self) -> None: ...
    def get_results(self) -> typing.Optional[UserIdentity]: ...
    @_property
    def error_code(self) -> windows_foundation.HResult: ...
    @_property
    def id(self) -> winrt.system.UInt32: ...
    @_property
    def status(self) -> windows_foundation.AsyncStatus: ...
    @_property
    def completed(self) -> typing.Optional[windows_foundation.AsyncOperationCompletedHandler[UserIdentity]]: ...
    @completed.setter
    def completed(self, value: typing.Optional[windows_foundation.AsyncOperationCompletedHandler[UserIdentity]]) -> None: ...

@typing.final
class UserIdentity(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> UserIdentity: ...
    @_property
    def first_name(self) -> str: ...
    @_property
    def id(self) -> str: ...
    @_property
    def is_beta_account(self) -> bool: ...
    @_property
    def is_confirmed_p_c(self) -> bool: ...
    @_property
    def last_name(self) -> str: ...
    @_property
    def safe_customer_id(self) -> str: ...
    @_property
    def sign_in_name(self) -> str: ...
    @_property
    def tickets(self) -> typing.Optional[windows_foundation_collections.IVectorView[OnlineIdServiceTicket]]: ...

