# 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 IppAttributeErrorReason(enum.IntEnum):
    REQUEST_ENTITY_TOO_LARGE = 0
    ATTRIBUTE_NOT_SUPPORTED = 1
    ATTRIBUTE_VALUES_NOT_SUPPORTED = 2
    ATTRIBUTE_NOT_SETTABLE = 3
    CONFLICTING_ATTRIBUTES = 4

class IppAttributeValueKind(enum.IntEnum):
    UNSUPPORTED = 0
    UNKNOWN = 1
    NO_VALUE = 2
    INTEGER = 3
    BOOLEAN = 4
    ENUM = 5
    OCTET_STRING = 6
    DATE_TIME = 7
    RESOLUTION = 8
    RANGE_OF_INTEGER = 9
    COLLECTION = 10
    TEXT_WITH_LANGUAGE = 11
    NAME_WITH_LANGUAGE = 12
    TEXT_WITHOUT_LANGUAGE = 13
    NAME_WITHOUT_LANGUAGE = 14
    KEYWORD = 15
    URI = 16
    URI_SCHEMA = 17
    CHARSET = 18
    NATURAL_LANGUAGE = 19
    MIME_MEDIA_TYPE = 20

class IppResolutionUnit(enum.IntEnum):
    DOTS_PER_INCH = 0
    DOTS_PER_CENTIMETER = 1

class PageConfigurationSource(enum.IntEnum):
    PRINT_JOB_CONFIGURATION = 0
    PDL_CONTENT = 1

Self = typing.TypeVar('Self')

class IppAttributeError(winsdk.system.Object):
    extended_error: winsdk.windows.foundation.HResult
    reason: IppAttributeErrorReason
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IppAttributeError: ...
    def get_unsupported_values(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[IppAttributeValue]]: ...

class IppAttributeValue(winsdk.system.Object):
    kind: IppAttributeValueKind
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IppAttributeValue: ...
    @staticmethod
    def create_boolean(value: winsdk.system.Boolean) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_boolean_array(values: typing.Iterable[winsdk.system.Boolean]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_charset(value: str) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_charset_array(values: typing.Iterable[str]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_collection(member_attributes: typing.Iterable[winsdk.windows.foundation.collections.IKeyValuePair[str, IppAttributeValue]]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_collection_array(member_attributes_array: typing.Iterable[winsdk.windows.foundation.collections.IIterable[winsdk.windows.foundation.collections.IKeyValuePair[str, IppAttributeValue]]]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_date_time(value: datetime.datetime) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_date_time_array(values: typing.Iterable[datetime.datetime]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_enum(value: winsdk.system.Int32) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_enum_array(values: typing.Iterable[winsdk.system.Int32]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_integer(value: winsdk.system.Int32) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_integer_array(values: typing.Iterable[winsdk.system.Int32]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_keyword(value: str) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_keyword_array(values: typing.Iterable[str]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_mime_media(value: str) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_mime_media_array(values: typing.Iterable[str]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_name_with_language(value: typing.Optional[IppTextWithLanguage]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_name_with_language_array(values: typing.Iterable[IppTextWithLanguage]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_name_without_language(value: str) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_name_without_language_array(values: typing.Iterable[str]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_natural_language(value: str) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_natural_language_array(values: typing.Iterable[str]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_no_value() -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_octet_string(value: typing.Optional[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_octet_string_array(values: typing.Iterable[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_range_of_integer(value: typing.Optional[IppIntegerRange]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_range_of_integer_array(values: typing.Iterable[IppIntegerRange]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_resolution(value: typing.Optional[IppResolution]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_resolution_array(values: typing.Iterable[IppResolution]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_text_with_language(value: typing.Optional[IppTextWithLanguage]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_text_with_language_array(values: typing.Iterable[IppTextWithLanguage]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_text_without_language(value: str) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_text_without_language_array(values: typing.Iterable[str]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_unknown() -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_unsupported() -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_uri(value: typing.Optional[winsdk.windows.foundation.Uri]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_uri_array(values: typing.Iterable[winsdk.windows.foundation.Uri]) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_uri_schema(value: str) -> typing.Optional[IppAttributeValue]: ...
    @staticmethod
    def create_uri_schema_array(values: typing.Iterable[str]) -> typing.Optional[IppAttributeValue]: ...
    def get_boolean_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[winsdk.system.Boolean]]: ...
    def get_charset_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[str]]: ...
    def get_collection_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[winsdk.windows.foundation.collections.IMapView[str, IppAttributeValue]]]: ...
    def get_date_time_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[datetime.datetime]]: ...
    def get_enum_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[winsdk.system.Int32]]: ...
    def get_integer_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[winsdk.system.Int32]]: ...
    def get_keyword_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[str]]: ...
    def get_mime_media_type_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[str]]: ...
    def get_name_with_language_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[IppTextWithLanguage]]: ...
    def get_name_without_language_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[str]]: ...
    def get_natural_language_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[str]]: ...
    def get_octet_string_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[winsdk.windows.storage.streams.IBuffer]]: ...
    def get_range_of_integer_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[IppIntegerRange]]: ...
    def get_resolution_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[IppResolution]]: ...
    def get_text_with_language_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[IppTextWithLanguage]]: ...
    def get_text_without_language_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[str]]: ...
    def get_uri_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[winsdk.windows.foundation.Uri]]: ...
    def get_uri_schema_array(self) -> typing.Optional[winsdk.windows.foundation.collections.IVector[str]]: ...

class IppIntegerRange(winsdk.system.Object):
    end: winsdk.system.Int32
    start: winsdk.system.Int32
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IppIntegerRange: ...
    def __new__(cls: typing.Type[IppIntegerRange], start: winsdk.system.Int32, end: winsdk.system.Int32) -> IppIntegerRange:...

class IppPrintDevice(winsdk.system.Object):
    printer_name: str
    printer_uri: typing.Optional[winsdk.windows.foundation.Uri]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IppPrintDevice: ...
    @staticmethod
    def from_id(device_id: str) -> typing.Optional[IppPrintDevice]: ...
    @staticmethod
    def from_printer_name(printer_name: str) -> typing.Optional[IppPrintDevice]: ...
    @staticmethod
    def get_device_selector() -> str: ...
    def get_max_supported_pdf_size(self) -> winsdk.system.UInt64: ...
    def get_max_supported_pdf_version(self) -> str: ...
    def get_pdl_passthrough_provider(self) -> typing.Optional[PdlPassthroughProvider]: ...
    def get_printer_attributes(self, attribute_names: typing.Iterable[str]) -> typing.Optional[winsdk.windows.foundation.collections.IMap[str, IppAttributeValue]]: ...
    def get_printer_attributes_as_buffer(self, attribute_names: typing.Iterable[str]) -> typing.Optional[winsdk.windows.storage.streams.IBuffer]: ...
    @staticmethod
    def is_ipp_printer(printer_name: str) -> winsdk.system.Boolean: ...
    def is_pdl_passthrough_supported(self, pdl_content_type: str) -> winsdk.system.Boolean: ...
    def set_printer_attributes(self, printer_attributes: typing.Iterable[winsdk.windows.foundation.collections.IKeyValuePair[str, IppAttributeValue]]) -> typing.Optional[IppSetAttributesResult]: ...
    def set_printer_attributes_from_buffer(self, printer_attributes_buffer: typing.Optional[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[IppSetAttributesResult]: ...

class IppResolution(winsdk.system.Object):
    height: winsdk.system.Int32
    unit: IppResolutionUnit
    width: winsdk.system.Int32
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IppResolution: ...
    def __new__(cls: typing.Type[IppResolution], width: winsdk.system.Int32, height: winsdk.system.Int32, unit: IppResolutionUnit) -> IppResolution:...

class IppSetAttributesResult(winsdk.system.Object):
    attribute_errors: typing.Optional[winsdk.windows.foundation.collections.IMapView[str, IppAttributeError]]
    succeeded: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IppSetAttributesResult: ...

class IppTextWithLanguage(winsdk.system.Object):
    language: str
    value: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IppTextWithLanguage: ...
    def __new__(cls: typing.Type[IppTextWithLanguage], language: str, text: str) -> IppTextWithLanguage:...

class PageConfigurationSettings(winsdk.system.Object):
    size_source: PageConfigurationSource
    orientation_source: PageConfigurationSource
    @staticmethod
    def _from(obj: winsdk.system.Object) -> PageConfigurationSettings: ...
    def __new__(cls: typing.Type[PageConfigurationSettings]) -> PageConfigurationSettings:...

class PdlPassthroughProvider(winsdk.system.Object):
    supported_pdl_content_types: typing.Optional[winsdk.windows.foundation.collections.IVectorView[str]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> PdlPassthroughProvider: ...
    def start_print_job_with_print_ticket(self, job_name: str, pdl_content_type: str, print_ticket: typing.Optional[winsdk.windows.storage.streams.IInputStream], page_configuration_settings: typing.Optional[PageConfigurationSettings]) -> typing.Optional[PdlPassthroughTarget]: ...
    def start_print_job_with_task_options(self, job_name: str, pdl_content_type: str, task_options: typing.Optional[winsdk.windows.graphics.printing.PrintTaskOptions], page_configuration_settings: typing.Optional[PageConfigurationSettings]) -> typing.Optional[PdlPassthroughTarget]: ...

class PdlPassthroughTarget(winsdk.system.Object):
    print_job_id: winsdk.system.Int32
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> PdlPassthroughTarget: ...
    def close(self) -> None: ...
    def get_output_stream(self) -> typing.Optional[winsdk.windows.storage.streams.IOutputStream]: ...
    def submit(self) -> None: ...

class Print3DDevice(winsdk.system.Object):
    print_schema: typing.Optional[PrintSchema]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> Print3DDevice: ...
    @staticmethod
    def from_id_async(device_id: str) -> winsdk.windows.foundation.IAsyncOperation[Print3DDevice]: ...
    @staticmethod
    def get_device_selector() -> str: ...

class PrintSchema(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object) -> PrintSchema: ...
    def get_capabilities_async(self, constrain_ticket: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamWithContentType]) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.streams.IRandomAccessStreamWithContentType]: ...
    def get_default_print_ticket_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.streams.IRandomAccessStreamWithContentType]: ...
    def merge_and_validate_with_default_print_ticket_async(self, delta_ticket: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamWithContentType]) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.streams.IRandomAccessStreamWithContentType]: ...

