//
// 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.Devices.HumanInterfaceDevice.idl";

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace HumanInterfaceDevice
        {
            runtimeclass HidBooleanControlDescription;

            runtimeclass HidInputReport;

            runtimeclass HidNumericControlDescription;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct Point Point;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Input
        {
            namespace Preview
            {
                typedef enum GazeDeviceConfigurationStatePreview GazeDeviceConfigurationStatePreview;

                interface IGazeDevicePreview;

                interface IGazeDeviceWatcherAddedPreviewEventArgs;

                interface IGazeDeviceWatcherPreview;

                interface IGazeDeviceWatcherRemovedPreviewEventArgs;

                interface IGazeDeviceWatcherUpdatedPreviewEventArgs;

                interface IGazeEnteredPreviewEventArgs;

                interface IGazeExitedPreviewEventArgs;

                interface IGazeInputSourcePreview;

                interface IGazeInputSourcePreviewStatics;

                interface IGazeMovedPreviewEventArgs;

                interface IGazePointPreview;

                runtimeclass GazeDevicePreview;

                runtimeclass GazeDeviceWatcherAddedPreviewEventArgs;

                runtimeclass GazeDeviceWatcherPreview;

                runtimeclass GazeDeviceWatcherRemovedPreviewEventArgs;

                runtimeclass GazeDeviceWatcherUpdatedPreviewEventArgs;

                runtimeclass GazeEnteredPreviewEventArgs;

                runtimeclass GazeExitedPreviewEventArgs;

                runtimeclass GazeInputSourcePreview;

                runtimeclass GazeMovedPreviewEventArgs;

                runtimeclass GazePointPreview;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace Input
        {
            namespace Preview
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Devices.Input.Preview.GazePointPreview*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Devices.Input.Preview.GazePointPreview*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Input.Preview.GazePointPreview*>;

                    interface Windows.Foundation.Collections.IVector<Windows.Devices.Input.Preview.GazePointPreview*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.Preview.GazeDeviceWatcherPreview*, IInspectable*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.Preview.GazeDeviceWatcherPreview*, Windows.Devices.Input.Preview.GazeDeviceWatcherAddedPreviewEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.Preview.GazeDeviceWatcherPreview*, Windows.Devices.Input.Preview.GazeDeviceWatcherRemovedPreviewEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.Preview.GazeDeviceWatcherPreview*, Windows.Devices.Input.Preview.GazeDeviceWatcherUpdatedPreviewEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.Preview.GazeInputSourcePreview*, Windows.Devices.Input.Preview.GazeEnteredPreviewEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.Preview.GazeInputSourcePreview*, Windows.Devices.Input.Preview.GazeExitedPreviewEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.Preview.GazeInputSourcePreview*, Windows.Devices.Input.Preview.GazeMovedPreviewEventArgs*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Input
        {
            namespace Preview
            {
                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                enum GazeDeviceConfigurationStatePreview
                {
                    Unknown               = 0,
                    Ready                 = 1,
                    Configuring           = 2,
                    ScreenSetupNeeded     = 3,
                    UserCalibrationNeeded = 4
                };

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Devices.Input.Preview.GazeDevicePreview)]
                [uuid(E79E7EE9-B389-11E7-B201-C8D3FFB75721)]
                interface IGazeDevicePreview : IInspectable
                {
                    [propget] HRESULT Id([out] [retval] UINT32* value);
                    [propget] HRESULT CanTrackEyes([out] [retval] boolean* value);
                    [propget] HRESULT CanTrackHead([out] [retval] boolean* value);
                    [propget] HRESULT ConfigurationState([out] [retval] Windows.Devices.Input.Preview.GazeDeviceConfigurationStatePreview* value);
                    HRESULT RequestCalibrationAsync([out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                    HRESULT GetNumericControlDescriptions([in] UINT16 usagePage, [in] UINT16 usageId, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.HumanInterfaceDevice.HidNumericControlDescription*>** result);
                    HRESULT GetBooleanControlDescriptions([in] UINT16 usagePage, [in] UINT16 usageId, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.HumanInterfaceDevice.HidBooleanControlDescription*>** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Devices.Input.Preview.GazeDeviceWatcherAddedPreviewEventArgs)]
                [uuid(E79E7EED-B389-11E7-B201-C8D3FFB75721)]
                interface IGazeDeviceWatcherAddedPreviewEventArgs : IInspectable
                {
                    [propget] HRESULT Device([out] [retval] Windows.Devices.Input.Preview.GazeDevicePreview** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Devices.Input.Preview.GazeDeviceWatcherPreview)]
                [uuid(E79E7EE7-B389-11E7-B201-C8D3FFB75721)]
                interface IGazeDeviceWatcherPreview : IInspectable
                {
                    [eventadd] HRESULT Added([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.Preview.GazeDeviceWatcherPreview*, Windows.Devices.Input.Preview.GazeDeviceWatcherAddedPreviewEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT Added([in] EventRegistrationToken token);
                    [eventadd] HRESULT Removed([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.Preview.GazeDeviceWatcherPreview*, Windows.Devices.Input.Preview.GazeDeviceWatcherRemovedPreviewEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT Removed([in] EventRegistrationToken token);
                    [eventadd] HRESULT Updated([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.Preview.GazeDeviceWatcherPreview*, Windows.Devices.Input.Preview.GazeDeviceWatcherUpdatedPreviewEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT Updated([in] EventRegistrationToken token);
                    [eventadd] HRESULT EnumerationCompleted([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.Preview.GazeDeviceWatcherPreview*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT EnumerationCompleted([in] EventRegistrationToken token);
                    HRESULT Start();
                    HRESULT Stop();
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Devices.Input.Preview.GazeDeviceWatcherRemovedPreviewEventArgs)]
                [uuid(F2631F08-0E3F-431F-A606-50B35AF94A1C)]
                interface IGazeDeviceWatcherRemovedPreviewEventArgs : IInspectable
                {
                    [propget] HRESULT Device([out] [retval] Windows.Devices.Input.Preview.GazeDevicePreview** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Devices.Input.Preview.GazeDeviceWatcherUpdatedPreviewEventArgs)]
                [uuid(7FE830EF-7F08-4737-88E1-4A83AE4E4885)]
                interface IGazeDeviceWatcherUpdatedPreviewEventArgs : IInspectable
                {
                    [propget] HRESULT Device([out] [retval] Windows.Devices.Input.Preview.GazeDevicePreview** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Devices.Input.Preview.GazeEnteredPreviewEventArgs)]
                [uuid(2567BF43-1225-489F-9DD1-DAA7C50FBF4B)]
                interface IGazeEnteredPreviewEventArgs : IInspectable
                {
                    [propget] HRESULT Handled([out] [retval] boolean* value);
                    [propput] HRESULT Handled([in] boolean value);
                    [propget] HRESULT CurrentPoint([out] [retval] Windows.Devices.Input.Preview.GazePointPreview** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Devices.Input.Preview.GazeExitedPreviewEventArgs)]
                [uuid(5D0AF07E-7D83-40EF-9F0A-FBC1BBDCC5AC)]
                interface IGazeExitedPreviewEventArgs : IInspectable
                {
                    [propget] HRESULT Handled([out] [retval] boolean* value);
                    [propput] HRESULT Handled([in] boolean value);
                    [propget] HRESULT CurrentPoint([out] [retval] Windows.Devices.Input.Preview.GazePointPreview** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Devices.Input.Preview.GazeInputSourcePreview)]
                [uuid(E79E7EE8-B389-11E7-B201-C8D3FFB75721)]
                interface IGazeInputSourcePreview : IInspectable
                {
                    [eventadd] HRESULT GazeMoved([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.Preview.GazeInputSourcePreview*, Windows.Devices.Input.Preview.GazeMovedPreviewEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT GazeMoved([in] EventRegistrationToken token);
                    [eventadd] HRESULT GazeEntered([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.Preview.GazeInputSourcePreview*, Windows.Devices.Input.Preview.GazeEnteredPreviewEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT GazeEntered([in] EventRegistrationToken token);
                    [eventadd] HRESULT GazeExited([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.Preview.GazeInputSourcePreview*, Windows.Devices.Input.Preview.GazeExitedPreviewEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT GazeExited([in] EventRegistrationToken token);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Devices.Input.Preview.GazeInputSourcePreview)]
                [uuid(E79E7EE6-B389-11E7-B201-C8D3FFB75721)]
                interface IGazeInputSourcePreviewStatics : IInspectable
                {
                    HRESULT GetForCurrentView([out] [retval] Windows.Devices.Input.Preview.GazeInputSourcePreview** result);
                    HRESULT CreateWatcher([out] [retval] Windows.Devices.Input.Preview.GazeDeviceWatcherPreview** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Devices.Input.Preview.GazeMovedPreviewEventArgs)]
                [uuid(E79E7EEB-B389-11E7-B201-C8D3FFB75721)]
                interface IGazeMovedPreviewEventArgs : IInspectable
                {
                    [propget] HRESULT Handled([out] [retval] boolean* value);
                    [propput] HRESULT Handled([in] boolean value);
                    [propget] HRESULT CurrentPoint([out] [retval] Windows.Devices.Input.Preview.GazePointPreview** value);
                    HRESULT GetIntermediatePoints([out] [retval] Windows.Foundation.Collections.IVector<Windows.Devices.Input.Preview.GazePointPreview*>** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Devices.Input.Preview.GazePointPreview)]
                [uuid(E79E7EEA-B389-11E7-B201-C8D3FFB75721)]
                interface IGazePointPreview : IInspectable
                {
                    [propget] HRESULT SourceDevice([out] [retval] Windows.Devices.Input.Preview.GazeDevicePreview** value);
                    [propget] HRESULT EyeGazePosition([out] [retval] Windows.Foundation.IReference<Windows.Foundation.Point>** value);
                    [propget] HRESULT HeadGazePosition([out] [retval] Windows.Foundation.IReference<Windows.Foundation.Point>** value);
                    [propget] HRESULT Timestamp([out] [retval] UINT64* value);
                    [propget] HRESULT HidInputReport([out] [retval] Windows.Devices.HumanInterfaceDevice.HidInputReport** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                runtimeclass GazeDevicePreview
                {
                    [default] interface Windows.Devices.Input.Preview.IGazeDevicePreview;
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                runtimeclass GazeDeviceWatcherAddedPreviewEventArgs
                {
                    [default] interface Windows.Devices.Input.Preview.IGazeDeviceWatcherAddedPreviewEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                runtimeclass GazeDeviceWatcherPreview
                {
                    [default] interface Windows.Devices.Input.Preview.IGazeDeviceWatcherPreview;
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                runtimeclass GazeDeviceWatcherRemovedPreviewEventArgs
                {
                    [default] interface Windows.Devices.Input.Preview.IGazeDeviceWatcherRemovedPreviewEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                runtimeclass GazeDeviceWatcherUpdatedPreviewEventArgs
                {
                    [default] interface Windows.Devices.Input.Preview.IGazeDeviceWatcherUpdatedPreviewEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                runtimeclass GazeEnteredPreviewEventArgs
                {
                    [default] interface Windows.Devices.Input.Preview.IGazeEnteredPreviewEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                runtimeclass GazeExitedPreviewEventArgs
                {
                    [default] interface Windows.Devices.Input.Preview.IGazeExitedPreviewEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Devices.Input.Preview.IGazeInputSourcePreviewStatics, Windows.Foundation.UniversalApiContract, 6.0)]
                [threading(both)]
                runtimeclass GazeInputSourcePreview
                {
                    [default] interface Windows.Devices.Input.Preview.IGazeInputSourcePreview;
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                runtimeclass GazeMovedPreviewEventArgs
                {
                    [default] interface Windows.Devices.Input.Preview.IGazeMovedPreviewEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                runtimeclass GazePointPreview
                {
                    [default] interface Windows.Devices.Input.Preview.IGazePointPreview;
                }
            }
        }
    }
}
