import type { EvalSuite, RunRecord, TaskFrequencies, Usage } from './types.js'; import { type UsageSummary } from './usage.js'; export interface ConfigSummary { configId: string; total: number; passed: number; failed: number; errored: number; difficult: number; retries: number; /** null when any record is missing latency. */ totalLatencyMs: number | null; /** null when any record is missing usage attribution; never silently zero. */ totalUsage: Usage | null; usageAttributionComplete: boolean; usageBreakdown: UsageSummary; /** Operator effort stays separate so model savings cannot hide human work. */ totalOperatorMinutes: number | null; operatorAttributionComplete: boolean; } export declare function summarize(records: RunRecord[], configId: string): ConfigSummary; export interface WeightedResult { configId: string; weightedPassRate: number; } /** * Workload-weighted results are only produced when every evaluated fixture has * a documented frequency. Otherwise callers must report per-task results and * make no representative-savings claim. */ export declare function weightedPassRates(suite: EvalSuite, records: RunRecord[], frequencies: TaskFrequencies | null): WeightedResult[] | null; export declare function renderReport(suite: EvalSuite, records: RunRecord[], frequencies?: TaskFrequencies | null, evidence?: 'synthetic' | 'observed'): string; //# sourceMappingURL=report.d.ts.map