import { BucketedMetricOptions, Counter, CounterBase, Gauge, GaugeBase, Histogram, HistogramBase, Labels, MetricOptions, MetricsFactory, PercentiledMetricOptions, Summary, SummaryBase } from './types';
export interface MetricConstruct {
    readonly name: string;
    readonly help: string;
    readonly labelNames: string[];
    readonly buckets?: number[];
    readonly percentiles?: number[];
}
export declare class MetricProxy<T> {
    protected readonly metric: T | undefined;
    protected readonly labelNames: readonly string[];
    constructor(metric?: T | undefined, labelNames?: readonly string[]);
    getLabelNames(): readonly string[];
    protected getLabels(countOrLabels?: Labels | number): Labels | number | void;
}
export declare class CounterProxy extends MetricProxy<CounterBase> implements Counter {
    inc(countOrLabels?: Labels | number, count?: number): void;
}
export declare class GaugeProxy extends MetricProxy<GaugeBase> implements Gauge {
    inc(countOrLabels?: Labels | number, count?: number): void;
    dec(countOrLabels?: Labels | number, count?: number): void;
    set(countOrLabels: Labels | number, count?: number): void;
}
export declare class HistogramProxy extends MetricProxy<HistogramBase> implements Histogram {
    observe(countOrLabels: Labels | number, count?: number): void;
}
export declare class SummaryProxy extends MetricProxy<SummaryBase> implements Summary {
    observe(countOrLabels: Labels | number, count?: number): void;
}
export declare class MetricsFactoryProxy implements MetricsFactory {
    protected mutableCounters: {
        [K in string]?: Counter;
    };
    protected mutableHistograms: {
        [K in string]?: Histogram;
    };
    protected mutableGauges: {
        [K in string]?: Gauge;
    };
    protected mutableSummaries: {
        [K in string]?: Summary;
    };
    private mutableFactory;
    reset_forTest(): void;
    createCounter(options: MetricOptions): Counter;
    createGauge(options: MetricOptions): Gauge;
    createHistogram(options: MetricOptions): Histogram;
    createSummary(options: MetricOptions): Summary;
    setFactory(mutableFactory: MetricsFactory): void;
    protected createCounterInternal(_options: MetricOptions): Counter;
    protected createGaugeInternal(_options: MetricOptions): Gauge;
    protected createHistogramInternal(_options: BucketedMetricOptions): Histogram;
    protected createSummaryInternal(_options: PercentiledMetricOptions): Summary;
    protected getMetricConstruct(options: MetricOptions | BucketedMetricOptions | PercentiledMetricOptions): MetricConstruct;
    private createCounterHelper;
    private createGaugeHelper;
    private createHistogramHelper;
    private createSummaryHelper;
}
