import * as pinecone from '@pinecone-database/pinecone';
import { InstrumentationConfig, InstrumentationBase, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation';

interface PineconeInstrumentationConfig extends InstrumentationConfig {
    /**
     * A custom logger to log any exceptions that happen during span creation.
     */
    exceptionLogger?: (e: Error) => void;
}

declare class PineconeInstrumentation extends InstrumentationBase {
    constructor(config?: PineconeInstrumentationConfig);
    setConfig(config?: PineconeInstrumentationConfig): void;
    manuallyInstrument(module: typeof pinecone): void;
    protected init(): InstrumentationModuleDefinition;
    private patch;
    private unpatch;
    private genericWrapper;
    private queryWrapper;
}

export { PineconeInstrumentation };
