import { Counter, Gauge, type Registry } from 'prom-client';
import { BatchHistogram } from './batch-histogram.js';
export interface NumericMetricSample {
    labels?: Record<string, string | number>;
    value: number;
}
export interface BucketMetricSample {
    labels?: Record<string, string | number>;
    count: number;
    sum: number;
    buckets: Array<{
        le: number | '+Inf';
        count: number;
    }>;
}
export interface NumericMetric {
    name: string;
    help: string;
    type: 'counter' | 'gauge';
    samples: NumericMetricSample[];
}
export interface BucketMetric {
    name: string;
    help: string;
    type: 'histogram';
    samples: BucketMetricSample[];
}
export type Metric = NumericMetric | BucketMetric;
export declare class MetricsTranslator {
    private registry;
    constructor(registry: Registry);
    sanitizeName(name: string): string;
    private hasNewLabels;
    private hasNewBuckets;
    private buildLabels;
    private resolveCounter;
    private resolveGauge;
    private resolveHistogram;
    private collectLabelNames;
    translateMetric(metric: Metric): Counter<string> | Gauge<string> | BatchHistogram | null;
    translateMetrics(metrics: Metric[]): Registry;
    serializeMetrics(): Promise<string>;
    translateAndSerializeMetrics(metrics: Metric[]): Promise<string>;
}
//# sourceMappingURL=metrics-translator.d.ts.map