// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
// Source: Battery Status API (https://w3c.github.io/battery/)

partial interface Navigator {
  Promise<BatteryManager> getBattery();
};

[Exposed=Window]
interface BatteryManager : EventTarget {
    readonly        attribute boolean charging;
    readonly        attribute unrestricted double chargingTime;
    readonly        attribute unrestricted double dischargingTime;
    readonly        attribute double level;
                    attribute EventHandler onchargingchange;
                    attribute EventHandler onchargingtimechange;
                    attribute EventHandler ondischargingtimechange;
                    attribute EventHandler onlevelchange;
};
