# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.0.1

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

from winrt.windows.devices.printers.extensions import Print3DWorkflowDetail, Print3DWorkflowStatus

Self = typing.TypeVar('Self')

@typing.final
class Print3DWorkflow(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> Print3DWorkflow: ...
    def get_print_model_package(self) -> typing.Optional[winrt.system.Object]: ...
    def add_print_requested(self, event_handler: winrt.windows.foundation.TypedEventHandler[Print3DWorkflow, Print3DWorkflowPrintRequestedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_print_requested(self, event_cookie: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_printer_changed(self, event_handler: winrt.windows.foundation.TypedEventHandler[Print3DWorkflow, Print3DWorkflowPrinterChangedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_printer_changed(self, event_cookie: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def is_print_ready(self) -> bool: ...
    @is_print_ready.setter
    def is_print_ready(self, value: bool) -> None: ...
    @_property
    def device_i_d(self) -> str: ...

@typing.final
class Print3DWorkflowPrintRequestedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> Print3DWorkflowPrintRequestedEventArgs: ...
    def set_extended_status(self, value: Print3DWorkflowDetail, /) -> None: ...
    def set_source(self, source: typing.Optional[winrt.system.Object], /) -> None: ...
    def set_source_changed(self, value: bool, /) -> None: ...
    @_property
    def status(self) -> Print3DWorkflowStatus: ...

@typing.final
class Print3DWorkflowPrinterChangedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> Print3DWorkflowPrinterChangedEventArgs: ...
    @_property
    def new_device_id(self) -> str: ...

@typing.final
class PrintExtensionContext_Static(type):
    def from_device_id(cls, device_id: str, /) -> typing.Optional[winrt.system.Object]: ...

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

@typing.final
class PrintNotificationEventDetails(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintNotificationEventDetails: ...
    @_property
    def event_data(self) -> str: ...
    @event_data.setter
    def event_data(self, value: str) -> None: ...
    @_property
    def printer_name(self) -> str: ...

@typing.final
class PrintTaskConfiguration(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintTaskConfiguration: ...
    def add_save_requested(self, event_handler: winrt.windows.foundation.TypedEventHandler[PrintTaskConfiguration, PrintTaskConfigurationSaveRequestedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_save_requested(self, event_cookie: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def printer_extension_context(self) -> typing.Optional[winrt.system.Object]: ...

@typing.final
class PrintTaskConfigurationSaveRequest(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PrintTaskConfigurationSaveRequest: ...
    def cancel(self) -> None: ...
    def get_deferral(self) -> typing.Optional[PrintTaskConfigurationSaveRequestedDeferral]: ...
    def save(self, printer_extension_context: typing.Optional[winrt.system.Object], /) -> None: ...
    @_property
    def deadline(self) -> datetime.datetime: ...

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

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

