import type * as CallbackManagerModuleV02 from "@langchain/core/callbacks/manager";
import type * as CallbackManagerModuleV01 from "@langchain/coreV0.1/callbacks/manager";
import { InstrumentationBase, InstrumentationConfig, InstrumentationModuleDefinition } from "@opentelemetry/instrumentation";
import { TraceConfigOptions } from "@arizeai/openinference-core";
/**
 * function to check if instrumentation is enabled / disabled
 */
export declare function isPatched(): boolean;
type CallbackManagerModule = typeof CallbackManagerModuleV01 | typeof CallbackManagerModuleV02;
/**
 * An auto instrumentation class for LangChain that creates {@link https://github.com/Arize-ai/openinference/blob/main/spec/semantic_conventions.md|OpenInference} Compliant spans for LangChain
 * @param instrumentationConfig The config for the instrumentation @see {@link InstrumentationConfig}
 * @param traceConfig The OpenInference trace configuration. Can be used to mask or redact sensitive information on spans. @see {@link TraceConfigOptions}
 */
export declare class LangChainInstrumentation extends InstrumentationBase<CallbackManagerModule> {
    private oiTracer;
    constructor({ instrumentationConfig, traceConfig, }?: {
        /**
         * The config for the instrumentation
         * @see {@link InstrumentationConfig}
         */
        instrumentationConfig?: InstrumentationConfig;
        /**
         * The OpenInference trace configuration. Can be used to mask or redact sensitive information on spans.
         * @see {@link TraceConfigOptions}
         */
        traceConfig?: TraceConfigOptions;
    });
    manuallyInstrument(module: CallbackManagerModule): void;
    protected init(): InstrumentationModuleDefinition<CallbackManagerModule>;
    private patch;
    private unpatch;
}
export {};
//# sourceMappingURL=instrumentation.d.ts.map