# WARNING: Please don't edit this file. It was generated by Python/WinRT v1.0.0-beta.7

import enum
import datetime
import sys
import types
import typing

import winsdk._winrt as _winrt
import winsdk.windows.foundation
import winsdk.windows.foundation.collections
import winsdk.windows.graphics.printing
import winsdk.windows.storage.streams

class PrintOptionStates(enum.IntFlag):
    NONE = 0
    ENABLED = 0x1
    CONSTRAINED = 0x2

class PrintOptionType(enum.IntEnum):
    UNKNOWN = 0
    NUMBER = 1
    TEXT = 2
    ITEM_LIST = 3
    TOGGLE = 4

Self = typing.TypeVar('Self')

class PrintBindingOptionDetails(_winrt.Object):
    warning_text: str
    description: str
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[_winrt.Object]]
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintBindingOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintBorderingOptionDetails(_winrt.Object):
    warning_text: str
    description: str
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[_winrt.Object]]
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintBorderingOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintCollationOptionDetails(_winrt.Object):
    warning_text: str
    description: str
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[_winrt.Object]]
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintCollationOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintColorModeOptionDetails(_winrt.Object):
    warning_text: str
    description: str
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[_winrt.Object]]
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintColorModeOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintCopiesOptionDetails(_winrt.Object):
    warning_text: str
    description: str
    max_value: _winrt.UInt32
    min_value: _winrt.UInt32
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintCopiesOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintCustomItemDetails(_winrt.Object):
    item_display_name: str
    item_id: str
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintCustomItemDetails: ...

class PrintCustomItemListOptionDetails(_winrt.Object):
    warning_text: str
    description: str
    display_name: str
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[_winrt.Object]]
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintCustomItemListOptionDetails: ...
    @typing.overload
    def add_item(self, item_id: str, display_name: str) -> None: ...
    @typing.overload
    def add_item(self, item_id: str, display_name: str, description: str, icon: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamWithContentType]) -> None: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintCustomTextOptionDetails(_winrt.Object):
    display_name: str
    max_characters: _winrt.UInt32
    warning_text: str
    description: str
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintCustomTextOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintCustomToggleOptionDetails(_winrt.Object):
    display_name: str
    warning_text: str
    description: str
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintCustomToggleOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintDuplexOptionDetails(_winrt.Object):
    warning_text: str
    description: str
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[_winrt.Object]]
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintDuplexOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintHolePunchOptionDetails(_winrt.Object):
    warning_text: str
    description: str
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[_winrt.Object]]
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintHolePunchOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintMediaSizeOptionDetails(_winrt.Object):
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[_winrt.Object]]
    warning_text: str
    description: str
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintMediaSizeOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintMediaTypeOptionDetails(_winrt.Object):
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[_winrt.Object]]
    warning_text: str
    description: str
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintMediaTypeOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintOrientationOptionDetails(_winrt.Object):
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[_winrt.Object]]
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    warning_text: str
    description: str
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintOrientationOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintPageRangeOptionDetails(_winrt.Object):
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    warning_text: str
    description: str
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintPageRangeOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintQualityOptionDetails(_winrt.Object):
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[_winrt.Object]]
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    warning_text: str
    description: str
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintQualityOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintStapleOptionDetails(_winrt.Object):
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[_winrt.Object]]
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[_winrt.Object]
    warning_text: str
    description: str
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintStapleOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class PrintTaskOptionChangedEventArgs(_winrt.Object):
    option_id: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintTaskOptionChangedEventArgs: ...

class PrintTaskOptionDetails(_winrt.Object):
    displayed_options: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    options: typing.Optional[winsdk.windows.foundation.collections.IMapView[str, IPrintOptionDetails]]
    @staticmethod
    def _from(obj: _winrt.Object) -> PrintTaskOptionDetails: ...
    def create_item_list_option(self, option_id: str, display_name: str) -> typing.Optional[PrintCustomItemListOptionDetails]: ...
    def create_text_option(self, option_id: str, display_name: str) -> typing.Optional[PrintCustomTextOptionDetails]: ...
    def create_toggle_option(self, option_id: str, display_name: str) -> typing.Optional[PrintCustomToggleOptionDetails]: ...
    @staticmethod
    def get_from_print_task_options(print_task_options: typing.Optional[winsdk.windows.graphics.printing.PrintTaskOptions]) -> typing.Optional[PrintTaskOptionDetails]: ...
    def get_page_description(self, job_page_number: _winrt.UInt32) -> winsdk.windows.graphics.printing.PrintPageDescription: ...
    def add_begin_validation(self, event_handler: winsdk.windows.foundation.TypedEventHandler[PrintTaskOptionDetails, _winrt.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_begin_validation(self, event_cookie: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    def add_option_changed(self, event_handler: winsdk.windows.foundation.TypedEventHandler[PrintTaskOptionDetails, PrintTaskOptionChangedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_option_changed(self, event_cookie: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class IPrintCustomOptionDetails(_winrt.Object):
    display_name: str
    error_text: str
    option_id: str
    option_type: PrintOptionType
    state: PrintOptionStates
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> IPrintCustomOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class IPrintItemListOptionDetails(_winrt.Object):
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[_winrt.Object]]
    error_text: str
    option_id: str
    option_type: PrintOptionType
    state: PrintOptionStates
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> IPrintItemListOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class IPrintNumberOptionDetails(_winrt.Object):
    max_value: _winrt.UInt32
    min_value: _winrt.UInt32
    error_text: str
    option_id: str
    option_type: PrintOptionType
    state: PrintOptionStates
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> IPrintNumberOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class IPrintOptionDetails(_winrt.Object):
    error_text: str
    option_id: str
    option_type: PrintOptionType
    state: PrintOptionStates
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> IPrintOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

class IPrintTextOptionDetails(_winrt.Object):
    max_characters: _winrt.UInt32
    error_text: str
    option_id: str
    option_type: PrintOptionType
    state: PrintOptionStates
    value: typing.Optional[_winrt.Object]
    @staticmethod
    def _from(obj: _winrt.Object) -> IPrintTextOptionDetails: ...
    def try_set_value(self, value: typing.Optional[_winrt.Object]) -> _winrt.Boolean: ...

