import { Meter, ValueRecorder } from './metrics';
import type { Histogram as OTelHistogram, Meter as OTelMeter, MeterProvider as OTelMeterProvider } from '@opentelemetry/api';
/**
 * Wrapper class for OpenTelemetry Histogram that implements ValueRecorder interface.
 */
export declare class OTelValueRecorder implements ValueRecorder {
    private _histogram;
    private _tags;
    private _unit?;
    /**
     * Creates an instance of OTelValueRecorder.
     *
     * @param histogram - OpenTelemetry Histogram to record values.
     * @param tags - Tags to associate with recorded values.
     * @param unit - Optional unit of measurement (e.g., 's' for seconds). If provided, it indicates that the recorded values
     *                should be converted from microseconds to seconds.
     */
    constructor(histogram: OTelHistogram, tags: Record<string, string>, unit?: string);
    /**
     * Records a value with the associated tags.
     *
     * @param value - The numeric value to record.
     */
    recordValue(value: number): void;
}
/**
 * Wrapper class for OpenTelemetry Meter that implements Meter interface.
 */
export declare class OTelWrapperMeter implements Meter {
    private _otelMeter;
    private _histograms;
    /**
     * Creates an instance of OTelWrapperMeter.
     *
     * @param meter - OpenTelemetry Meter to wrap.
     */
    constructor(meter: OTelMeter);
    /**
     * Creates a ValueRecorder for recording metric values.
     *
     * @param name - The name of the metric.
     * @param tags - Tags to associate with recorded values.
     * @returns A ValueRecorder instance for recording metrics.
     */
    valueRecorder(name: string, tags: Record<string, any>): ValueRecorder;
}
/**
 * Creates an OpenTelemetry wrapper meter.
 * Throws an Error if @opentelemetry/api is not installed.
 */
export declare function getOTelMeter(provider?: OTelMeterProvider): Meter;
