import { TracerProvider, Tracer } from '@opentelemetry/api'; import { Meter, MeterProvider } from '@opentelemetry/api-metrics'; import { InstrumentationModuleDefinition } from './platform/node'; import * as types from './types'; /** * Base abstract internal class for instrumenting node and web plugins */ export declare abstract class InstrumentationAbstract implements types.Instrumentation { readonly instrumentationName: string; readonly instrumentationVersion: string; protected _config: types.InstrumentationConfig; private _tracer; private _meter; constructor(instrumentationName: string, instrumentationVersion: string, config?: types.InstrumentationConfig); protected _wrap: (nodule: Nodule, name: FieldName, wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; protected _unwrap: (nodule: Nodule, name: keyof Nodule) => void; protected _massWrap: (nodules: Nodule[], names: FieldName[], wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]) => void; protected _massUnwrap: (nodules: Nodule[], names: (keyof Nodule)[]) => void; protected get meter(): Meter; /** * Sets MeterProvider to this plugin * @param meterProvider */ setMeterProvider(meterProvider: MeterProvider): void; /** * Sets TraceProvider to this plugin * @param tracerProvider */ setTracerProvider(tracerProvider: TracerProvider): void; protected get tracer(): Tracer; abstract enable(): void; abstract disable(): void; /** * Init method in which plugin should define _modules and patches for * methods */ protected abstract init(): InstrumentationModuleDefinition | InstrumentationModuleDefinition[] | void; }