import type { Entry } from '../entry/entry.js';
export interface DurationStats {
    avg: number;
    p50: number;
    p95: number;
    max: number;
}
export interface QueueMetrics {
    queue: string;
    total: number;
    completed: number;
    failed: number;
    /** failed / total, in [0, 1]. */
    failureRate: number;
    /** total jobs / window minutes. */
    throughputPerMinute: number;
    /** Processing-time stats (from `Entry.durationMs`); null when no samples. */
    runtimeMs: DurationStats | null;
    /** Queue-wait stats (from `JobContent.waitMs`); null when no samples. */
    waitMs: DurationStats | null;
}
export interface QueueMetricsReport {
    windowStart: string;
    windowEnd: string;
    windowMs: number;
    queues: QueueMetrics[];
}
/** Group `job` entries by queue and compute per-queue throughput, runtime/wait
 *  percentiles, and failure rate over the [windowStart, windowEnd] window.
 *  Non-job entries are ignored. Pure: callers fetch the entries; entries are
 *  assumed already windowed (createdAt is not re-checked here). */
export declare function aggregateQueueMetrics(entries: Entry[], windowStart: Date, windowEnd: Date): QueueMetricsReport;
//# sourceMappingURL=queue-metrics.d.ts.map