# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.1.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.activation as windows_applicationmodel_activation
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.storage as windows_storage
import winrt.windows.storage.streams as windows_storage_streams
import winrt.windows.system as windows_system

from winrt.windows.graphics.printing.workflow import PdlConversionHostBasedProcessingOperations, PrintWorkflowAttributesMergePolicy, PrintWorkflowJobAbortReason, PrintWorkflowPdlConversionType, PrintWorkflowPrinterJobStatus, PrintWorkflowSessionStatus, PrintWorkflowSubmittedStatus, PrintWorkflowUICompletionStatus

Self = typing.TypeVar('Self')

@typing.final
class PrintWorkflowBackgroundSession(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowBackgroundSession: ...
    def start(self) -> None: ...
    def add_setup_requested(self, setup_event_handler: windows_foundation.TypedEventHandler[PrintWorkflowBackgroundSession, PrintWorkflowBackgroundSetupRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_setup_requested(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_submitted(self, submitted_event_handler: windows_foundation.TypedEventHandler[PrintWorkflowBackgroundSession, PrintWorkflowSubmittedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_submitted(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def status(self) -> PrintWorkflowSessionStatus: ...

@typing.final
class PrintWorkflowBackgroundSetupRequestedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowBackgroundSetupRequestedEventArgs: ...
    def get_deferral(self) -> typing.Optional[windows_foundation.Deferral]: ...
    def get_user_print_ticket_async(self) -> windows_foundation.IAsyncOperation[windows_graphics_printing_printticket.WorkflowPrintTicket]: ...
    def set_requires_u_i(self) -> None: ...
    @_property
    def configuration(self) -> typing.Optional[PrintWorkflowConfiguration]: ...

@typing.final
class PrintWorkflowConfiguration(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowConfiguration: ...
    def abort_print_flow(self, reason: PrintWorkflowJobAbortReason, /) -> None: ...
    @_property
    def job_title(self) -> str: ...
    @_property
    def session_id(self) -> str: ...
    @_property
    def source_app_display_name(self) -> str: ...

@typing.final
class PrintWorkflowForegroundSession(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowForegroundSession: ...
    def start(self) -> None: ...
    def add_setup_requested(self, setup_event_handler: windows_foundation.TypedEventHandler[PrintWorkflowForegroundSession, PrintWorkflowForegroundSetupRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_setup_requested(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_xps_data_available(self, xps_data_available_event_handler: windows_foundation.TypedEventHandler[PrintWorkflowForegroundSession, PrintWorkflowXpsDataAvailableEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_xps_data_available(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def status(self) -> PrintWorkflowSessionStatus: ...

@typing.final
class PrintWorkflowForegroundSetupRequestedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowForegroundSetupRequestedEventArgs: ...
    def get_deferral(self) -> typing.Optional[windows_foundation.Deferral]: ...
    def get_user_print_ticket_async(self) -> windows_foundation.IAsyncOperation[windows_graphics_printing_printticket.WorkflowPrintTicket]: ...
    @_property
    def configuration(self) -> typing.Optional[PrintWorkflowConfiguration]: ...

@typing.final
class PrintWorkflowJobActivatedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowJobActivatedEventArgs: ...
    @_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[PrintWorkflowJobUISession]: ...

@typing.final
class PrintWorkflowJobBackgroundSession(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowJobBackgroundSession: ...
    def start(self) -> None: ...
    def add_job_starting(self, handler: windows_foundation.TypedEventHandler[PrintWorkflowJobBackgroundSession, PrintWorkflowJobStartingEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_job_starting(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_pdl_modification_requested(self, handler: windows_foundation.TypedEventHandler[PrintWorkflowJobBackgroundSession, PrintWorkflowPdlModificationRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_pdl_modification_requested(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def status(self) -> PrintWorkflowSessionStatus: ...

@typing.final
class PrintWorkflowJobNotificationEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowJobNotificationEventArgs: ...
    def get_deferral(self) -> typing.Optional[windows_foundation.Deferral]: ...
    @_property
    def configuration(self) -> typing.Optional[PrintWorkflowConfiguration]: ...
    @_property
    def printer_job(self) -> typing.Optional[PrintWorkflowPrinterJob]: ...

@typing.final
class PrintWorkflowJobStartingEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowJobStartingEventArgs: ...
    def get_deferral(self) -> typing.Optional[windows_foundation.Deferral]: ...
    def set_skip_system_rendering(self) -> None: ...
    @_property
    def configuration(self) -> typing.Optional[PrintWorkflowConfiguration]: ...
    @_property
    def printer(self) -> typing.Optional[windows_devices_printers.IppPrintDevice]: ...

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

@typing.final
class PrintWorkflowJobUISession(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowJobUISession: ...
    def start(self) -> None: ...
    def add_job_notification(self, handler: windows_foundation.TypedEventHandler[PrintWorkflowJobUISession, PrintWorkflowJobNotificationEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_job_notification(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_pdl_data_available(self, handler: windows_foundation.TypedEventHandler[PrintWorkflowJobUISession, PrintWorkflowPdlDataAvailableEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_pdl_data_available(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def status(self) -> PrintWorkflowSessionStatus: ...

@typing.final
class PrintWorkflowObjectModelSourceFileContent(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowObjectModelSourceFileContent: ...
    def __new__(cls: typing.Type[PrintWorkflowObjectModelSourceFileContent], xps_stream: typing.Optional[windows_storage_streams.IInputStream]) -> PrintWorkflowObjectModelSourceFileContent: ...

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

@typing.final
class PrintWorkflowPdlConverter(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowPdlConverter: ...
    @typing.overload
    def convert_pdl_async(self, print_ticket: typing.Optional[windows_graphics_printing_printticket.WorkflowPrintTicket], input_stream: typing.Optional[windows_storage_streams.IInputStream], output_stream: typing.Optional[windows_storage_streams.IOutputStream], /) -> windows_foundation.IAsyncAction: ...
    @typing.overload
    def convert_pdl_async(self, print_ticket: typing.Optional[windows_graphics_printing_printticket.WorkflowPrintTicket], input_stream: typing.Optional[windows_storage_streams.IInputStream], output_stream: typing.Optional[windows_storage_streams.IOutputStream], host_based_processing_operations: PdlConversionHostBasedProcessingOperations, /) -> windows_foundation.IAsyncAction: ...

@typing.final
class PrintWorkflowPdlDataAvailableEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowPdlDataAvailableEventArgs: ...
    def get_deferral(self) -> typing.Optional[windows_foundation.Deferral]: ...
    @_property
    def configuration(self) -> typing.Optional[PrintWorkflowConfiguration]: ...
    @_property
    def printer_job(self) -> typing.Optional[PrintWorkflowPrinterJob]: ...
    @_property
    def source_content(self) -> typing.Optional[PrintWorkflowPdlSourceContent]: ...

@typing.final
class PrintWorkflowPdlModificationRequestedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowPdlModificationRequestedEventArgs: ...
    def create_job_on_printer(self, target_content_type: str, /) -> typing.Optional[PrintWorkflowPdlTargetStream]: ...
    @typing.overload
    def create_job_on_printer_with_attributes(self, job_attributes: typing.Iterable[windows_foundation_collections.IKeyValuePair[str, windows_devices_printers.IppAttributeValue]], target_content_type: str, /) -> typing.Optional[PrintWorkflowPdlTargetStream]: ...
    @typing.overload
    def create_job_on_printer_with_attributes(self, job_attributes: typing.Iterable[windows_foundation_collections.IKeyValuePair[str, windows_devices_printers.IppAttributeValue]], target_content_type: str, operation_attributes: typing.Iterable[windows_foundation_collections.IKeyValuePair[str, windows_devices_printers.IppAttributeValue]], job_attributes_merge_policy: PrintWorkflowAttributesMergePolicy, operation_attributes_merge_policy: PrintWorkflowAttributesMergePolicy, /) -> typing.Optional[PrintWorkflowPdlTargetStream]: ...
    @typing.overload
    def create_job_on_printer_with_attributes_buffer(self, job_attributes_buffer: typing.Optional[windows_storage_streams.IBuffer], target_content_type: str, /) -> typing.Optional[PrintWorkflowPdlTargetStream]: ...
    @typing.overload
    def create_job_on_printer_with_attributes_buffer(self, job_attributes_buffer: typing.Optional[windows_storage_streams.IBuffer], target_content_type: str, operation_attributes_buffer: typing.Optional[windows_storage_streams.IBuffer], job_attributes_merge_policy: PrintWorkflowAttributesMergePolicy, operation_attributes_merge_policy: PrintWorkflowAttributesMergePolicy, /) -> typing.Optional[PrintWorkflowPdlTargetStream]: ...
    def get_deferral(self) -> typing.Optional[windows_foundation.Deferral]: ...
    def get_pdl_converter(self, conversion_type: PrintWorkflowPdlConversionType, /) -> typing.Optional[PrintWorkflowPdlConverter]: ...
    @_property
    def configuration(self) -> typing.Optional[PrintWorkflowConfiguration]: ...
    @_property
    def printer_job(self) -> typing.Optional[PrintWorkflowPrinterJob]: ...
    @_property
    def source_content(self) -> typing.Optional[PrintWorkflowPdlSourceContent]: ...
    @_property
    def u_i_launcher(self) -> typing.Optional[PrintWorkflowUILauncher]: ...

@typing.final
class PrintWorkflowPdlSourceContent(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowPdlSourceContent: ...
    def get_content_file_async(self) -> windows_foundation.IAsyncOperation[windows_storage.StorageFile]: ...
    def get_input_stream(self) -> typing.Optional[windows_storage_streams.IInputStream]: ...
    @_property
    def content_type(self) -> str: ...

@typing.final
class PrintWorkflowPdlTargetStream(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowPdlTargetStream: ...
    def complete_stream_submission(self, status: PrintWorkflowSubmittedStatus, /) -> None: ...
    def get_output_stream(self) -> typing.Optional[windows_storage_streams.IOutputStream]: ...

@typing.final
class PrintWorkflowPrinterJob(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowPrinterJob: ...
    def get_job_attributes(self, attribute_names: typing.Iterable[str], /) -> typing.Optional[windows_foundation_collections.IMap[str, windows_devices_printers.IppAttributeValue]]: ...
    def get_job_attributes_as_buffer(self, attribute_names: typing.Iterable[str], /) -> typing.Optional[windows_storage_streams.IBuffer]: ...
    def get_job_print_ticket(self) -> typing.Optional[windows_graphics_printing_printticket.WorkflowPrintTicket]: ...
    def get_job_status(self) -> PrintWorkflowPrinterJobStatus: ...
    def set_job_attributes(self, job_attributes: typing.Iterable[windows_foundation_collections.IKeyValuePair[str, windows_devices_printers.IppAttributeValue]], /) -> typing.Optional[windows_devices_printers.IppSetAttributesResult]: ...
    def set_job_attributes_from_buffer(self, job_attributes_buffer: typing.Optional[windows_storage_streams.IBuffer], /) -> typing.Optional[windows_devices_printers.IppSetAttributesResult]: ...
    @_property
    def job_id(self) -> winrt.system.Int32: ...
    @_property
    def printer(self) -> typing.Optional[windows_devices_printers.IppPrintDevice]: ...

@typing.final
class PrintWorkflowSourceContent(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowSourceContent: ...
    def get_job_print_ticket_async(self) -> windows_foundation.IAsyncOperation[windows_graphics_printing_printticket.WorkflowPrintTicket]: ...
    def get_source_spool_data_as_stream_content(self) -> typing.Optional[PrintWorkflowSpoolStreamContent]: ...
    def get_source_spool_data_as_xps_object_model(self) -> typing.Optional[PrintWorkflowObjectModelSourceFileContent]: ...

@typing.final
class PrintWorkflowSpoolStreamContent(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowSpoolStreamContent: ...
    def get_input_stream(self) -> typing.Optional[windows_storage_streams.IInputStream]: ...

@typing.final
class PrintWorkflowStreamTarget(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowStreamTarget: ...
    def get_output_stream(self) -> typing.Optional[windows_storage_streams.IOutputStream]: ...

@typing.final
class PrintWorkflowSubmittedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowSubmittedEventArgs: ...
    def get_deferral(self) -> typing.Optional[windows_foundation.Deferral]: ...
    def get_target(self, job_print_ticket: typing.Optional[windows_graphics_printing_printticket.WorkflowPrintTicket], /) -> typing.Optional[PrintWorkflowTarget]: ...
    @_property
    def operation(self) -> typing.Optional[PrintWorkflowSubmittedOperation]: ...

@typing.final
class PrintWorkflowSubmittedOperation(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowSubmittedOperation: ...
    def complete(self, status: PrintWorkflowSubmittedStatus, /) -> None: ...
    @_property
    def configuration(self) -> typing.Optional[PrintWorkflowConfiguration]: ...
    @_property
    def xps_content(self) -> typing.Optional[PrintWorkflowSourceContent]: ...

@typing.final
class PrintWorkflowTarget(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowTarget: ...
    @_property
    def target_as_stream(self) -> typing.Optional[PrintWorkflowStreamTarget]: ...
    @_property
    def target_as_xps_object_model_package(self) -> typing.Optional[PrintWorkflowObjectModelTargetPackage]: ...

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

@typing.final
class PrintWorkflowUIActivatedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowUIActivatedEventArgs: ...
    @_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 print_workflow_session(self) -> typing.Optional[PrintWorkflowForegroundSession]: ...

@typing.final
class PrintWorkflowUILauncher(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowUILauncher: ...
    def is_u_i_launch_enabled(self) -> bool: ...
    def launch_and_complete_u_i_async(self) -> windows_foundation.IAsyncOperation[PrintWorkflowUICompletionStatus]: ...

@typing.final
class PrintWorkflowXpsDataAvailableEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintWorkflowXpsDataAvailableEventArgs: ...
    def get_deferral(self) -> typing.Optional[windows_foundation.Deferral]: ...
    @_property
    def operation(self) -> typing.Optional[PrintWorkflowSubmittedOperation]: ...

