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

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 as windows_foundation
import winrt.windows.foundation.numerics as windows_foundation_numerics
import winrt.windows.perception as windows_perception
import winrt.windows.perception.spatial as windows_perception_spatial
import winrt.windows.ui.input as windows_ui_input
import winrt.windows.ui.input.spatial as windows_ui_input_spatial

from winrt.windows.perception.people import HandJointKind, JointPoseAccuracy

Self = typing.TypeVar('Self')

@typing.final
class HandMeshVertex:
    position: windows_foundation_numerics.Vector3
    normal: windows_foundation_numerics.Vector3
    def __init__(self, position: windows_foundation_numerics.Vector3, normal: windows_foundation_numerics.Vector3) -> None: ...

@typing.final
class JointPose:
    orientation: windows_foundation_numerics.Quaternion
    position: windows_foundation_numerics.Vector3
    radius: winrt.system.Single
    accuracy: JointPoseAccuracy
    def __init__(self, orientation: windows_foundation_numerics.Quaternion, position: windows_foundation_numerics.Vector3, radius: winrt.system.Single, accuracy: JointPoseAccuracy) -> None: ...

@typing.final
class EyesPose_Static(type):
    def is_supported(cls) -> bool: ...
    def request_access_async(cls) -> windows_foundation.IAsyncOperation[windows_ui_input.GazeInputAccessStatus]: ...

@typing.final
class EyesPose(winrt.system.Object, metaclass=EyesPose_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> EyesPose: ...
    @_property
    def gaze(self) -> typing.Optional[typing.Optional[windows_perception_spatial.SpatialRay]]: ...
    @_property
    def is_calibration_valid(self) -> bool: ...
    @_property
    def update_timestamp(self) -> typing.Optional[windows_perception.PerceptionTimestamp]: ...

@typing.final
class HandMeshObserver(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> HandMeshObserver: ...
    def get_triangle_indices(self, indices: typing.Union[winrt.system.Array[winrt.system.UInt16], winrt.system.WriteableBuffer], /) -> None: ...
    def get_vertex_state_for_pose(self, hand_pose: typing.Optional[HandPose], /) -> typing.Optional[HandMeshVertexState]: ...
    @_property
    def model_id(self) -> winrt.system.Int32: ...
    @_property
    def neutral_pose(self) -> typing.Optional[HandPose]: ...
    @_property
    def neutral_pose_version(self) -> winrt.system.Int32: ...
    @_property
    def source(self) -> typing.Optional[windows_ui_input_spatial.SpatialInteractionSource]: ...
    @_property
    def triangle_index_count(self) -> winrt.system.UInt32: ...
    @_property
    def vertex_count(self) -> winrt.system.UInt32: ...

@typing.final
class HandMeshVertexState(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> HandMeshVertexState: ...
    def get_vertices(self, vertices: typing.Union[winrt.system.Array[HandMeshVertex], winrt.system.WriteableBuffer], /) -> None: ...
    @_property
    def coordinate_system(self) -> typing.Optional[windows_perception_spatial.SpatialCoordinateSystem]: ...
    @_property
    def update_timestamp(self) -> typing.Optional[windows_perception.PerceptionTimestamp]: ...

@typing.final
class HandPose(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> HandPose: ...
    def get_relative_joint(self, joint: HandJointKind, reference_joint: HandJointKind, /) -> JointPose: ...
    def get_relative_joints(self, joints: typing.Union[winrt.system.Array[HandJointKind], winrt.system.ReadableBuffer], reference_joints: typing.Union[winrt.system.Array[HandJointKind], winrt.system.ReadableBuffer], joint_poses: typing.Union[winrt.system.Array[JointPose], winrt.system.WriteableBuffer], /) -> None: ...
    def try_get_joint(self, coordinate_system: typing.Optional[windows_perception_spatial.SpatialCoordinateSystem], joint: HandJointKind, /) -> typing.Tuple[bool, JointPose]: ...
    def try_get_joints(self, coordinate_system: typing.Optional[windows_perception_spatial.SpatialCoordinateSystem], joints: typing.Union[winrt.system.Array[HandJointKind], winrt.system.ReadableBuffer], joint_poses: typing.Union[winrt.system.Array[JointPose], winrt.system.WriteableBuffer], /) -> bool: ...

@typing.final
class HeadPose(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> HeadPose: ...
    @_property
    def forward_direction(self) -> windows_foundation_numerics.Vector3: ...
    @_property
    def position(self) -> windows_foundation_numerics.Vector3: ...
    @_property
    def up_direction(self) -> windows_foundation_numerics.Vector3: ...

