export type MetricKind = "counter" | "gauge" | "timing";
export interface MetricSnapshot {
    readonly kind: MetricKind;
    readonly name: string;
    readonly value: number;
    readonly samples: readonly number[];
}
export interface DiagnosticsSnapshot {
    readonly metrics: readonly MetricSnapshot[];
    readonly timestamp: number;
}
export declare class Diagnostics {
    private readonly maxHistory;
    private readonly metrics;
    private readonly activeTimers;
    constructor(maxHistory?: number);
    increment(name: string, amount?: number): void;
    gauge(name: string, value: number): void;
    begin(name: string): void;
    end(name: string): number;
    snapshot(): DiagnosticsSnapshot;
    private ensure;
    private recordSample;
}
//# sourceMappingURL=Diagnostics.d.ts.map