# 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.security.authentication.web
except Exception:
    pass

try:
    import winsdk.windows.security.authentication.web.core
except Exception:
    pass

try:
    import winsdk.windows.security.credentials
except Exception:
    pass

try:
    import winsdk.windows.security.cryptography.core
except Exception:
    pass

try:
    import winsdk.windows.storage.streams
except Exception:
    pass

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

try:
    import winsdk.windows.web.http
except Exception:
    pass

class WebAccountClientViewType(enum.IntEnum):
    ID_ONLY = 0
    ID_AND_PROPERTIES = 1

class WebAccountProviderOperationKind(enum.IntEnum):
    REQUEST_TOKEN = 0
    GET_TOKEN_SILENTLY = 1
    ADD_ACCOUNT = 2
    MANAGE_ACCOUNT = 3
    DELETE_ACCOUNT = 4
    RETRIEVE_COOKIES = 5
    SIGN_OUT_ACCOUNT = 6

class WebAccountScope(enum.IntEnum):
    PER_USER = 0
    PER_APPLICATION = 1

class WebAccountSelectionOptions(enum.IntFlag):
    DEFAULT = 0
    NEW = 0x1

class WebAccountClientView(_winrt.Object):
    account_pairwise_id: str
    application_callback_uri: winsdk.windows.foundation.Uri
    type: WebAccountClientViewType
    @staticmethod
    def _from(obj: _winrt.Object) -> WebAccountClientView: ...
    @typing.overload
    def __init__(self, view_type: WebAccountClientViewType, application_callback_uri: winsdk.windows.foundation.Uri) -> None: ...
    @typing.overload
    def __init__(self, view_type: WebAccountClientViewType, application_callback_uri: winsdk.windows.foundation.Uri, account_pairwise_id: str) -> None: ...

class WebAccountManager(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> WebAccountManager: ...
    @typing.overload
    @staticmethod
    def add_web_account_async(web_account_id: str, web_account_user_name: str, props: winsdk.windows.foundation.collections.IMapView[str, str]) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.security.credentials.WebAccount]: ...
    @typing.overload
    @staticmethod
    def add_web_account_async(web_account_id: str, web_account_user_name: str, props: winsdk.windows.foundation.collections.IMapView[str, str], scope: WebAccountScope) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.security.credentials.WebAccount]: ...
    @typing.overload
    @staticmethod
    def add_web_account_async(web_account_id: str, web_account_user_name: str, props: winsdk.windows.foundation.collections.IMapView[str, str], scope: WebAccountScope, per_user_web_account_id: str) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.security.credentials.WebAccount]: ...
    @typing.overload
    @staticmethod
    def add_web_account_for_user_async(user: winsdk.windows.system.User, web_account_id: str, web_account_user_name: str, props: winsdk.windows.foundation.collections.IMapView[str, str]) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.security.credentials.WebAccount]: ...
    @typing.overload
    @staticmethod
    def add_web_account_for_user_async(user: winsdk.windows.system.User, web_account_id: str, web_account_user_name: str, props: winsdk.windows.foundation.collections.IMapView[str, str], scope: WebAccountScope) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.security.credentials.WebAccount]: ...
    @typing.overload
    @staticmethod
    def add_web_account_for_user_async(user: winsdk.windows.system.User, web_account_id: str, web_account_user_name: str, props: winsdk.windows.foundation.collections.IMapView[str, str], scope: WebAccountScope, per_user_web_account_id: str) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.security.credentials.WebAccount]: ...
    @typing.overload
    @staticmethod
    def clear_per_user_from_per_app_account_async(per_app_account: winsdk.windows.security.credentials.WebAccount) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    @staticmethod
    def clear_view_async(web_account: winsdk.windows.security.credentials.WebAccount, application_callback_uri: winsdk.windows.foundation.Uri) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    @staticmethod
    def clear_web_account_picture_async(web_account: winsdk.windows.security.credentials.WebAccount) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    @staticmethod
    def delete_web_account_async(web_account: winsdk.windows.security.credentials.WebAccount) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    @staticmethod
    def find_all_provider_web_accounts_async() -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[winsdk.windows.security.credentials.WebAccount]]: ...
    @typing.overload
    @staticmethod
    def find_all_provider_web_accounts_for_user_async(user: winsdk.windows.system.User) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[winsdk.windows.security.credentials.WebAccount]]: ...
    @typing.overload
    @staticmethod
    def get_per_user_from_per_app_account_async(per_app_account: winsdk.windows.security.credentials.WebAccount) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.security.credentials.WebAccount]: ...
    @typing.overload
    @staticmethod
    def get_scope(web_account: winsdk.windows.security.credentials.WebAccount) -> WebAccountScope: ...
    @typing.overload
    @staticmethod
    def get_views_async(web_account: winsdk.windows.security.credentials.WebAccount) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[WebAccountClientView]]: ...
    @typing.overload
    @staticmethod
    def invalidate_app_cache_for_account_async(web_account: winsdk.windows.security.credentials.WebAccount) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    @staticmethod
    def invalidate_app_cache_for_all_accounts_async() -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    @staticmethod
    def pull_cookies_async(uri_string: str, caller_p_f_n: str) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    @staticmethod
    def push_cookies_async(uri: winsdk.windows.foundation.Uri, cookies: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.web.http.HttpCookie]) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    @staticmethod
    def set_per_app_to_per_user_account_async(per_app_account: winsdk.windows.security.credentials.WebAccount, per_user_web_account_id: str) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    @staticmethod
    def set_scope_async(web_account: winsdk.windows.security.credentials.WebAccount, scope: WebAccountScope) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    @staticmethod
    def set_view_async(web_account: winsdk.windows.security.credentials.WebAccount, view: WebAccountClientView) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    @staticmethod
    def set_web_account_picture_async(web_account: winsdk.windows.security.credentials.WebAccount, web_account_picture: winsdk.windows.storage.streams.IRandomAccessStream) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    @staticmethod
    def update_web_account_properties_async(web_account: winsdk.windows.security.credentials.WebAccount, web_account_user_name: str, additional_properties: winsdk.windows.foundation.collections.IMapView[str, str]) -> winsdk.windows.foundation.IAsyncAction: ...

class WebAccountProviderAddAccountOperation(IWebAccountProviderOperation, _winrt.Object):
    kind: WebAccountProviderOperationKind
    @staticmethod
    def _from(obj: _winrt.Object) -> WebAccountProviderAddAccountOperation: ...
    @typing.overload
    def report_completed(self) -> None: ...

class WebAccountProviderDeleteAccountOperation(IWebAccountProviderOperation, IWebAccountProviderBaseReportOperation, _winrt.Object):
    web_account: winsdk.windows.security.credentials.WebAccount
    kind: WebAccountProviderOperationKind
    @staticmethod
    def _from(obj: _winrt.Object) -> WebAccountProviderDeleteAccountOperation: ...
    @typing.overload
    def report_completed(self) -> None: ...
    @typing.overload
    def report_error(self, value: winsdk.windows.security.authentication.web.core.WebProviderError) -> None: ...

class WebAccountProviderGetTokenSilentOperation(IWebAccountProviderTokenOperation, IWebAccountProviderOperation, IWebAccountProviderSilentReportOperation, IWebAccountProviderBaseReportOperation, _winrt.Object):
    kind: WebAccountProviderOperationKind
    cache_expiration_time: winsdk.windows.foundation.DateTime
    provider_request: WebProviderTokenRequest
    provider_responses: winsdk.windows.foundation.collections.IVector[WebProviderTokenResponse]
    @staticmethod
    def _from(obj: _winrt.Object) -> WebAccountProviderGetTokenSilentOperation: ...
    @typing.overload
    def report_completed(self) -> None: ...
    @typing.overload
    def report_error(self, value: winsdk.windows.security.authentication.web.core.WebProviderError) -> None: ...
    @typing.overload
    def report_user_interaction_required(self) -> None: ...
    @typing.overload
    def report_user_interaction_required(self, value: winsdk.windows.security.authentication.web.core.WebProviderError) -> None: ...

class WebAccountProviderManageAccountOperation(IWebAccountProviderOperation, _winrt.Object):
    web_account: winsdk.windows.security.credentials.WebAccount
    kind: WebAccountProviderOperationKind
    @staticmethod
    def _from(obj: _winrt.Object) -> WebAccountProviderManageAccountOperation: ...
    @typing.overload
    def report_completed(self) -> None: ...

class WebAccountProviderRequestTokenOperation(IWebAccountProviderTokenOperation, IWebAccountProviderOperation, IWebAccountProviderUIReportOperation, IWebAccountProviderBaseReportOperation, _winrt.Object):
    kind: WebAccountProviderOperationKind
    cache_expiration_time: winsdk.windows.foundation.DateTime
    provider_request: WebProviderTokenRequest
    provider_responses: winsdk.windows.foundation.collections.IVector[WebProviderTokenResponse]
    @staticmethod
    def _from(obj: _winrt.Object) -> WebAccountProviderRequestTokenOperation: ...
    @typing.overload
    def report_completed(self) -> None: ...
    @typing.overload
    def report_error(self, value: winsdk.windows.security.authentication.web.core.WebProviderError) -> None: ...
    @typing.overload
    def report_user_canceled(self) -> None: ...

class WebAccountProviderRetrieveCookiesOperation(IWebAccountProviderOperation, IWebAccountProviderBaseReportOperation, _winrt.Object):
    kind: WebAccountProviderOperationKind
    uri: winsdk.windows.foundation.Uri
    application_callback_uri: winsdk.windows.foundation.Uri
    context: winsdk.windows.foundation.Uri
    cookies: winsdk.windows.foundation.collections.IVector[winsdk.windows.web.http.HttpCookie]
    @staticmethod
    def _from(obj: _winrt.Object) -> WebAccountProviderRetrieveCookiesOperation: ...
    @typing.overload
    def report_completed(self) -> None: ...
    @typing.overload
    def report_error(self, value: winsdk.windows.security.authentication.web.core.WebProviderError) -> None: ...

class WebAccountProviderSignOutAccountOperation(IWebAccountProviderOperation, IWebAccountProviderBaseReportOperation, _winrt.Object):
    kind: WebAccountProviderOperationKind
    application_callback_uri: winsdk.windows.foundation.Uri
    client_id: str
    web_account: winsdk.windows.security.credentials.WebAccount
    @staticmethod
    def _from(obj: _winrt.Object) -> WebAccountProviderSignOutAccountOperation: ...
    @typing.overload
    def report_completed(self) -> None: ...
    @typing.overload
    def report_error(self, value: winsdk.windows.security.authentication.web.core.WebProviderError) -> None: ...

class WebAccountProviderTriggerDetails(IWebAccountProviderTokenObjects, IWebAccountProviderTokenObjects2, _winrt.Object):
    operation: IWebAccountProviderOperation
    user: winsdk.windows.system.User
    @staticmethod
    def _from(obj: _winrt.Object) -> WebAccountProviderTriggerDetails: ...

class WebProviderTokenRequest(_winrt.Object):
    application_callback_uri: winsdk.windows.foundation.Uri
    client_request: winsdk.windows.security.authentication.web.core.WebTokenRequest
    web_account_selection_options: WebAccountSelectionOptions
    web_accounts: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.security.credentials.WebAccount]
    application_package_family_name: str
    application_process_name: str
    @staticmethod
    def _from(obj: _winrt.Object) -> WebProviderTokenRequest: ...
    @typing.overload
    def check_application_for_capability_async(self, capability_name: str) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def get_application_token_binding_key_async(self, key_type: winsdk.windows.security.authentication.web.TokenBindingKeyType, target: winsdk.windows.foundation.Uri) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.security.cryptography.core.CryptographicKey]: ...
    @typing.overload
    def get_application_token_binding_key_id_async(self, key_type: winsdk.windows.security.authentication.web.TokenBindingKeyType, target: winsdk.windows.foundation.Uri) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.streams.IBuffer]: ...

class WebProviderTokenResponse(_winrt.Object):
    client_response: winsdk.windows.security.authentication.web.core.WebTokenResponse
    @staticmethod
    def _from(obj: _winrt.Object) -> WebProviderTokenResponse: ...
    @typing.overload
    def __init__(self, web_token_response: winsdk.windows.security.authentication.web.core.WebTokenResponse) -> None: ...

class IWebAccountProviderBaseReportOperation(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IWebAccountProviderBaseReportOperation: ...
    @typing.overload
    def report_completed(self) -> None: ...
    @typing.overload
    def report_error(self, value: winsdk.windows.security.authentication.web.core.WebProviderError) -> None: ...

class IWebAccountProviderOperation(_winrt.Object):
    kind: WebAccountProviderOperationKind
    @staticmethod
    def _from(obj: _winrt.Object) -> IWebAccountProviderOperation: ...

class IWebAccountProviderSilentReportOperation(IWebAccountProviderBaseReportOperation, _winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IWebAccountProviderSilentReportOperation: ...
    @typing.overload
    def report_user_interaction_required(self) -> None: ...
    @typing.overload
    def report_user_interaction_required(self, value: winsdk.windows.security.authentication.web.core.WebProviderError) -> None: ...
    @typing.overload
    def report_completed(self) -> None: ...
    @typing.overload
    def report_error(self, value: winsdk.windows.security.authentication.web.core.WebProviderError) -> None: ...

class IWebAccountProviderTokenObjects(_winrt.Object):
    operation: IWebAccountProviderOperation
    @staticmethod
    def _from(obj: _winrt.Object) -> IWebAccountProviderTokenObjects: ...

class IWebAccountProviderTokenObjects2(IWebAccountProviderTokenObjects, _winrt.Object):
    user: winsdk.windows.system.User
    operation: IWebAccountProviderOperation
    @staticmethod
    def _from(obj: _winrt.Object) -> IWebAccountProviderTokenObjects2: ...

class IWebAccountProviderTokenOperation(IWebAccountProviderOperation, _winrt.Object):
    cache_expiration_time: winsdk.windows.foundation.DateTime
    provider_request: WebProviderTokenRequest
    provider_responses: winsdk.windows.foundation.collections.IVector[WebProviderTokenResponse]
    kind: WebAccountProviderOperationKind
    @staticmethod
    def _from(obj: _winrt.Object) -> IWebAccountProviderTokenOperation: ...

class IWebAccountProviderUIReportOperation(IWebAccountProviderBaseReportOperation, _winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IWebAccountProviderUIReportOperation: ...
    @typing.overload
    def report_user_canceled(self) -> None: ...
    @typing.overload
    def report_completed(self) -> None: ...
    @typing.overload
    def report_error(self, value: winsdk.windows.security.authentication.web.core.WebProviderError) -> None: ...

