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

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
import winrt.windows.foundation.collections
import winrt.windows.storage
import winrt.windows.storage.streams
import winrt.windows.ui

from winrt.windows.storage.provider import CachedFileOptions, CachedFileTarget, FileUpdateStatus, ReadActivationMode, StorageProviderHardlinkPolicy, StorageProviderHydrationPolicy, StorageProviderHydrationPolicyModifier, StorageProviderInSyncPolicy, StorageProviderKnownFolderSyncStatus, StorageProviderPopulationPolicy, StorageProviderProtectionMode, 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[winrt.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):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CachedFileUpdater: ...

@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: winrt.windows.foundation.TypedEventHandler[CachedFileUpdaterUI, FileUpdateRequestedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_file_update_requested(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_u_i_requested(self, handler: winrt.windows.foundation.TypedEventHandler[CachedFileUpdaterUI, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_u_i_requested(self, token: winrt.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[winrt.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[winrt.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[winrt.windows.storage.IStorageItem], item_properties: typing.Iterable[StorageProviderItemProperty], /) -> winrt.windows.foundation.IAsyncAction: ...

@typing.final
class StorageProviderItemProperties(winrt.system.Object, metaclass=StorageProviderItemProperties_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageProviderItemProperties: ...

@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[winrt.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[winrt.windows.foundation.collections.IVectorView[_uuid.UUID]]: ...
    @_property
    def source(self) -> typing.Optional[winrt.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[winrt.windows.ui.Color]]: ...
    @quota_used_color.setter
    def quota_used_color(self, value: typing.Optional[typing.Optional[winrt.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[winrt.windows.foundation.Uri]: ...
    @provider_state_icon.setter
    def provider_state_icon(self, value: typing.Optional[winrt.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[winrt.windows.foundation.collections.IVector[IStorageProviderUICommand]]: ...
    @provider_secondary_commands.setter
    def provider_secondary_commands(self, value: typing.Optional[winrt.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[winrt.windows.foundation.Uri]: ...
    @recycle_bin_uri.setter
    def recycle_bin_uri(self, value: typing.Optional[winrt.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[winrt.windows.storage.IStorageFolder]: ...
    @path.setter
    def path(self, value: typing.Optional[winrt.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[winrt.windows.storage.streams.IBuffer]: ...
    @context.setter
    def context(self, value: typing.Optional[winrt.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[winrt.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[winrt.windows.foundation.collections.IVector[StorageProviderFileTypeInfo]]: ...

@typing.final
class StorageProviderSyncRootManager_Static(type):
    def get_current_sync_roots(cls) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[StorageProviderSyncRootInfo]]: ...
    def get_sync_root_information_for_folder(cls, folder: typing.Optional[winrt.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):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageProviderSyncRootManager: ...

@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[winrt.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: winrt.windows.foundation.TypedEventHandler[IStorageProviderKnownFolderSyncInfoSource, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_known_folder_sync_info_changed(self, token: winrt.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 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: winrt.windows.foundation.TypedEventHandler[IStorageProviderStatusUISource, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_status_u_i_changed(self, token: winrt.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[winrt.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: ...

