# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.3.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
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.system.power as windows_system_power

Self = typing.TypeVar('Self')

@typing.final
class Battery_Static(type):
    def from_id_async(cls, device_id: str, /) -> windows_foundation.IAsyncOperation[Battery]: ...
    def get_device_selector(cls) -> str: ...
    @_property
    def aggregate_battery(cls) -> typing.Optional[Battery]: ...

@typing.final
class Battery(winrt.system.Object, metaclass=Battery_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> Battery: ...
    def get_report(self) -> typing.Optional[BatteryReport]: ...
    def add_report_updated(self, handler: windows_foundation.TypedEventHandler[Battery, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_report_updated(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def device_id(self) -> str: ...

@typing.final
class BatteryReport(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> BatteryReport: ...
    @_property
    def charge_rate_in_milliwatts(self) -> typing.Optional[typing.Optional[winrt.system.Int32]]: ...
    @_property
    def design_capacity_in_milliwatt_hours(self) -> typing.Optional[typing.Optional[winrt.system.Int32]]: ...
    @_property
    def full_charge_capacity_in_milliwatt_hours(self) -> typing.Optional[typing.Optional[winrt.system.Int32]]: ...
    @_property
    def remaining_capacity_in_milliwatt_hours(self) -> typing.Optional[typing.Optional[winrt.system.Int32]]: ...
    @_property
    def status(self) -> windows_system_power.BatteryStatus: ...

@typing.final
class PowerGridData(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PowerGridData: ...
    @_property
    def is_low_user_experience_impact(self) -> bool: ...
    @_property
    def severity(self) -> winrt.system.Double: ...

@typing.final
class PowerGridForecast_Static(type):
    def get_forecast(cls) -> typing.Optional[PowerGridForecast]: ...
    def add_forecast_updated(cls, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_forecast_updated(cls, token: windows_foundation.EventRegistrationToken, /) -> None: ...

@typing.final
class PowerGridForecast(winrt.system.Object, metaclass=PowerGridForecast_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PowerGridForecast: ...
    @_property
    def block_duration(self) -> datetime.timedelta: ...
    @_property
    def forecast(self) -> typing.Optional[windows_foundation_collections.IVectorView[PowerGridData]]: ...
    @_property
    def start_time(self) -> datetime.datetime: ...

