# 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.credentials

class DeviceAccountAuthenticationType(enum.IntEnum):
    BASIC = 0
    O_AUTH = 1
    SINGLE_SIGN_ON = 2

class DeviceAccountIconId(enum.IntEnum):
    EXCHANGE = 0
    MSA = 1
    OUTLOOK = 2
    GENERIC = 3

class DeviceAccountMailAgeFilter(enum.IntEnum):
    ALL = 0
    LAST1_DAY = 1
    LAST3_DAYS = 2
    LAST7_DAYS = 3
    LAST14_DAYS = 4
    LAST30_DAYS = 5
    LAST90_DAYS = 6

class DeviceAccountServerType(enum.IntEnum):
    EXCHANGE = 0
    POP = 1
    IMAP = 2

class DeviceAccountSyncScheduleKind(enum.IntEnum):
    MANUAL = 0
    EVERY15_MINUTES = 1
    EVERY30_MINUTES = 2
    EVERY60_MINUTES = 3
    EVERY2_HOURS = 4
    DAILY = 5
    AS_ITEMS_ARRIVE = 6

Self = typing.TypeVar('Self')

class DeviceAccountConfiguration(winsdk.system.Object):
    email_address: str
    domain: str
    device_account_type_id: str
    outgoing_server_address: str
    contacts_sync_enabled: winsdk.system.Boolean
    calendar_sync_enabled: winsdk.system.Boolean
    account_name: str
    incoming_server_username: str
    incoming_server_requires_ssl: winsdk.system.Boolean
    incoming_server_port: winsdk.system.Int32
    incoming_server_address: str
    email_sync_enabled: winsdk.system.Boolean
    server_type: DeviceAccountServerType
    outgoing_server_username: str
    outgoing_server_requires_ssl: winsdk.system.Boolean
    outgoing_server_port: winsdk.system.Int32
    account_icon_id: DeviceAccountIconId
    cal_dav_server_url: typing.Optional[winsdk.windows.foundation.Uri]
    cal_dav_requires_ssl: winsdk.system.Boolean
    auto_select_authentication_certificate: winsdk.system.Boolean
    authentication_type: DeviceAccountAuthenticationType
    authentication_certificate_id: str
    is_outgoing_server_authentication_enabled: winsdk.system.Boolean
    is_client_authentication_certificate_required: winsdk.system.Boolean
    incoming_server_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential]
    is_outgoing_server_authentication_required: winsdk.system.Boolean
    card_dav_sync_schedule_kind: DeviceAccountSyncScheduleKind
    always_download_full_message: winsdk.system.Boolean
    card_dav_server_url: typing.Optional[winsdk.windows.foundation.Uri]
    card_dav_requires_ssl: winsdk.system.Boolean
    cal_dav_sync_schedule_kind: DeviceAccountSyncScheduleKind
    incoming_server_certificate_hash: str
    was_outgoing_server_certificate_hash_confirmed: winsdk.system.Boolean
    was_modified_by_user: winsdk.system.Boolean
    sync_schedule_kind: DeviceAccountSyncScheduleKind
    sso_account_id: str
    was_incoming_server_certificate_hash_confirmed: winsdk.system.Boolean
    o_auth_refresh_token: str
    is_externally_managed: winsdk.system.Boolean
    mail_age_filter: DeviceAccountMailAgeFilter
    is_sync_schedule_managed_by_system: winsdk.system.Boolean
    outgoing_server_certificate_hash: str
    outgoing_server_credential: typing.Optional[winsdk.windows.security.credentials.PasswordCredential]
    does_policy_allow_mail_sync: winsdk.system.Boolean
    is_sso_authentication_supported: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> DeviceAccountConfiguration: ...
    def __new__(cls: typing.Type[DeviceAccountConfiguration]) -> DeviceAccountConfiguration:...

class UserDataAccountSystemAccessManager(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object) -> UserDataAccountSystemAccessManager: ...
    @staticmethod
    def add_and_show_device_accounts_async(accounts: typing.Iterable[DeviceAccountConfiguration]) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[str]]: ...
    @staticmethod
    def create_device_account_async(account: typing.Optional[DeviceAccountConfiguration]) -> winsdk.windows.foundation.IAsyncOperation[str]: ...
    @staticmethod
    def delete_device_account_async(account_id: str) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def get_device_account_configuration_async(account_id: str) -> winsdk.windows.foundation.IAsyncOperation[DeviceAccountConfiguration]: ...
    @staticmethod
    def suppress_local_account_with_account_async(user_data_account_id: str) -> winsdk.windows.foundation.IAsyncAction: ...

