/**
 * Per-axis aggregation of cell runs into `AxisSummary` rows.
 *
 * Pure: consumes the final `cells: [{cell, runs}]` array and returns the
 * `byAxis` table. Error runs contribute 0 to passRate and meanScore. Cost
 * and duration always count — the budget was spent regardless.
 */
import type { AxisSummary, CellResult, MatrixAxis, MatrixCell, MatrixResult } from './types';
interface Row<Output> {
    cell: MatrixCell;
    result: CellResult<Output>;
}
export declare function summariseRows<Output>(rows: Row<Output>[], axisName: string, axisValue: string): AxisSummary;
export declare function buildByAxis<Output>(cells: MatrixResult<Output>['cells'], axes: MatrixAxis<unknown>[], aggregateBy: string[]): Record<string, Record<string, AxisSummary>>;
export {};
//# sourceMappingURL=aggregation.d.ts.map