#ifndef CHROME_BROWSER_METRICS_POWER_POWER_METRICS_H_
#define CHROME_BROWSER_METRICS_POWER_POWER_METRICS_H_
#include <optional>
#include <vector>
#include "base/power_monitor/battery_level_provider.h"
#include "base/time/time.h"
#include "build/build_config.h"
#include "chrome/browser/metrics/power/process_monitor.h"
void ReportAggregatedProcessMetricsHistograms(
const ProcessMonitor::Metrics& aggregated_process_metrics,
const std::vector<const char*>& suffixes);
enum class BatteryDischargeMode { … };
struct BatteryDischarge { … };
int64_t CalculateDischargeRateMilliwatts(
const base::BatteryLevelProvider::BatteryState& previous_battery_state,
const base::BatteryLevelProvider::BatteryState& new_battery_state,
base::TimeDelta interval_duration);
int64_t CalculateDischargeRateRelative(
const base::BatteryLevelProvider::BatteryState& previous_battery_state,
const base::BatteryLevelProvider::BatteryState& new_battery_state,
base::TimeDelta interval_duration);
BatteryDischarge GetBatteryDischargeDuringInterval(
const std::optional<base::BatteryLevelProvider::BatteryState>&
previous_battery_state,
const std::optional<base::BatteryLevelProvider::BatteryState>&
new_battery_state,
base::TimeDelta interval_duration);
void ReportBatteryHistograms(base::TimeDelta interval_duration,
BatteryDischarge battery_discharge,
bool is_initial_interval,
const std::vector<const char*>& scenario_suffixes);
#if BUILDFLAG(IS_WIN)
void ReportBatteryHistogramsTenMinutesInterval(
base::TimeDelta interval_duration,
BatteryDischarge battery_discharge);
#endif
#endif