import { type Attributes, type Span, type SpanContext, type Tracer } from '@opentelemetry/api';
import type { PrometheusExporter } from '@opentelemetry/exporter-prometheus';
import type { registerInstrumentations } from '@opentelemetry/instrumentation';
import type { MeterProvider } from '@opentelemetry/sdk-metrics';
import type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
type MaybePromise<T> = T | Promise<T>;
export declare const OtelState: {
    initialized: boolean;
    tracer: Tracer | undefined;
    tracerProvider: NodeTracerProvider | undefined;
    meterProvider: MeterProvider | undefined;
    prometheusExporter: PrometheusExporter | undefined;
    unregisterInstrumentations: ReturnType<typeof registerInstrumentations> | undefined;
    metricsEndpointEnabled: boolean;
    metricsEndpointPreference: boolean | undefined;
    readonly installed: boolean;
};
export declare function isTelemetryInitialized(): boolean;
export declare function isTracingInstalled(): boolean;
export declare function getTracer(): Tracer | undefined;
export declare function getActiveSpan(): Span | undefined;
export declare function getTraceContext(): SpanContext | undefined;
export declare function disableActiveTrace(): void;
export type SpanInfo = {
    traceId: string;
    spanId: string;
    traceFlags?: number;
} | {
    traceparent: string;
} | undefined;
export declare function withRemoteSpan<T>(name: string, spanInfo: SpanInfo, attrs: Attributes | undefined, fn: () => MaybePromise<T>): Promise<T>;
export declare function withSpan<T>(name: string, fn: () => MaybePromise<T>): Promise<T>;
export declare function withSpan<T>(name: string, attrs: Attributes | undefined, fn: () => MaybePromise<T>): Promise<T>;
export declare function withRootSpan<T>(name: string, fn: () => MaybePromise<T>): Promise<T>;
export declare function withRootSpan<T>(name: string, attrs: Attributes | undefined, fn: () => MaybePromise<T>): Promise<T>;
export type SpanLinkRef = {
    traceId: string;
    spanId: string;
    traceFlags?: number;
    attributes?: Attributes;
};
export declare function withLinkedRootSpan<T>(name: string, links: SpanLinkRef[], attrs: Attributes | undefined, fn: () => MaybePromise<T>): Promise<T>;
export declare function setSpanAttributes(attributes: Attributes): void;
export {};
//# sourceMappingURL=helpers.d.ts.map