# 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.storage
import winsdk.windows.storage.streams

class PhotoImportAccessMode(enum.IntEnum):
    READ_WRITE = 0
    READ_ONLY = 1
    READ_AND_DELETE = 2

class PhotoImportConnectionTransport(enum.IntEnum):
    UNKNOWN = 0
    USB = 1
    I_P = 2
    BLUETOOTH = 3

class PhotoImportContentType(enum.IntEnum):
    UNKNOWN = 0
    IMAGE = 1
    VIDEO = 2

class PhotoImportContentTypeFilter(enum.IntEnum):
    ONLY_IMAGES = 0
    ONLY_VIDEOS = 1
    IMAGES_AND_VIDEOS = 2
    IMAGES_AND_VIDEOS_FROM_CAMERA_ROLL = 3

class PhotoImportImportMode(enum.IntEnum):
    IMPORT_EVERYTHING = 0
    IGNORE_SIDECARS = 1
    IGNORE_SIBLINGS = 2
    IGNORE_SIDECARS_AND_SIBLINGS = 3

class PhotoImportItemSelectionMode(enum.IntEnum):
    SELECT_ALL = 0
    SELECT_NONE = 1
    SELECT_NEW = 2

class PhotoImportPowerSource(enum.IntEnum):
    UNKNOWN = 0
    BATTERY = 1
    EXTERNAL = 2

class PhotoImportSourceType(enum.IntEnum):
    GENERIC = 0
    CAMERA = 1
    MEDIA_PLAYER = 2
    PHONE = 3
    VIDEO = 4
    PERSONAL_INFO_MANAGER = 5
    AUDIO_RECORDER = 6

class PhotoImportStage(enum.IntEnum):
    NOT_STARTED = 0
    FINDING_ITEMS = 1
    IMPORTING_ITEMS = 2
    DELETING_IMPORTED_ITEMS_FROM_SOURCE = 3

class PhotoImportStorageMediumType(enum.IntEnum):
    UNDEFINED = 0
    FIXED = 1
    REMOVABLE = 2

class PhotoImportSubfolderCreationMode(enum.IntEnum):
    DO_NOT_CREATE_SUBFOLDERS = 0
    CREATE_SUBFOLDERS_FROM_FILE_DATE = 1
    CREATE_SUBFOLDERS_FROM_EXIF_DATE = 2
    KEEP_ORIGINAL_FOLDER_STRUCTURE = 3

class PhotoImportSubfolderDateFormat(enum.IntEnum):
    YEAR = 0
    YEAR_MONTH = 1
    YEAR_MONTH_DAY = 2

Self = typing.TypeVar('Self')

class PhotoImportProgress:
    items_imported: winsdk.system.UInt32
    total_items_to_import: winsdk.system.UInt32
    bytes_imported: winsdk.system.UInt64
    total_bytes_to_import: winsdk.system.UInt64
    import_progress: winsdk.system.Double
    def __new__(cls: typing.Type[PhotoImportProgress], items_imported: winsdk.system.UInt32, total_items_to_import: winsdk.system.UInt32, bytes_imported: winsdk.system.UInt64, total_bytes_to_import: winsdk.system.UInt64, import_progress: winsdk.system.Double) -> PhotoImportProgress: ...

class PhotoImportDeleteImportedItemsFromSourceResult(winsdk.system.Object):
    deleted_items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[PhotoImportItem]]
    has_succeeded: winsdk.system.Boolean
    photos_count: winsdk.system.UInt32
    photos_size_in_bytes: winsdk.system.UInt64
    session: typing.Optional[PhotoImportSession]
    siblings_count: winsdk.system.UInt32
    siblings_size_in_bytes: winsdk.system.UInt64
    sidecars_count: winsdk.system.UInt32
    sidecars_size_in_bytes: winsdk.system.UInt64
    total_count: winsdk.system.UInt32
    total_size_in_bytes: winsdk.system.UInt64
    videos_count: winsdk.system.UInt32
    videos_size_in_bytes: winsdk.system.UInt64
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PhotoImportDeleteImportedItemsFromSourceResult: ...

class PhotoImportFindItemsResult(winsdk.system.Object):
    found_items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[PhotoImportItem]]
    has_succeeded: winsdk.system.Boolean
    import_mode: PhotoImportImportMode
    photos_count: winsdk.system.UInt32
    photos_size_in_bytes: winsdk.system.UInt64
    selected_photos_count: winsdk.system.UInt32
    selected_photos_size_in_bytes: winsdk.system.UInt64
    selected_siblings_count: winsdk.system.UInt32
    selected_siblings_size_in_bytes: winsdk.system.UInt64
    selected_sidecars_count: winsdk.system.UInt32
    selected_sidecars_size_in_bytes: winsdk.system.UInt64
    selected_total_count: winsdk.system.UInt32
    selected_total_size_in_bytes: winsdk.system.UInt64
    selected_videos_count: winsdk.system.UInt32
    selected_videos_size_in_bytes: winsdk.system.UInt64
    session: typing.Optional[PhotoImportSession]
    siblings_count: winsdk.system.UInt32
    siblings_size_in_bytes: winsdk.system.UInt64
    sidecars_count: winsdk.system.UInt32
    sidecars_size_in_bytes: winsdk.system.UInt64
    total_count: winsdk.system.UInt32
    total_size_in_bytes: winsdk.system.UInt64
    videos_count: winsdk.system.UInt32
    videos_size_in_bytes: winsdk.system.UInt64
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PhotoImportFindItemsResult: ...
    def add_items_in_date_range_to_selection(self, range_start: datetime.datetime, range_length: datetime.timedelta, /) -> None: ...
    def import_items_async(self) -> winsdk.windows.foundation.IAsyncOperationWithProgress[PhotoImportImportItemsResult, PhotoImportProgress]: ...
    def select_all(self) -> None: ...
    def select_new_async(self) -> winsdk.windows.foundation.IAsyncAction: ...
    def select_none(self) -> None: ...
    def set_import_mode(self, value: PhotoImportImportMode, /) -> None: ...
    def add_item_imported(self, value: winsdk.windows.foundation.TypedEventHandler[PhotoImportFindItemsResult, PhotoImportItemImportedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_item_imported(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_selection_changed(self, value: winsdk.windows.foundation.TypedEventHandler[PhotoImportFindItemsResult, PhotoImportSelectionChangedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_selection_changed(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...

class PhotoImportImportItemsResult(winsdk.system.Object):
    has_succeeded: winsdk.system.Boolean
    imported_items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[PhotoImportItem]]
    photos_count: winsdk.system.UInt32
    photos_size_in_bytes: winsdk.system.UInt64
    session: typing.Optional[PhotoImportSession]
    siblings_count: winsdk.system.UInt32
    siblings_size_in_bytes: winsdk.system.UInt64
    sidecars_count: winsdk.system.UInt32
    sidecars_size_in_bytes: winsdk.system.UInt64
    total_count: winsdk.system.UInt32
    total_size_in_bytes: winsdk.system.UInt64
    videos_count: winsdk.system.UInt32
    videos_size_in_bytes: winsdk.system.UInt64
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PhotoImportImportItemsResult: ...
    def delete_imported_items_from_source_async(self) -> winsdk.windows.foundation.IAsyncOperationWithProgress[PhotoImportDeleteImportedItemsFromSourceResult, winsdk.system.Double]: ...

class PhotoImportItem(winsdk.system.Object):
    is_selected: winsdk.system.Boolean
    content_type: PhotoImportContentType
    date: datetime.datetime
    deleted_file_names: typing.Optional[winsdk.windows.foundation.collections.IVectorView[str]]
    imported_file_names: typing.Optional[winsdk.windows.foundation.collections.IVectorView[str]]
    item_key: winsdk.system.UInt64
    name: str
    sibling: typing.Optional[PhotoImportSidecar]
    sidecars: typing.Optional[winsdk.windows.foundation.collections.IVectorView[PhotoImportSidecar]]
    size_in_bytes: winsdk.system.UInt64
    thumbnail: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamReference]
    video_segments: typing.Optional[winsdk.windows.foundation.collections.IVectorView[PhotoImportVideoSegment]]
    path: str
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PhotoImportItem: ...

class PhotoImportItemImportedEventArgs(winsdk.system.Object):
    imported_item: typing.Optional[PhotoImportItem]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PhotoImportItemImportedEventArgs: ...

class PhotoImportManager(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PhotoImportManager: ...
    @staticmethod
    def find_all_sources_async() -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[PhotoImportSource]]: ...
    @staticmethod
    def get_pending_operations() -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[PhotoImportOperation]]: ...
    @staticmethod
    def is_supported_async() -> winsdk.windows.foundation.IAsyncOperation[winsdk.system.Boolean]: ...

class PhotoImportOperation(winsdk.system.Object):
    continue_deleting_imported_items_from_source_async: winsdk.windows.foundation.IAsyncOperationWithProgress[PhotoImportDeleteImportedItemsFromSourceResult, winsdk.system.Double]
    continue_finding_items_async: winsdk.windows.foundation.IAsyncOperationWithProgress[PhotoImportFindItemsResult, winsdk.system.UInt32]
    continue_importing_items_async: winsdk.windows.foundation.IAsyncOperationWithProgress[PhotoImportImportItemsResult, PhotoImportProgress]
    session: typing.Optional[PhotoImportSession]
    stage: PhotoImportStage
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PhotoImportOperation: ...

class PhotoImportSelectionChangedEventArgs(winsdk.system.Object):
    is_selection_empty: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PhotoImportSelectionChangedEventArgs: ...

class PhotoImportSession(winsdk.system.Object):
    subfolder_creation_mode: PhotoImportSubfolderCreationMode
    destination_folder: typing.Optional[winsdk.windows.storage.IStorageFolder]
    destination_file_name_prefix: str
    append_session_date_to_destination_folder: winsdk.system.Boolean
    session_id: winsdk.system.Guid
    source: typing.Optional[PhotoImportSource]
    subfolder_date_format: PhotoImportSubfolderDateFormat
    remember_deselected_items: winsdk.system.Boolean
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PhotoImportSession: ...
    def close(self) -> None: ...
    def find_items_async(self, content_type_filter: PhotoImportContentTypeFilter, item_selection_mode: PhotoImportItemSelectionMode, /) -> winsdk.windows.foundation.IAsyncOperationWithProgress[PhotoImportFindItemsResult, winsdk.system.UInt32]: ...

class PhotoImportSidecar(winsdk.system.Object):
    date: datetime.datetime
    name: str
    size_in_bytes: winsdk.system.UInt64
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PhotoImportSidecar: ...

class PhotoImportSource(winsdk.system.Object):
    battery_level_percent: typing.Optional[typing.Optional[winsdk.system.UInt32]]
    connection_protocol: str
    connection_transport: PhotoImportConnectionTransport
    date_time: typing.Optional[typing.Optional[datetime.datetime]]
    description: str
    display_name: str
    id: str
    is_locked: typing.Optional[typing.Optional[winsdk.system.Boolean]]
    is_mass_storage: winsdk.system.Boolean
    manufacturer: str
    model: str
    power_source: PhotoImportPowerSource
    serial_number: str
    storage_media: typing.Optional[winsdk.windows.foundation.collections.IVectorView[PhotoImportStorageMedium]]
    thumbnail: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamReference]
    type: PhotoImportSourceType
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PhotoImportSource: ...
    def create_import_session(self) -> typing.Optional[PhotoImportSession]: ...
    @staticmethod
    def from_folder_async(source_root_folder: typing.Optional[winsdk.windows.storage.IStorageFolder], /) -> winsdk.windows.foundation.IAsyncOperation[PhotoImportSource]: ...
    @staticmethod
    def from_id_async(source_id: str, /) -> winsdk.windows.foundation.IAsyncOperation[PhotoImportSource]: ...

class PhotoImportStorageMedium(winsdk.system.Object):
    available_space_in_bytes: winsdk.system.UInt64
    capacity_in_bytes: winsdk.system.UInt64
    description: str
    name: str
    serial_number: str
    storage_medium_type: PhotoImportStorageMediumType
    supported_access_mode: PhotoImportAccessMode
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PhotoImportStorageMedium: ...
    def refresh(self) -> None: ...

class PhotoImportVideoSegment(winsdk.system.Object):
    date: datetime.datetime
    name: str
    sibling: typing.Optional[PhotoImportSidecar]
    sidecars: typing.Optional[winsdk.windows.foundation.collections.IVectorView[PhotoImportSidecar]]
    size_in_bytes: winsdk.system.UInt64
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> PhotoImportVideoSegment: ...

