//
// 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
    {
        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace System
    {
        namespace Power
        {
            typedef enum BatteryStatus BatteryStatus;

            typedef enum EnergySaverStatus EnergySaverStatus;

            typedef enum PowerSupplyStatus PowerSupplyStatus;

            interface IBackgroundEnergyManagerStatics;

            interface IForegroundEnergyManagerStatics;

            interface IPowerManagerStatics;

            runtimeclass BackgroundEnergyManager;

            runtimeclass ForegroundEnergyManager;

            runtimeclass PowerManager;
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace System
    {
        namespace Power
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BatteryStatus
            {
                NotPresent  = 0,
                Discharging = 1,
                Idle        = 2,
                Charging    = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum EnergySaverStatus
            {
                Disabled = 0,
                Off      = 1,
                On       = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PowerSupplyStatus
            {
                NotPresent = 0,
                Inadequate = 1,
                Adequate   = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.System.Power.BackgroundEnergyManager)]
            [uuid(B3161D95-1180-4376-96E1-4095568147CE)]
            interface IBackgroundEnergyManagerStatics : IInspectable
            {
                [deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [propget] HRESULT LowUsageLevel([out] [retval] UINT32* value);
                [deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [propget] HRESULT NearMaxAcceptableUsageLevel([out] [retval] UINT32* value);
                [deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [propget] HRESULT MaxAcceptableUsageLevel([out] [retval] UINT32* value);
                [deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [propget] HRESULT ExcessiveUsageLevel([out] [retval] UINT32* value);
                [deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [propget] HRESULT NearTerminationUsageLevel([out] [retval] UINT32* value);
                [deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [propget] HRESULT TerminationUsageLevel([out] [retval] UINT32* value);
                [deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [propget] HRESULT RecentEnergyUsage([out] [retval] UINT32* value);
                [deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [propget] HRESULT RecentEnergyUsageLevel([out] [retval] UINT32* value);
                [deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [eventadd] HRESULT RecentEnergyUsageIncreased([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [eventremove] HRESULT RecentEnergyUsageIncreased([in] EventRegistrationToken token);
                [deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [eventadd] HRESULT RecentEnergyUsageReturnedToLow([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [eventremove] HRESULT RecentEnergyUsageReturnedToLow([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.System.Power.ForegroundEnergyManager)]
            [uuid(9FF86872-E677-4814-9A20-5337CA732B98)]
            interface IForegroundEnergyManagerStatics : IInspectable
            {
                [deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [propget] HRESULT LowUsageLevel([out] [retval] UINT32* value);
                [deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [propget] HRESULT NearMaxAcceptableUsageLevel([out] [retval] UINT32* value);
                [deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [propget] HRESULT MaxAcceptableUsageLevel([out] [retval] UINT32* value);
                [deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [propget] HRESULT ExcessiveUsageLevel([out] [retval] UINT32* value);
                [deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [propget] HRESULT RecentEnergyUsage([out] [retval] UINT32* value);
                [deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [propget] HRESULT RecentEnergyUsageLevel([out] [retval] UINT32* value);
                [deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [eventadd] HRESULT RecentEnergyUsageIncreased([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [eventremove] HRESULT RecentEnergyUsageIncreased([in] EventRegistrationToken token);
                [deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [eventadd] HRESULT RecentEnergyUsageReturnedToLow([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)] [eventremove] HRESULT RecentEnergyUsageReturnedToLow([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.System.Power.PowerManager)]
            [uuid(1394825D-62CE-4364-98D5-AA28C7FBD15B)]
            interface IPowerManagerStatics : IInspectable
            {
                [propget] HRESULT EnergySaverStatus([out] [retval] Windows.System.Power.EnergySaverStatus* value);
                [eventadd] HRESULT EnergySaverStatusChanged([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT EnergySaverStatusChanged([in] EventRegistrationToken token);
                [propget] HRESULT BatteryStatus([out] [retval] Windows.System.Power.BatteryStatus* value);
                [eventadd] HRESULT BatteryStatusChanged([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT BatteryStatusChanged([in] EventRegistrationToken token);
                [propget] HRESULT PowerSupplyStatus([out] [retval] Windows.System.Power.PowerSupplyStatus* value);
                [eventadd] HRESULT PowerSupplyStatusChanged([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PowerSupplyStatusChanged([in] EventRegistrationToken token);
                [propget] HRESULT RemainingChargePercent([out] [retval] INT32* value);
                [eventadd] HRESULT RemainingChargePercentChanged([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT RemainingChargePercentChanged([in] EventRegistrationToken token);
                [propget] HRESULT RemainingDischargeTime([out] [retval] Windows.Foundation.TimeSpan* value);
                [eventadd] HRESULT RemainingDischargeTimeChanged([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT RemainingDischargeTimeChanged([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)]
            [marshaling_behavior(agile)]
            [static(Windows.System.Power.IBackgroundEnergyManagerStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            runtimeclass BackgroundEnergyManager
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 6.0)]
            [marshaling_behavior(agile)]
            [static(Windows.System.Power.IForegroundEnergyManagerStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            runtimeclass ForegroundEnergyManager
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.System.Power.IPowerManagerStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass PowerManager
            {
            }
        }
    }
}
