# 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.foundation
import winsdk.windows.foundation.collections
import winsdk.windows.foundation.numerics
import winsdk.windows.perception
import winsdk.windows.storage.streams
import winsdk.windows.system.remotesystems

class SpatialAnchorExportPurpose(enum.IntEnum):
    RELOCALIZATION = 0
    SHARING = 1

class SpatialEntityWatcherStatus(enum.IntEnum):
    CREATED = 0
    STARTED = 1
    ENUMERATION_COMPLETED = 2
    STOPPING = 3
    STOPPED = 4
    ABORTED = 5

class SpatialLocatability(enum.IntEnum):
    UNAVAILABLE = 0
    ORIENTATION_ONLY = 1
    POSITIONAL_TRACKING_ACTIVATING = 2
    POSITIONAL_TRACKING_ACTIVE = 3
    POSITIONAL_TRACKING_INHIBITED = 4

class SpatialLookDirectionRange(enum.IntEnum):
    FORWARD_ONLY = 0
    OMNIDIRECTIONAL = 1

class SpatialMovementRange(enum.IntEnum):
    NO_MOVEMENT = 0
    BOUNDED = 1

class SpatialPerceptionAccessStatus(enum.IntEnum):
    UNSPECIFIED = 0
    ALLOWED = 1
    DENIED_BY_USER = 2
    DENIED_BY_SYSTEM = 3

Self = typing.TypeVar('Self')

class SpatialBoundingBox:
    center: winsdk.windows.foundation.numerics.Vector3
    extents: winsdk.windows.foundation.numerics.Vector3
    def __new__(cls: typing.Type[SpatialBoundingBox], center: winsdk.windows.foundation.numerics.Vector3, extents: winsdk.windows.foundation.numerics.Vector3) -> SpatialBoundingBox: ...

class SpatialBoundingFrustum:
    near: winsdk.windows.foundation.numerics.Plane
    far: winsdk.windows.foundation.numerics.Plane
    right: winsdk.windows.foundation.numerics.Plane
    left: winsdk.windows.foundation.numerics.Plane
    top: winsdk.windows.foundation.numerics.Plane
    bottom: winsdk.windows.foundation.numerics.Plane
    def __new__(cls: typing.Type[SpatialBoundingFrustum], near: winsdk.windows.foundation.numerics.Plane, far: winsdk.windows.foundation.numerics.Plane, right: winsdk.windows.foundation.numerics.Plane, left: winsdk.windows.foundation.numerics.Plane, top: winsdk.windows.foundation.numerics.Plane, bottom: winsdk.windows.foundation.numerics.Plane) -> SpatialBoundingFrustum: ...

class SpatialBoundingOrientedBox:
    center: winsdk.windows.foundation.numerics.Vector3
    extents: winsdk.windows.foundation.numerics.Vector3
    orientation: winsdk.windows.foundation.numerics.Quaternion
    def __new__(cls: typing.Type[SpatialBoundingOrientedBox], center: winsdk.windows.foundation.numerics.Vector3, extents: winsdk.windows.foundation.numerics.Vector3, orientation: winsdk.windows.foundation.numerics.Quaternion) -> SpatialBoundingOrientedBox: ...

class SpatialBoundingSphere:
    center: winsdk.windows.foundation.numerics.Vector3
    radius: winsdk.system.Single
    def __new__(cls: typing.Type[SpatialBoundingSphere], center: winsdk.windows.foundation.numerics.Vector3, radius: winsdk.system.Single) -> SpatialBoundingSphere: ...

class SpatialRay:
    origin: winsdk.windows.foundation.numerics.Vector3
    direction: winsdk.windows.foundation.numerics.Vector3
    def __new__(cls: typing.Type[SpatialRay], origin: winsdk.windows.foundation.numerics.Vector3, direction: winsdk.windows.foundation.numerics.Vector3) -> SpatialRay: ...

class SpatialAnchor(winsdk.system.Object):
    coordinate_system: typing.Optional[SpatialCoordinateSystem]
    raw_coordinate_system: typing.Optional[SpatialCoordinateSystem]
    removed_by_user: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialAnchor: ...
    @typing.overload
    @staticmethod
    def try_create_relative_to(coordinate_system: typing.Optional[SpatialCoordinateSystem], /) -> typing.Optional[SpatialAnchor]: ...
    @typing.overload
    @staticmethod
    def try_create_relative_to(coordinate_system: typing.Optional[SpatialCoordinateSystem], position: winsdk.windows.foundation.numerics.Vector3, /) -> typing.Optional[SpatialAnchor]: ...
    @typing.overload
    @staticmethod
    def try_create_relative_to(coordinate_system: typing.Optional[SpatialCoordinateSystem], position: winsdk.windows.foundation.numerics.Vector3, orientation: winsdk.windows.foundation.numerics.Quaternion, /) -> typing.Optional[SpatialAnchor]: ...
    def add_raw_coordinate_system_adjusted(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialAnchor, SpatialAnchorRawCoordinateSystemAdjustedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_raw_coordinate_system_adjusted(self, cookie: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...

class SpatialAnchorExportSufficiency(winsdk.system.Object):
    is_minimally_sufficient: winsdk.system.Boolean
    recommended_sufficiency_level: winsdk.system.Double
    sufficiency_level: winsdk.system.Double
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialAnchorExportSufficiency: ...

class SpatialAnchorExporter(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialAnchorExporter: ...
    def get_anchor_export_sufficiency_async(self, anchor: typing.Optional[SpatialAnchor], purpose: SpatialAnchorExportPurpose, /) -> winsdk.windows.foundation.IAsyncOperation[SpatialAnchorExportSufficiency]: ...
    @staticmethod
    def get_default() -> typing.Optional[SpatialAnchorExporter]: ...
    @staticmethod
    def request_access_async() -> winsdk.windows.foundation.IAsyncOperation[SpatialPerceptionAccessStatus]: ...
    def try_export_anchor_async(self, anchor: typing.Optional[SpatialAnchor], purpose: SpatialAnchorExportPurpose, stream: typing.Optional[winsdk.windows.storage.streams.IOutputStream], /) -> winsdk.windows.foundation.IAsyncOperation[winsdk.system.Boolean]: ...

class SpatialAnchorManager(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialAnchorManager: ...
    @staticmethod
    def request_store_async() -> winsdk.windows.foundation.IAsyncOperation[SpatialAnchorStore]: ...

class SpatialAnchorRawCoordinateSystemAdjustedEventArgs(winsdk.system.Object):
    old_raw_coordinate_system_to_new_raw_coordinate_system_transform: winsdk.windows.foundation.numerics.Matrix4x4
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialAnchorRawCoordinateSystemAdjustedEventArgs: ...

class SpatialAnchorStore(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialAnchorStore: ...
    def clear(self) -> None: ...
    def get_all_saved_anchors(self) -> typing.Optional[winsdk.windows.foundation.collections.IMapView[str, SpatialAnchor]]: ...
    def remove(self, id: str, /) -> None: ...
    def try_save(self, id: str, anchor: typing.Optional[SpatialAnchor], /) -> winsdk.system.Boolean: ...

class SpatialAnchorTransferManager(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialAnchorTransferManager: ...
    @staticmethod
    def request_access_async() -> winsdk.windows.foundation.IAsyncOperation[SpatialPerceptionAccessStatus]: ...
    @staticmethod
    def try_export_anchors_async(anchors: typing.Iterable[winsdk.windows.foundation.collections.IKeyValuePair[str, SpatialAnchor]], stream: typing.Optional[winsdk.windows.storage.streams.IOutputStream], /) -> winsdk.windows.foundation.IAsyncOperation[winsdk.system.Boolean]: ...
    @staticmethod
    def try_import_anchors_async(stream: typing.Optional[winsdk.windows.storage.streams.IInputStream], /) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IMapView[str, SpatialAnchor]]: ...

class SpatialBoundingVolume(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialBoundingVolume: ...
    @staticmethod
    def from_box(coordinate_system: typing.Optional[SpatialCoordinateSystem], box: SpatialBoundingBox, /) -> typing.Optional[SpatialBoundingVolume]: ...
    @staticmethod
    def from_frustum(coordinate_system: typing.Optional[SpatialCoordinateSystem], frustum: SpatialBoundingFrustum, /) -> typing.Optional[SpatialBoundingVolume]: ...
    @staticmethod
    def from_oriented_box(coordinate_system: typing.Optional[SpatialCoordinateSystem], box: SpatialBoundingOrientedBox, /) -> typing.Optional[SpatialBoundingVolume]: ...
    @staticmethod
    def from_sphere(coordinate_system: typing.Optional[SpatialCoordinateSystem], sphere: SpatialBoundingSphere, /) -> typing.Optional[SpatialBoundingVolume]: ...

class SpatialCoordinateSystem(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialCoordinateSystem: ...
    def try_get_transform_to(self, target: typing.Optional[SpatialCoordinateSystem], /) -> typing.Optional[typing.Optional[winsdk.windows.foundation.numerics.Matrix4x4]]: ...

class SpatialEntity(winsdk.system.Object):
    anchor: typing.Optional[SpatialAnchor]
    id: str
    properties: typing.Optional[winsdk.windows.foundation.collections.ValueSet]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialEntity: ...
    @typing.overload
    def __new__(cls: typing.Type[SpatialEntity], spatial_anchor: typing.Optional[SpatialAnchor]) -> SpatialEntity:...
    @typing.overload
    def __new__(cls: typing.Type[SpatialEntity], spatial_anchor: typing.Optional[SpatialAnchor], property_set: typing.Optional[winsdk.windows.foundation.collections.ValueSet]) -> SpatialEntity:...

class SpatialEntityAddedEventArgs(winsdk.system.Object):
    entity: typing.Optional[SpatialEntity]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialEntityAddedEventArgs: ...

class SpatialEntityRemovedEventArgs(winsdk.system.Object):
    entity: typing.Optional[SpatialEntity]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialEntityRemovedEventArgs: ...

class SpatialEntityStore(winsdk.system.Object):
    is_supported: typing.ClassVar[winsdk.system.Boolean]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialEntityStore: ...
    def create_entity_watcher(self) -> typing.Optional[SpatialEntityWatcher]: ...
    def remove_async(self, entity: typing.Optional[SpatialEntity], /) -> winsdk.windows.foundation.IAsyncAction: ...
    def save_async(self, entity: typing.Optional[SpatialEntity], /) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def try_get(session: typing.Optional[winsdk.windows.system.remotesystems.RemoteSystemSession], /) -> typing.Optional[SpatialEntityStore]: ...

class SpatialEntityUpdatedEventArgs(winsdk.system.Object):
    entity: typing.Optional[SpatialEntity]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialEntityUpdatedEventArgs: ...

class SpatialEntityWatcher(winsdk.system.Object):
    status: SpatialEntityWatcherStatus
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialEntityWatcher: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    def add_added(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialEntityWatcher, SpatialEntityAddedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_added(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_enumeration_completed(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialEntityWatcher, winsdk.system.Object], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_enumeration_completed(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_removed(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialEntityWatcher, SpatialEntityRemovedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_removed(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_updated(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialEntityWatcher, SpatialEntityUpdatedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_updated(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...

class SpatialLocation(winsdk.system.Object):
    absolute_angular_acceleration: winsdk.windows.foundation.numerics.Quaternion
    absolute_angular_velocity: winsdk.windows.foundation.numerics.Quaternion
    absolute_linear_acceleration: winsdk.windows.foundation.numerics.Vector3
    absolute_linear_velocity: winsdk.windows.foundation.numerics.Vector3
    orientation: winsdk.windows.foundation.numerics.Quaternion
    position: winsdk.windows.foundation.numerics.Vector3
    absolute_angular_acceleration_axis_angle: winsdk.windows.foundation.numerics.Vector3
    absolute_angular_velocity_axis_angle: winsdk.windows.foundation.numerics.Vector3
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialLocation: ...

class SpatialLocator(winsdk.system.Object):
    locatability: SpatialLocatability
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialLocator: ...
    @typing.overload
    def create_attached_frame_of_reference_at_current_heading(self) -> typing.Optional[SpatialLocatorAttachedFrameOfReference]: ...
    @typing.overload
    def create_attached_frame_of_reference_at_current_heading(self, relative_position: winsdk.windows.foundation.numerics.Vector3, /) -> typing.Optional[SpatialLocatorAttachedFrameOfReference]: ...
    @typing.overload
    def create_attached_frame_of_reference_at_current_heading(self, relative_position: winsdk.windows.foundation.numerics.Vector3, relative_orientation: winsdk.windows.foundation.numerics.Quaternion, /) -> typing.Optional[SpatialLocatorAttachedFrameOfReference]: ...
    @typing.overload
    def create_attached_frame_of_reference_at_current_heading(self, relative_position: winsdk.windows.foundation.numerics.Vector3, relative_orientation: winsdk.windows.foundation.numerics.Quaternion, relative_heading_in_radians: winsdk.system.Double, /) -> typing.Optional[SpatialLocatorAttachedFrameOfReference]: ...
    @typing.overload
    def create_stationary_frame_of_reference_at_current_location(self) -> typing.Optional[SpatialStationaryFrameOfReference]: ...
    @typing.overload
    def create_stationary_frame_of_reference_at_current_location(self, relative_position: winsdk.windows.foundation.numerics.Vector3, /) -> typing.Optional[SpatialStationaryFrameOfReference]: ...
    @typing.overload
    def create_stationary_frame_of_reference_at_current_location(self, relative_position: winsdk.windows.foundation.numerics.Vector3, relative_orientation: winsdk.windows.foundation.numerics.Quaternion, /) -> typing.Optional[SpatialStationaryFrameOfReference]: ...
    @typing.overload
    def create_stationary_frame_of_reference_at_current_location(self, relative_position: winsdk.windows.foundation.numerics.Vector3, relative_orientation: winsdk.windows.foundation.numerics.Quaternion, relative_heading_in_radians: winsdk.system.Double, /) -> typing.Optional[SpatialStationaryFrameOfReference]: ...
    @staticmethod
    def get_default() -> typing.Optional[SpatialLocator]: ...
    def try_locate_at_timestamp(self, timestamp: typing.Optional[winsdk.windows.perception.PerceptionTimestamp], coordinate_system: typing.Optional[SpatialCoordinateSystem], /) -> typing.Optional[SpatialLocation]: ...
    def add_locatability_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialLocator, winsdk.system.Object], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_locatability_changed(self, cookie: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_positional_tracking_deactivating(self, handler: winsdk.windows.foundation.TypedEventHandler[SpatialLocator, SpatialLocatorPositionalTrackingDeactivatingEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_positional_tracking_deactivating(self, cookie: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...

class SpatialLocatorAttachedFrameOfReference(winsdk.system.Object):
    relative_position: winsdk.windows.foundation.numerics.Vector3
    relative_orientation: winsdk.windows.foundation.numerics.Quaternion
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialLocatorAttachedFrameOfReference: ...
    def adjust_heading(self, heading_offset_in_radians: winsdk.system.Double, /) -> None: ...
    def get_stationary_coordinate_system_at_timestamp(self, timestamp: typing.Optional[winsdk.windows.perception.PerceptionTimestamp], /) -> typing.Optional[SpatialCoordinateSystem]: ...
    def try_get_relative_heading_at_timestamp(self, timestamp: typing.Optional[winsdk.windows.perception.PerceptionTimestamp], /) -> typing.Optional[typing.Optional[winsdk.system.Double]]: ...

class SpatialLocatorPositionalTrackingDeactivatingEventArgs(winsdk.system.Object):
    canceled: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialLocatorPositionalTrackingDeactivatingEventArgs: ...

class SpatialStageFrameOfReference(winsdk.system.Object):
    coordinate_system: typing.Optional[SpatialCoordinateSystem]
    look_direction_range: SpatialLookDirectionRange
    movement_range: SpatialMovementRange
    current: typing.ClassVar[typing.Optional[SpatialStageFrameOfReference]]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialStageFrameOfReference: ...
    def get_coordinate_system_at_current_location(self, locator: typing.Optional[SpatialLocator], /) -> typing.Optional[SpatialCoordinateSystem]: ...
    @staticmethod
    def request_new_stage_async() -> winsdk.windows.foundation.IAsyncOperation[SpatialStageFrameOfReference]: ...
    def try_get_movement_bounds(self, coordinate_system: typing.Optional[SpatialCoordinateSystem], /) -> winsdk.windows.foundation.numerics.Vector3: ...
    @staticmethod
    def add_current_changed(handler: winsdk.windows.foundation.EventHandler[winsdk.system.Object], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @staticmethod
    def remove_current_changed(cookie: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...

class SpatialStationaryFrameOfReference(winsdk.system.Object):
    coordinate_system: typing.Optional[SpatialCoordinateSystem]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> SpatialStationaryFrameOfReference: ...

