//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0015
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Foundation.Numerics.idl";
import "Windows.Perception.idl";
import "Windows.Storage.Streams.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Efoundation2Enumerics_h__)")
cpp_quote("#include <Windows.Foundation.Numerics.h>")
cpp_quote("#endif // !defined(__windows2Efoundation2Enumerics_h__)")
cpp_quote("#if !defined(__windows2Eperception_h__)")
cpp_quote("#include <Windows.Perception.h>")
cpp_quote("#endif // !defined(__windows2Eperception_h__)")
cpp_quote("#if !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#include <Windows.Storage.Streams.h>")
cpp_quote("#endif // !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        namespace Numerics
        {
            typedef struct Matrix4x4 Matrix4x4;

            typedef struct Plane Plane;

            typedef struct Quaternion Quaternion;

            typedef struct Vector3 Vector3;
        }
    }
}
namespace Windows
{
    namespace Perception
    {
        runtimeclass PerceptionTimestamp;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IInputStream;

            interface IOutputStream;
        }
    }
}
namespace Windows
{
    namespace Perception
    {
        namespace Spatial
        {
            typedef enum SpatialLocatability SpatialLocatability;

            typedef enum SpatialPerceptionAccessStatus SpatialPerceptionAccessStatus;

            typedef struct SpatialBoundingBox SpatialBoundingBox;

            typedef struct SpatialBoundingFrustum SpatialBoundingFrustum;

            typedef struct SpatialBoundingOrientedBox SpatialBoundingOrientedBox;

            typedef struct SpatialBoundingSphere SpatialBoundingSphere;

            interface ISpatialAnchor;

            interface ISpatialAnchor2;

            interface ISpatialAnchorManagerStatics;

            interface ISpatialAnchorRawCoordinateSystemAdjustedEventArgs;

            interface ISpatialAnchorStatics;

            interface ISpatialAnchorStore;

            interface ISpatialAnchorTransferManagerStatics;

            interface ISpatialBoundingVolume;

            interface ISpatialBoundingVolumeStatics;

            interface ISpatialCoordinateSystem;

            interface ISpatialLocation;

            interface ISpatialLocator;

            interface ISpatialLocatorAttachedFrameOfReference;

            interface ISpatialLocatorPositionalTrackingDeactivatingEventArgs;

            interface ISpatialLocatorStatics;

            interface ISpatialStationaryFrameOfReference;

            runtimeclass SpatialAnchor;

            runtimeclass SpatialAnchorManager;

            runtimeclass SpatialAnchorRawCoordinateSystemAdjustedEventArgs;

            runtimeclass SpatialAnchorStore;

            runtimeclass SpatialAnchorTransferManager;

            runtimeclass SpatialBoundingVolume;

            runtimeclass SpatialCoordinateSystem;

            runtimeclass SpatialLocation;

            runtimeclass SpatialLocator;

            runtimeclass SpatialLocatorAttachedFrameOfReference;

            runtimeclass SpatialLocatorPositionalTrackingDeactivatingEventArgs;

            runtimeclass SpatialStationaryFrameOfReference;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Perception
    {
        namespace Spatial
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Perception.Spatial.SpatialAnchor*>*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Perception.Spatial.SpatialBoundingVolume*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Perception.Spatial.SpatialAnchor*>*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Perception.Spatial.SpatialBoundingVolume*>;

                interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Perception.Spatial.SpatialAnchor*>;

                interface Windows.Foundation.Collections.IMapView<HSTRING, Windows.Perception.Spatial.SpatialAnchor*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IMapView<HSTRING, Windows.Perception.Spatial.SpatialAnchor*>*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Perception.Spatial.SpatialAnchorStore*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Perception.Spatial.SpatialPerceptionAccessStatus>;

                interface Windows.Foundation.IReference<Windows.Perception.Spatial.SpatialBoundingFrustum>;

                interface Windows.Foundation.IReference<Windows.Perception.Spatial.SpatialBoundingOrientedBox>;

                interface Windows.Foundation.TypedEventHandler<Windows.Perception.Spatial.SpatialAnchor*, Windows.Perception.Spatial.SpatialAnchorRawCoordinateSystemAdjustedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Perception.Spatial.SpatialLocator*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Perception.Spatial.SpatialLocator*, Windows.Perception.Spatial.SpatialLocatorPositionalTrackingDeactivatingEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Perception
    {
        namespace Spatial
        {
            [version(0x0A000001)]
            enum SpatialLocatability
            {
                Unavailable                  = 0,
                OrientationOnly              = 1,
                PositionalTrackingActivating = 2,
                PositionalTrackingActive     = 3,
                PositionalTrackingInhibited  = 4
            };

            [version(0x0A000001)]
            enum SpatialPerceptionAccessStatus
            {
                Unspecified    = 0,
                Allowed        = 1,
                DeniedByUser   = 2,
                DeniedBySystem = 3
            };

            [version(0x0A000001)]
            struct SpatialBoundingBox
            {
                Windows.Foundation.Numerics.Vector3 Center;
                Windows.Foundation.Numerics.Vector3 Extents;
            };

            [version(0x0A000001)]
            struct SpatialBoundingFrustum
            {
                Windows.Foundation.Numerics.Plane Near;
                Windows.Foundation.Numerics.Plane Far;
                Windows.Foundation.Numerics.Plane Right;
                Windows.Foundation.Numerics.Plane Left;
                Windows.Foundation.Numerics.Plane Top;
                Windows.Foundation.Numerics.Plane Bottom;
            };

            [version(0x0A000001)]
            struct SpatialBoundingOrientedBox
            {
                Windows.Foundation.Numerics.Vector3 Center;
                Windows.Foundation.Numerics.Vector3 Extents;
                Windows.Foundation.Numerics.Quaternion Orientation;
            };

            [version(0x0A000001)]
            struct SpatialBoundingSphere
            {
                Windows.Foundation.Numerics.Vector3 Center;
                FLOAT Radius;
            };

            [exclusiveto(Windows.Perception.Spatial.SpatialAnchor)]
            [uuid(0529E5CE-1D34-3702-BCEC-EABFF578A869)]
            [version(0x0A000001)]
            interface ISpatialAnchor : IInspectable
            {
                [propget] HRESULT CoordinateSystem([out] [retval] Windows.Perception.Spatial.SpatialCoordinateSystem** value);
                [propget] HRESULT RawCoordinateSystem([out] [retval] Windows.Perception.Spatial.SpatialCoordinateSystem** value);
                [eventadd] HRESULT RawCoordinateSystemAdjusted([in] Windows.Foundation.TypedEventHandler<Windows.Perception.Spatial.SpatialAnchor*, Windows.Perception.Spatial.SpatialAnchorRawCoordinateSystemAdjustedEventArgs*>* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT RawCoordinateSystemAdjusted([in] EventRegistrationToken cookie);
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialAnchor)]
            [uuid(ED17C908-A695-4CF6-92FD-97263BA71047)]
            [version(0x0A000002)]
            interface ISpatialAnchor2 : IInspectable
            {
                [propget] HRESULT RemovedByUser([out] [retval] boolean* value);
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialAnchorManager)]
            [uuid(88E30EAB-F3B7-420B-B086-8A80C07D910D)]
            [version(0x0A000001)]
            interface ISpatialAnchorManagerStatics : IInspectable
            {
                HRESULT RequestStoreAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Perception.Spatial.SpatialAnchorStore*>** value);
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialAnchorRawCoordinateSystemAdjustedEventArgs)]
            [uuid(A1E81EB8-56C7-3117-A2E4-81E0FCF28E00)]
            [version(0x0A000001)]
            interface ISpatialAnchorRawCoordinateSystemAdjustedEventArgs : IInspectable
            {
                [propget] HRESULT OldRawCoordinateSystemToNewRawCoordinateSystemTransform([out] [retval] Windows.Foundation.Numerics.Matrix4x4* value);
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialAnchor)]
            [uuid(A9928642-0174-311C-AE79-0E5107669F16)]
            [version(0x0A000001)]
            interface ISpatialAnchorStatics : IInspectable
            {
                [overload("TryCreateRelativeTo")] HRESULT TryCreateRelativeTo([in] Windows.Perception.Spatial.SpatialCoordinateSystem* coordinateSystem, [out] [retval] Windows.Perception.Spatial.SpatialAnchor** value);
                [overload("TryCreateRelativeTo")] HRESULT TryCreateWithPositionRelativeTo([in] Windows.Perception.Spatial.SpatialCoordinateSystem* coordinateSystem, [in] Windows.Foundation.Numerics.Vector3 position, [out] [retval] Windows.Perception.Spatial.SpatialAnchor** value);
                [overload("TryCreateRelativeTo")] HRESULT TryCreateWithPositionAndOrientationRelativeTo([in] Windows.Perception.Spatial.SpatialCoordinateSystem* coordinateSystem, [in] Windows.Foundation.Numerics.Vector3 position, [in] Windows.Foundation.Numerics.Quaternion orientation, [out] [retval] Windows.Perception.Spatial.SpatialAnchor** value);
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialAnchorStore)]
            [uuid(B0BC3636-486A-3CB0-9E6F-1245165C4DB6)]
            [version(0x0A000001)]
            interface ISpatialAnchorStore : IInspectable
            {
                HRESULT GetAllSavedAnchors([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, Windows.Perception.Spatial.SpatialAnchor*>** value);
                HRESULT TrySave([in] HSTRING id, [in] Windows.Perception.Spatial.SpatialAnchor* anchor, [out] [retval] boolean* succeeded);
                HRESULT Remove([in] HSTRING id);
                HRESULT Clear();
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialAnchorTransferManager)]
            [uuid(03BBF9B9-12D8-4BCE-8835-C5DF3AC0ADAB)]
            [version(0x0A000001)]
            interface ISpatialAnchorTransferManagerStatics : IInspectable
            {
                HRESULT TryImportAnchorsAsync([in] Windows.Storage.Streams.IInputStream* stream, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IMapView<HSTRING, Windows.Perception.Spatial.SpatialAnchor*>*>** operation);
                HRESULT TryExportAnchorsAsync([in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Perception.Spatial.SpatialAnchor*>*>* anchors, [in] Windows.Storage.Streams.IOutputStream* stream, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT RequestAccessAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Perception.Spatial.SpatialPerceptionAccessStatus>** result);
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialBoundingVolume)]
            [uuid(FB2065DA-68C3-33DF-B7AF-4C787207999C)]
            [version(0x0A000001)]
            interface ISpatialBoundingVolume : IInspectable
            {
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialBoundingVolume)]
            [uuid(05889117-B3E1-36D8-B017-566181A5B196)]
            [version(0x0A000001)]
            interface ISpatialBoundingVolumeStatics : IInspectable
            {
                HRESULT FromBox([in] Windows.Perception.Spatial.SpatialCoordinateSystem* coordinateSystem, [in] Windows.Perception.Spatial.SpatialBoundingBox box, [out] [retval] Windows.Perception.Spatial.SpatialBoundingVolume** value);
                HRESULT FromOrientedBox([in] Windows.Perception.Spatial.SpatialCoordinateSystem* coordinateSystem, [in] Windows.Perception.Spatial.SpatialBoundingOrientedBox box, [out] [retval] Windows.Perception.Spatial.SpatialBoundingVolume** value);
                HRESULT FromSphere([in] Windows.Perception.Spatial.SpatialCoordinateSystem* coordinateSystem, [in] Windows.Perception.Spatial.SpatialBoundingSphere sphere, [out] [retval] Windows.Perception.Spatial.SpatialBoundingVolume** value);
                HRESULT FromFrustum([in] Windows.Perception.Spatial.SpatialCoordinateSystem* coordinateSystem, [in] Windows.Perception.Spatial.SpatialBoundingFrustum frustum, [out] [retval] Windows.Perception.Spatial.SpatialBoundingVolume** value);
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialCoordinateSystem)]
            [uuid(69EBCA4B-60A3-3586-A653-59A7BD676D07)]
            [version(0x0A000001)]
            interface ISpatialCoordinateSystem : IInspectable
            {
                HRESULT TryGetTransformTo([in] Windows.Perception.Spatial.SpatialCoordinateSystem* target, [out] [retval] Windows.Foundation.IReference<Windows.Foundation.Numerics.Matrix4x4>** value);
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialLocation)]
            [uuid(1D81D29D-24A1-37D5-8FA1-39B4F9AD67E2)]
            [version(0x0A000001)]
            interface ISpatialLocation : IInspectable
            {
                [propget] HRESULT Position([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                [propget] HRESULT Orientation([out] [retval] Windows.Foundation.Numerics.Quaternion* value);
                [propget] HRESULT AbsoluteLinearVelocity([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                [propget] HRESULT AbsoluteLinearAcceleration([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                [propget] HRESULT AbsoluteAngularVelocity([out] [retval] Windows.Foundation.Numerics.Quaternion* value);
                [propget] HRESULT AbsoluteAngularAcceleration([out] [retval] Windows.Foundation.Numerics.Quaternion* value);
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialLocator)]
            [uuid(F6478925-9E0C-3BB6-997E-B64ECCA24CF4)]
            [version(0x0A000001)]
            interface ISpatialLocator : IInspectable
            {
                [propget] HRESULT Locatability([out] [retval] Windows.Perception.Spatial.SpatialLocatability* value);
                [eventadd] HRESULT LocatabilityChanged([in] Windows.Foundation.TypedEventHandler<Windows.Perception.Spatial.SpatialLocator*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT LocatabilityChanged([in] EventRegistrationToken cookie);
                [eventadd] HRESULT PositionalTrackingDeactivating([in] Windows.Foundation.TypedEventHandler<Windows.Perception.Spatial.SpatialLocator*, Windows.Perception.Spatial.SpatialLocatorPositionalTrackingDeactivatingEventArgs*>* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT PositionalTrackingDeactivating([in] EventRegistrationToken cookie);
                HRESULT TryLocateAtTimestamp([in] Windows.Perception.PerceptionTimestamp* timestamp, [in] Windows.Perception.Spatial.SpatialCoordinateSystem* coordinateSystem, [out] [retval] Windows.Perception.Spatial.SpatialLocation** value);
                [overload("CreateAttachedFrameOfReferenceAtCurrentHeading")] HRESULT CreateAttachedFrameOfReferenceAtCurrentHeading([out] [retval] Windows.Perception.Spatial.SpatialLocatorAttachedFrameOfReference** value);
                [overload("CreateAttachedFrameOfReferenceAtCurrentHeading")] HRESULT CreateAttachedFrameOfReferenceAtCurrentHeadingWithPosition([in] Windows.Foundation.Numerics.Vector3 relativePosition, [out] [retval] Windows.Perception.Spatial.SpatialLocatorAttachedFrameOfReference** value);
                [overload("CreateAttachedFrameOfReferenceAtCurrentHeading")] HRESULT CreateAttachedFrameOfReferenceAtCurrentHeadingWithPositionAndOrientation([in] Windows.Foundation.Numerics.Vector3 relativePosition, [in] Windows.Foundation.Numerics.Quaternion relativeOrientation, [out] [retval] Windows.Perception.Spatial.SpatialLocatorAttachedFrameOfReference** value);
                [overload("CreateAttachedFrameOfReferenceAtCurrentHeading")] HRESULT CreateAttachedFrameOfReferenceAtCurrentHeadingWithPositionAndOrientationAndRelativeHeading([in] Windows.Foundation.Numerics.Vector3 relativePosition, [in] Windows.Foundation.Numerics.Quaternion relativeOrientation, [in] DOUBLE relativeHeadingInRadians, [out] [retval] Windows.Perception.Spatial.SpatialLocatorAttachedFrameOfReference** value);
                [overload("CreateStationaryFrameOfReferenceAtCurrentLocation")] HRESULT CreateStationaryFrameOfReferenceAtCurrentLocation([out] [retval] Windows.Perception.Spatial.SpatialStationaryFrameOfReference** value);
                [overload("CreateStationaryFrameOfReferenceAtCurrentLocation")] HRESULT CreateStationaryFrameOfReferenceAtCurrentLocationWithPosition([in] Windows.Foundation.Numerics.Vector3 relativePosition, [out] [retval] Windows.Perception.Spatial.SpatialStationaryFrameOfReference** value);
                [overload("CreateStationaryFrameOfReferenceAtCurrentLocation")] HRESULT CreateStationaryFrameOfReferenceAtCurrentLocationWithPositionAndOrientation([in] Windows.Foundation.Numerics.Vector3 relativePosition, [in] Windows.Foundation.Numerics.Quaternion relativeOrientation, [out] [retval] Windows.Perception.Spatial.SpatialStationaryFrameOfReference** value);
                [overload("CreateStationaryFrameOfReferenceAtCurrentLocation")] HRESULT CreateStationaryFrameOfReferenceAtCurrentLocationWithPositionAndOrientationAndRelativeHeading([in] Windows.Foundation.Numerics.Vector3 relativePosition, [in] Windows.Foundation.Numerics.Quaternion relativeOrientation, [in] DOUBLE relativeHeadingInRadians, [out] [retval] Windows.Perception.Spatial.SpatialStationaryFrameOfReference** value);
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialLocatorAttachedFrameOfReference)]
            [uuid(E1774EF6-1F4F-499C-9625-EF5E6ED7A048)]
            [version(0x0A000001)]
            interface ISpatialLocatorAttachedFrameOfReference : IInspectable
            {
                [propget] HRESULT RelativePosition([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                [propput] HRESULT RelativePosition([in] Windows.Foundation.Numerics.Vector3 value);
                [propget] HRESULT RelativeOrientation([out] [retval] Windows.Foundation.Numerics.Quaternion* value);
                [propput] HRESULT RelativeOrientation([in] Windows.Foundation.Numerics.Quaternion value);
                HRESULT AdjustHeading([in] DOUBLE headingOffsetInRadians);
                HRESULT GetStationaryCoordinateSystemAtTimestamp([in] Windows.Perception.PerceptionTimestamp* timestamp, [out] [retval] Windows.Perception.Spatial.SpatialCoordinateSystem** value);
                HRESULT TryGetRelativeHeadingAtTimestamp([in] Windows.Perception.PerceptionTimestamp* timestamp, [out] [retval] Windows.Foundation.IReference<DOUBLE>** value);
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialLocatorPositionalTrackingDeactivatingEventArgs)]
            [uuid(B8A84063-E3F4-368B-9061-9EA9D1D6CC16)]
            [version(0x0A000001)]
            interface ISpatialLocatorPositionalTrackingDeactivatingEventArgs : IInspectable
            {
                [propget] HRESULT Canceled([out] [retval] boolean* value);
                [propput] HRESULT Canceled([in] boolean value);
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialLocator)]
            [uuid(B76E3340-A7C2-361B-BB82-56E93B89B1BB)]
            [version(0x0A000001)]
            interface ISpatialLocatorStatics : IInspectable
            {
                HRESULT GetDefault([out] [retval] Windows.Perception.Spatial.SpatialLocator** value);
            }

            [exclusiveto(Windows.Perception.Spatial.SpatialStationaryFrameOfReference)]
            [uuid(09DBCCB9-BCF8-3E7F-BE7E-7EDCCBB178A8)]
            [version(0x0A000001)]
            interface ISpatialStationaryFrameOfReference : IInspectable
            {
                [propget] HRESULT CoordinateSystem([out] [retval] Windows.Perception.Spatial.SpatialCoordinateSystem** value);
            }

            [marshaling_behavior(agile)]
            [static(Windows.Perception.Spatial.ISpatialAnchorStatics, 0x0A000001)]
            [threading(both)]
            [version(0x0A000001)]
            runtimeclass SpatialAnchor
            {
                [default] interface Windows.Perception.Spatial.ISpatialAnchor;
                [version(0x0A000002)] interface Windows.Perception.Spatial.ISpatialAnchor2;
            }

            [marshaling_behavior(agile)]
            [static(Windows.Perception.Spatial.ISpatialAnchorManagerStatics, 0x0A000001)]
            [threading(both)]
            [version(0x0A000001)]
            runtimeclass SpatialAnchorManager
            {
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000001)]
            runtimeclass SpatialAnchorRawCoordinateSystemAdjustedEventArgs
            {
                [default] interface Windows.Perception.Spatial.ISpatialAnchorRawCoordinateSystemAdjustedEventArgs;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000001)]
            runtimeclass SpatialAnchorStore
            {
                [default] interface Windows.Perception.Spatial.ISpatialAnchorStore;
            }

            [marshaling_behavior(agile)]
            [static(Windows.Perception.Spatial.ISpatialAnchorTransferManagerStatics, 0x0A000001)]
            [threading(both)]
            [version(0x0A000001)]
            runtimeclass SpatialAnchorTransferManager
            {
            }

            [marshaling_behavior(agile)]
            [static(Windows.Perception.Spatial.ISpatialBoundingVolumeStatics, 0x0A000001)]
            [threading(both)]
            [version(0x0A000001)]
            runtimeclass SpatialBoundingVolume
            {
                [default] interface Windows.Perception.Spatial.ISpatialBoundingVolume;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000001)]
            runtimeclass SpatialCoordinateSystem
            {
                [default] interface Windows.Perception.Spatial.ISpatialCoordinateSystem;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000001)]
            runtimeclass SpatialLocation
            {
                [default] interface Windows.Perception.Spatial.ISpatialLocation;
            }

            [marshaling_behavior(agile)]
            [static(Windows.Perception.Spatial.ISpatialLocatorStatics, 0x0A000001)]
            [threading(both)]
            [version(0x0A000001)]
            runtimeclass SpatialLocator
            {
                [default] interface Windows.Perception.Spatial.ISpatialLocator;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000001)]
            runtimeclass SpatialLocatorAttachedFrameOfReference
            {
                [default] interface Windows.Perception.Spatial.ISpatialLocatorAttachedFrameOfReference;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000001)]
            runtimeclass SpatialLocatorPositionalTrackingDeactivatingEventArgs
            {
                [default] interface Windows.Perception.Spatial.ISpatialLocatorPositionalTrackingDeactivatingEventArgs;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000001)]
            runtimeclass SpatialStationaryFrameOfReference
            {
                [default] interface Windows.Perception.Spatial.ISpatialStationaryFrameOfReference;
            }
        }
    }
}
