//
// 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";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;
    }
}
namespace Windows
{
    namespace System
    {
        namespace Power
        {
            namespace Thermal
            {
                apicontract PowerThermalApiContract;

                typedef enum PowerThermalBackEndStatus PowerThermalBackEndStatus;

                typedef struct PowerThermalChannelData PowerThermalChannelData;

                typedef struct PowerThermalChannelId PowerThermalChannelId;

                interface IPowerThermalChannelConfiguration;

                interface IPowerThermalChannelDataConsumer;

                interface IPowerThermalChannelDataConsumerFactory;

                interface IPowerThermalChannelDataProducer;

                interface IPowerThermalChannelDataProducerFactory;

                interface IPowerThermalChannelDataReceivedEventArgs;

                interface IPowerThermalChannelDiagnostics;

                interface IPowerThermalChannelDiagnosticsStatics;

                interface IPowerThermalChannelFinderStatics;

                runtimeclass PowerThermalChannelConfiguration;

                runtimeclass PowerThermalChannelDataConsumer;

                runtimeclass PowerThermalChannelDataProducer;

                runtimeclass PowerThermalChannelDataReceivedEventArgs;

                runtimeclass PowerThermalChannelDiagnostics;

                runtimeclass PowerThermalChannelFinder;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace System
    {
        namespace Power
        {
            namespace Thermal
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<Windows.System.Power.Thermal.PowerThermalChannelId, Windows.System.Power.Thermal.PowerThermalChannelConfiguration*>*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<Windows.System.Power.Thermal.PowerThermalChannelId, Windows.System.Power.Thermal.PowerThermalChannelConfiguration*>*>;

                    interface Windows.Foundation.Collections.IKeyValuePair<Windows.System.Power.Thermal.PowerThermalChannelId, Windows.System.Power.Thermal.PowerThermalChannelConfiguration*>;

                    interface Windows.Foundation.Collections.IMapView<Windows.System.Power.Thermal.PowerThermalChannelId, Windows.System.Power.Thermal.PowerThermalChannelConfiguration*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.System.Power.Thermal.PowerThermalChannelDataConsumer*, IInspectable*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.System.Power.Thermal.PowerThermalChannelDataConsumer*, Windows.System.Power.Thermal.PowerThermalChannelDataReceivedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.System.Power.Thermal.PowerThermalChannelDataProducer*, IInspectable*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace System
    {
        namespace Power
        {
            namespace Thermal
            {
                [contractversion(1.0)]
                apicontract PowerThermalApiContract
                {
                }

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                enum PowerThermalBackEndStatus
                {
                    Stopped = 0,
                    Started = 1
                };

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                struct PowerThermalChannelId
                {
                    GUID InterfaceType;
                    UINT16 InstanceId;
                };

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                struct PowerThermalChannelData
                {
                    Windows.System.Power.Thermal.PowerThermalChannelId Id;
                    INT32 Value;
                };


                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [exclusiveto(Windows.System.Power.Thermal.PowerThermalChannelConfiguration)]
                [uuid(AD8383FA-172D-5D82-B29D-81D93710FB45)]
                interface IPowerThermalChannelConfiguration : IInspectable
                {
                    [propget] HRESULT Id([out] [retval] Windows.System.Power.Thermal.PowerThermalChannelId* value);
                    [propget] HRESULT ConfigurationString([out] [retval] HSTRING* value);
                    HRESULT GetConfigurationNumericParameters([out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] INT32** result);
                }

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [exclusiveto(Windows.System.Power.Thermal.PowerThermalChannelDataConsumer)]
                [uuid(47CCA211-7348-5026-898C-B1873123760D)]
                interface IPowerThermalChannelDataConsumer : IInspectable
                {
                    HRESULT GetChannelIds([out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] Windows.System.Power.Thermal.PowerThermalChannelId** result);
                    HRESULT GetChannelConfigurations([out] [retval] Windows.Foundation.Collections.IMapView<Windows.System.Power.Thermal.PowerThermalChannelId, Windows.System.Power.Thermal.PowerThermalChannelConfiguration*>** result);
                    HRESULT Start();
                    HRESULT Stop();
                    [eventadd] HRESULT ChannelDataReceived([in] Windows.Foundation.TypedEventHandler<Windows.System.Power.Thermal.PowerThermalChannelDataConsumer*, Windows.System.Power.Thermal.PowerThermalChannelDataReceivedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT ChannelDataReceived([in] EventRegistrationToken token);
                    [propget] HRESULT BackEndStatus([out] [retval] Windows.System.Power.Thermal.PowerThermalBackEndStatus* value);
                    [eventadd] HRESULT BackEndStatusChanged([in] Windows.Foundation.TypedEventHandler<Windows.System.Power.Thermal.PowerThermalChannelDataConsumer*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT BackEndStatusChanged([in] EventRegistrationToken token);
                }

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [exclusiveto(Windows.System.Power.Thermal.PowerThermalChannelDataConsumer)]
                [uuid(B42D9AB1-32F0-54BB-899A-9AE0529DA381)]
                interface IPowerThermalChannelDataConsumerFactory : IInspectable
                {
                    HRESULT CreateInstance([in] UINT32 __channelIdsSize, [in] [size_is(__channelIdsSize)] Windows.System.Power.Thermal.PowerThermalChannelId* channelIds, [out] [retval] Windows.System.Power.Thermal.PowerThermalChannelDataConsumer** value);
                }

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [exclusiveto(Windows.System.Power.Thermal.PowerThermalChannelDataProducer)]
                [uuid(A935F244-1A7D-55D5-9C69-8ADC1CD1D993)]
                interface IPowerThermalChannelDataProducer : IInspectable
                {
                    HRESULT GetChannelIds([out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] Windows.System.Power.Thermal.PowerThermalChannelId** result);
                    HRESULT GetChannelConfigurations([out] [retval] Windows.Foundation.Collections.IMapView<Windows.System.Power.Thermal.PowerThermalChannelId, Windows.System.Power.Thermal.PowerThermalChannelConfiguration*>** result);
                    HRESULT DisableChannel([in] Windows.System.Power.Thermal.PowerThermalChannelId channelId);
                    HRESULT Start();
                    HRESULT Stop();
                    HRESULT PublishInputChannelData([in] UINT32 __dataSize, [in] [size_is(__dataSize)] Windows.System.Power.Thermal.PowerThermalChannelData* data);
                    [propget] HRESULT BackEndStatus([out] [retval] Windows.System.Power.Thermal.PowerThermalBackEndStatus* value);
                    [eventadd] HRESULT BackEndStatusChanged([in] Windows.Foundation.TypedEventHandler<Windows.System.Power.Thermal.PowerThermalChannelDataProducer*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT BackEndStatusChanged([in] EventRegistrationToken token);
                }

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [exclusiveto(Windows.System.Power.Thermal.PowerThermalChannelDataProducer)]
                [uuid(D2D380CD-E09D-5472-AD62-70061E630067)]
                interface IPowerThermalChannelDataProducerFactory : IInspectable
                {
                    HRESULT CreateInstance([in] UINT32 __channelIdsSize, [in] [size_is(__channelIdsSize)] Windows.System.Power.Thermal.PowerThermalChannelId* channelIds, [out] [retval] Windows.System.Power.Thermal.PowerThermalChannelDataProducer** value);
                }

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [exclusiveto(Windows.System.Power.Thermal.PowerThermalChannelDataReceivedEventArgs)]
                [uuid(D6B643E0-6AB6-5683-A8FC-5ED65EE20DC5)]
                interface IPowerThermalChannelDataReceivedEventArgs : IInspectable
                {
                    HRESULT GetData([out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] Windows.System.Power.Thermal.PowerThermalChannelData** result);
                }

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [exclusiveto(Windows.System.Power.Thermal.PowerThermalChannelDiagnostics)]
                [uuid(628FD5C4-49B7-508F-AD9F-2309B1168AAD)]
                interface IPowerThermalChannelDiagnostics : IInspectable
                {
                }

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [exclusiveto(Windows.System.Power.Thermal.PowerThermalChannelDiagnostics)]
                [uuid(A86EC393-B684-5633-A6CA-DFA1C7EECF87)]
                interface IPowerThermalChannelDiagnosticsStatics : IInspectable
                {
                    [propget] HRESULT Current([out] [retval] Windows.System.Power.Thermal.PowerThermalChannelDiagnostics** value);
                    HRESULT GetDataForChannels([in] UINT32 __channelIdsSize, [in] [size_is(__channelIdsSize)] Windows.System.Power.Thermal.PowerThermalChannelId* channelIds, [out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] Windows.System.Power.Thermal.PowerThermalChannelData** result);
                }

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [exclusiveto(Windows.System.Power.Thermal.PowerThermalChannelFinder)]
                [uuid(DF8D288B-F056-55CE-B370-F3E1C4E32063)]
                interface IPowerThermalChannelFinderStatics : IInspectable
                {
                    HRESULT FindChannels([in] GUID channelInterfaceType, [out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] Windows.System.Power.Thermal.PowerThermalChannelId** result);
                }

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass PowerThermalChannelConfiguration
                {
                    [default] interface Windows.System.Power.Thermal.IPowerThermalChannelConfiguration;
                }

                [activatable(Windows.System.Power.Thermal.IPowerThermalChannelDataConsumerFactory, Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass PowerThermalChannelDataConsumer
                {
                    [default] interface Windows.System.Power.Thermal.IPowerThermalChannelDataConsumer;
                    interface Windows.Foundation.IClosable;
                }

                [activatable(Windows.System.Power.Thermal.IPowerThermalChannelDataProducerFactory, Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass PowerThermalChannelDataProducer
                {
                    [default] interface Windows.System.Power.Thermal.IPowerThermalChannelDataProducer;
                    interface Windows.Foundation.IClosable;
                }

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass PowerThermalChannelDataReceivedEventArgs
                {
                    [default] interface Windows.System.Power.Thermal.IPowerThermalChannelDataReceivedEventArgs;
                }

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.System.Power.Thermal.IPowerThermalChannelDiagnosticsStatics, Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [threading(both)]
                runtimeclass PowerThermalChannelDiagnostics
                {
                    [default] interface Windows.System.Power.Thermal.IPowerThermalChannelDiagnostics;
                }

                [contract(Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.System.Power.Thermal.IPowerThermalChannelFinderStatics, Windows.System.Power.Thermal.PowerThermalApiContract, 1.0)]
                [threading(both)]
                runtimeclass PowerThermalChannelFinder
                {
                }
            }
        }
    }
}
