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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Foundation.Numerics.idl";
import "Windows.Perception.Spatial.idl";

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

            typedef struct Quaternion Quaternion;

            typedef struct Vector3 Vector3;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Perception
    {
        namespace Spatial
        {
            runtimeclass SpatialCoordinateSystem;

            runtimeclass SpatialLocator;
        }
    }
}
namespace Windows
{
    namespace Perception
    {
        namespace Spatial
        {
            namespace Preview
            {
                interface ISpatialGraphInteropFrameOfReferencePreview;

                interface ISpatialGraphInteropPreviewStatics;

                interface ISpatialGraphInteropPreviewStatics2;

                runtimeclass SpatialGraphInteropFrameOfReferencePreview;

                runtimeclass SpatialGraphInteropPreview;
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace Perception
    {
        namespace Spatial
        {
            namespace Preview
            {
                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.Perception.Spatial.Preview.SpatialGraphInteropFrameOfReferencePreview)]
                [uuid(A8271B23-735F-5729-A98E-E64ED189ABC5)]
                interface ISpatialGraphInteropFrameOfReferencePreview : IInspectable
                {
                    [propget] HRESULT CoordinateSystem([out] [retval] Windows.Perception.Spatial.SpatialCoordinateSystem** value);
                    [propget] HRESULT NodeId([out] [retval] GUID* value);
                    [propget] HRESULT CoordinateSystemToNodeTransform([out] [retval] Windows.Foundation.Numerics.Matrix4x4* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Perception.Spatial.Preview.SpatialGraphInteropPreview)]
                [uuid(C042644C-20D8-4ED0-AEF7-6805B8E53F55)]
                interface ISpatialGraphInteropPreviewStatics : IInspectable
                {
                    [overload("CreateCoordinateSystemForNode")] HRESULT CreateCoordinateSystemForNode([in] GUID nodeId, [out] [retval] Windows.Perception.Spatial.SpatialCoordinateSystem** result);
                    [overload("CreateCoordinateSystemForNode")] HRESULT CreateCoordinateSystemForNodeWithPosition([in] GUID nodeId, [in] Windows.Foundation.Numerics.Vector3 relativePosition, [out] [retval] Windows.Perception.Spatial.SpatialCoordinateSystem** result);
                    [overload("CreateCoordinateSystemForNode")] HRESULT CreateCoordinateSystemForNodeWithPositionAndOrientation([in] GUID nodeId, [in] Windows.Foundation.Numerics.Vector3 relativePosition, [in] Windows.Foundation.Numerics.Quaternion relativeOrientation, [out] [retval] Windows.Perception.Spatial.SpatialCoordinateSystem** result);
                    HRESULT CreateLocatorForNode([in] GUID nodeId, [out] [retval] Windows.Perception.Spatial.SpatialLocator** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.Perception.Spatial.Preview.SpatialGraphInteropPreview)]
                [uuid(2490B15F-6CBD-4B1E-B765-31E462A32DF2)]
                interface ISpatialGraphInteropPreviewStatics2 : IInspectable
                {
                    [overload("TryCreateFrameOfReference")] HRESULT TryCreateFrameOfReference([in] Windows.Perception.Spatial.SpatialCoordinateSystem* coordinateSystem, [out] [retval] Windows.Perception.Spatial.Preview.SpatialGraphInteropFrameOfReferencePreview** result);
                    [overload("TryCreateFrameOfReference")] HRESULT TryCreateFrameOfReferenceWithPosition([in] Windows.Perception.Spatial.SpatialCoordinateSystem* coordinateSystem, [in] Windows.Foundation.Numerics.Vector3 relativePosition, [out] [retval] Windows.Perception.Spatial.Preview.SpatialGraphInteropFrameOfReferencePreview** result);
                    [overload("TryCreateFrameOfReference")] HRESULT TryCreateFrameOfReferenceWithPositionAndOrientation([in] Windows.Perception.Spatial.SpatialCoordinateSystem* coordinateSystem, [in] Windows.Foundation.Numerics.Vector3 relativePosition, [in] Windows.Foundation.Numerics.Quaternion relativeOrientation, [out] [retval] Windows.Perception.Spatial.Preview.SpatialGraphInteropFrameOfReferencePreview** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                runtimeclass SpatialGraphInteropFrameOfReferencePreview
                {
                    [default] interface Windows.Perception.Spatial.Preview.ISpatialGraphInteropFrameOfReferencePreview;
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Perception.Spatial.Preview.ISpatialGraphInteropPreviewStatics, Windows.Foundation.UniversalApiContract, 7.0)]
                [static(Windows.Perception.Spatial.Preview.ISpatialGraphInteropPreviewStatics2, Windows.Foundation.UniversalApiContract, 8.0)]
                [threading(both)]
                runtimeclass SpatialGraphInteropPreview
                {
                }
            }
        }
    }
}
