/**
 * opentelemetry instrumentation helper functions
 * @module
 */
import * as otel from '@opentelemetry/api';
import { Headers } from '@temporalio/common';
/** Default trace header for opentelemetry interceptors */
export declare const TRACE_HEADER = "_tracer-data";
/** As in workflow run id */
export declare const RUN_ID_ATTR_KEY = "run_id";
/**
 * If found, return an otel Context deserialized from the provided headers
 */
export declare function extractContextFromHeaders(headers: Headers): Promise<otel.Context | undefined>;
/**
 * Given headers, return new headers with the current otel context inserted
 */
export declare function headersWithContext(headers: Headers): Promise<Headers>;
export interface InstrumentOptions<T> {
    tracer: otel.Tracer;
    spanName: string;
    fn: (span: otel.Span) => Promise<T>;
    context?: otel.Context;
    acceptableErrors?: (err: unknown) => boolean;
}
/**
 * Wraps `fn` in a span which ends when function returns or throws
 */
export declare function instrument<T>({ tracer, spanName, fn, context, acceptableErrors, }: InstrumentOptions<T>): Promise<T>;
