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, value?: number): void; } export interface IMetricGauge { set(value: number): void; set(labels: Record, value: number): void; inc(value?: number): void; inc(labels: Record, value?: number): void; dec(value?: number): void; dec(labels: Record, value?: number): void; } export interface IMetricHistogram { observe(value: number): void; observe(labels: Record, value: number): void; startTimer(labels?: Record): (labels?: Record) => number; } export declare class MetricStore { private static $instance; private constructor(); static getInstance(): MetricStore; setDefaultLabels(labels: Record): void; createCounter(config: IMetricConfig): IMetricCounter; createGauge(config: IMetricConfig): IMetricGauge; createHistogram(config: IHistogramConfig): IMetricHistogram; getMetrics(): Promise; }