using MeterVault.Core.Domain;
namespace MeterVault.Infrastructure.Dashboard;
/// One recorded delivery into a consumable store.
public sealed record DeliveryRow(DateTimeOffset Time, double Amount, string? Unit);
/// One month of consumable draw.
public sealed record ConsumableMonth(DateOnly Period, double Consumption);
///
/// The oil / consumable panel read model (SDD ยง8.5) for one
/// meter: current tank level (physical + volume), fill vs capacity, deliveries, associated burner
/// runtime, effective L/h (fixed or empirical), forecast-to-empty, tariff cost and a monthly series.
///
public sealed record ConsumableSummary(
int MeterId,
string Name,
string Unit,
double Capacity,
double? CurrentLevel,
double? PhysicalLevel,
string? PhysicalUnit,
DateTimeOffset? LevelAsOf,
double FillFraction,
double ConsumptionInRange,
double? BurnerHours,
double? EffectiveRate,
double? FixedRate,
TankRateMode RateMode,
double? AveragePerDay,
DateOnly? ForecastEmpty,
double CostInRange,
IReadOnlyList Deliveries,
IReadOnlyList Months);