import type { DiagnosticsOperation, DiagnosticsStage, DiagnosticsOutcome, DiagnosticsReason, DiagnosticsRow, DiagnosticsSnapshot } from './diagnostics-types.ts'; export interface DiagnosticsHandle { stage(stage: DiagnosticsStage): void; finish(outcome: DiagnosticsOutcome, reason?: DiagnosticsReason): void; } export declare function emptyDiagnostics(): DiagnosticsSnapshot; /** Only fixed dimensions cross this boundary; live handles never leave the owner. */ export declare class DiagnosticsCollector { readonly version: string; readonly layer: 'client' | 'host'; private readonly changed; private readonly wall; private readonly mono; private data; private readonly live; private enabled; private lastWall; constructor(version: string, layer: 'client' | 'host', changed?: () => void, wall?: () => number, mono?: () => number); restore(snapshot: DiagnosticsSnapshot): void; setEnabled(enabled: boolean): void; assertCanEnable(): void; clear(): void; begin(operation: DiagnosticsOperation): DiagnosticsHandle; private settle; private age; private increment; private expire; private add; private oldestIndex; snapshot(): DiagnosticsSnapshot; close(): void; noteDropped(): void; noteClientGaps(dropped: number, unconfirmed: number): void; mergeClient(rows: readonly DiagnosticsRow[]): void; } //# sourceMappingURL=diagnostics-collector.d.ts.map