// src/stats/aggregate.ts
import { reportByLayer } from "./reporter.ts";

export interface AggregateResult {
  perProject: { projectDir: string; saved: number; before: number; after: number }[];
  totalBefore: number;
  totalAfter: number;
  totalSaved: number;
}

export function aggregateProjects(projectDirs: string[], opts: { since: number }): AggregateResult {
  const perProject = projectDirs.map((d) => {
    const rows = reportByLayer(d, opts);
    const before = rows.reduce((a, r) => a + r.tokensBefore, 0);
    const after  = rows.reduce((a, r) => a + r.tokensAfter, 0);
    return { projectDir: d, saved: before - after, before, after };
  });
  const totalBefore = perProject.reduce((a, p) => a + p.before, 0);
  const totalAfter  = perProject.reduce((a, p) => a + p.after, 0);
  return { perProject, totalBefore, totalAfter, totalSaved: totalBefore - totalAfter };
}
