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

import enum
import datetime
import sys
import types
import typing

import winsdk._winrt as _winrt
import winsdk.windows.foundation
import winsdk.windows.foundation.collections
import winsdk.windows.security.credentials
import winsdk.windows.system
import winsdk.windows.ui.popups

class SettingsEdgeLocation(enum.IntEnum):
    RIGHT = 0
    LEFT = 1

class SupportedWebAccountActions(enum.IntFlag):
    NONE = 0
    RECONNECT = 0x1
    REMOVE = 0x2
    VIEW_DETAILS = 0x4
    MANAGE = 0x8
    MORE = 0x10

class WebAccountAction(enum.IntEnum):
    RECONNECT = 0
    REMOVE = 1
    VIEW_DETAILS = 2
    MANAGE = 3
    MORE = 4

Self = typing.TypeVar('Self')

class AccountsSettingsPane(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> AccountsSettingsPane: ...
    @staticmethod
    def get_for_current_view() -> typing.Optional[AccountsSettingsPane]: ...
    @staticmethod
    def show() -> None: ...
    @staticmethod
    def show_add_account_async() -> typing.Optional[winsdk.windows.foundation.IAsyncAction]: ...
    @staticmethod
    def show_add_account_for_user_async(user: typing.Optional[winsdk.windows.system.User]) -> typing.Optional[winsdk.windows.foundation.IAsyncAction]: ...
    @staticmethod
    def show_manage_accounts_async() -> typing.Optional[winsdk.windows.foundation.IAsyncAction]: ...
    @staticmethod
    def show_manage_accounts_for_user_async(user: typing.Optional[winsdk.windows.system.User]) -> typing.Optional[winsdk.windows.foundation.IAsyncAction]: ...
    def add_account_commands_requested(self, handler: winsdk.windows.foundation.TypedEventHandler[AccountsSettingsPane, AccountsSettingsPaneCommandsRequestedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_account_commands_requested(self, cookie: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class AccountsSettingsPaneCommandsRequestedEventArgs(_winrt.Object):
    header_text: str
    commands: typing.Optional[winsdk.windows.foundation.collections.IVector[SettingsCommand]]
    credential_commands: typing.Optional[winsdk.windows.foundation.collections.IVector[CredentialCommand]]
    web_account_commands: typing.Optional[winsdk.windows.foundation.collections.IVector[WebAccountCommand]]
    web_account_provider_commands: typing.Optional[winsdk.windows.foundation.collections.IVector[WebAccountProviderCommand]]
    user: typing.Optional[winsdk.windows.system.User]
    @staticmethod
    def _from(obj: _winrt.Object) -> AccountsSettingsPaneCommandsRequestedEventArgs: ...
    def get_deferral(self) -> typing.Optional[AccountsSettingsPaneEventDeferral]: ...

class AccountsSettingsPaneEventDeferral(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> AccountsSettingsPaneEventDeferral: ...
    def complete(self) -> None: ...

class CredentialCommand(_winrt.Object):
    credential_deleted: typing.Optional[CredentialCommandCredentialDeletedHandler]
    password_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential]
    @staticmethod
    def _from(obj: _winrt.Object) -> CredentialCommand: ...
    @typing.overload
    def __new__(cls: typing.Type[CredentialCommand], password_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential]) -> CredentialCommand:...
    @typing.overload
    def __new__(cls: typing.Type[CredentialCommand], password_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential], deleted: typing.Optional[CredentialCommandCredentialDeletedHandler]) -> CredentialCommand:...

class SettingsCommand(_winrt.Object):
    label: str
    invoked: typing.Optional[winsdk.windows.ui.popups.UICommandInvokedHandler]
    id: typing.Optional[_winrt.Object]
    accounts_command: typing.Optional[SettingsCommand]
    @staticmethod
    def _from(obj: _winrt.Object) -> SettingsCommand: ...
    def __new__(cls: typing.Type[SettingsCommand], settings_command_id: typing.Optional[_winrt.Object], label: str, handler: typing.Optional[winsdk.windows.ui.popups.UICommandInvokedHandler]) -> SettingsCommand:...

class SettingsPane(_winrt.Object):
    edge: SettingsEdgeLocation
    @staticmethod
    def _from(obj: _winrt.Object) -> SettingsPane: ...
    @staticmethod
    def get_for_current_view() -> typing.Optional[SettingsPane]: ...
    @staticmethod
    def show() -> None: ...
    def add_commands_requested(self, handler: winsdk.windows.foundation.TypedEventHandler[SettingsPane, SettingsPaneCommandsRequestedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_commands_requested(self, cookie: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class SettingsPaneCommandsRequest(_winrt.Object):
    application_commands: typing.Optional[winsdk.windows.foundation.collections.IVector[SettingsCommand]]
    @staticmethod
    def _from(obj: _winrt.Object) -> SettingsPaneCommandsRequest: ...

class SettingsPaneCommandsRequestedEventArgs(_winrt.Object):
    request: typing.Optional[SettingsPaneCommandsRequest]
    @staticmethod
    def _from(obj: _winrt.Object) -> SettingsPaneCommandsRequestedEventArgs: ...

class WebAccountCommand(_winrt.Object):
    actions: SupportedWebAccountActions
    invoked: typing.Optional[WebAccountCommandInvokedHandler]
    web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount]
    @staticmethod
    def _from(obj: _winrt.Object) -> WebAccountCommand: ...
    def __new__(cls: typing.Type[WebAccountCommand], web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount], invoked: typing.Optional[WebAccountCommandInvokedHandler], actions: SupportedWebAccountActions) -> WebAccountCommand:...

class WebAccountInvokedArgs(_winrt.Object):
    action: WebAccountAction
    @staticmethod
    def _from(obj: _winrt.Object) -> WebAccountInvokedArgs: ...

class WebAccountProviderCommand(_winrt.Object):
    invoked: typing.Optional[WebAccountProviderCommandInvokedHandler]
    web_account_provider: typing.Optional[winsdk.windows.security.credentials.WebAccountProvider]
    @staticmethod
    def _from(obj: _winrt.Object) -> WebAccountProviderCommand: ...
    def __new__(cls: typing.Type[WebAccountProviderCommand], web_account_provider: typing.Optional[winsdk.windows.security.credentials.WebAccountProvider], invoked: typing.Optional[WebAccountProviderCommandInvokedHandler]) -> WebAccountProviderCommand:...

CredentialCommandCredentialDeletedHandler = typing.Callable[[typing.Optional[CredentialCommand]], None]

WebAccountCommandInvokedHandler = typing.Callable[[typing.Optional[WebAccountCommand], typing.Optional[WebAccountInvokedArgs]], None]

WebAccountProviderCommandInvokedHandler = typing.Callable[[typing.Optional[WebAccountProviderCommand]], None]

