import { type Counter, type Gauge, type Histogram, type MetricOptions, type ObservableCounter, type ObservableGauge, type ObservableUpDownCounter, type UpDownCounter, type Attributes } from "@opentelemetry/api";
type MetricTypeMap<TAttributes extends Attributes> = {
    counter: Counter<TAttributes>;
    histogram: Histogram<TAttributes>;
    gauge: Gauge<TAttributes>;
    updowncounter: UpDownCounter<TAttributes>;
    "async-counter": ObservableCounter<TAttributes>;
    "async-updowncounter": ObservableUpDownCounter<TAttributes>;
    "async-gauge": ObservableGauge<TAttributes>;
};
export type MetricType = keyof MetricTypeMap<Attributes>;
export interface MetricsParams {
    meterName: string;
    metricName: string;
    options?: MetricOptions;
}
export declare function getMetric<T extends MetricType, TAttributes extends Attributes = Attributes>(type: T, p: MetricsParams): MetricTypeMap<TAttributes>[T];
export {};
