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

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace UI
    {
        typedef struct Color Color;
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Lights
        {
            interface ILamp;

            interface ILampAvailabilityChangedEventArgs;

            interface ILampStatics;

            runtimeclass Lamp;

            runtimeclass LampAvailabilityChangedEventArgs;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace Lights
        {
            declare
            {
                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Lights.Lamp*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Lights.Lamp*, Windows.Devices.Lights.LampAvailabilityChangedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Lights
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Lights.Lamp)]
            [uuid(047D5B9A-EA45-4B2B-B1A2-14DFF00BDE7B)]
            interface ILamp : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT DeviceId([out] [retval] HSTRING* value);
                [propget] HRESULT IsEnabled([out] [retval] boolean* value);
                [propput] HRESULT IsEnabled([in] boolean value);
                [propget] HRESULT BrightnessLevel([out] [retval] FLOAT* value);
                [propput] HRESULT BrightnessLevel([in] FLOAT value);
                [propget] HRESULT IsColorSettable([out] [retval] boolean* value);
                [propget] HRESULT Color([out] [retval] Windows.UI.Color* value);
                [propput] HRESULT Color([in] Windows.UI.Color value);
                [eventadd] HRESULT AvailabilityChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Lights.Lamp*, Windows.Devices.Lights.LampAvailabilityChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT AvailabilityChanged([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Lights.LampAvailabilityChangedEventArgs)]
            [uuid(4F6E3DED-07A2-499D-9260-67E304532BA4)]
            interface ILampAvailabilityChangedEventArgs : IInspectable
            {
                [propget] HRESULT IsAvailable([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Lights.Lamp)]
            [uuid(A822416C-8885-401E-B821-8E8B38A8E8EC)]
            interface ILampStatics : IInspectable
            {
                HRESULT GetDeviceSelector([out] [retval] HSTRING* value);
                HRESULT FromIdAsync([in] HSTRING deviceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Lights.Lamp*>** operation);
                HRESULT GetDefaultAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Lights.Lamp*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Lights.ILampStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass Lamp
            {
                [default] interface Windows.Devices.Lights.ILamp;
                interface Windows.Foundation.IClosable;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass LampAvailabilityChangedEventArgs
            {
                [default] interface Windows.Devices.Lights.ILampAvailabilityChangedEventArgs;
            }
        }
    }
}
