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

import enum
import datetime
import sys
import types
import typing

import winsdk.system
import winsdk.windows.devices.haptics
import winsdk.windows.devices.power
import winsdk.windows.foundation
import winsdk.windows.foundation.collections
import winsdk.windows.foundation.numerics
import winsdk.windows.perception
import winsdk.windows.perception.people
import winsdk.windows.perception.spatial
import winsdk.windows.storage.streams

class SpatialGestureSettings(enum.IntFlag):
    NONE = 0
    TAP = 0x1
    DOUBLE_TAP = 0x2
    HOLD = 0x4
    MANIPULATION_TRANSLATE = 0x8
    NAVIGATION_X = 0x10
    NAVIGATION_Y = 0x20
    NAVIGATION_Z = 0x40
    NAVIGATION_RAILS_X = 0x80
    NAVIGATION_RAILS_Y = 0x100
    NAVIGATION_RAILS_Z = 0x200

class SpatialInteractionPressKind(enum.IntEnum):
    NONE = 0
    SELECT = 1
    MENU = 2
    GRASP = 3
    TOUCHPAD = 4
    THUMBSTICK = 5

class SpatialInteractionSourceHandedness(enum.IntEnum):
    UNSPECIFIED = 0
    LEFT = 1
    RIGHT = 2

class SpatialInteractionSourceKind(enum.IntEnum):
    OTHER = 0
    HAND = 1
    VOICE = 2
    CONTROLLER = 3

class SpatialInteractionSourcePositionAccuracy(enum.IntEnum):
    HIGH = 0
    APPROXIMATE = 1

Self = typing.TypeVar('Self')

class SpatialGestureRecognizer(winsdk.system.Object):
    gesture_settings: SpatialGestureSettings
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialGestureRecognizer: ...
    def __new__(cls: typing.Type[SpatialGestureRecognizer], settings: SpatialGestureSettings) -> SpatialGestureRecognizer:...
    def cancel_pending_gestures(self) -> None: ...
    def capture_interaction(self, interaction: typing.Optional[SpatialInteraction], /) -> None: ...
    def try_set_gesture_settings(self, settings: SpatialGestureSettings, /) -> winsdk.system.Boolean: ...
    def add_hold_canceled(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialGestureRecognizer, SpatialHoldCanceledEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_hold_canceled(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_hold_completed(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialGestureRecognizer, SpatialHoldCompletedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_hold_completed(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_hold_started(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialGestureRecognizer, SpatialHoldStartedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_hold_started(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_manipulation_canceled(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialGestureRecognizer, SpatialManipulationCanceledEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_manipulation_canceled(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_manipulation_completed(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialGestureRecognizer, SpatialManipulationCompletedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_manipulation_completed(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_manipulation_started(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialGestureRecognizer, SpatialManipulationStartedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_manipulation_started(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_manipulation_updated(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialGestureRecognizer, SpatialManipulationUpdatedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_manipulation_updated(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_navigation_canceled(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialGestureRecognizer, SpatialNavigationCanceledEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_navigation_canceled(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_navigation_completed(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialGestureRecognizer, SpatialNavigationCompletedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_navigation_completed(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_navigation_started(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialGestureRecognizer, SpatialNavigationStartedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_navigation_started(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_navigation_updated(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialGestureRecognizer, SpatialNavigationUpdatedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_navigation_updated(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_recognition_ended(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialGestureRecognizer, SpatialRecognitionEndedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_recognition_ended(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_recognition_started(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialGestureRecognizer, SpatialRecognitionStartedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_recognition_started(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_tapped(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialGestureRecognizer, SpatialTappedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_tapped(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...

class SpatialHoldCanceledEventArgs(winsdk.system.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialHoldCanceledEventArgs: ...

class SpatialHoldCompletedEventArgs(winsdk.system.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialHoldCompletedEventArgs: ...

class SpatialHoldStartedEventArgs(winsdk.system.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialHoldStartedEventArgs: ...
    def try_get_pointer_pose(self, coordinate_system: typing.Optional[winsdk.windows.perception.spatial.SpatialCoordinateSystem], /) -> typing.Optional[SpatialPointerPose]: ...

class SpatialInteraction(winsdk.system.Object):
    source_state: typing.Optional[SpatialInteractionSourceState]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialInteraction: ...

class SpatialInteractionController(winsdk.system.Object):
    has_thumbstick: winsdk.system.Boolean
    has_touchpad: winsdk.system.Boolean
    product_id: winsdk.system.UInt16
    simple_haptics_controller: typing.Optional[winsdk.windows.devices.haptics.SimpleHapticsController]
    vendor_id: winsdk.system.UInt16
    version: winsdk.system.UInt16
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialInteractionController: ...
    def try_get_battery_report(self) -> typing.Optional[winsdk.windows.devices.power.BatteryReport]: ...
    def try_get_renderable_model_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.streams.IRandomAccessStreamWithContentType]: ...

class SpatialInteractionControllerProperties(winsdk.system.Object):
    is_thumbstick_pressed: winsdk.system.Boolean
    is_touchpad_pressed: winsdk.system.Boolean
    is_touchpad_touched: winsdk.system.Boolean
    thumbstick_x: winsdk.system.Double
    thumbstick_y: winsdk.system.Double
    touchpad_x: winsdk.system.Double
    touchpad_y: winsdk.system.Double
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialInteractionControllerProperties: ...

class SpatialInteractionDetectedEventArgs(winsdk.system.Object):
    interaction: typing.Optional[SpatialInteraction]
    interaction_source_kind: SpatialInteractionSourceKind
    interaction_source: typing.Optional[SpatialInteractionSource]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialInteractionDetectedEventArgs: ...
    def try_get_pointer_pose(self, coordinate_system: typing.Optional[winsdk.windows.perception.spatial.SpatialCoordinateSystem], /) -> typing.Optional[SpatialPointerPose]: ...

class SpatialInteractionManager(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialInteractionManager: ...
    def get_detected_sources_at_timestamp(self, time_stamp: typing.Optional[winsdk.windows.perception.PerceptionTimestamp], /) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[SpatialInteractionSourceState]]: ...
    @staticmethod
    def get_for_current_view() -> typing.Optional[SpatialInteractionManager]: ...
    @staticmethod
    def is_source_kind_supported(kind: SpatialInteractionSourceKind, /) -> winsdk.system.Boolean: ...
    def add_interaction_detected(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialInteractionManager, SpatialInteractionDetectedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_interaction_detected(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_source_detected(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialInteractionManager, SpatialInteractionSourceEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_source_detected(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_source_lost(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialInteractionManager, SpatialInteractionSourceEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_source_lost(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_source_pressed(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialInteractionManager, SpatialInteractionSourceEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_source_pressed(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_source_released(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialInteractionManager, SpatialInteractionSourceEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_source_released(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_source_updated(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialInteractionManager, SpatialInteractionSourceEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_source_updated(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...

class SpatialInteractionSource(winsdk.system.Object):
    id: winsdk.system.UInt32
    kind: SpatialInteractionSourceKind
    controller: typing.Optional[SpatialInteractionController]
    is_grasp_supported: winsdk.system.Boolean
    is_menu_supported: winsdk.system.Boolean
    is_pointing_supported: winsdk.system.Boolean
    handedness: SpatialInteractionSourceHandedness
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialInteractionSource: ...
    def try_create_hand_mesh_observer(self) -> typing.Optional[winsdk.windows.perception.people.HandMeshObserver]: ...
    def try_create_hand_mesh_observer_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.perception.people.HandMeshObserver]: ...
    def try_get_state_at_timestamp(self, timestamp: typing.Optional[winsdk.windows.perception.PerceptionTimestamp], /) -> typing.Optional[SpatialInteractionSourceState]: ...

class SpatialInteractionSourceEventArgs(winsdk.system.Object):
    state: typing.Optional[SpatialInteractionSourceState]
    press_kind: SpatialInteractionPressKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialInteractionSourceEventArgs: ...

class SpatialInteractionSourceLocation(winsdk.system.Object):
    position: typing.Optional[typing.Optional[winsdk.windows.foundation.numerics.Vector3]]
    velocity: typing.Optional[typing.Optional[winsdk.windows.foundation.numerics.Vector3]]
    orientation: typing.Optional[typing.Optional[winsdk.windows.foundation.numerics.Quaternion]]
    angular_velocity: typing.Optional[typing.Optional[winsdk.windows.foundation.numerics.Vector3]]
    position_accuracy: SpatialInteractionSourcePositionAccuracy
    source_pointer_pose: typing.Optional[SpatialPointerInteractionSourcePose]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialInteractionSourceLocation: ...

class SpatialInteractionSourceProperties(winsdk.system.Object):
    source_loss_risk: winsdk.system.Double
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialInteractionSourceProperties: ...
    def try_get_location(self, coordinate_system: typing.Optional[winsdk.windows.perception.spatial.SpatialCoordinateSystem], /) -> typing.Optional[SpatialInteractionSourceLocation]: ...
    def try_get_source_loss_mitigation_direction(self, coordinate_system: typing.Optional[winsdk.windows.perception.spatial.SpatialCoordinateSystem], /) -> typing.Optional[typing.Optional[winsdk.windows.foundation.numerics.Vector3]]: ...

class SpatialInteractionSourceState(winsdk.system.Object):
    is_pressed: winsdk.system.Boolean
    properties: typing.Optional[SpatialInteractionSourceProperties]
    source: typing.Optional[SpatialInteractionSource]
    timestamp: typing.Optional[winsdk.windows.perception.PerceptionTimestamp]
    controller_properties: typing.Optional[SpatialInteractionControllerProperties]
    is_grasped: winsdk.system.Boolean
    is_menu_pressed: winsdk.system.Boolean
    is_select_pressed: winsdk.system.Boolean
    select_pressed_value: winsdk.system.Double
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialInteractionSourceState: ...
    def try_get_hand_pose(self) -> typing.Optional[winsdk.windows.perception.people.HandPose]: ...
    def try_get_pointer_pose(self, coordinate_system: typing.Optional[winsdk.windows.perception.spatial.SpatialCoordinateSystem], /) -> typing.Optional[SpatialPointerPose]: ...

class SpatialManipulationCanceledEventArgs(winsdk.system.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialManipulationCanceledEventArgs: ...

class SpatialManipulationCompletedEventArgs(winsdk.system.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialManipulationCompletedEventArgs: ...
    def try_get_cumulative_delta(self, coordinate_system: typing.Optional[winsdk.windows.perception.spatial.SpatialCoordinateSystem], /) -> typing.Optional[SpatialManipulationDelta]: ...

class SpatialManipulationDelta(winsdk.system.Object):
    translation: winsdk.windows.foundation.numerics.Vector3
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialManipulationDelta: ...

class SpatialManipulationStartedEventArgs(winsdk.system.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialManipulationStartedEventArgs: ...
    def try_get_pointer_pose(self, coordinate_system: typing.Optional[winsdk.windows.perception.spatial.SpatialCoordinateSystem], /) -> typing.Optional[SpatialPointerPose]: ...

class SpatialManipulationUpdatedEventArgs(winsdk.system.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialManipulationUpdatedEventArgs: ...
    def try_get_cumulative_delta(self, coordinate_system: typing.Optional[winsdk.windows.perception.spatial.SpatialCoordinateSystem], /) -> typing.Optional[SpatialManipulationDelta]: ...

class SpatialNavigationCanceledEventArgs(winsdk.system.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialNavigationCanceledEventArgs: ...

class SpatialNavigationCompletedEventArgs(winsdk.system.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    normalized_offset: winsdk.windows.foundation.numerics.Vector3
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialNavigationCompletedEventArgs: ...

class SpatialNavigationStartedEventArgs(winsdk.system.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    is_navigating_x: winsdk.system.Boolean
    is_navigating_y: winsdk.system.Boolean
    is_navigating_z: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialNavigationStartedEventArgs: ...
    def try_get_pointer_pose(self, coordinate_system: typing.Optional[winsdk.windows.perception.spatial.SpatialCoordinateSystem], /) -> typing.Optional[SpatialPointerPose]: ...

class SpatialNavigationUpdatedEventArgs(winsdk.system.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    normalized_offset: winsdk.windows.foundation.numerics.Vector3
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialNavigationUpdatedEventArgs: ...

class SpatialPointerInteractionSourcePose(winsdk.system.Object):
    forward_direction: winsdk.windows.foundation.numerics.Vector3
    position: winsdk.windows.foundation.numerics.Vector3
    up_direction: winsdk.windows.foundation.numerics.Vector3
    orientation: winsdk.windows.foundation.numerics.Quaternion
    position_accuracy: SpatialInteractionSourcePositionAccuracy
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialPointerInteractionSourcePose: ...

class SpatialPointerPose(winsdk.system.Object):
    head: typing.Optional[winsdk.windows.perception.people.HeadPose]
    timestamp: typing.Optional[winsdk.windows.perception.PerceptionTimestamp]
    eyes: typing.Optional[winsdk.windows.perception.people.EyesPose]
    is_head_captured_by_system: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialPointerPose: ...
    @staticmethod
    def try_get_at_timestamp(coordinate_system: typing.Optional[winsdk.windows.perception.spatial.SpatialCoordinateSystem], timestamp: typing.Optional[winsdk.windows.perception.PerceptionTimestamp], /) -> typing.Optional[SpatialPointerPose]: ...
    def try_get_interaction_source_pose(self, source: typing.Optional[SpatialInteractionSource], /) -> typing.Optional[SpatialPointerInteractionSourcePose]: ...

class SpatialRecognitionEndedEventArgs(winsdk.system.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialRecognitionEndedEventArgs: ...

class SpatialRecognitionStartedEventArgs(winsdk.system.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialRecognitionStartedEventArgs: ...
    def is_gesture_possible(self, gesture: SpatialGestureSettings, /) -> winsdk.system.Boolean: ...
    def try_get_pointer_pose(self, coordinate_system: typing.Optional[winsdk.windows.perception.spatial.SpatialCoordinateSystem], /) -> typing.Optional[SpatialPointerPose]: ...

class SpatialTappedEventArgs(winsdk.system.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    tap_count: winsdk.system.UInt32
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialTappedEventArgs: ...
    def try_get_pointer_pose(self, coordinate_system: typing.Optional[winsdk.windows.perception.spatial.SpatialCoordinateSystem], /) -> typing.Optional[SpatialPointerPose]: ...

