# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.3.0

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property

import winrt._winrt
import winrt.system
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.storage as windows_storage
import winrt.windows.storage.streams as windows_storage_streams
import winrt.windows.ui as windows_ui

from winrt.windows.storage.provider import CachedFileOptions, CachedFileTarget, FileUpdateStatus, ReadActivationMode, StorageProviderHardlinkPolicy, StorageProviderHydrationPolicy, StorageProviderHydrationPolicyModifier, StorageProviderInSyncPolicy, StorageProviderKnownFolderSyncStatus, StorageProviderPopulationPolicy, StorageProviderProtectionMode, StorageProviderShareLinkState, StorageProviderState, StorageProviderUICommandState, StorageProviderUriSourceStatus, UIStatus, WriteActivationMode
from winrt.windows.storage.provider import StorageProviderKnownFolderSyncRequestedHandler

Self = typing.TypeVar('Self')

@typing.final
class CachedFileUpdater_Static(type):
    def set_update_information(cls, file: typing.Optional[windows_storage.IStorageFile], content_id: str, read_mode: ReadActivationMode, write_mode: WriteActivationMode, options: CachedFileOptions, /) -> None: ...

@typing.final
class CachedFileUpdater(winrt.system.Object, metaclass=CachedFileUpdater_Static):
    pass

@typing.final
class CachedFileUpdaterUI(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CachedFileUpdaterUI: ...
    def get_deferral(self) -> typing.Optional[FileUpdateRequestDeferral]: ...
    def add_file_update_requested(self, handler: windows_foundation.TypedEventHandler[CachedFileUpdaterUI, FileUpdateRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_file_update_requested(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_u_i_requested(self, handler: windows_foundation.TypedEventHandler[CachedFileUpdaterUI, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_u_i_requested(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def title(self) -> str: ...
    @title.setter
    def title(self, value: str) -> None: ...
    @_property
    def u_i_status(self) -> UIStatus: ...
    @_property
    def update_target(self) -> CachedFileTarget: ...
    @_property
    def update_request(self) -> typing.Optional[FileUpdateRequest]: ...

@typing.final
class FileUpdateRequest(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FileUpdateRequest: ...
    def get_deferral(self) -> typing.Optional[FileUpdateRequestDeferral]: ...
    def update_local_file(self, value: typing.Optional[windows_storage.IStorageFile], /) -> None: ...
    @_property
    def status(self) -> FileUpdateStatus: ...
    @status.setter
    def status(self, value: FileUpdateStatus) -> None: ...
    @_property
    def content_id(self) -> str: ...
    @_property
    def file(self) -> typing.Optional[windows_storage.StorageFile]: ...
    @_property
    def user_input_needed_message(self) -> str: ...
    @user_input_needed_message.setter
    def user_input_needed_message(self, value: str) -> None: ...

@typing.final
class FileUpdateRequestDeferral(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FileUpdateRequestDeferral: ...
    def complete(self) -> None: ...

@typing.final
class FileUpdateRequestedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FileUpdateRequestedEventArgs: ...
    @_property
    def request(self) -> typing.Optional[FileUpdateRequest]: ...

@typing.final
class StorageProviderFileTypeInfo(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageProviderFileTypeInfo: ...
    def __new__(cls: typing.Type[StorageProviderFileTypeInfo], file_extension: str, icon_resource: str) -> StorageProviderFileTypeInfo: ...
    @_property
    def file_extension(self) -> str: ...
    @_property
    def icon_resource(self) -> str: ...

@typing.final
class StorageProviderGetContentInfoForPathResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageProviderGetContentInfoForPathResult: ...
    def __new__(cls: typing.Type[StorageProviderGetContentInfoForPathResult]) -> StorageProviderGetContentInfoForPathResult: ...
    @_property
    def status(self) -> StorageProviderUriSourceStatus: ...
    @status.setter
    def status(self, value: StorageProviderUriSourceStatus) -> None: ...
    @_property
    def content_uri(self) -> str: ...
    @content_uri.setter
    def content_uri(self, value: str) -> None: ...
    @_property
    def content_id(self) -> str: ...
    @content_id.setter
    def content_id(self, value: str) -> None: ...

@typing.final
class StorageProviderGetPathForContentUriResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageProviderGetPathForContentUriResult: ...
    def __new__(cls: typing.Type[StorageProviderGetPathForContentUriResult]) -> StorageProviderGetPathForContentUriResult: ...
    @_property
    def status(self) -> StorageProviderUriSourceStatus: ...
    @status.setter
    def status(self, value: StorageProviderUriSourceStatus) -> None: ...
    @_property
    def path(self) -> str: ...
    @path.setter
    def path(self, value: str) -> None: ...

@typing.final
class StorageProviderItemProperties_Static(type):
    def set_async(cls, item: typing.Optional[windows_storage.IStorageItem], item_properties: typing.Iterable[StorageProviderItemProperty], /) -> windows_foundation.IAsyncAction: ...

@typing.final
class StorageProviderItemProperties(winrt.system.Object, metaclass=StorageProviderItemProperties_Static):
    pass

@typing.final
class StorageProviderItemProperty(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageProviderItemProperty: ...
    def __new__(cls: typing.Type[StorageProviderItemProperty]) -> StorageProviderItemProperty: ...
    @_property
    def value(self) -> str: ...
    @value.setter
    def value(self, value: str) -> None: ...
    @_property
    def id(self) -> winrt.system.Int32: ...
    @id.setter
    def id(self, value: winrt.system.Int32) -> None: ...
    @_property
    def icon_resource(self) -> str: ...
    @icon_resource.setter
    def icon_resource(self, value: str) -> None: ...

@typing.final
class StorageProviderItemPropertyDefinition(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageProviderItemPropertyDefinition: ...
    def __new__(cls: typing.Type[StorageProviderItemPropertyDefinition]) -> StorageProviderItemPropertyDefinition: ...
    @_property
    def id(self) -> winrt.system.Int32: ...
    @id.setter
    def id(self, value: winrt.system.Int32) -> None: ...
    @_property
    def display_name_resource(self) -> str: ...
    @display_name_resource.setter
    def display_name_resource(self, value: str) -> None: ...

@typing.final
class StorageProviderKnownFolderEntry(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageProviderKnownFolderEntry: ...
    def __new__(cls: typing.Type[StorageProviderKnownFolderEntry]) -> StorageProviderKnownFolderEntry: ...
    @_property
    def status(self) -> StorageProviderKnownFolderSyncStatus: ...
    @status.setter
    def status(self, value: StorageProviderKnownFolderSyncStatus) -> None: ...
    @_property
    def known_folder_id(self) -> _uuid.UUID: ...
    @known_folder_id.setter
    def known_folder_id(self, value: _uuid.UUID) -> None: ...

@typing.final
class StorageProviderKnownFolderSyncInfo(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageProviderKnownFolderSyncInfo: ...
    def __new__(cls: typing.Type[StorageProviderKnownFolderSyncInfo]) -> StorageProviderKnownFolderSyncInfo: ...
    @_property
    def sync_requested(self) -> typing.Optional[StorageProviderKnownFolderSyncRequestedHandler]: ...
    @sync_requested.setter
    def sync_requested(self, value: typing.Optional[StorageProviderKnownFolderSyncRequestedHandler]) -> None: ...
    @_property
    def provider_display_name(self) -> str: ...
    @provider_display_name.setter
    def provider_display_name(self, value: str) -> None: ...
    @_property
    def known_folder_entries(self) -> typing.Optional[windows_foundation_collections.IVector[StorageProviderKnownFolderEntry]]: ...

@typing.final
class StorageProviderKnownFolderSyncRequestArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageProviderKnownFolderSyncRequestArgs: ...
    @_property
    def known_folders(self) -> typing.Optional[windows_foundation_collections.IVectorView[_uuid.UUID]]: ...
    @_property
    def source(self) -> typing.Optional[windows_storage.StorageFolder]: ...

@typing.final
class StorageProviderMoreInfoUI(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageProviderMoreInfoUI: ...
    def __new__(cls: typing.Type[StorageProviderMoreInfoUI]) -> StorageProviderMoreInfoUI: ...
    @_property
    def message(self) -> str: ...
    @message.setter
    def message(self, value: str) -> None: ...
    @_property
    def command(self) -> typing.Optional[IStorageProviderUICommand]: ...
    @command.setter
    def command(self, value: typing.Optional[IStorageProviderUICommand]) -> None: ...

@typing.final
class StorageProviderQuotaUI(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageProviderQuotaUI: ...
    def __new__(cls: typing.Type[StorageProviderQuotaUI]) -> StorageProviderQuotaUI: ...
    @_property
    def quota_used_label(self) -> str: ...
    @quota_used_label.setter
    def quota_used_label(self, value: str) -> None: ...
    @_property
    def quota_used_in_bytes(self) -> winrt.system.UInt64: ...
    @quota_used_in_bytes.setter
    def quota_used_in_bytes(self, value: winrt.system.UInt64) -> None: ...
    @_property
    def quota_used_color(self) -> typing.Optional[typing.Optional[windows_ui.Color]]: ...
    @quota_used_color.setter
    def quota_used_color(self, value: typing.Optional[typing.Optional[windows_ui.Color]]) -> None: ...
    @_property
    def quota_total_in_bytes(self) -> winrt.system.UInt64: ...
    @quota_total_in_bytes.setter
    def quota_total_in_bytes(self, value: winrt.system.UInt64) -> None: ...

@typing.final
class StorageProviderStatusUI(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageProviderStatusUI: ...
    def __new__(cls: typing.Type[StorageProviderStatusUI]) -> StorageProviderStatusUI: ...
    @_property
    def sync_status_command(self) -> typing.Optional[IStorageProviderUICommand]: ...
    @sync_status_command.setter
    def sync_status_command(self, value: typing.Optional[IStorageProviderUICommand]) -> None: ...
    @_property
    def quota_u_i(self) -> typing.Optional[StorageProviderQuotaUI]: ...
    @quota_u_i.setter
    def quota_u_i(self, value: typing.Optional[StorageProviderQuotaUI]) -> None: ...
    @_property
    def provider_state_label(self) -> str: ...
    @provider_state_label.setter
    def provider_state_label(self, value: str) -> None: ...
    @_property
    def provider_state_icon(self) -> typing.Optional[windows_foundation.Uri]: ...
    @provider_state_icon.setter
    def provider_state_icon(self, value: typing.Optional[windows_foundation.Uri]) -> None: ...
    @_property
    def provider_state(self) -> StorageProviderState: ...
    @provider_state.setter
    def provider_state(self, value: StorageProviderState) -> None: ...
    @_property
    def provider_secondary_commands(self) -> typing.Optional[windows_foundation_collections.IVector[IStorageProviderUICommand]]: ...
    @provider_secondary_commands.setter
    def provider_secondary_commands(self, value: typing.Optional[windows_foundation_collections.IVector[IStorageProviderUICommand]]) -> None: ...
    @_property
    def provider_primary_command(self) -> typing.Optional[IStorageProviderUICommand]: ...
    @provider_primary_command.setter
    def provider_primary_command(self, value: typing.Optional[IStorageProviderUICommand]) -> None: ...
    @_property
    def more_info_u_i(self) -> typing.Optional[StorageProviderMoreInfoUI]: ...
    @more_info_u_i.setter
    def more_info_u_i(self, value: typing.Optional[StorageProviderMoreInfoUI]) -> None: ...

@typing.final
class StorageProviderSyncRootInfo(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageProviderSyncRootInfo: ...
    def __new__(cls: typing.Type[StorageProviderSyncRootInfo]) -> StorageProviderSyncRootInfo: ...
    @_property
    def version(self) -> str: ...
    @version.setter
    def version(self, value: str) -> None: ...
    @_property
    def show_siblings_as_group(self) -> bool: ...
    @show_siblings_as_group.setter
    def show_siblings_as_group(self, value: bool) -> None: ...
    @_property
    def recycle_bin_uri(self) -> typing.Optional[windows_foundation.Uri]: ...
    @recycle_bin_uri.setter
    def recycle_bin_uri(self, value: typing.Optional[windows_foundation.Uri]) -> None: ...
    @_property
    def protection_mode(self) -> StorageProviderProtectionMode: ...
    @protection_mode.setter
    def protection_mode(self, value: StorageProviderProtectionMode) -> None: ...
    @_property
    def population_policy(self) -> StorageProviderPopulationPolicy: ...
    @population_policy.setter
    def population_policy(self, value: StorageProviderPopulationPolicy) -> None: ...
    @_property
    def path(self) -> typing.Optional[windows_storage.IStorageFolder]: ...
    @path.setter
    def path(self, value: typing.Optional[windows_storage.IStorageFolder]) -> None: ...
    @_property
    def in_sync_policy(self) -> StorageProviderInSyncPolicy: ...
    @in_sync_policy.setter
    def in_sync_policy(self, value: StorageProviderInSyncPolicy) -> None: ...
    @_property
    def id(self) -> str: ...
    @id.setter
    def id(self, value: str) -> None: ...
    @_property
    def icon_resource(self) -> str: ...
    @icon_resource.setter
    def icon_resource(self, value: str) -> None: ...
    @_property
    def hydration_policy_modifier(self) -> StorageProviderHydrationPolicyModifier: ...
    @hydration_policy_modifier.setter
    def hydration_policy_modifier(self, value: StorageProviderHydrationPolicyModifier) -> None: ...
    @_property
    def hydration_policy(self) -> StorageProviderHydrationPolicy: ...
    @hydration_policy.setter
    def hydration_policy(self, value: StorageProviderHydrationPolicy) -> None: ...
    @_property
    def hardlink_policy(self) -> StorageProviderHardlinkPolicy: ...
    @hardlink_policy.setter
    def hardlink_policy(self, value: StorageProviderHardlinkPolicy) -> None: ...
    @_property
    def display_name_resource(self) -> str: ...
    @display_name_resource.setter
    def display_name_resource(self, value: str) -> None: ...
    @_property
    def context(self) -> typing.Optional[windows_storage_streams.IBuffer]: ...
    @context.setter
    def context(self, value: typing.Optional[windows_storage_streams.IBuffer]) -> None: ...
    @_property
    def allow_pinning(self) -> bool: ...
    @allow_pinning.setter
    def allow_pinning(self, value: bool) -> None: ...
    @_property
    def storage_provider_item_property_definitions(self) -> typing.Optional[windows_foundation_collections.IVector[StorageProviderItemPropertyDefinition]]: ...
    @_property
    def provider_id(self) -> _uuid.UUID: ...
    @provider_id.setter
    def provider_id(self, value: _uuid.UUID) -> None: ...
    @_property
    def fallback_file_type_info(self) -> typing.Optional[windows_foundation_collections.IVector[StorageProviderFileTypeInfo]]: ...

@typing.final
class StorageProviderSyncRootManager_Static(type):
    def get_current_sync_roots(cls) -> typing.Optional[windows_foundation_collections.IVectorView[StorageProviderSyncRootInfo]]: ...
    def get_sync_root_information_for_folder(cls, folder: typing.Optional[windows_storage.IStorageFolder], /) -> typing.Optional[StorageProviderSyncRootInfo]: ...
    def get_sync_root_information_for_id(cls, id: str, /) -> typing.Optional[StorageProviderSyncRootInfo]: ...
    def is_supported(cls) -> bool: ...
    def register(cls, sync_root_information: typing.Optional[StorageProviderSyncRootInfo], /) -> None: ...
    def unregister(cls, id: str, /) -> None: ...

@typing.final
class StorageProviderSyncRootManager(winrt.system.Object, metaclass=StorageProviderSyncRootManager_Static):
    pass

@typing.final
class IStorageProviderItemPropertySource(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IStorageProviderItemPropertySource: ...
    def get_item_properties(self, item_path: str, /) -> typing.Optional[windows_foundation_collections.IIterable[StorageProviderItemProperty]]: ...

@typing.final
class IStorageProviderKnownFolderSyncInfoSource(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IStorageProviderKnownFolderSyncInfoSource: ...
    def get_known_folder_sync_info(self) -> typing.Optional[StorageProviderKnownFolderSyncInfo]: ...
    def add_known_folder_sync_info_changed(self, handler: windows_foundation.TypedEventHandler[IStorageProviderKnownFolderSyncInfoSource, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_known_folder_sync_info_changed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...

@typing.final
class IStorageProviderKnownFolderSyncInfoSourceFactory(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IStorageProviderKnownFolderSyncInfoSourceFactory: ...
    def get_known_folder_sync_info_source(self) -> typing.Optional[IStorageProviderKnownFolderSyncInfoSource]: ...

@typing.final
class IStorageProviderPropertyCapabilities(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IStorageProviderPropertyCapabilities: ...
    def is_property_supported(self, property_canonical_name: str, /) -> bool: ...

@typing.final
class IStorageProviderShareLinkSource(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IStorageProviderShareLinkSource: ...
    def create_link_async(self, storage_item_list: windows_foundation_collections.IVectorView[windows_storage.IStorageItem], /) -> windows_foundation.IAsyncOperation[windows_foundation.Uri]: ...
    def get_default_access_control_string_async(self, storage_item_list: windows_foundation_collections.IVectorView[windows_storage.IStorageItem], /) -> windows_foundation.IAsyncOperation[str]: ...
    def get_state(self, storage_item_list: windows_foundation_collections.IVectorView[windows_storage.IStorageItem], /) -> windows_foundation.IAsyncOperation[StorageProviderShareLinkState]: ...

@typing.final
class IStorageProviderStatusUISource(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IStorageProviderStatusUISource: ...
    def get_status_u_i(self) -> typing.Optional[StorageProviderStatusUI]: ...
    def add_status_u_i_changed(self, handler: windows_foundation.TypedEventHandler[IStorageProviderStatusUISource, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_status_u_i_changed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...

@typing.final
class IStorageProviderStatusUISourceFactory(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IStorageProviderStatusUISourceFactory: ...
    def get_status_u_i_source(self, sync_root_id: str, /) -> typing.Optional[IStorageProviderStatusUISource]: ...

@typing.final
class IStorageProviderUICommand(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IStorageProviderUICommand: ...
    def invoke(self) -> None: ...
    @_property
    def description(self) -> str: ...
    @_property
    def icon(self) -> typing.Optional[windows_foundation.Uri]: ...
    @_property
    def label(self) -> str: ...
    @_property
    def state(self) -> StorageProviderUICommandState: ...

@typing.final
class IStorageProviderUriSource(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IStorageProviderUriSource: ...
    def get_content_info_for_path(self, path: str, result: typing.Optional[StorageProviderGetContentInfoForPathResult], /) -> None: ...
    def get_path_for_content_uri(self, content_uri: str, result: typing.Optional[StorageProviderGetPathForContentUriResult], /) -> None: ...

