import { fetchJson } from '../../auth/api-client'; import type { HydrogenKpi, HydrogenStationTop, HydrogenRegionShare, HydrogenMonthlyPoint, HydrogenDailyRow, HydrogenCustomerRow, HydrogenStationFull, ElectricKpi, ElectricDailyRow, ElectricMonthGroup, CustomerType, DateQuickPick, } from './types'; const BASE = '/api/energy'; export interface HydrogenOverviewResponse { kpi: HydrogenKpi; top5: HydrogenStationTop[]; regions: HydrogenRegionShare[]; monthly: HydrogenMonthlyPoint[]; customers: HydrogenCustomerRow[]; stations: HydrogenStationFull[]; availableYears: number[]; year: number; } export function fetchHydrogenOverview(year?: number, force = false): Promise { const params = new URLSearchParams(); if (year) params.set('year', String(year)); if (force) params.set('force', '1'); const q = params.toString(); return fetchJson(`${BASE}/hydrogen/overview${q ? `?${q}` : ''}`); } export interface HydrogenDailyQuery { range?: DateQuickPick; startDate?: string; endDate?: string; } export function fetchHydrogenDaily(query: HydrogenDailyQuery, customer: CustomerType): Promise { const q = new URLSearchParams({ customer }); if (query.range) q.set('range', query.range); if (query.startDate) q.set('startDate', query.startDate); if (query.endDate) q.set('endDate', query.endDate); return fetchJson(`${BASE}/hydrogen/daily?${q.toString()}`); } export interface ElectricOverviewResponse { kpi: ElectricKpi; trend: ElectricDailyRow[]; } export function fetchElectricOverview(): Promise { return fetchJson(`${BASE}/electric/overview`); } export function fetchElectricMonthly(customer: CustomerType, query: HydrogenDailyQuery = { range: 'last15' }): Promise { const q = new URLSearchParams({ customer }); if (query.range) q.set('range', query.range); if (query.startDate) q.set('startDate', query.startDate); if (query.endDate) q.set('endDate', query.endDate); return fetchJson(`${BASE}/electric/monthly?${q.toString()}`); }