import { Tracer } from "@opentelemetry/api";
import { InstrumentationBase, InstrumentationConfig, InstrumentationNodeModuleDefinition } from "@opentelemetry/instrumentation";
import type * as esdb from "@eventstore/db-client";
import type { SubscribeToAllOptions, SubscribeToStreamOptions } from "@eventstore/db-client";
import type { PersistentSubscriptionImpl } from "@eventstore/db-client/src/persistentSubscription/utils/PersistentSubscriptionImpl";
import type { Subscription } from "@eventstore/db-client/src/streams/utils/Subscription";
export declare class Instrumentation extends InstrumentationBase {
    constructor(config?: InstrumentationConfig);
    protected init(): InstrumentationNodeModuleDefinition<typeof esdb>;
    private _onPatchMain;
    private wrap;
    private _onUnPatchMain;
    private _patchAppendToStream;
    static applySubscriptionInstrumentation<KnownEventType>(spanName: string, subscription: Subscription<KnownEventType> | PersistentSubscriptionImpl<KnownEventType>, uri: string, operation: string, options: SubscribeToStreamOptions | SubscribeToAllOptions | undefined, tracer: Tracer): void;
    private _patchCatchUpSubscription;
    private _patchPersistentSubscription;
    private static restoreContext;
    private static handleError;
    private static getServerAddress;
}
