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

import enum
import datetime
import sys
import types
import typing

import winsdk._winrt as _winrt
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(_winrt.Object):
    gesture_settings: SpatialGestureSettings
    @staticmethod
    def _from(obj: _winrt.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) -> _winrt.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(_winrt.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: _winrt.Object) -> SpatialHoldCanceledEventArgs: ...

class SpatialHoldCompletedEventArgs(_winrt.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: _winrt.Object) -> SpatialHoldCompletedEventArgs: ...

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

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

class SpatialInteractionController(_winrt.Object):
    has_thumbstick: _winrt.Boolean
    has_touchpad: _winrt.Boolean
    product_id: _winrt.UInt16
    simple_haptics_controller: typing.Optional[winsdk.windows.devices.haptics.SimpleHapticsController]
    vendor_id: _winrt.UInt16
    version: _winrt.UInt16
    @staticmethod
    def _from(obj: _winrt.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(_winrt.Object):
    is_thumbstick_pressed: _winrt.Boolean
    is_touchpad_pressed: _winrt.Boolean
    is_touchpad_touched: _winrt.Boolean
    thumbstick_x: _winrt.Double
    thumbstick_y: _winrt.Double
    touchpad_x: _winrt.Double
    touchpad_y: _winrt.Double
    @staticmethod
    def _from(obj: _winrt.Object) -> SpatialInteractionControllerProperties: ...

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

class SpatialInteractionManager(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.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) -> _winrt.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(_winrt.Object):
    id: _winrt.UInt32
    kind: SpatialInteractionSourceKind
    controller: typing.Optional[SpatialInteractionController]
    is_grasp_supported: _winrt.Boolean
    is_menu_supported: _winrt.Boolean
    is_pointing_supported: _winrt.Boolean
    handedness: SpatialInteractionSourceHandedness
    @staticmethod
    def _from(obj: _winrt.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(_winrt.Object):
    state: typing.Optional[SpatialInteractionSourceState]
    press_kind: SpatialInteractionPressKind
    @staticmethod
    def _from(obj: _winrt.Object) -> SpatialInteractionSourceEventArgs: ...

class SpatialInteractionSourceLocation(_winrt.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: _winrt.Object) -> SpatialInteractionSourceLocation: ...

class SpatialInteractionSourceProperties(_winrt.Object):
    source_loss_risk: _winrt.Double
    @staticmethod
    def _from(obj: _winrt.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(_winrt.Object):
    is_pressed: _winrt.Boolean
    properties: typing.Optional[SpatialInteractionSourceProperties]
    source: typing.Optional[SpatialInteractionSource]
    timestamp: typing.Optional[winsdk.windows.perception.PerceptionTimestamp]
    controller_properties: typing.Optional[SpatialInteractionControllerProperties]
    is_grasped: _winrt.Boolean
    is_menu_pressed: _winrt.Boolean
    is_select_pressed: _winrt.Boolean
    select_pressed_value: _winrt.Double
    @staticmethod
    def _from(obj: _winrt.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(_winrt.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: _winrt.Object) -> SpatialManipulationCanceledEventArgs: ...

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

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

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

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

class SpatialNavigationCanceledEventArgs(_winrt.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: _winrt.Object) -> SpatialNavigationCanceledEventArgs: ...

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

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

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

class SpatialPointerInteractionSourcePose(_winrt.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: _winrt.Object) -> SpatialPointerInteractionSourcePose: ...

class SpatialPointerPose(_winrt.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: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.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(_winrt.Object):
    interaction_source_kind: SpatialInteractionSourceKind
    @staticmethod
    def _from(obj: _winrt.Object) -> SpatialRecognitionEndedEventArgs: ...

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

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

