# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.2.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.devices.geolocation as windows_devices_geolocation
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

from winrt.windows.storage.fileproperties import PhotoOrientation, PropertyPrefetchOptions, ThumbnailMode, ThumbnailOptions, ThumbnailType, VideoOrientation

Self = typing.TypeVar('Self')

@typing.final
class BasicProperties(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> BasicProperties: ...
    def retrieve_properties_async(self, properties_to_retrieve: typing.Iterable[str], /) -> windows_foundation.IAsyncOperation[windows_foundation_collections.IMap[str, winrt.system.Object]]: ...
    @typing.overload
    def save_properties_async(self) -> windows_foundation.IAsyncAction: ...
    @typing.overload
    def save_properties_async(self, properties_to_save: typing.Iterable[windows_foundation_collections.IKeyValuePair[str, winrt.system.Object]], /) -> windows_foundation.IAsyncAction: ...
    @_property
    def date_modified(self) -> datetime.datetime: ...
    @_property
    def item_date(self) -> datetime.datetime: ...
    @_property
    def size(self) -> winrt.system.UInt64: ...

@typing.final
class DocumentProperties(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DocumentProperties: ...
    def retrieve_properties_async(self, properties_to_retrieve: typing.Iterable[str], /) -> windows_foundation.IAsyncOperation[windows_foundation_collections.IMap[str, winrt.system.Object]]: ...
    @typing.overload
    def save_properties_async(self) -> windows_foundation.IAsyncAction: ...
    @typing.overload
    def save_properties_async(self, properties_to_save: typing.Iterable[windows_foundation_collections.IKeyValuePair[str, winrt.system.Object]], /) -> windows_foundation.IAsyncAction: ...
    @_property
    def title(self) -> str: ...
    @title.setter
    def title(self, value: str) -> None: ...
    @_property
    def comment(self) -> str: ...
    @comment.setter
    def comment(self, value: str) -> None: ...
    @_property
    def author(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def keywords(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...

@typing.final
class GeotagHelper_Static(type):
    def get_geotag_async(cls, file: typing.Optional[windows_storage.IStorageFile], /) -> windows_foundation.IAsyncOperation[windows_devices_geolocation.Geopoint]: ...
    def set_geotag_async(cls, file: typing.Optional[windows_storage.IStorageFile], geopoint: typing.Optional[windows_devices_geolocation.Geopoint], /) -> windows_foundation.IAsyncAction: ...
    def set_geotag_from_geolocator_async(cls, file: typing.Optional[windows_storage.IStorageFile], geolocator: typing.Optional[windows_devices_geolocation.Geolocator], /) -> windows_foundation.IAsyncAction: ...

@typing.final
class GeotagHelper(winrt.system.Object, metaclass=GeotagHelper_Static):
    pass

@typing.final
class ImageProperties(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ImageProperties: ...
    def retrieve_properties_async(self, properties_to_retrieve: typing.Iterable[str], /) -> windows_foundation.IAsyncOperation[windows_foundation_collections.IMap[str, winrt.system.Object]]: ...
    @typing.overload
    def save_properties_async(self) -> windows_foundation.IAsyncAction: ...
    @typing.overload
    def save_properties_async(self, properties_to_save: typing.Iterable[windows_foundation_collections.IKeyValuePair[str, winrt.system.Object]], /) -> windows_foundation.IAsyncAction: ...
    @_property
    def title(self) -> str: ...
    @title.setter
    def title(self, value: str) -> None: ...
    @_property
    def rating(self) -> winrt.system.UInt32: ...
    @rating.setter
    def rating(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def date_taken(self) -> datetime.datetime: ...
    @date_taken.setter
    def date_taken(self, value: datetime.datetime) -> None: ...
    @_property
    def camera_model(self) -> str: ...
    @camera_model.setter
    def camera_model(self, value: str) -> None: ...
    @_property
    def camera_manufacturer(self) -> str: ...
    @camera_manufacturer.setter
    def camera_manufacturer(self, value: str) -> None: ...
    @_property
    def height(self) -> winrt.system.UInt32: ...
    @_property
    def keywords(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def latitude(self) -> typing.Optional[typing.Optional[winrt.system.Double]]: ...
    @_property
    def longitude(self) -> typing.Optional[typing.Optional[winrt.system.Double]]: ...
    @_property
    def orientation(self) -> PhotoOrientation: ...
    @_property
    def people_names(self) -> typing.Optional[windows_foundation_collections.IVectorView[str]]: ...
    @_property
    def width(self) -> winrt.system.UInt32: ...

@typing.final
class MusicProperties(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> MusicProperties: ...
    def retrieve_properties_async(self, properties_to_retrieve: typing.Iterable[str], /) -> windows_foundation.IAsyncOperation[windows_foundation_collections.IMap[str, winrt.system.Object]]: ...
    @typing.overload
    def save_properties_async(self) -> windows_foundation.IAsyncAction: ...
    @typing.overload
    def save_properties_async(self, properties_to_save: typing.Iterable[windows_foundation_collections.IKeyValuePair[str, winrt.system.Object]], /) -> windows_foundation.IAsyncAction: ...
    @_property
    def year(self) -> winrt.system.UInt32: ...
    @year.setter
    def year(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def track_number(self) -> winrt.system.UInt32: ...
    @track_number.setter
    def track_number(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def title(self) -> str: ...
    @title.setter
    def title(self, value: str) -> None: ...
    @_property
    def subtitle(self) -> str: ...
    @subtitle.setter
    def subtitle(self, value: str) -> None: ...
    @_property
    def rating(self) -> winrt.system.UInt32: ...
    @rating.setter
    def rating(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def publisher(self) -> str: ...
    @publisher.setter
    def publisher(self, value: str) -> None: ...
    @_property
    def artist(self) -> str: ...
    @artist.setter
    def artist(self, value: str) -> None: ...
    @_property
    def album_artist(self) -> str: ...
    @album_artist.setter
    def album_artist(self, value: str) -> None: ...
    @_property
    def album(self) -> str: ...
    @album.setter
    def album(self, value: str) -> None: ...
    @_property
    def bitrate(self) -> winrt.system.UInt32: ...
    @_property
    def composers(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def conductors(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def duration(self) -> datetime.timedelta: ...
    @_property
    def genre(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def producers(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def writers(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...

@typing.final
class StorageItemContentProperties(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageItemContentProperties: ...
    def get_document_properties_async(self) -> windows_foundation.IAsyncOperation[DocumentProperties]: ...
    def get_image_properties_async(self) -> windows_foundation.IAsyncOperation[ImageProperties]: ...
    def get_music_properties_async(self) -> windows_foundation.IAsyncOperation[MusicProperties]: ...
    def get_video_properties_async(self) -> windows_foundation.IAsyncOperation[VideoProperties]: ...
    def retrieve_properties_async(self, properties_to_retrieve: typing.Iterable[str], /) -> windows_foundation.IAsyncOperation[windows_foundation_collections.IMap[str, winrt.system.Object]]: ...
    @typing.overload
    def save_properties_async(self) -> windows_foundation.IAsyncAction: ...
    @typing.overload
    def save_properties_async(self, properties_to_save: typing.Iterable[windows_foundation_collections.IKeyValuePair[str, winrt.system.Object]], /) -> windows_foundation.IAsyncAction: ...

@typing.final
class StorageItemThumbnail(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StorageItemThumbnail: ...
    def clone_stream(self) -> typing.Optional[windows_storage_streams.IRandomAccessStream]: ...
    def close(self) -> None: ...
    def flush_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    def get_input_stream_at(self, position: winrt.system.UInt64, /) -> typing.Optional[windows_storage_streams.IInputStream]: ...
    def get_output_stream_at(self, position: winrt.system.UInt64, /) -> typing.Optional[windows_storage_streams.IOutputStream]: ...
    def read_async(self, buffer: typing.Optional[windows_storage_streams.IBuffer], count: winrt.system.UInt32, options: windows_storage_streams.InputStreamOptions, /) -> windows_foundation.IAsyncOperationWithProgress[windows_storage_streams.IBuffer, winrt.system.UInt32]: ...
    def seek(self, position: winrt.system.UInt64, /) -> None: ...
    def write_async(self, buffer: typing.Optional[windows_storage_streams.IBuffer], /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.UInt32, winrt.system.UInt32]: ...
    @_property
    def original_height(self) -> winrt.system.UInt32: ...
    @_property
    def original_width(self) -> winrt.system.UInt32: ...
    @_property
    def returned_smaller_cached_size(self) -> bool: ...
    @_property
    def type(self) -> ThumbnailType: ...
    @_property
    def content_type(self) -> str: ...
    @_property
    def size(self) -> winrt.system.UInt64: ...
    @size.setter
    def size(self, value: winrt.system.UInt64) -> None: ...
    @_property
    def can_read(self) -> bool: ...
    @_property
    def can_write(self) -> bool: ...
    @_property
    def position(self) -> winrt.system.UInt64: ...

@typing.final
class VideoProperties(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> VideoProperties: ...
    def retrieve_properties_async(self, properties_to_retrieve: typing.Iterable[str], /) -> windows_foundation.IAsyncOperation[windows_foundation_collections.IMap[str, winrt.system.Object]]: ...
    @typing.overload
    def save_properties_async(self) -> windows_foundation.IAsyncAction: ...
    @typing.overload
    def save_properties_async(self, properties_to_save: typing.Iterable[windows_foundation_collections.IKeyValuePair[str, winrt.system.Object]], /) -> windows_foundation.IAsyncAction: ...
    @_property
    def year(self) -> winrt.system.UInt32: ...
    @year.setter
    def year(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def title(self) -> str: ...
    @title.setter
    def title(self, value: str) -> None: ...
    @_property
    def subtitle(self) -> str: ...
    @subtitle.setter
    def subtitle(self, value: str) -> None: ...
    @_property
    def rating(self) -> winrt.system.UInt32: ...
    @rating.setter
    def rating(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def publisher(self) -> str: ...
    @publisher.setter
    def publisher(self, value: str) -> None: ...
    @_property
    def bitrate(self) -> winrt.system.UInt32: ...
    @_property
    def directors(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def duration(self) -> datetime.timedelta: ...
    @_property
    def height(self) -> winrt.system.UInt32: ...
    @_property
    def keywords(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def latitude(self) -> typing.Optional[typing.Optional[winrt.system.Double]]: ...
    @_property
    def longitude(self) -> typing.Optional[typing.Optional[winrt.system.Double]]: ...
    @_property
    def orientation(self) -> VideoOrientation: ...
    @_property
    def producers(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...
    @_property
    def width(self) -> winrt.system.UInt32: ...
    @_property
    def writers(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...

@typing.final
class IStorageItemExtraProperties(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IStorageItemExtraProperties: ...
    def retrieve_properties_async(self, properties_to_retrieve: typing.Iterable[str], /) -> windows_foundation.IAsyncOperation[windows_foundation_collections.IMap[str, winrt.system.Object]]: ...
    @typing.overload
    def save_properties_async(self) -> windows_foundation.IAsyncAction: ...
    @typing.overload
    def save_properties_async(self, properties_to_save: typing.Iterable[windows_foundation_collections.IKeyValuePair[str, winrt.system.Object]], /) -> windows_foundation.IAsyncAction: ...

