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

import enum
import datetime
import sys
import types
import typing

import winsdk.system
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(winsdk.system.Object):
    warning_text: str
    description: str
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Object]]
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[winsdk.system.Object]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> PrintBindingOptionDetails: ...
    def try_set_value(self, value: typing.Optional[winsdk.system.Object]) -> winsdk.system.Boolean: ...

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

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

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

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

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

class PrintCustomItemListOptionDetails(winsdk.system.Object):
    warning_text: str
    description: str
    display_name: str
    items: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Object]]
    state: PrintOptionStates
    error_text: str
    option_id: str
    option_type: PrintOptionType
    value: typing.Optional[winsdk.system.Object]
    @staticmethod
    def _from(obj: winsdk.system.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[winsdk.system.Object]) -> winsdk.system.Boolean: ...

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

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

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

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

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

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

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

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

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

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

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

class PrintTaskOptionDetails(winsdk.system.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: winsdk.system.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: winsdk.system.UInt32) -> winsdk.windows.graphics.printing.PrintPageDescription: ...
    def add_begin_validation(self, event_handler: winsdk.windows.foundation.TypedEventHandler[PrintTaskOptionDetails, winsdk.system.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(winsdk.system.Object):
    display_name: str
    error_text: str
    option_id: str
    option_type: PrintOptionType
    state: PrintOptionStates
    value: typing.Optional[winsdk.system.Object]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IPrintCustomOptionDetails: ...
    def try_set_value(self, value: typing.Optional[winsdk.system.Object]) -> winsdk.system.Boolean: ...

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

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

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

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

