# 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.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.graphics.printing as windows_graphics_printing
import winrt.windows.storage as windows_storage
import winrt.windows.storage.streams as windows_storage_streams

from winrt.windows.devices.scanners import ImageScannerAutoCroppingMode, ImageScannerColorMode, ImageScannerFormat, ImageScannerScanSource

Self = typing.TypeVar('Self')

@typing.final
class ImageScannerResolution:
    dpi_x: winrt.system.Single
    dpi_y: winrt.system.Single
    def __init__(self, dpi_x: winrt.system.Single, dpi_y: winrt.system.Single) -> None: ...

@typing.final
class ImageScanner_Static(type):
    def from_id_async(cls, device_id: str, /) -> windows_foundation.IAsyncOperation[ImageScanner]: ...
    def get_device_selector(cls) -> str: ...

@typing.final
class ImageScanner(winrt.system.Object, metaclass=ImageScanner_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ImageScanner: ...
    def is_preview_supported(self, scan_source: ImageScannerScanSource, /) -> bool: ...
    def is_scan_source_supported(self, value: ImageScannerScanSource, /) -> bool: ...
    def scan_files_to_folder_async(self, scan_source: ImageScannerScanSource, storage_folder: typing.Optional[windows_storage.StorageFolder], /) -> windows_foundation.IAsyncOperationWithProgress[ImageScannerScanResult, winrt.system.UInt32]: ...
    def scan_preview_to_stream_async(self, scan_source: ImageScannerScanSource, target_stream: typing.Optional[windows_storage_streams.IRandomAccessStream], /) -> windows_foundation.IAsyncOperation[ImageScannerPreviewResult]: ...
    @_property
    def auto_configuration(self) -> typing.Optional[ImageScannerAutoConfiguration]: ...
    @_property
    def default_scan_source(self) -> ImageScannerScanSource: ...
    @_property
    def device_id(self) -> str: ...
    @_property
    def feeder_configuration(self) -> typing.Optional[ImageScannerFeederConfiguration]: ...
    @_property
    def flatbed_configuration(self) -> typing.Optional[ImageScannerFlatbedConfiguration]: ...

@typing.final
class ImageScannerAutoConfiguration(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ImageScannerAutoConfiguration: ...
    def is_format_supported(self, value: ImageScannerFormat, /) -> bool: ...
    @_property
    def format(self) -> ImageScannerFormat: ...
    @format.setter
    def format(self, value: ImageScannerFormat) -> None: ...
    @_property
    def default_format(self) -> ImageScannerFormat: ...

@typing.final
class ImageScannerFeederConfiguration(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ImageScannerFeederConfiguration: ...
    def is_auto_cropping_mode_supported(self, value: ImageScannerAutoCroppingMode, /) -> bool: ...
    def is_color_mode_supported(self, value: ImageScannerColorMode, /) -> bool: ...
    def is_format_supported(self, value: ImageScannerFormat, /) -> bool: ...
    def is_page_size_supported(self, page_size: windows_graphics_printing.PrintMediaSize, page_orientation: windows_graphics_printing.PrintOrientation, /) -> bool: ...
    @_property
    def scan_ahead(self) -> bool: ...
    @scan_ahead.setter
    def scan_ahead(self, value: bool) -> None: ...
    @_property
    def auto_detect_page_size(self) -> bool: ...
    @auto_detect_page_size.setter
    def auto_detect_page_size(self, value: bool) -> None: ...
    @_property
    def duplex(self) -> bool: ...
    @duplex.setter
    def duplex(self, value: bool) -> None: ...
    @_property
    def max_number_of_pages(self) -> winrt.system.UInt32: ...
    @max_number_of_pages.setter
    def max_number_of_pages(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def page_orientation(self) -> windows_graphics_printing.PrintOrientation: ...
    @page_orientation.setter
    def page_orientation(self, value: windows_graphics_printing.PrintOrientation) -> None: ...
    @_property
    def page_size(self) -> windows_graphics_printing.PrintMediaSize: ...
    @page_size.setter
    def page_size(self, value: windows_graphics_printing.PrintMediaSize) -> None: ...
    @_property
    def page_size_dimensions(self) -> windows_foundation.Size: ...
    @_property
    def can_scan_duplex(self) -> bool: ...
    @_property
    def can_scan_ahead(self) -> bool: ...
    @_property
    def can_auto_detect_page_size(self) -> bool: ...
    @_property
    def format(self) -> ImageScannerFormat: ...
    @format.setter
    def format(self, value: ImageScannerFormat) -> None: ...
    @_property
    def default_format(self) -> ImageScannerFormat: ...
    @_property
    def desired_resolution(self) -> ImageScannerResolution: ...
    @desired_resolution.setter
    def desired_resolution(self, value: ImageScannerResolution) -> None: ...
    @_property
    def contrast(self) -> winrt.system.Int32: ...
    @contrast.setter
    def contrast(self, value: winrt.system.Int32) -> None: ...
    @_property
    def color_mode(self) -> ImageScannerColorMode: ...
    @color_mode.setter
    def color_mode(self, value: ImageScannerColorMode) -> None: ...
    @_property
    def auto_cropping_mode(self) -> ImageScannerAutoCroppingMode: ...
    @auto_cropping_mode.setter
    def auto_cropping_mode(self, value: ImageScannerAutoCroppingMode) -> None: ...
    @_property
    def brightness(self) -> winrt.system.Int32: ...
    @brightness.setter
    def brightness(self, value: winrt.system.Int32) -> None: ...
    @_property
    def selected_scan_region(self) -> windows_foundation.Rect: ...
    @selected_scan_region.setter
    def selected_scan_region(self, value: windows_foundation.Rect) -> None: ...
    @_property
    def min_brightness(self) -> winrt.system.Int32: ...
    @_property
    def min_contrast(self) -> winrt.system.Int32: ...
    @_property
    def min_resolution(self) -> ImageScannerResolution: ...
    @_property
    def min_scan_area(self) -> windows_foundation.Size: ...
    @_property
    def optical_resolution(self) -> ImageScannerResolution: ...
    @_property
    def max_scan_area(self) -> windows_foundation.Size: ...
    @_property
    def max_resolution(self) -> ImageScannerResolution: ...
    @_property
    def max_contrast(self) -> winrt.system.Int32: ...
    @_property
    def max_brightness(self) -> winrt.system.Int32: ...
    @_property
    def default_contrast(self) -> winrt.system.Int32: ...
    @_property
    def default_color_mode(self) -> ImageScannerColorMode: ...
    @_property
    def default_brightness(self) -> winrt.system.Int32: ...
    @_property
    def contrast_step(self) -> winrt.system.UInt32: ...
    @_property
    def brightness_step(self) -> winrt.system.UInt32: ...
    @_property
    def actual_resolution(self) -> ImageScannerResolution: ...

@typing.final
class ImageScannerFlatbedConfiguration(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ImageScannerFlatbedConfiguration: ...
    def is_auto_cropping_mode_supported(self, value: ImageScannerAutoCroppingMode, /) -> bool: ...
    def is_color_mode_supported(self, value: ImageScannerColorMode, /) -> bool: ...
    def is_format_supported(self, value: ImageScannerFormat, /) -> bool: ...
    @_property
    def format(self) -> ImageScannerFormat: ...
    @format.setter
    def format(self, value: ImageScannerFormat) -> None: ...
    @_property
    def default_format(self) -> ImageScannerFormat: ...
    @_property
    def selected_scan_region(self) -> windows_foundation.Rect: ...
    @selected_scan_region.setter
    def selected_scan_region(self, value: windows_foundation.Rect) -> None: ...
    @_property
    def desired_resolution(self) -> ImageScannerResolution: ...
    @desired_resolution.setter
    def desired_resolution(self, value: ImageScannerResolution) -> None: ...
    @_property
    def contrast(self) -> winrt.system.Int32: ...
    @contrast.setter
    def contrast(self, value: winrt.system.Int32) -> None: ...
    @_property
    def brightness(self) -> winrt.system.Int32: ...
    @brightness.setter
    def brightness(self, value: winrt.system.Int32) -> None: ...
    @_property
    def auto_cropping_mode(self) -> ImageScannerAutoCroppingMode: ...
    @auto_cropping_mode.setter
    def auto_cropping_mode(self, value: ImageScannerAutoCroppingMode) -> None: ...
    @_property
    def color_mode(self) -> ImageScannerColorMode: ...
    @color_mode.setter
    def color_mode(self, value: ImageScannerColorMode) -> None: ...
    @_property
    def contrast_step(self) -> winrt.system.UInt32: ...
    @_property
    def default_brightness(self) -> winrt.system.Int32: ...
    @_property
    def default_color_mode(self) -> ImageScannerColorMode: ...
    @_property
    def default_contrast(self) -> winrt.system.Int32: ...
    @_property
    def actual_resolution(self) -> ImageScannerResolution: ...
    @_property
    def max_brightness(self) -> winrt.system.Int32: ...
    @_property
    def max_contrast(self) -> winrt.system.Int32: ...
    @_property
    def max_resolution(self) -> ImageScannerResolution: ...
    @_property
    def max_scan_area(self) -> windows_foundation.Size: ...
    @_property
    def min_brightness(self) -> winrt.system.Int32: ...
    @_property
    def brightness_step(self) -> winrt.system.UInt32: ...
    @_property
    def min_contrast(self) -> winrt.system.Int32: ...
    @_property
    def min_resolution(self) -> ImageScannerResolution: ...
    @_property
    def optical_resolution(self) -> ImageScannerResolution: ...
    @_property
    def min_scan_area(self) -> windows_foundation.Size: ...

@typing.final
class ImageScannerPreviewResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ImageScannerPreviewResult: ...
    @_property
    def format(self) -> ImageScannerFormat: ...
    @_property
    def succeeded(self) -> bool: ...

@typing.final
class ImageScannerScanResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ImageScannerScanResult: ...
    @_property
    def scanned_files(self) -> typing.Optional[windows_foundation_collections.IVectorView[windows_storage.StorageFile]]: ...

@typing.final
class IImageScannerFormatConfiguration(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IImageScannerFormatConfiguration: ...
    def is_format_supported(self, value: ImageScannerFormat, /) -> bool: ...
    @_property
    def default_format(self) -> ImageScannerFormat: ...
    @_property
    def format(self) -> ImageScannerFormat: ...
    @format.setter
    def format(self, value: ImageScannerFormat) -> None: ...

@typing.final
class IImageScannerSourceConfiguration(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IImageScannerSourceConfiguration: ...
    def is_auto_cropping_mode_supported(self, value: ImageScannerAutoCroppingMode, /) -> bool: ...
    def is_color_mode_supported(self, value: ImageScannerColorMode, /) -> bool: ...
    def is_format_supported(self, value: ImageScannerFormat, /) -> bool: ...
    @_property
    def actual_resolution(self) -> ImageScannerResolution: ...
    @_property
    def auto_cropping_mode(self) -> ImageScannerAutoCroppingMode: ...
    @auto_cropping_mode.setter
    def auto_cropping_mode(self, value: ImageScannerAutoCroppingMode) -> None: ...
    @_property
    def brightness(self) -> winrt.system.Int32: ...
    @brightness.setter
    def brightness(self, value: winrt.system.Int32) -> None: ...
    @_property
    def brightness_step(self) -> winrt.system.UInt32: ...
    @_property
    def color_mode(self) -> ImageScannerColorMode: ...
    @color_mode.setter
    def color_mode(self, value: ImageScannerColorMode) -> None: ...
    @_property
    def contrast(self) -> winrt.system.Int32: ...
    @contrast.setter
    def contrast(self, value: winrt.system.Int32) -> None: ...
    @_property
    def contrast_step(self) -> winrt.system.UInt32: ...
    @_property
    def default_brightness(self) -> winrt.system.Int32: ...
    @_property
    def default_color_mode(self) -> ImageScannerColorMode: ...
    @_property
    def default_contrast(self) -> winrt.system.Int32: ...
    @_property
    def desired_resolution(self) -> ImageScannerResolution: ...
    @desired_resolution.setter
    def desired_resolution(self, value: ImageScannerResolution) -> None: ...
    @_property
    def max_brightness(self) -> winrt.system.Int32: ...
    @_property
    def max_contrast(self) -> winrt.system.Int32: ...
    @_property
    def max_resolution(self) -> ImageScannerResolution: ...
    @_property
    def max_scan_area(self) -> windows_foundation.Size: ...
    @_property
    def min_brightness(self) -> winrt.system.Int32: ...
    @_property
    def min_contrast(self) -> winrt.system.Int32: ...
    @_property
    def min_resolution(self) -> ImageScannerResolution: ...
    @_property
    def min_scan_area(self) -> windows_foundation.Size: ...
    @_property
    def optical_resolution(self) -> ImageScannerResolution: ...
    @_property
    def selected_scan_region(self) -> windows_foundation.Rect: ...
    @selected_scan_region.setter
    def selected_scan_region(self, value: windows_foundation.Rect) -> None: ...
    @_property
    def default_format(self) -> ImageScannerFormat: ...
    @_property
    def format(self) -> ImageScannerFormat: ...
    @format.setter
    def format(self, value: ImageScannerFormat) -> None: ...

