import type { Die } from '../core/dies.js';
export interface HistogramBucket {
    rangeLow: number;
    rangeHigh: number;
    count: number;
}
export interface HistogramItem {
    label?: string;
    dies?: Die[];
}
/** One overlaid series in a faceted histogram — per-group counts over the shared bucket ranges. */
export interface HistogramSeries {
    groupKey: string;
    /** Count per bucket, aligned to the shared `ranges` array. */
    counts: number[];
}
/** Faceted histogram: shared bucket ranges plus one count-series per group. */
export interface HistogramSeriesData {
    ranges: Array<{
        rangeLow: number;
        rangeHigh: number;
    }>;
    series: HistogramSeries[];
}
/**
 * Histogram of one test's values across `items`, divided into `bucketCount`
 * equal-width buckets. If `limitLow`/`limitHigh` are given, the axis range
 * is expanded to include them so limit lines always draw.
 */
export declare function buildTestHistogramData(items: HistogramItem[], testNumber: number, bucketCount?: number, limitLow?: number, limitHigh?: number): HistogramBucket[];
/**
 * Faceted histogram: one count-series per group over a *shared* set of
 * buckets, so the series overlay and compare directly. The bucket range
 * spans every group's dies (and the limits when given) so all series align
 * on one axis. Groups are returned in the order given; empty groups (no
 * valid values for this test) are omitted.
 */
export declare function buildTestHistogramSeries(groups: {
    key: string;
    items: HistogramItem[];
}[], testNumber: number, bucketCount?: number, limitLow?: number, limitHigh?: number): HistogramSeriesData;
//# sourceMappingURL=histogram.d.ts.map