/** * Metrics Client for Node.js Telemetry * * Provides a simple interface for recording metrics via OpenTelemetry. * This is the recommended way to record metrics in services using the telemetry package. */ import type { Meter } from "@opentelemetry/api"; /** * Labels for metrics (key-value pairs). */ export type Labels = Record; /** * Handle for a counter metric. */ export interface CounterHandle { inc(labels?: Labels, value?: number): void; } /** * Handle for a gauge metric. */ export interface GaugeHandle { set(labels: Labels, value: number): void; } /** * Handle for a histogram metric. */ export interface HistogramHandle { observe(labels: Labels, value: number): void; } /** * Metrics client that provides a unified interface for recording OTEL metrics. */ export declare class MetricsClient { private readonly meter; private counters; private histograms; private gaugeValues; constructor(meter: Meter); /** * Creates or retrieves a counter and returns a handle. */ counter(name: string): CounterHandle; /** * Creates or retrieves a gauge and returns a handle. * Note: OTEL gauges are async/observable, so we store the value and emit via callback. * Values are automatically expired after 5 minutes to prevent unbounded memory growth. */ gauge(name: string): GaugeHandle; /** * Creates or retrieves a histogram and returns a handle. */ histogram(name: string): HistogramHandle; /** * Increments a counter by name (creates if not exists). */ incCounter(name: string, labels?: Labels, value?: number): void; /** * Sets a gauge value by name (creates if not exists). */ setGauge(name: string, labels: Labels, value: number): void; /** * Observes a histogram value by name (creates if not exists). */ observeHistogram(name: string, labels: Labels, value: number): void; } //# sourceMappingURL=metrics-client.d.ts.map