# 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
import winsdk.windows.graphics.directx.direct3d11
import winsdk.windows.graphics.imaging
import winsdk.windows.media
import winsdk.windows.storage
import winsdk.windows.storage.streams

class LearningModelDeviceKind(enum.IntEnum):
    DEFAULT = 0
    CPU = 1
    DIRECT_X = 2
    DIRECT_X_HIGH_PERFORMANCE = 3
    DIRECT_X_MIN_POWER = 4

class LearningModelFeatureKind(enum.IntEnum):
    TENSOR = 0
    SEQUENCE = 1
    MAP = 2
    IMAGE = 3

class LearningModelPixelRange(enum.IntEnum):
    ZERO_TO255 = 0
    ZERO_TO_ONE = 1
    MINUS_ONE_TO_ONE = 2

class TensorKind(enum.IntEnum):
    UNDEFINED = 0
    FLOAT = 1
    UINT8 = 2
    INT8 = 3
    UINT16 = 4
    INT16 = 5
    INT32 = 6
    INT64 = 7
    STRING = 8
    BOOLEAN = 9
    FLOAT16 = 10
    DOUBLE = 11
    UINT32 = 12
    UINT64 = 13
    COMPLEX64 = 14
    COMPLEX128 = 15

Self = typing.TypeVar('Self')

class ImageFeatureDescriptor(winsdk.system.Object):
    bitmap_alpha_mode: winsdk.windows.graphics.imaging.BitmapAlphaMode
    bitmap_pixel_format: winsdk.windows.graphics.imaging.BitmapPixelFormat
    height: winsdk.system.UInt32
    width: winsdk.system.UInt32
    pixel_range: LearningModelPixelRange
    description: str
    is_required: winsdk.system.Boolean
    kind: LearningModelFeatureKind
    name: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> ImageFeatureDescriptor: ...

class ImageFeatureValue(winsdk.system.Object):
    video_frame: typing.Optional[winsdk.windows.media.VideoFrame]
    kind: LearningModelFeatureKind
    @staticmethod
    def _from(obj: winsdk.system.Object) -> ImageFeatureValue: ...
    @staticmethod
    def create_from_video_frame(image: typing.Optional[winsdk.windows.media.VideoFrame]) -> typing.Optional[ImageFeatureValue]: ...

class LearningModel(winsdk.system.Object):
    author: str
    description: str
    domain: str
    input_features: typing.Optional[winsdk.windows.foundation.collections.IVectorView[ILearningModelFeatureDescriptor]]
    metadata: typing.Optional[winsdk.windows.foundation.collections.IMapView[str, str]]
    name: str
    output_features: typing.Optional[winsdk.windows.foundation.collections.IVectorView[ILearningModelFeatureDescriptor]]
    version: winsdk.system.Int64
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> LearningModel: ...
    def close(self) -> None: ...
    @typing.overload
    @staticmethod
    def load_from_file_path(file_path: str) -> typing.Optional[LearningModel]: ...
    @typing.overload
    @staticmethod
    def load_from_file_path(file_path: str, operator_provider: typing.Optional[ILearningModelOperatorProvider]) -> typing.Optional[LearningModel]: ...
    @typing.overload
    @staticmethod
    def load_from_storage_file_async(model_file: typing.Optional[winsdk.windows.storage.IStorageFile]) -> winsdk.windows.foundation.IAsyncOperation[LearningModel]: ...
    @typing.overload
    @staticmethod
    def load_from_storage_file_async(model_file: typing.Optional[winsdk.windows.storage.IStorageFile], operator_provider: typing.Optional[ILearningModelOperatorProvider]) -> winsdk.windows.foundation.IAsyncOperation[LearningModel]: ...
    @typing.overload
    @staticmethod
    def load_from_stream(model_stream: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamReference]) -> typing.Optional[LearningModel]: ...
    @typing.overload
    @staticmethod
    def load_from_stream(model_stream: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamReference], operator_provider: typing.Optional[ILearningModelOperatorProvider]) -> typing.Optional[LearningModel]: ...
    @typing.overload
    @staticmethod
    def load_from_stream_async(model_stream: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamReference]) -> winsdk.windows.foundation.IAsyncOperation[LearningModel]: ...
    @typing.overload
    @staticmethod
    def load_from_stream_async(model_stream: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamReference], operator_provider: typing.Optional[ILearningModelOperatorProvider]) -> winsdk.windows.foundation.IAsyncOperation[LearningModel]: ...

class LearningModelBinding(winsdk.system.Object, typing.Mapping[str, winsdk.system.Object]):
    size: winsdk.system.UInt32
    def __len__(self) -> int: ...
    def __iter__(self) -> typing.Iterator[str]: ...
    def __contains__(self, key: object) -> bool:...
    def __getitem__(self, key: str) -> winsdk.system.Object: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> LearningModelBinding: ...
    def __new__(cls: typing.Type[LearningModelBinding], session: typing.Optional[LearningModelSession]) -> LearningModelBinding:...
    @typing.overload
    def bind(self, name: str, value: typing.Optional[winsdk.system.Object]) -> None: ...
    @typing.overload
    def bind(self, name: str, value: typing.Optional[winsdk.system.Object], props: typing.Optional[winsdk.windows.foundation.collections.IPropertySet]) -> None: ...
    def clear(self) -> None: ...
    def first(self) -> typing.Optional[winsdk.windows.foundation.collections.IIterator[winsdk.windows.foundation.collections.IKeyValuePair[str, winsdk.system.Object]]]: ...
    def has_key(self, key: str) -> winsdk.system.Boolean: ...
    def lookup(self, key: str) -> typing.Optional[winsdk.system.Object]: ...
    def split(self) -> typing.Tuple[typing.Optional[winsdk.windows.foundation.collections.IMapView[str, winsdk.system.Object]], typing.Optional[winsdk.windows.foundation.collections.IMapView[str, winsdk.system.Object]]]: ...

class LearningModelDevice(winsdk.system.Object):
    adapter_id: winsdk.windows.graphics.DisplayAdapterId
    direct3_d11_device: typing.Optional[winsdk.windows.graphics.directx.direct3d11.IDirect3DDevice]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> LearningModelDevice: ...
    def __new__(cls: typing.Type[LearningModelDevice], device_kind: LearningModelDeviceKind) -> LearningModelDevice:...
    @staticmethod
    def create_from_direct3_d11_device(device: typing.Optional[winsdk.windows.graphics.directx.direct3d11.IDirect3DDevice]) -> typing.Optional[LearningModelDevice]: ...

class LearningModelEvaluationResult(winsdk.system.Object):
    correlation_id: str
    error_status: winsdk.system.Int32
    outputs: typing.Optional[winsdk.windows.foundation.collections.IMapView[str, winsdk.system.Object]]
    succeeded: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> LearningModelEvaluationResult: ...

class LearningModelSession(winsdk.system.Object):
    device: typing.Optional[LearningModelDevice]
    evaluation_properties: typing.Optional[winsdk.windows.foundation.collections.IPropertySet]
    model: typing.Optional[LearningModel]
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> LearningModelSession: ...
    @typing.overload
    def __new__(cls: typing.Type[LearningModelSession], model: typing.Optional[LearningModel], device_to_run_on: typing.Optional[LearningModelDevice], learning_model_session_options: typing.Optional[LearningModelSessionOptions]) -> LearningModelSession:...
    @typing.overload
    def __new__(cls: typing.Type[LearningModelSession], model: typing.Optional[LearningModel]) -> LearningModelSession:...
    @typing.overload
    def __new__(cls: typing.Type[LearningModelSession], model: typing.Optional[LearningModel], device_to_run_on: typing.Optional[LearningModelDevice]) -> LearningModelSession:...
    def close(self) -> None: ...
    def evaluate(self, bindings: typing.Optional[LearningModelBinding], correlation_id: str) -> typing.Optional[LearningModelEvaluationResult]: ...
    def evaluate_async(self, bindings: typing.Optional[LearningModelBinding], correlation_id: str) -> winsdk.windows.foundation.IAsyncOperation[LearningModelEvaluationResult]: ...
    def evaluate_features(self, features: winsdk.windows.foundation.collections.IMap[str, winsdk.system.Object], correlation_id: str) -> typing.Optional[LearningModelEvaluationResult]: ...
    def evaluate_features_async(self, features: winsdk.windows.foundation.collections.IMap[str, winsdk.system.Object], correlation_id: str) -> winsdk.windows.foundation.IAsyncOperation[LearningModelEvaluationResult]: ...

class LearningModelSessionOptions(winsdk.system.Object):
    batch_size_override: winsdk.system.UInt32
    close_model_on_session_creation: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> LearningModelSessionOptions: ...
    def __new__(cls: typing.Type[LearningModelSessionOptions]) -> LearningModelSessionOptions:...
    def override_named_dimension(self, name: str, dimension: winsdk.system.UInt32) -> None: ...

class MapFeatureDescriptor(winsdk.system.Object):
    description: str
    is_required: winsdk.system.Boolean
    kind: LearningModelFeatureKind
    name: str
    key_kind: TensorKind
    value_descriptor: typing.Optional[ILearningModelFeatureDescriptor]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MapFeatureDescriptor: ...

class SequenceFeatureDescriptor(winsdk.system.Object):
    description: str
    is_required: winsdk.system.Boolean
    kind: LearningModelFeatureKind
    name: str
    element_descriptor: typing.Optional[ILearningModelFeatureDescriptor]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> SequenceFeatureDescriptor: ...

class TensorBoolean(winsdk.system.Object):
    kind: LearningModelFeatureKind
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TensorBoolean: ...
    def close(self) -> None: ...
    @typing.overload
    @staticmethod
    def create() -> typing.Optional[TensorBoolean]: ...
    @typing.overload
    @staticmethod
    def create(shape: typing.Iterable[winsdk.system.Int64]) -> typing.Optional[TensorBoolean]: ...
    @staticmethod
    def create_from_array(shape: typing.Iterable[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.Boolean]) -> typing.Optional[TensorBoolean]: ...
    @staticmethod
    def create_from_buffer(shape: winsdk.system.Array[winsdk.system.Int64], buffer: typing.Optional[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[TensorBoolean]: ...
    @staticmethod
    def create_from_iterable(shape: typing.Iterable[winsdk.system.Int64], data: typing.Iterable[winsdk.system.Boolean]) -> typing.Optional[TensorBoolean]: ...
    @staticmethod
    def create_from_shape_array_and_data_array(shape: winsdk.system.Array[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.Boolean]) -> typing.Optional[TensorBoolean]: ...
    def create_reference(self) -> typing.Optional[winsdk.windows.foundation.IMemoryBufferReference]: ...
    def get_as_vector_view(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Boolean]]: ...

class TensorDouble(winsdk.system.Object):
    kind: LearningModelFeatureKind
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TensorDouble: ...
    def close(self) -> None: ...
    @typing.overload
    @staticmethod
    def create() -> typing.Optional[TensorDouble]: ...
    @typing.overload
    @staticmethod
    def create(shape: typing.Iterable[winsdk.system.Int64]) -> typing.Optional[TensorDouble]: ...
    @staticmethod
    def create_from_array(shape: typing.Iterable[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.Double]) -> typing.Optional[TensorDouble]: ...
    @staticmethod
    def create_from_buffer(shape: winsdk.system.Array[winsdk.system.Int64], buffer: typing.Optional[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[TensorDouble]: ...
    @staticmethod
    def create_from_iterable(shape: typing.Iterable[winsdk.system.Int64], data: typing.Iterable[winsdk.system.Double]) -> typing.Optional[TensorDouble]: ...
    @staticmethod
    def create_from_shape_array_and_data_array(shape: winsdk.system.Array[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.Double]) -> typing.Optional[TensorDouble]: ...
    def create_reference(self) -> typing.Optional[winsdk.windows.foundation.IMemoryBufferReference]: ...
    def get_as_vector_view(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Double]]: ...

class TensorFeatureDescriptor(winsdk.system.Object):
    description: str
    is_required: winsdk.system.Boolean
    kind: LearningModelFeatureKind
    name: str
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TensorFeatureDescriptor: ...

class TensorFloat(winsdk.system.Object):
    kind: LearningModelFeatureKind
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TensorFloat: ...
    def close(self) -> None: ...
    @typing.overload
    @staticmethod
    def create() -> typing.Optional[TensorFloat]: ...
    @typing.overload
    @staticmethod
    def create(shape: typing.Iterable[winsdk.system.Int64]) -> typing.Optional[TensorFloat]: ...
    @staticmethod
    def create_from_array(shape: typing.Iterable[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.Single]) -> typing.Optional[TensorFloat]: ...
    @staticmethod
    def create_from_buffer(shape: winsdk.system.Array[winsdk.system.Int64], buffer: typing.Optional[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[TensorFloat]: ...
    @staticmethod
    def create_from_iterable(shape: typing.Iterable[winsdk.system.Int64], data: typing.Iterable[winsdk.system.Single]) -> typing.Optional[TensorFloat]: ...
    @staticmethod
    def create_from_shape_array_and_data_array(shape: winsdk.system.Array[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.Single]) -> typing.Optional[TensorFloat]: ...
    def create_reference(self) -> typing.Optional[winsdk.windows.foundation.IMemoryBufferReference]: ...
    def get_as_vector_view(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Single]]: ...

class TensorFloat16Bit(winsdk.system.Object):
    kind: LearningModelFeatureKind
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TensorFloat16Bit: ...
    def close(self) -> None: ...
    @typing.overload
    @staticmethod
    def create() -> typing.Optional[TensorFloat16Bit]: ...
    @typing.overload
    @staticmethod
    def create(shape: typing.Iterable[winsdk.system.Int64]) -> typing.Optional[TensorFloat16Bit]: ...
    @staticmethod
    def create_from_array(shape: typing.Iterable[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.Single]) -> typing.Optional[TensorFloat16Bit]: ...
    @staticmethod
    def create_from_buffer(shape: winsdk.system.Array[winsdk.system.Int64], buffer: typing.Optional[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[TensorFloat16Bit]: ...
    @staticmethod
    def create_from_iterable(shape: typing.Iterable[winsdk.system.Int64], data: typing.Iterable[winsdk.system.Single]) -> typing.Optional[TensorFloat16Bit]: ...
    @staticmethod
    def create_from_shape_array_and_data_array(shape: winsdk.system.Array[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.Single]) -> typing.Optional[TensorFloat16Bit]: ...
    def create_reference(self) -> typing.Optional[winsdk.windows.foundation.IMemoryBufferReference]: ...
    def get_as_vector_view(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Single]]: ...

class TensorInt16Bit(winsdk.system.Object):
    kind: LearningModelFeatureKind
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TensorInt16Bit: ...
    def close(self) -> None: ...
    @typing.overload
    @staticmethod
    def create() -> typing.Optional[TensorInt16Bit]: ...
    @typing.overload
    @staticmethod
    def create(shape: typing.Iterable[winsdk.system.Int64]) -> typing.Optional[TensorInt16Bit]: ...
    @staticmethod
    def create_from_array(shape: typing.Iterable[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.Int16]) -> typing.Optional[TensorInt16Bit]: ...
    @staticmethod
    def create_from_buffer(shape: winsdk.system.Array[winsdk.system.Int64], buffer: typing.Optional[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[TensorInt16Bit]: ...
    @staticmethod
    def create_from_iterable(shape: typing.Iterable[winsdk.system.Int64], data: typing.Iterable[winsdk.system.Int16]) -> typing.Optional[TensorInt16Bit]: ...
    @staticmethod
    def create_from_shape_array_and_data_array(shape: winsdk.system.Array[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.Int16]) -> typing.Optional[TensorInt16Bit]: ...
    def create_reference(self) -> typing.Optional[winsdk.windows.foundation.IMemoryBufferReference]: ...
    def get_as_vector_view(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int16]]: ...

class TensorInt32Bit(winsdk.system.Object):
    kind: LearningModelFeatureKind
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TensorInt32Bit: ...
    def close(self) -> None: ...
    @typing.overload
    @staticmethod
    def create() -> typing.Optional[TensorInt32Bit]: ...
    @typing.overload
    @staticmethod
    def create(shape: typing.Iterable[winsdk.system.Int64]) -> typing.Optional[TensorInt32Bit]: ...
    @staticmethod
    def create_from_array(shape: typing.Iterable[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.Int32]) -> typing.Optional[TensorInt32Bit]: ...
    @staticmethod
    def create_from_buffer(shape: winsdk.system.Array[winsdk.system.Int64], buffer: typing.Optional[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[TensorInt32Bit]: ...
    @staticmethod
    def create_from_iterable(shape: typing.Iterable[winsdk.system.Int64], data: typing.Iterable[winsdk.system.Int32]) -> typing.Optional[TensorInt32Bit]: ...
    @staticmethod
    def create_from_shape_array_and_data_array(shape: winsdk.system.Array[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.Int32]) -> typing.Optional[TensorInt32Bit]: ...
    def create_reference(self) -> typing.Optional[winsdk.windows.foundation.IMemoryBufferReference]: ...
    def get_as_vector_view(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int32]]: ...

class TensorInt64Bit(winsdk.system.Object):
    kind: LearningModelFeatureKind
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TensorInt64Bit: ...
    def close(self) -> None: ...
    @typing.overload
    @staticmethod
    def create() -> typing.Optional[TensorInt64Bit]: ...
    @typing.overload
    @staticmethod
    def create(shape: typing.Iterable[winsdk.system.Int64]) -> typing.Optional[TensorInt64Bit]: ...
    @staticmethod
    def create_from_array(shape: typing.Iterable[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.Int64]) -> typing.Optional[TensorInt64Bit]: ...
    @staticmethod
    def create_from_buffer(shape: winsdk.system.Array[winsdk.system.Int64], buffer: typing.Optional[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[TensorInt64Bit]: ...
    @staticmethod
    def create_from_iterable(shape: typing.Iterable[winsdk.system.Int64], data: typing.Iterable[winsdk.system.Int64]) -> typing.Optional[TensorInt64Bit]: ...
    @staticmethod
    def create_from_shape_array_and_data_array(shape: winsdk.system.Array[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.Int64]) -> typing.Optional[TensorInt64Bit]: ...
    def create_reference(self) -> typing.Optional[winsdk.windows.foundation.IMemoryBufferReference]: ...
    def get_as_vector_view(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]: ...

class TensorInt8Bit(winsdk.system.Object):
    kind: LearningModelFeatureKind
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TensorInt8Bit: ...
    def close(self) -> None: ...
    @typing.overload
    @staticmethod
    def create() -> typing.Optional[TensorInt8Bit]: ...
    @typing.overload
    @staticmethod
    def create(shape: typing.Iterable[winsdk.system.Int64]) -> typing.Optional[TensorInt8Bit]: ...
    @staticmethod
    def create_from_array(shape: typing.Iterable[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.UInt8]) -> typing.Optional[TensorInt8Bit]: ...
    @staticmethod
    def create_from_buffer(shape: winsdk.system.Array[winsdk.system.Int64], buffer: typing.Optional[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[TensorInt8Bit]: ...
    @staticmethod
    def create_from_iterable(shape: typing.Iterable[winsdk.system.Int64], data: typing.Iterable[winsdk.system.UInt8]) -> typing.Optional[TensorInt8Bit]: ...
    @staticmethod
    def create_from_shape_array_and_data_array(shape: winsdk.system.Array[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.UInt8]) -> typing.Optional[TensorInt8Bit]: ...
    def create_reference(self) -> typing.Optional[winsdk.windows.foundation.IMemoryBufferReference]: ...
    def get_as_vector_view(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.UInt8]]: ...

class TensorString(winsdk.system.Object):
    kind: LearningModelFeatureKind
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TensorString: ...
    def close(self) -> None: ...
    @typing.overload
    @staticmethod
    def create() -> typing.Optional[TensorString]: ...
    @typing.overload
    @staticmethod
    def create(shape: typing.Iterable[winsdk.system.Int64]) -> typing.Optional[TensorString]: ...
    @staticmethod
    def create_from_array(shape: typing.Iterable[winsdk.system.Int64], data: winsdk.system.Array[str]) -> typing.Optional[TensorString]: ...
    @staticmethod
    def create_from_iterable(shape: typing.Iterable[winsdk.system.Int64], data: typing.Iterable[str]) -> typing.Optional[TensorString]: ...
    @staticmethod
    def create_from_shape_array_and_data_array(shape: winsdk.system.Array[winsdk.system.Int64], data: winsdk.system.Array[str]) -> typing.Optional[TensorString]: ...
    def create_reference(self) -> typing.Optional[winsdk.windows.foundation.IMemoryBufferReference]: ...
    def get_as_vector_view(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[str]]: ...

class TensorUInt16Bit(winsdk.system.Object):
    kind: LearningModelFeatureKind
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TensorUInt16Bit: ...
    def close(self) -> None: ...
    @typing.overload
    @staticmethod
    def create() -> typing.Optional[TensorUInt16Bit]: ...
    @typing.overload
    @staticmethod
    def create(shape: typing.Iterable[winsdk.system.Int64]) -> typing.Optional[TensorUInt16Bit]: ...
    @staticmethod
    def create_from_array(shape: typing.Iterable[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.UInt16]) -> typing.Optional[TensorUInt16Bit]: ...
    @staticmethod
    def create_from_buffer(shape: winsdk.system.Array[winsdk.system.Int64], buffer: typing.Optional[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[TensorUInt16Bit]: ...
    @staticmethod
    def create_from_iterable(shape: typing.Iterable[winsdk.system.Int64], data: typing.Iterable[winsdk.system.UInt16]) -> typing.Optional[TensorUInt16Bit]: ...
    @staticmethod
    def create_from_shape_array_and_data_array(shape: winsdk.system.Array[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.UInt16]) -> typing.Optional[TensorUInt16Bit]: ...
    def create_reference(self) -> typing.Optional[winsdk.windows.foundation.IMemoryBufferReference]: ...
    def get_as_vector_view(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.UInt16]]: ...

class TensorUInt32Bit(winsdk.system.Object):
    kind: LearningModelFeatureKind
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TensorUInt32Bit: ...
    def close(self) -> None: ...
    @typing.overload
    @staticmethod
    def create() -> typing.Optional[TensorUInt32Bit]: ...
    @typing.overload
    @staticmethod
    def create(shape: typing.Iterable[winsdk.system.Int64]) -> typing.Optional[TensorUInt32Bit]: ...
    @staticmethod
    def create_from_array(shape: typing.Iterable[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.UInt32]) -> typing.Optional[TensorUInt32Bit]: ...
    @staticmethod
    def create_from_buffer(shape: winsdk.system.Array[winsdk.system.Int64], buffer: typing.Optional[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[TensorUInt32Bit]: ...
    @staticmethod
    def create_from_iterable(shape: typing.Iterable[winsdk.system.Int64], data: typing.Iterable[winsdk.system.UInt32]) -> typing.Optional[TensorUInt32Bit]: ...
    @staticmethod
    def create_from_shape_array_and_data_array(shape: winsdk.system.Array[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.UInt32]) -> typing.Optional[TensorUInt32Bit]: ...
    def create_reference(self) -> typing.Optional[winsdk.windows.foundation.IMemoryBufferReference]: ...
    def get_as_vector_view(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.UInt32]]: ...

class TensorUInt64Bit(winsdk.system.Object):
    kind: LearningModelFeatureKind
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TensorUInt64Bit: ...
    def close(self) -> None: ...
    @typing.overload
    @staticmethod
    def create() -> typing.Optional[TensorUInt64Bit]: ...
    @typing.overload
    @staticmethod
    def create(shape: typing.Iterable[winsdk.system.Int64]) -> typing.Optional[TensorUInt64Bit]: ...
    @staticmethod
    def create_from_array(shape: typing.Iterable[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.UInt64]) -> typing.Optional[TensorUInt64Bit]: ...
    @staticmethod
    def create_from_buffer(shape: winsdk.system.Array[winsdk.system.Int64], buffer: typing.Optional[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[TensorUInt64Bit]: ...
    @staticmethod
    def create_from_iterable(shape: typing.Iterable[winsdk.system.Int64], data: typing.Iterable[winsdk.system.UInt64]) -> typing.Optional[TensorUInt64Bit]: ...
    @staticmethod
    def create_from_shape_array_and_data_array(shape: winsdk.system.Array[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.UInt64]) -> typing.Optional[TensorUInt64Bit]: ...
    def create_reference(self) -> typing.Optional[winsdk.windows.foundation.IMemoryBufferReference]: ...
    def get_as_vector_view(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.UInt64]]: ...

class TensorUInt8Bit(winsdk.system.Object):
    kind: LearningModelFeatureKind
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TensorUInt8Bit: ...
    def close(self) -> None: ...
    @typing.overload
    @staticmethod
    def create() -> typing.Optional[TensorUInt8Bit]: ...
    @typing.overload
    @staticmethod
    def create(shape: typing.Iterable[winsdk.system.Int64]) -> typing.Optional[TensorUInt8Bit]: ...
    @staticmethod
    def create_from_array(shape: typing.Iterable[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.UInt8]) -> typing.Optional[TensorUInt8Bit]: ...
    @staticmethod
    def create_from_buffer(shape: winsdk.system.Array[winsdk.system.Int64], buffer: typing.Optional[winsdk.windows.storage.streams.IBuffer]) -> typing.Optional[TensorUInt8Bit]: ...
    @staticmethod
    def create_from_iterable(shape: typing.Iterable[winsdk.system.Int64], data: typing.Iterable[winsdk.system.UInt8]) -> typing.Optional[TensorUInt8Bit]: ...
    @staticmethod
    def create_from_shape_array_and_data_array(shape: winsdk.system.Array[winsdk.system.Int64], data: winsdk.system.Array[winsdk.system.UInt8]) -> typing.Optional[TensorUInt8Bit]: ...
    def create_reference(self) -> typing.Optional[winsdk.windows.foundation.IMemoryBufferReference]: ...
    def get_as_vector_view(self) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.UInt8]]: ...

class ILearningModelFeatureDescriptor(winsdk.system.Object):
    description: str
    is_required: winsdk.system.Boolean
    kind: LearningModelFeatureKind
    name: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> ILearningModelFeatureDescriptor: ...

class ILearningModelFeatureValue(winsdk.system.Object):
    kind: LearningModelFeatureKind
    @staticmethod
    def _from(obj: winsdk.system.Object) -> ILearningModelFeatureValue: ...

class ILearningModelOperatorProvider(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object) -> ILearningModelOperatorProvider: ...

class ITensor(winsdk.system.Object):
    shape: typing.Optional[winsdk.windows.foundation.collections.IVectorView[winsdk.system.Int64]]
    tensor_kind: TensorKind
    kind: LearningModelFeatureKind
    @staticmethod
    def _from(obj: winsdk.system.Object) -> ITensor: ...

