# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.3.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 as windows_applicationmodel
import winrt.windows.applicationmodel.activation as windows_applicationmodel_activation
import winrt.windows.data.xml.dom as windows_data_xml_dom
import winrt.windows.devices.printers as windows_devices_printers
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.graphics.printing.printticket as windows_graphics_printing_printticket
import winrt.windows.system as windows_system
import winrt.windows.ui as windows_ui
import winrt.windows.ui.shell as windows_ui_shell

from winrt.windows.graphics.printing.printsupport import IppCommunicationErrorKind, IppPrinterCommunicationKind, SettingsLaunchKind, WorkflowPrintTicketValidationStatus, XpsImageQuality

Self = typing.TypeVar('Self')

@typing.final
class PrintSupportCommunicationErrorDetectedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintSupportCommunicationErrorDetectedEventArgs: ...
    def get_deferral(self) -> typing.Optional[windows_foundation.Deferral]: ...
    @_property
    def communication_configuration(self) -> typing.Optional[PrintSupportIppCommunicationConfiguration]: ...
    @_property
    def error_kind(self) -> IppCommunicationErrorKind: ...
    @_property
    def extended_error(self) -> windows_foundation.HResult: ...

@typing.final
class PrintSupportExtensionSession(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintSupportExtensionSession: ...
    def start(self) -> None: ...
    def add_print_device_capabilities_changed(self, handler: windows_foundation.TypedEventHandler[PrintSupportExtensionSession, PrintSupportPrintDeviceCapabilitiesChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_print_device_capabilities_changed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_print_ticket_validation_requested(self, handler: windows_foundation.TypedEventHandler[PrintSupportExtensionSession, PrintSupportPrintTicketValidationRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_print_ticket_validation_requested(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_printer_selected(self, handler: windows_foundation.TypedEventHandler[PrintSupportExtensionSession, PrintSupportPrinterSelectedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_printer_selected(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_communication_error_detected(self, handler: windows_foundation.TypedEventHandler[PrintSupportExtensionSession, PrintSupportCommunicationErrorDetectedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_communication_error_detected(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def printer(self) -> typing.Optional[windows_devices_printers.IppPrintDevice]: ...

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

@typing.final
class PrintSupportIppCommunicationConfiguration(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintSupportIppCommunicationConfiguration: ...
    @_property
    def can_modify_timeouts(self) -> bool: ...
    @_property
    def communication_kind(self) -> IppPrinterCommunicationKind: ...
    @_property
    def ipp_attribute_timeouts(self) -> typing.Optional[PrintSupportIppCommunicationTimeouts]: ...
    @_property
    def ipp_job_timeouts(self) -> typing.Optional[PrintSupportIppCommunicationTimeouts]: ...

@typing.final
class PrintSupportIppCommunicationTimeouts(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintSupportIppCommunicationTimeouts: ...
    @_property
    def send_timeout(self) -> datetime.timedelta: ...
    @send_timeout.setter
    def send_timeout(self, value: datetime.timedelta) -> None: ...
    @_property
    def receive_timeout(self) -> datetime.timedelta: ...
    @receive_timeout.setter
    def receive_timeout(self, value: datetime.timedelta) -> None: ...
    @_property
    def connect_timeout(self) -> datetime.timedelta: ...
    @connect_timeout.setter
    def connect_timeout(self, value: datetime.timedelta) -> None: ...

@typing.final
class PrintSupportMxdcImageQualityConfiguration(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintSupportMxdcImageQualityConfiguration: ...
    @_property
    def text_output_quality(self) -> XpsImageQuality: ...
    @text_output_quality.setter
    def text_output_quality(self, value: XpsImageQuality) -> None: ...
    @_property
    def photographic_output_quality(self) -> XpsImageQuality: ...
    @photographic_output_quality.setter
    def photographic_output_quality(self, value: XpsImageQuality) -> None: ...
    @_property
    def normal_output_quality(self) -> XpsImageQuality: ...
    @normal_output_quality.setter
    def normal_output_quality(self, value: XpsImageQuality) -> None: ...
    @_property
    def high_output_quality(self) -> XpsImageQuality: ...
    @high_output_quality.setter
    def high_output_quality(self, value: XpsImageQuality) -> None: ...
    @_property
    def fax_output_quality(self) -> XpsImageQuality: ...
    @fax_output_quality.setter
    def fax_output_quality(self, value: XpsImageQuality) -> None: ...
    @_property
    def draft_output_quality(self) -> XpsImageQuality: ...
    @draft_output_quality.setter
    def draft_output_quality(self, value: XpsImageQuality) -> None: ...
    @_property
    def automatic_output_quality(self) -> XpsImageQuality: ...
    @automatic_output_quality.setter
    def automatic_output_quality(self, value: XpsImageQuality) -> None: ...

@typing.final
class PrintSupportPrintDeviceCapabilitiesChangedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintSupportPrintDeviceCapabilitiesChangedEventArgs: ...
    def get_current_print_device_capabilities(self) -> typing.Optional[windows_data_xml_dom.XmlDocument]: ...
    def get_current_print_device_resources(self) -> typing.Optional[windows_data_xml_dom.XmlDocument]: ...
    def get_deferral(self) -> typing.Optional[windows_foundation.Deferral]: ...
    def set_print_device_capabilities_update_policy(self, update_policy: typing.Optional[PrintSupportPrintDeviceCapabilitiesUpdatePolicy], /) -> None: ...
    def set_supported_pdl_passthrough_content_types(self, supported_pdl_content_types: typing.Iterable[str], /) -> None: ...
    def update_print_device_capabilities(self, updated_pdc: typing.Optional[windows_data_xml_dom.XmlDocument], /) -> None: ...
    def update_print_device_resources(self, updated_pdr: typing.Optional[windows_data_xml_dom.XmlDocument], /) -> None: ...
    @_property
    def resource_language(self) -> str: ...
    @_property
    def communication_configuration(self) -> typing.Optional[PrintSupportIppCommunicationConfiguration]: ...
    @_property
    def mxdc_image_quality_configuration(self) -> typing.Optional[PrintSupportMxdcImageQualityConfiguration]: ...

@typing.final
class PrintSupportPrintDeviceCapabilitiesUpdatePolicy_Static(type):
    def create_periodic_refresh(cls, update_period: datetime.timedelta, /) -> typing.Optional[PrintSupportPrintDeviceCapabilitiesUpdatePolicy]: ...
    def create_print_job_refresh(cls, number_of_jobs: winrt.system.UInt32, /) -> typing.Optional[PrintSupportPrintDeviceCapabilitiesUpdatePolicy]: ...

@typing.final
class PrintSupportPrintDeviceCapabilitiesUpdatePolicy(winrt.system.Object, metaclass=PrintSupportPrintDeviceCapabilitiesUpdatePolicy_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintSupportPrintDeviceCapabilitiesUpdatePolicy: ...

@typing.final
class PrintSupportPrintTicketElement(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintSupportPrintTicketElement: ...
    def __new__(cls: typing.Type[PrintSupportPrintTicketElement]) -> PrintSupportPrintTicketElement: ...
    @_property
    def namespace_uri(self) -> str: ...
    @namespace_uri.setter
    def namespace_uri(self, value: str) -> None: ...
    @_property
    def local_name(self) -> str: ...
    @local_name.setter
    def local_name(self, value: str) -> None: ...

@typing.final
class PrintSupportPrintTicketValidationRequestedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintSupportPrintTicketValidationRequestedEventArgs: ...
    def get_deferral(self) -> typing.Optional[windows_foundation.Deferral]: ...
    def set_print_ticket_validation_status(self, status: WorkflowPrintTicketValidationStatus, /) -> None: ...
    @_property
    def print_ticket(self) -> typing.Optional[windows_graphics_printing_printticket.WorkflowPrintTicket]: ...

@typing.final
class PrintSupportPrinterSelectedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintSupportPrinterSelectedEventArgs: ...
    def get_deferral(self) -> typing.Optional[windows_foundation.Deferral]: ...
    def set_adaptive_card(self, adaptive_card: typing.Optional[windows_ui_shell.IAdaptiveCard], /) -> None: ...
    def set_additional_features(self, features: typing.Iterable[PrintSupportPrintTicketElement], /) -> None: ...
    def set_additional_parameters(self, parameters: typing.Iterable[PrintSupportPrintTicketElement], /) -> None: ...
    @_property
    def print_ticket(self) -> typing.Optional[windows_graphics_printing_printticket.WorkflowPrintTicket]: ...
    @print_ticket.setter
    def print_ticket(self, value: typing.Optional[windows_graphics_printing_printticket.WorkflowPrintTicket]) -> None: ...
    @_property
    def allowed_additional_features_and_parameters_count(self) -> winrt.system.UInt32: ...
    @_property
    def source_app_info(self) -> typing.Optional[windows_applicationmodel.AppInfo]: ...

@typing.final
class PrintSupportSessionInfo(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintSupportSessionInfo: ...
    @_property
    def printer(self) -> typing.Optional[windows_devices_printers.IppPrintDevice]: ...
    @_property
    def source_app_info(self) -> typing.Optional[windows_applicationmodel.AppInfo]: ...

@typing.final
class PrintSupportSettingsActivatedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintSupportSettingsActivatedEventArgs: ...
    def get_deferral(self) -> typing.Optional[windows_foundation.Deferral]: ...
    @_property
    def kind(self) -> windows_applicationmodel_activation.ActivationKind: ...
    @_property
    def previous_execution_state(self) -> windows_applicationmodel_activation.ApplicationExecutionState: ...
    @_property
    def splash_screen(self) -> typing.Optional[windows_applicationmodel_activation.SplashScreen]: ...
    @_property
    def user(self) -> typing.Optional[windows_system.User]: ...
    @_property
    def session(self) -> typing.Optional[PrintSupportSettingsUISession]: ...
    @_property
    def owner_window_id(self) -> windows_ui.WindowId: ...

@typing.final
class PrintSupportSettingsUISession(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintSupportSettingsUISession: ...
    def update_print_ticket(self, print_ticket: typing.Optional[windows_graphics_printing_printticket.WorkflowPrintTicket], /) -> None: ...
    @_property
    def document_title(self) -> str: ...
    @_property
    def launch_kind(self) -> SettingsLaunchKind: ...
    @_property
    def session_info(self) -> typing.Optional[PrintSupportSessionInfo]: ...
    @_property
    def session_print_ticket(self) -> typing.Optional[windows_graphics_printing_printticket.WorkflowPrintTicket]: ...

