# WARNING: Please don't edit this file. It was generated by Python/WinRT v3.0.0

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property

import winrt._winrt
import winrt.system
import winrt.windows.foundation as windows_foundation

from winrt.windows.system.power import BatteryStatus, EnergySaverStatus, PowerSupplyStatus

Self = typing.TypeVar('Self')

@typing.final
class BackgroundEnergyManager_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.EventRegistrationToken Windows.System.Power.BackgroundEnergyManager::add_RecentEnergyUsageIncreased(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.")
    def add_recent_energy_usage_increased(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.Power.BackgroundEnergyManager::remove_RecentEnergyUsageIncreased(Windows.Foundation.EventRegistrationToken)
    # @deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.")
    def remove_recent_energy_usage_increased(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.Power.BackgroundEnergyManager::add_RecentEnergyUsageReturnedToLow(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.")
    def add_recent_energy_usage_returned_to_low(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.Power.BackgroundEnergyManager::remove_RecentEnergyUsageReturnedToLow(Windows.Foundation.EventRegistrationToken)
    # @deprecated("Background Energy Manager has been deprecated. For more info, see MSDN.")
    def remove_recent_energy_usage_returned_to_low(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.UInt32 Windows.System.Power.BackgroundEnergyManager::get_ExcessiveUsageLevel()
    @_property
    def excessive_usage_level(cls) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.System.Power.BackgroundEnergyManager::get_LowUsageLevel()
    @_property
    def low_usage_level(cls) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.System.Power.BackgroundEnergyManager::get_MaxAcceptableUsageLevel()
    @_property
    def max_acceptable_usage_level(cls) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.System.Power.BackgroundEnergyManager::get_NearMaxAcceptableUsageLevel()
    @_property
    def near_max_acceptable_usage_level(cls) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.System.Power.BackgroundEnergyManager::get_NearTerminationUsageLevel()
    @_property
    def near_termination_usage_level(cls) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.System.Power.BackgroundEnergyManager::get_RecentEnergyUsage()
    @_property
    def recent_energy_usage(cls) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.System.Power.BackgroundEnergyManager::get_RecentEnergyUsageLevel()
    @_property
    def recent_energy_usage_level(cls) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.System.Power.BackgroundEnergyManager::get_TerminationUsageLevel()
    @_property
    def termination_usage_level(cls) -> winrt.system.UInt32: ...

@typing.final
class BackgroundEnergyManager(winrt.system.Object, metaclass=BackgroundEnergyManager_Static):
    pass

@typing.final
class ForegroundEnergyManager_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.EventRegistrationToken Windows.System.Power.ForegroundEnergyManager::add_RecentEnergyUsageIncreased(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.")
    def add_recent_energy_usage_increased(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.Power.ForegroundEnergyManager::remove_RecentEnergyUsageIncreased(Windows.Foundation.EventRegistrationToken)
    # @deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.")
    def remove_recent_energy_usage_increased(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.Power.ForegroundEnergyManager::add_RecentEnergyUsageReturnedToLow(Windows.Foundation.EventHandler`1<System.Object>)
    # @deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.")
    def add_recent_energy_usage_returned_to_low(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.Power.ForegroundEnergyManager::remove_RecentEnergyUsageReturnedToLow(Windows.Foundation.EventRegistrationToken)
    # @deprecated("Foreground Energy Manager has been deprecated. For more info, see MSDN.")
    def remove_recent_energy_usage_returned_to_low(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.UInt32 Windows.System.Power.ForegroundEnergyManager::get_ExcessiveUsageLevel()
    @_property
    def excessive_usage_level(cls) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.System.Power.ForegroundEnergyManager::get_LowUsageLevel()
    @_property
    def low_usage_level(cls) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.System.Power.ForegroundEnergyManager::get_MaxAcceptableUsageLevel()
    @_property
    def max_acceptable_usage_level(cls) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.System.Power.ForegroundEnergyManager::get_NearMaxAcceptableUsageLevel()
    @_property
    def near_max_acceptable_usage_level(cls) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.System.Power.ForegroundEnergyManager::get_RecentEnergyUsage()
    @_property
    def recent_energy_usage(cls) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.System.Power.ForegroundEnergyManager::get_RecentEnergyUsageLevel()
    @_property
    def recent_energy_usage_level(cls) -> winrt.system.UInt32: ...

@typing.final
class ForegroundEnergyManager(winrt.system.Object, metaclass=ForegroundEnergyManager_Static):
    pass

@typing.final
class PowerManager_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.EventRegistrationToken Windows.System.Power.PowerManager::add_BatteryStatusChanged(Windows.Foundation.EventHandler`1<System.Object>)
    def add_battery_status_changed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.Power.PowerManager::remove_BatteryStatusChanged(Windows.Foundation.EventRegistrationToken)
    def remove_battery_status_changed(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.Power.PowerManager::add_EnergySaverStatusChanged(Windows.Foundation.EventHandler`1<System.Object>)
    def add_energy_saver_status_changed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.Power.PowerManager::remove_EnergySaverStatusChanged(Windows.Foundation.EventRegistrationToken)
    def remove_energy_saver_status_changed(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.Power.PowerManager::add_PowerSupplyStatusChanged(Windows.Foundation.EventHandler`1<System.Object>)
    def add_power_supply_status_changed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.Power.PowerManager::remove_PowerSupplyStatusChanged(Windows.Foundation.EventRegistrationToken)
    def remove_power_supply_status_changed(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.Power.PowerManager::add_RemainingChargePercentChanged(Windows.Foundation.EventHandler`1<System.Object>)
    def add_remaining_charge_percent_changed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.Power.PowerManager::remove_RemainingChargePercentChanged(Windows.Foundation.EventRegistrationToken)
    def remove_remaining_charge_percent_changed(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.Power.PowerManager::add_RemainingDischargeTimeChanged(Windows.Foundation.EventHandler`1<System.Object>)
    def add_remaining_discharge_time_changed(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.Power.PowerManager::remove_RemainingDischargeTimeChanged(Windows.Foundation.EventRegistrationToken)
    def remove_remaining_discharge_time_changed(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.System.Power.BatteryStatus Windows.System.Power.PowerManager::get_BatteryStatus()
    @_property
    def battery_status(cls) -> BatteryStatus: ...
    # Windows.System.Power.EnergySaverStatus Windows.System.Power.PowerManager::get_EnergySaverStatus()
    @_property
    def energy_saver_status(cls) -> EnergySaverStatus: ...
    # Windows.System.Power.PowerSupplyStatus Windows.System.Power.PowerManager::get_PowerSupplyStatus()
    @_property
    def power_supply_status(cls) -> PowerSupplyStatus: ...
    # System.Int32 Windows.System.Power.PowerManager::get_RemainingChargePercent()
    @_property
    def remaining_charge_percent(cls) -> winrt.system.Int32: ...
    # Windows.Foundation.TimeSpan Windows.System.Power.PowerManager::get_RemainingDischargeTime()
    @_property
    def remaining_discharge_time(cls) -> datetime.timedelta: ...

@typing.final
class PowerManager(winrt.system.Object, metaclass=PowerManager_Static):
    pass

