import { Tracer as OtelTracer, Context as OtelContext, Span as OtelSpan } from '@opentelemetry/api';
import { ContextManager, Telemetry, Tracer, Span, AttributeValue, Attributes, Time, Exception } from 'bullmq';
declare class BullMQOTelContextManager implements ContextManager<OtelContext> {
    private contextAPI;
    getMetadata(ctx: OtelContext): string;
    fromMetadata(activeCtx: OtelContext, metadata: string): OtelContext;
    with<A extends (...args: any[]) => any>(ctx: OtelContext, fn: A): ReturnType<A>;
    active(): OtelContext;
}
declare class BullMQOtelTracer implements Tracer {
    private tracer;
    constructor(tracer: OtelTracer);
    startSpan(name: string, options?: any, context?: OtelContext): Span<OtelContext>;
}
export declare class BullMQOTelSpan implements Span<OtelContext> {
    span: OtelSpan;
    constructor(span: OtelSpan);
    setSpanOnContext(ctx: OtelContext): OtelContext;
    setAttribute(key: string, value: AttributeValue): void;
    setAttributes(attributes: Attributes): void;
    addEvent(name: string, attributes?: Attributes, time?: Time): void;
    recordException(exception: Exception, time?: Time): void;
    end(): void;
}
export declare class BullMQOtel implements Telemetry<OtelContext> {
    tracer: BullMQOtelTracer;
    contextManager: BullMQOTelContextManager;
    constructor(tracerName: string, version?: string);
}
export {};
