# WARNING: Please don't edit this file. It was generated by Python/WinRT v1.0.0-beta.2

import enum
import sys
import types
import typing
import uuid

import winsdk._winrt as _winrt

try:
    import winsdk.windows.foundation
except Exception:
    pass

try:
    import winsdk.windows.foundation.collections
except Exception:
    pass

try:
    import winsdk.windows.system
except Exception:
    pass

class CredentialPromptType(enum.IntEnum):
    PROMPT_IF_NEEDED = 0
    RETYPE_CREDENTIALS = 1
    DO_NOT_PROMPT = 2

class OnlineIdSystemTicketStatus(enum.IntEnum):
    SUCCESS = 0
    ERROR = 1
    SERVICE_CONNECTION_ERROR = 2

class OnlineIdAuthenticator(_winrt.Object):
    application_id: uuid.UUID
    authenticated_safe_customer_id: str
    can_sign_out: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> OnlineIdAuthenticator: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def authenticate_user_async(self, request: OnlineIdServiceTicketRequest) -> UserAuthenticationOperation: ...
    @typing.overload
    def authenticate_user_async(self, requests: typing.Iterable[OnlineIdServiceTicketRequest], credential_prompt_type: CredentialPromptType) -> UserAuthenticationOperation: ...
    @typing.overload
    def sign_out_user_async(self) -> SignOutUserOperation: ...

class OnlineIdServiceTicket(_winrt.Object):
    error_code: _winrt.Int32
    request: OnlineIdServiceTicketRequest
    value: str
    @staticmethod
    def _from(obj: _winrt.Object) -> OnlineIdServiceTicket: ...

class OnlineIdServiceTicketRequest(_winrt.Object):
    policy: str
    service: str
    @staticmethod
    def _from(obj: _winrt.Object) -> OnlineIdServiceTicketRequest: ...
    @typing.overload
    def __init__(self, service: str, policy: str) -> None: ...
    @typing.overload
    def __init__(self, service: str) -> None: ...

class OnlineIdSystemAuthenticator(_winrt.Object):
    default: OnlineIdSystemAuthenticatorForUser
    @staticmethod
    def _from(obj: _winrt.Object) -> OnlineIdSystemAuthenticator: ...
    @typing.overload
    @staticmethod
    def get_for_user(user: winsdk.windows.system.User) -> OnlineIdSystemAuthenticatorForUser: ...

class OnlineIdSystemAuthenticatorForUser(_winrt.Object):
    application_id: uuid.UUID
    user: winsdk.windows.system.User
    @staticmethod
    def _from(obj: _winrt.Object) -> OnlineIdSystemAuthenticatorForUser: ...
    @typing.overload
    def get_ticket_async(self, request: OnlineIdServiceTicketRequest) -> winsdk.windows.foundation.IAsyncOperation[OnlineIdSystemTicketResult]: ...

class OnlineIdSystemIdentity(_winrt.Object):
    id: str
    ticket: OnlineIdServiceTicket
    @staticmethod
    def _from(obj: _winrt.Object) -> OnlineIdSystemIdentity: ...

class OnlineIdSystemTicketResult(_winrt.Object):
    extended_error: winsdk.windows.foundation.HResult
    identity: OnlineIdSystemIdentity
    status: OnlineIdSystemTicketStatus
    @staticmethod
    def _from(obj: _winrt.Object) -> OnlineIdSystemTicketResult: ...

class SignOutUserOperation(winsdk.windows.foundation.IAsyncAction, winsdk.windows.foundation.IAsyncInfo, _winrt.Object):
    error_code: winsdk.windows.foundation.HResult
    id: _winrt.UInt32
    status: winsdk.windows.foundation.AsyncStatus
    completed: winsdk.windows.foundation.AsyncActionCompletedHandler
    @staticmethod
    def _from(obj: _winrt.Object) -> SignOutUserOperation: ...
    @typing.overload
    def cancel(self) -> None: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def get_results(self) -> None: ...

class UserAuthenticationOperation(winsdk.windows.foundation.IAsyncOperation[UserIdentity], winsdk.windows.foundation.IAsyncInfo, _winrt.Object):
    error_code: winsdk.windows.foundation.HResult
    id: _winrt.UInt32
    status: winsdk.windows.foundation.AsyncStatus
    completed: winsdk.windows.foundation.AsyncOperationCompletedHandler[UserIdentity]
    @staticmethod
    def _from(obj: _winrt.Object) -> UserAuthenticationOperation: ...
    @typing.overload
    def cancel(self) -> None: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def get_results(self) -> UserIdentity: ...

class UserIdentity(_winrt.Object):
    first_name: str
    id: str
    is_beta_account: _winrt.Boolean
    is_confirmed_p_c: _winrt.Boolean
    last_name: str
    safe_customer_id: str
    sign_in_name: str
    tickets: winsdk.windows.foundation.collections.IVectorView[OnlineIdServiceTicket]
    @staticmethod
    def _from(obj: _winrt.Object) -> UserIdentity: ...

