/**
 * Input-space tiling + coverage projection.
 *
 * Cells are the cartesian product of the input axes — the stratification plan,
 * enumerable up front so the planned-vs-covered denominator is honest. Coverage
 * is projected from the evaluation log: per cell, the full DISTRIBUTION of the
 * headline score, of each scored dimension, and of evaluation latency — a bare
 * mean hides outliers, so every aggregate carries its spread. Per-cell cost is
 * split known-dollars vs unknown-runs, never folded into a fabricated $0.
 */
import type { BehaviorSpace, Cell, CoverageCell, Distribution, Evaluation } from './types';
/** One recorded evaluation — the unit coverage and the capsule are built from. */
export interface EvalRecord {
    cell: Cell;
    ev: Evaluation;
    /** The objective's interest score for this evaluation. */
    interest: number;
    /** Evaluation wall-clock — engine-measured unless `ev.latencyMs` overrode it. */
    latencyMs: number;
    /** Known dollars for this run. `null` = cost tracking was wired but this
     *  run's cost was unknowable (counted apart). Absent = not tracked at all. */
    costUsd?: number | null;
}
/** Enumerate every input cell (cartesian product of the axes), in stable order. */
export declare function enumerateCells(space: BehaviorSpace): Cell[];
/** Deterministic id for a coordinate map, e.g. `matterType=nda|difficulty=hard`. */
export declare function cellId(space: BehaviorSpace, coords: Record<string, string>): string;
/** Summarize a sample. Throws on an empty sample — callers represent "no data"
 *  as `null`, never as a zeroed distribution. */
export declare function distribution(values: number[]): Distribution;
/**
 * Project the evaluation log into the per-input-cell coverage map. A cell with
 * no evaluations reports `score: null` (honestly uncovered), never zeros.
 */
export declare function buildCoverage(cells: Cell[], log: EvalRecord[], threshold: number): CoverageCell[];
//# sourceMappingURL=cube.d.ts.map