/**
 * Supported lag measurement types
 */
export type LagType = "setTimeout" | "setInterval" | "requestAnimationFrame";
/**
 * Lag measurement data
 */
export interface LagData {
    /** Most recent lag measurement in milliseconds */
    latest?: number;
    /** Average lag over the sample window in milliseconds */
    average?: number;
    /** Minimum lag in the current sample window */
    min?: number;
    /** Maximum lag in the current sample window */
    max?: number;
    /** Number of samples collected */
    samples?: number;
}
/**
 * Callback function called on each lag measurement
 */
export type LagCallback = (currentLag: number, lagData: LagData) => void;
/**
 * Configuration options for lag monitoring
 */
export interface LagMonitorOptions {
    /** Method used for scheduling measurements */
    lagType?: LagType;
    /** Interval between measurements in milliseconds */
    sampleRate?: number;
    /** Number of samples to keep for average calculation */
    sampleCount?: number;
    /** Optional callback invoked on each measurement */
    callback?: LagCallback;
    /** Whether to start monitoring immediately */
    autoStart?: boolean;
    /** Custom metrics to include in snapshots */
    metrics?: Record<string, () => number>;
    /** User-defined metrics to compute from lag samples */
    userMetrics?: Record<string, (samples: number[]) => number>;
}
declare class LagMonitor {
    private lagSamples;
    private isActive;
    private options;
    private timerId;
    private lastTimestamp;
    private userMetrics;
    constructor(options?: LagMonitorOptions);
    get latest(): number;
    get average(): number;
    get min(): number;
    get max(): number;
    private scheduleNext;
    private tick;
    private clearTimer;
    /**
     * Get a metric value by name - handles both built-in and user-defined metrics
     */
    private getMetricValue;
    /**
     * Get all available metric functions (built-in + user-defined)
     */
    getAvailableMetrics(): string[];
    /**
     * Compute a specific metric or all metrics
     */
    snapshot(metric?: string): LagData | {
        [key: string]: number;
    };
    start(): void;
    stop(): void;
    reset(): void;
    restart(): void;
    isRunning(): boolean;
}
export default LagMonitor;
