export interface Metric {
    name: string;
    value: number;
    timestamp: Date;
    tags?: Record<string, string>;
}
export interface MetricsCollectorConfig {
    flushInterval?: number;
    bufferSize?: number;
    onFlush?: (metrics: Metric[]) => Promise<void>;
}
export declare class MetricsCollector {
    private metrics;
    private config;
    private flushInterval;
    private static instance;
    constructor(config?: MetricsCollectorConfig);
    static getInstance(config?: MetricsCollectorConfig): MetricsCollector;
    record(name: string, value: number, tags?: Record<string, string>): void;
    private startFlushInterval;
    flush(): Promise<void>;
    getMetrics(): Metric[];
    summarize(name: string, fromDate?: Date): {
        count: number;
        sum: number;
        avg: number;
        min: number;
        max: number;
    };
    dispose(): void;
}
