export interface IMetricConfig {
    name: string;
    help: string;
    labelNames?: string[];
}
export interface IMetricData {
    type: string;
    content: string;
}
export interface IHistogramConfig extends IMetricConfig {
    buckets?: number[];
}
export interface IMetricCounter {
    inc(value?: number): void;
    inc(labels: Record<string, string | number>, value?: number): void;
}
export interface IMetricGauge {
    set(value: number): void;
    set(labels: Record<string, string | number>, value: number): void;
    inc(value?: number): void;
    inc(labels: Record<string, string | number>, value?: number): void;
    dec(value?: number): void;
    dec(labels: Record<string, string | number>, value?: number): void;
}
export interface IMetricHistogram {
    observe(value: number): void;
    observe(labels: Record<string, string | number>, value: number): void;
    startTimer(labels?: Record<string, string | number>): (labels?: Record<string, string | number>) => number;
}
export declare class MetricStore {
    private static $instance;
    private constructor();
    static getInstance(): MetricStore;
    setDefaultLabels(labels: Record<string, string>): void;
    createCounter(config: IMetricConfig): IMetricCounter;
    createGauge(config: IMetricConfig): IMetricGauge;
    createHistogram(config: IHistogramConfig): IMetricHistogram;
    getMetrics(): Promise<IMetricData>;
}
