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

import enum
import sys
import types
import typing
import uuid

import winsdk._winrt as _winrt

try:
    import winsdk.windows.foundation
except Exception:
    pass

try:
    import winsdk.windows.foundation.collections
except Exception:
    pass

try:
    import winsdk.windows.storage
except Exception:
    pass

try:
    import winsdk.windows.system
except Exception:
    pass

class AccessCacheOptions(enum.IntFlag):
    NONE = 0
    DISALLOW_USER_INPUT = 0x1
    FAST_LOCATIONS_ONLY = 0x2
    USE_READ_ONLY_CACHED_COPY = 0x4
    SUPPRESS_ACCESS_TIME_UPDATE = 0x8

class RecentStorageItemVisibility(enum.IntEnum):
    APP_ONLY = 0
    APP_AND_SYSTEM = 1

class AccessListEntry:
    token: str
    metadata: str
    def __init__(self, token: str, metadata: str) -> None: ...

class AccessListEntryView(winsdk.windows.foundation.collections.IVectorView[AccessListEntry], winsdk.windows.foundation.collections.IIterable[AccessListEntry], _winrt.Object):
    size: _winrt.UInt32
    @staticmethod
    def _from(obj: _winrt.Object) -> AccessListEntryView: ...
    @typing.overload
    def first(self) -> winsdk.windows.foundation.collections.IIterator[AccessListEntry]: ...
    @typing.overload
    def get_at(self, index: _winrt.UInt32) -> AccessListEntry: ...
    @typing.overload
    def get_many(self, start_index: _winrt.UInt32, items_size: _winrt.UInt32) -> typing.Tuple[_winrt.UInt32, typing.List[AccessListEntry]]: ...
    @typing.overload
    def index_of(self, value: AccessListEntry) -> typing.Tuple[_winrt.Boolean, _winrt.UInt32]: ...

class ItemRemovedEventArgs(_winrt.Object):
    removed_entry: AccessListEntry
    @staticmethod
    def _from(obj: _winrt.Object) -> ItemRemovedEventArgs: ...

class StorageApplicationPermissions(_winrt.Object):
    future_access_list: StorageItemAccessList
    most_recently_used_list: StorageItemMostRecentlyUsedList
    @staticmethod
    def _from(obj: _winrt.Object) -> StorageApplicationPermissions: ...
    @typing.overload
    @staticmethod
    def get_future_access_list_for_user(user: winsdk.windows.system.User) -> StorageItemAccessList: ...
    @typing.overload
    @staticmethod
    def get_most_recently_used_list_for_user(user: winsdk.windows.system.User) -> StorageItemMostRecentlyUsedList: ...

class StorageItemAccessList(IStorageItemAccessList, _winrt.Object):
    entries: AccessListEntryView
    maximum_items_allowed: _winrt.UInt32
    @staticmethod
    def _from(obj: _winrt.Object) -> StorageItemAccessList: ...
    @typing.overload
    def add(self, file: winsdk.windows.storage.IStorageItem) -> str: ...
    @typing.overload
    def add(self, file: winsdk.windows.storage.IStorageItem, metadata: str) -> str: ...
    @typing.overload
    def add_or_replace(self, token: str, file: winsdk.windows.storage.IStorageItem) -> None: ...
    @typing.overload
    def add_or_replace(self, token: str, file: winsdk.windows.storage.IStorageItem, metadata: str) -> None: ...
    @typing.overload
    def check_access(self, file: winsdk.windows.storage.IStorageItem) -> _winrt.Boolean: ...
    @typing.overload
    def clear(self) -> None: ...
    @typing.overload
    def contains_item(self, token: str) -> _winrt.Boolean: ...
    @typing.overload
    def get_file_async(self, token: str) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageFile]: ...
    @typing.overload
    def get_file_async(self, token: str, options: AccessCacheOptions) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageFile]: ...
    @typing.overload
    def get_folder_async(self, token: str) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageFolder]: ...
    @typing.overload
    def get_folder_async(self, token: str, options: AccessCacheOptions) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageFolder]: ...
    @typing.overload
    def get_item_async(self, token: str) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.IStorageItem]: ...
    @typing.overload
    def get_item_async(self, token: str, options: AccessCacheOptions) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.IStorageItem]: ...
    @typing.overload
    def remove(self, token: str) -> None: ...

class StorageItemMostRecentlyUsedList(IStorageItemAccessList, _winrt.Object):
    entries: AccessListEntryView
    maximum_items_allowed: _winrt.UInt32
    @staticmethod
    def _from(obj: _winrt.Object) -> StorageItemMostRecentlyUsedList: ...
    @typing.overload
    def add(self, file: winsdk.windows.storage.IStorageItem) -> str: ...
    @typing.overload
    def add(self, file: winsdk.windows.storage.IStorageItem, metadata: str) -> str: ...
    @typing.overload
    def add(self, file: winsdk.windows.storage.IStorageItem, metadata: str, visibility: RecentStorageItemVisibility) -> str: ...
    @typing.overload
    def add_or_replace(self, token: str, file: winsdk.windows.storage.IStorageItem) -> None: ...
    @typing.overload
    def add_or_replace(self, token: str, file: winsdk.windows.storage.IStorageItem, metadata: str) -> None: ...
    @typing.overload
    def add_or_replace(self, token: str, file: winsdk.windows.storage.IStorageItem, metadata: str, visibility: RecentStorageItemVisibility) -> None: ...
    @typing.overload
    def check_access(self, file: winsdk.windows.storage.IStorageItem) -> _winrt.Boolean: ...
    @typing.overload
    def clear(self) -> None: ...
    @typing.overload
    def contains_item(self, token: str) -> _winrt.Boolean: ...
    @typing.overload
    def get_file_async(self, token: str) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageFile]: ...
    @typing.overload
    def get_file_async(self, token: str, options: AccessCacheOptions) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageFile]: ...
    @typing.overload
    def get_folder_async(self, token: str) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageFolder]: ...
    @typing.overload
    def get_folder_async(self, token: str, options: AccessCacheOptions) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageFolder]: ...
    @typing.overload
    def get_item_async(self, token: str) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.IStorageItem]: ...
    @typing.overload
    def get_item_async(self, token: str, options: AccessCacheOptions) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.IStorageItem]: ...
    @typing.overload
    def remove(self, token: str) -> None: ...
    @typing.overload
    def add_item_removed(self, handler: winsdk.windows.foundation.TypedEventHandler[StorageItemMostRecentlyUsedList, ItemRemovedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_item_removed(self, event_cookie: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class IStorageItemAccessList(_winrt.Object):
    entries: AccessListEntryView
    maximum_items_allowed: _winrt.UInt32
    @staticmethod
    def _from(obj: _winrt.Object) -> IStorageItemAccessList: ...
    @typing.overload
    def add(self, file: winsdk.windows.storage.IStorageItem) -> str: ...
    @typing.overload
    def add(self, file: winsdk.windows.storage.IStorageItem, metadata: str) -> str: ...
    @typing.overload
    def add_or_replace(self, token: str, file: winsdk.windows.storage.IStorageItem) -> None: ...
    @typing.overload
    def add_or_replace(self, token: str, file: winsdk.windows.storage.IStorageItem, metadata: str) -> None: ...
    @typing.overload
    def check_access(self, file: winsdk.windows.storage.IStorageItem) -> _winrt.Boolean: ...
    @typing.overload
    def clear(self) -> None: ...
    @typing.overload
    def contains_item(self, token: str) -> _winrt.Boolean: ...
    @typing.overload
    def get_file_async(self, token: str) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageFile]: ...
    @typing.overload
    def get_file_async(self, token: str, options: AccessCacheOptions) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageFile]: ...
    @typing.overload
    def get_folder_async(self, token: str) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageFolder]: ...
    @typing.overload
    def get_folder_async(self, token: str, options: AccessCacheOptions) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageFolder]: ...
    @typing.overload
    def get_item_async(self, token: str) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.IStorageItem]: ...
    @typing.overload
    def get_item_async(self, token: str, options: AccessCacheOptions) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.IStorageItem]: ...
    @typing.overload
    def remove(self, token: str) -> None: ...

