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

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.core
import winsdk.windows.security.credentials
import winsdk.windows.storage.streams
import winsdk.windows.system
import winsdk.windows.ui.xaml

class DeliveryOptimizationDownloadMode(enum.IntEnum):
    SIMPLE = 0
    HTTP_ONLY = 1
    LAN = 2
    GROUP = 3
    INTERNET = 4
    BYPASS = 5

class DeliveryOptimizationDownloadModeSource(enum.IntEnum):
    DEFAULT = 0
    POLICY = 1

class StoreLogOptions(enum.IntFlag):
    NONE = 0
    TRY_ELEVATE = 0x1

class StorePreviewProductPurchaseStatus(enum.IntEnum):
    SUCCEEDED = 0
    ALREADY_PURCHASED = 1
    NOT_FULFILLED = 2
    NOT_PURCHASED = 3

class StoreSystemFeature(enum.IntEnum):
    ARCHITECTURE_X86 = 0
    ARCHITECTURE_X64 = 1
    ARCHITECTURE_ARM = 2
    DIRECT_X9 = 3
    DIRECT_X10 = 4
    DIRECT_X11 = 5
    D3_D12_HARDWARE_F_L11 = 6
    D3_D12_HARDWARE_F_L12 = 7
    MEMORY300_M_B = 8
    MEMORY750_M_B = 9
    MEMORY1_G_B = 10
    MEMORY2_G_B = 11
    CAMERA_FRONT = 12
    CAMERA_REAR = 13
    GYROSCOPE = 14
    HOVER = 15
    MAGNETOMETER = 16
    NFC = 17
    RESOLUTION720_P = 18
    RESOLUTION_WVGA = 19
    RESOLUTION_WVGA_OR720_P = 20
    RESOLUTION_WXGA = 21
    RESOLUTION_WVGA_OR_WXGA = 22
    RESOLUTION_WXGA_OR720_P = 23
    MEMORY4_G_B = 24
    MEMORY6_G_B = 25
    MEMORY8_G_B = 26
    MEMORY12_G_B = 27
    MEMORY16_G_B = 28
    MEMORY20_G_B = 29
    VIDEO_MEMORY2_G_B = 30
    VIDEO_MEMORY4_G_B = 31
    VIDEO_MEMORY6_G_B = 32
    VIDEO_MEMORY1_G_B = 33
    ARCHITECTURE_ARM64 = 34

Self = typing.TypeVar('Self')

class DeliveryOptimizationSettings(winsdk.system.Object):
    download_mode: DeliveryOptimizationDownloadMode
    download_mode_source: DeliveryOptimizationDownloadModeSource
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> DeliveryOptimizationSettings: ...
    @staticmethod
    def get_current_settings() -> typing.Optional[DeliveryOptimizationSettings]: ...

class StoreConfiguration(winsdk.system.Object):
    hardware_manufacturer_info: typing.ClassVar[typing.Optional[StoreHardwareManufacturerInfo]]
    purchase_prompting_policy: typing.ClassVar[typing.Optional[typing.Optional[winsdk.system.UInt32]]]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> StoreConfiguration: ...
    @staticmethod
    def filter_unsupported_system_features_async(system_features: typing.Iterable[StoreSystemFeature], /) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[StoreSystemFeature]]: ...
    @staticmethod
    def get_enterprise_store_web_account_id() -> str: ...
    @staticmethod
    def get_enterprise_store_web_account_id_for_user(user: typing.Optional[winsdk.windows.system.User], /) -> str: ...
    @staticmethod
    def get_purchase_prompting_policy_for_user(user: typing.Optional[winsdk.windows.system.User], /) -> typing.Optional[typing.Optional[winsdk.system.UInt32]]: ...
    @staticmethod
    def get_store_log_data_async(options: StoreLogOptions, /) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.streams.IRandomAccessStreamReference]: ...
    @staticmethod
    def get_store_web_account_id() -> str: ...
    @staticmethod
    def get_store_web_account_id_for_user(user: typing.Optional[winsdk.windows.system.User], /) -> str: ...
    @staticmethod
    def has_store_web_account() -> winsdk.system.Boolean: ...
    @staticmethod
    def has_store_web_account_for_user(user: typing.Optional[winsdk.windows.system.User], /) -> winsdk.system.Boolean: ...
    @staticmethod
    def is_pin_to_desktop_supported() -> winsdk.system.Boolean: ...
    @staticmethod
    def is_pin_to_start_supported() -> winsdk.system.Boolean: ...
    @staticmethod
    def is_pin_to_taskbar_supported() -> winsdk.system.Boolean: ...
    @staticmethod
    def is_store_web_account_id(web_account_id: str, /) -> winsdk.system.Boolean: ...
    @staticmethod
    def is_store_web_account_id_for_user(user: typing.Optional[winsdk.windows.system.User], web_account_id: str, /) -> winsdk.system.Boolean: ...
    @staticmethod
    def pin_to_desktop(app_package_family_name: str, /) -> None: ...
    @staticmethod
    def pin_to_desktop_for_user(user: typing.Optional[winsdk.windows.system.User], app_package_family_name: str, /) -> None: ...
    @staticmethod
    def set_enterprise_store_web_account_id(web_account_id: str, /) -> None: ...
    @staticmethod
    def set_enterprise_store_web_account_id_for_user(user: typing.Optional[winsdk.windows.system.User], web_account_id: str, /) -> None: ...
    @staticmethod
    def set_mobile_operator_configuration(mobile_operator_id: str, app_download_limit_in_megabytes: winsdk.system.UInt32, update_download_limit_in_megabytes: winsdk.system.UInt32, /) -> None: ...
    @staticmethod
    def set_purchase_prompting_policy_for_user(user: typing.Optional[winsdk.windows.system.User], value: typing.Optional[winsdk.system.UInt32], /) -> None: ...
    @staticmethod
    def set_store_web_account_id(web_account_id: str, /) -> None: ...
    @staticmethod
    def set_store_web_account_id_for_user(user: typing.Optional[winsdk.windows.system.User], web_account_id: str, /) -> None: ...
    @staticmethod
    def set_system_configuration(catalog_hardware_manufacturer_id: str, catalog_store_content_modifier_id: str, system_configuration_expiration: datetime.datetime, catalog_hardware_descriptor: str, /) -> None: ...
    @staticmethod
    def should_restrict_to_enterprise_store_only() -> winsdk.system.Boolean: ...
    @staticmethod
    def should_restrict_to_enterprise_store_only_for_user(user: typing.Optional[winsdk.windows.system.User], /) -> winsdk.system.Boolean: ...

class StoreHardwareManufacturerInfo(winsdk.system.Object):
    hardware_manufacturer_id: str
    manufacturer_name: str
    model_name: str
    store_content_modifier_id: str
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> StoreHardwareManufacturerInfo: ...

class StorePreview(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> StorePreview: ...
    @staticmethod
    def load_add_on_product_infos_async() -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[StorePreviewProductInfo]]: ...
    @staticmethod
    def request_product_purchase_by_product_id_and_sku_id_async(product_id: str, sku_id: str, /) -> winsdk.windows.foundation.IAsyncOperation[StorePreviewPurchaseResults]: ...

class StorePreviewProductInfo(winsdk.system.Object):
    description: str
    product_id: str
    product_type: str
    sku_info_list: typing.Optional[winsdk.windows.foundation.collections.IVectorView[StorePreviewSkuInfo]]
    title: str
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> StorePreviewProductInfo: ...

class StorePreviewPurchaseResults(winsdk.system.Object):
    product_purchase_status: StorePreviewProductPurchaseStatus
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> StorePreviewPurchaseResults: ...

class StorePreviewSkuInfo(winsdk.system.Object):
    currency_code: str
    custom_developer_data: str
    description: str
    extended_data: str
    formatted_list_price: str
    product_id: str
    sku_id: str
    sku_type: str
    title: str
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> StorePreviewSkuInfo: ...

class WebAuthenticationCoreManagerHelper(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> WebAuthenticationCoreManagerHelper: ...
    @typing.overload
    @staticmethod
    def request_token_with_u_i_element_hosting_async(request: typing.Optional[winsdk.windows.security.authentication.web.core.WebTokenRequest], ui_element: typing.Optional[winsdk.windows.ui.xaml.UIElement], /) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.security.authentication.web.core.WebTokenRequestResult]: ...
    @typing.overload
    @staticmethod
    def request_token_with_u_i_element_hosting_async(request: typing.Optional[winsdk.windows.security.authentication.web.core.WebTokenRequest], web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount], ui_element: typing.Optional[winsdk.windows.ui.xaml.UIElement], /) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.security.authentication.web.core.WebTokenRequestResult]: ...

