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

import enum
import datetime
import sys
import types
import typing

import winsdk.system
import winsdk.windows.foundation
import winsdk.windows.foundation.collections
import winsdk.windows.security.authentication.web
import winsdk.windows.security.authentication.web.core
import winsdk.windows.security.credentials
import winsdk.windows.security.cryptography.core
import winsdk.windows.storage.streams
import winsdk.windows.system
import winsdk.windows.web.http

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

Self = typing.TypeVar('Self')

class WebAccountClientView(winsdk.system.Object):
    account_pairwise_id: str
    application_callback_uri: typing.Optional[winsdk.windows.foundation.Uri]
    type: WebAccountClientViewType
    @staticmethod
    def _from(obj: winsdk.system.Object) -> WebAccountClientView: ...
    @typing.overload
    def __new__(cls: typing.Type[WebAccountClientView], view_type: WebAccountClientViewType, application_callback_uri: typing.Optional[winsdk.windows.foundation.Uri]) -> WebAccountClientView:...
    @typing.overload
    def __new__(cls: typing.Type[WebAccountClientView], view_type: WebAccountClientViewType, application_callback_uri: typing.Optional[winsdk.windows.foundation.Uri], account_pairwise_id: str) -> WebAccountClientView:...

class WebAccountManager(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.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: typing.Optional[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: typing.Optional[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: typing.Optional[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]: ...
    @staticmethod
    def clear_per_user_from_per_app_account_async(per_app_account: typing.Optional[winsdk.windows.security.credentials.WebAccount]) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def clear_view_async(web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount], application_callback_uri: typing.Optional[winsdk.windows.foundation.Uri]) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def clear_web_account_picture_async(web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount]) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def delete_web_account_async(web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount]) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def find_all_provider_web_accounts_async() -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[winsdk.windows.security.credentials.WebAccount]]: ...
    @staticmethod
    def find_all_provider_web_accounts_for_user_async(user: typing.Optional[winsdk.windows.system.User]) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[winsdk.windows.security.credentials.WebAccount]]: ...
    @staticmethod
    def get_per_user_from_per_app_account_async(per_app_account: typing.Optional[winsdk.windows.security.credentials.WebAccount]) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.security.credentials.WebAccount]: ...
    @staticmethod
    def get_scope(web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount]) -> WebAccountScope: ...
    @staticmethod
    def get_views_async(web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount]) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[WebAccountClientView]]: ...
    @staticmethod
    def invalidate_app_cache_for_account_async(web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount]) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def invalidate_app_cache_for_all_accounts_async() -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def pull_cookies_async(uri_string: str, caller_p_f_n: str) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def push_cookies_async(uri: typing.Optional[winsdk.windows.foundation.Uri], cookies: winsdk.windows.foundation.collections.IVectorView[winsdk.windows.web.http.HttpCookie]) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def set_per_app_to_per_user_account_async(per_app_account: typing.Optional[winsdk.windows.security.credentials.WebAccount], per_user_web_account_id: str) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def set_scope_async(web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount], scope: WebAccountScope) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def set_view_async(web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount], view: typing.Optional[WebAccountClientView]) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def set_web_account_picture_async(web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount], web_account_picture: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStream]) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def update_web_account_properties_async(web_account: typing.Optional[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(winsdk.system.Object):
    kind: WebAccountProviderOperationKind
    @staticmethod
    def _from(obj: winsdk.system.Object) -> WebAccountProviderAddAccountOperation: ...
    def report_completed(self) -> None: ...

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

class WebAccountProviderGetTokenSilentOperation(winsdk.system.Object):
    kind: WebAccountProviderOperationKind
    cache_expiration_time: datetime.datetime
    provider_request: typing.Optional[WebProviderTokenRequest]
    provider_responses: typing.Optional[winsdk.windows.foundation.collections.IVector[WebProviderTokenResponse]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> WebAccountProviderGetTokenSilentOperation: ...
    def report_completed(self) -> None: ...
    def report_error(self, value: typing.Optional[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: typing.Optional[winsdk.windows.security.authentication.web.core.WebProviderError]) -> None: ...

class WebAccountProviderManageAccountOperation(winsdk.system.Object):
    web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount]
    kind: WebAccountProviderOperationKind
    @staticmethod
    def _from(obj: winsdk.system.Object) -> WebAccountProviderManageAccountOperation: ...
    def report_completed(self) -> None: ...

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

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

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

class WebAccountProviderTriggerDetails(winsdk.system.Object):
    operation: typing.Optional[IWebAccountProviderOperation]
    user: typing.Optional[winsdk.windows.system.User]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> WebAccountProviderTriggerDetails: ...

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

class WebProviderTokenResponse(winsdk.system.Object):
    client_response: typing.Optional[winsdk.windows.security.authentication.web.core.WebTokenResponse]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> WebProviderTokenResponse: ...
    def __new__(cls: typing.Type[WebProviderTokenResponse], web_token_response: typing.Optional[winsdk.windows.security.authentication.web.core.WebTokenResponse]) -> WebProviderTokenResponse:...

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

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

class IWebAccountProviderSilentReportOperation(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IWebAccountProviderSilentReportOperation: ...
    def report_completed(self) -> None: ...
    def report_error(self, value: typing.Optional[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: typing.Optional[winsdk.windows.security.authentication.web.core.WebProviderError]) -> None: ...

class IWebAccountProviderTokenObjects(winsdk.system.Object):
    operation: typing.Optional[IWebAccountProviderOperation]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IWebAccountProviderTokenObjects: ...

class IWebAccountProviderTokenObjects2(winsdk.system.Object):
    user: typing.Optional[winsdk.windows.system.User]
    operation: typing.Optional[IWebAccountProviderOperation]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IWebAccountProviderTokenObjects2: ...

class IWebAccountProviderTokenOperation(winsdk.system.Object):
    cache_expiration_time: datetime.datetime
    provider_request: typing.Optional[WebProviderTokenRequest]
    provider_responses: typing.Optional[winsdk.windows.foundation.collections.IVector[WebProviderTokenResponse]]
    kind: WebAccountProviderOperationKind
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IWebAccountProviderTokenOperation: ...

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

