# 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.applicationmodel.datatransfer as windows_applicationmodel_datatransfer
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.storage.streams as windows_storage_streams

from winrt.windows.graphics.printing import PrintBinding, PrintBordering, PrintCollation, PrintColorMode, PrintDuplex, PrintHolePunch, PrintMediaSize, PrintMediaType, PrintOrientation, PrintQuality, PrintStaple, PrintTaskCompletion
from winrt.windows.graphics.printing import PrintTaskSourceRequestedHandler

Self = typing.TypeVar('Self')

@typing.final
class PrintPageDescription:
    page_size: windows_foundation.Size
    imageable_rect: windows_foundation.Rect
    dpi_x: winrt.system.UInt32
    dpi_y: winrt.system.UInt32
    def __init__(self, page_size: windows_foundation.Size, imageable_rect: windows_foundation.Rect, dpi_x: winrt.system.UInt32, dpi_y: winrt.system.UInt32) -> None: ...

@typing.final
class PrintManager_Static(type):
    def get_for_current_view(cls) -> typing.Optional[PrintManager]: ...
    def is_supported(cls) -> bool: ...
    def show_print_u_i_async(cls) -> windows_foundation.IAsyncOperation[bool]: ...

@typing.final
class PrintManager(winrt.system.Object, metaclass=PrintManager_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintManager: ...
    def add_print_task_requested(self, event_handler: windows_foundation.TypedEventHandler[PrintManager, PrintTaskRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_print_task_requested(self, event_cookie: windows_foundation.EventRegistrationToken, /) -> None: ...

@typing.final
class PrintPageInfo(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintPageInfo: ...
    def __new__(cls: typing.Type[PrintPageInfo]) -> PrintPageInfo: ...
    @_property
    def page_size(self) -> windows_foundation.Size: ...
    @page_size.setter
    def page_size(self, value: windows_foundation.Size) -> None: ...
    @_property
    def orientation(self) -> PrintOrientation: ...
    @orientation.setter
    def orientation(self, value: PrintOrientation) -> None: ...
    @_property
    def media_size(self) -> PrintMediaSize: ...
    @media_size.setter
    def media_size(self, value: PrintMediaSize) -> None: ...
    @_property
    def dpi_y(self) -> winrt.system.UInt32: ...
    @dpi_y.setter
    def dpi_y(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def dpi_x(self) -> winrt.system.UInt32: ...
    @dpi_x.setter
    def dpi_x(self, value: winrt.system.UInt32) -> None: ...

@typing.final
class PrintPageRange(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintPageRange: ...
    @typing.overload
    def __new__(cls: typing.Type[PrintPageRange], first_page: winrt.system.Int32, last_page: winrt.system.Int32) -> PrintPageRange: ...
    @typing.overload
    def __new__(cls: typing.Type[PrintPageRange], page: winrt.system.Int32) -> PrintPageRange: ...
    @_property
    def first_page_number(self) -> winrt.system.Int32: ...
    @_property
    def last_page_number(self) -> winrt.system.Int32: ...

@typing.final
class PrintPageRangeOptions(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintPageRangeOptions: ...
    @_property
    def allow_custom_set_of_pages(self) -> bool: ...
    @allow_custom_set_of_pages.setter
    def allow_custom_set_of_pages(self, value: bool) -> None: ...
    @_property
    def allow_current_page(self) -> bool: ...
    @allow_current_page.setter
    def allow_current_page(self, value: bool) -> None: ...
    @_property
    def allow_all_pages(self) -> bool: ...
    @allow_all_pages.setter
    def allow_all_pages(self, value: bool) -> None: ...

@typing.final
class PrintTask(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintTask: ...
    def add_completed(self, event_handler: windows_foundation.TypedEventHandler[PrintTask, PrintTaskCompletedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_completed(self, event_cookie: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_previewing(self, event_handler: windows_foundation.TypedEventHandler[PrintTask, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_previewing(self, event_cookie: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_progressing(self, event_handler: windows_foundation.TypedEventHandler[PrintTask, PrintTaskProgressingEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_progressing(self, event_cookie: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_submitting(self, event_handler: windows_foundation.TypedEventHandler[PrintTask, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_submitting(self, event_cookie: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def options(self) -> typing.Optional[PrintTaskOptions]: ...
    @_property
    def properties(self) -> typing.Optional[windows_applicationmodel_datatransfer.DataPackagePropertySet]: ...
    @_property
    def source(self) -> typing.Optional[IPrintDocumentSource]: ...
    @_property
    def is_preview_enabled(self) -> bool: ...
    @is_preview_enabled.setter
    def is_preview_enabled(self, value: bool) -> None: ...
    @_property
    def is_printer_target_enabled(self) -> bool: ...
    @is_printer_target_enabled.setter
    def is_printer_target_enabled(self, value: bool) -> None: ...
    @_property
    def is3_d_manufacturing_target_enabled(self) -> bool: ...
    @is3_d_manufacturing_target_enabled.setter
    def is3_d_manufacturing_target_enabled(self, value: bool) -> None: ...

@typing.final
class PrintTaskCompletedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintTaskCompletedEventArgs: ...
    @_property
    def completion(self) -> PrintTaskCompletion: ...

@typing.final
class PrintTaskOptions(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintTaskOptions: ...
    def get_page_description(self, job_page_number: winrt.system.UInt32, /) -> PrintPageDescription: ...
    def get_page_print_ticket(self, print_page_info: typing.Optional[PrintPageInfo], /) -> typing.Optional[windows_storage_streams.IRandomAccessStream]: ...
    @_property
    def bordering(self) -> PrintBordering: ...
    @bordering.setter
    def bordering(self, value: PrintBordering) -> None: ...
    @_property
    def page_range_options(self) -> typing.Optional[PrintPageRangeOptions]: ...
    @_property
    def custom_page_ranges(self) -> typing.Optional[windows_foundation_collections.IVector[PrintPageRange]]: ...
    @_property
    def media_type(self) -> PrintMediaType: ...
    @media_type.setter
    def media_type(self, value: PrintMediaType) -> None: ...
    @_property
    def hole_punch(self) -> PrintHolePunch: ...
    @hole_punch.setter
    def hole_punch(self, value: PrintHolePunch) -> None: ...
    @_property
    def binding(self) -> PrintBinding: ...
    @binding.setter
    def binding(self, value: PrintBinding) -> None: ...
    @_property
    def duplex(self) -> PrintDuplex: ...
    @duplex.setter
    def duplex(self, value: PrintDuplex) -> None: ...
    @_property
    def color_mode(self) -> PrintColorMode: ...
    @color_mode.setter
    def color_mode(self, value: PrintColorMode) -> None: ...
    @_property
    def collation(self) -> PrintCollation: ...
    @collation.setter
    def collation(self, value: PrintCollation) -> None: ...
    @_property
    def staple(self) -> PrintStaple: ...
    @staple.setter
    def staple(self, value: PrintStaple) -> None: ...
    @_property
    def print_quality(self) -> PrintQuality: ...
    @print_quality.setter
    def print_quality(self, value: PrintQuality) -> None: ...
    @_property
    def orientation(self) -> PrintOrientation: ...
    @orientation.setter
    def orientation(self, value: PrintOrientation) -> None: ...
    @_property
    def media_size(self) -> PrintMediaSize: ...
    @media_size.setter
    def media_size(self, value: PrintMediaSize) -> None: ...
    @_property
    def number_of_copies(self) -> winrt.system.UInt32: ...
    @number_of_copies.setter
    def number_of_copies(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def max_copies(self) -> winrt.system.UInt32: ...
    @_property
    def min_copies(self) -> winrt.system.UInt32: ...
    @_property
    def displayed_options(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...

@typing.final
class PrintTaskProgressingEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintTaskProgressingEventArgs: ...
    @_property
    def document_page_count(self) -> winrt.system.UInt32: ...

@typing.final
class PrintTaskRequest(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintTaskRequest: ...
    def create_print_task(self, title: str, handler: typing.Optional[PrintTaskSourceRequestedHandler], /) -> typing.Optional[PrintTask]: ...
    def get_deferral(self) -> typing.Optional[PrintTaskRequestedDeferral]: ...
    @_property
    def deadline(self) -> datetime.datetime: ...

@typing.final
class PrintTaskRequestedDeferral(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintTaskRequestedDeferral: ...
    def complete(self) -> None: ...

@typing.final
class PrintTaskRequestedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintTaskRequestedEventArgs: ...
    @_property
    def request(self) -> typing.Optional[PrintTaskRequest]: ...

@typing.final
class PrintTaskSourceRequestedArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintTaskSourceRequestedArgs: ...
    def get_deferral(self) -> typing.Optional[PrintTaskSourceRequestedDeferral]: ...
    def set_source(self, source: typing.Optional[IPrintDocumentSource], /) -> None: ...
    @_property
    def deadline(self) -> datetime.datetime: ...

@typing.final
class PrintTaskSourceRequestedDeferral(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintTaskSourceRequestedDeferral: ...
    def complete(self) -> None: ...

@typing.final
class StandardPrintTaskOptions_Static(type):
    @_property
    def copies(cls) -> str: ...
    @_property
    def binding(cls) -> str: ...
    @_property
    def collation(cls) -> str: ...
    @_property
    def color_mode(cls) -> str: ...
    @_property
    def media_type(cls) -> str: ...
    @_property
    def duplex(cls) -> str: ...
    @_property
    def hole_punch(cls) -> str: ...
    @_property
    def input_bin(cls) -> str: ...
    @_property
    def media_size(cls) -> str: ...
    @_property
    def n_up(cls) -> str: ...
    @_property
    def orientation(cls) -> str: ...
    @_property
    def print_quality(cls) -> str: ...
    @_property
    def staple(cls) -> str: ...
    @_property
    def bordering(cls) -> str: ...
    @_property
    def custom_page_ranges(cls) -> str: ...

@typing.final
class StandardPrintTaskOptions(winrt.system.Object, metaclass=StandardPrintTaskOptions_Static):
    pass

@typing.final
class IPrintDocumentSource(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IPrintDocumentSource: ...

@typing.final
class IPrintTaskOptionsCore(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IPrintTaskOptionsCore: ...
    def get_page_description(self, job_page_number: winrt.system.UInt32, /) -> PrintPageDescription: ...

@typing.final
class IPrintTaskOptionsCoreProperties(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IPrintTaskOptionsCoreProperties: ...
    @_property
    def binding(self) -> PrintBinding: ...
    @binding.setter
    def binding(self, value: PrintBinding) -> None: ...
    @_property
    def collation(self) -> PrintCollation: ...
    @collation.setter
    def collation(self, value: PrintCollation) -> None: ...
    @_property
    def color_mode(self) -> PrintColorMode: ...
    @color_mode.setter
    def color_mode(self, value: PrintColorMode) -> None: ...
    @_property
    def duplex(self) -> PrintDuplex: ...
    @duplex.setter
    def duplex(self, value: PrintDuplex) -> None: ...
    @_property
    def hole_punch(self) -> PrintHolePunch: ...
    @hole_punch.setter
    def hole_punch(self, value: PrintHolePunch) -> None: ...
    @_property
    def max_copies(self) -> winrt.system.UInt32: ...
    @_property
    def media_size(self) -> PrintMediaSize: ...
    @media_size.setter
    def media_size(self, value: PrintMediaSize) -> None: ...
    @_property
    def media_type(self) -> PrintMediaType: ...
    @media_type.setter
    def media_type(self, value: PrintMediaType) -> None: ...
    @_property
    def min_copies(self) -> winrt.system.UInt32: ...
    @_property
    def number_of_copies(self) -> winrt.system.UInt32: ...
    @number_of_copies.setter
    def number_of_copies(self, value: winrt.system.UInt32) -> None: ...
    @_property
    def orientation(self) -> PrintOrientation: ...
    @orientation.setter
    def orientation(self, value: PrintOrientation) -> None: ...
    @_property
    def print_quality(self) -> PrintQuality: ...
    @print_quality.setter
    def print_quality(self, value: PrintQuality) -> None: ...
    @_property
    def staple(self) -> PrintStaple: ...
    @staple.setter
    def staple(self, value: PrintStaple) -> None: ...

@typing.final
class IPrintTaskOptionsCoreUIConfiguration(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IPrintTaskOptionsCoreUIConfiguration: ...
    @_property
    def displayed_options(self) -> typing.Optional[windows_foundation_collections.IVector[str]]: ...

