import { LogManager } from "../../api-logs/manager/types.cjs";
import { LimitManagerInternal } from "../../managers/EmbraceLimitManager/types.cjs";
import { PerformanceManager } from "../../utils/PerformanceManager/types.cjs";
import { InstrumentationAbstract } from "../InstrumentationAbstract/InstrumentationAbstract.cjs";
import { EmbraceInstrumentationBaseArgs } from "./types.cjs";
import { SpanSessionManager } from "../../api-sessions/manager/types.cjs";
import { Instrumentation, InstrumentationConfig, InstrumentationModuleDefinition } from "@opentelemetry/instrumentation";

//#region src/instrumentations/EmbraceInstrumentationBase/EmbraceInstrumentationBase.d.ts
declare abstract class EmbraceInstrumentationBase<ConfigType extends InstrumentationConfig = InstrumentationConfig> extends InstrumentationAbstract<ConfigType> implements Instrumentation<ConfigType> {
  private _sessionManager;
  private _logManager;
  private readonly _perf;
  private _limitManager;
  protected constructor({
    instrumentationName,
    instrumentationVersion,
    config,
    diag,
    perf,
    limitManager
  }: EmbraceInstrumentationBaseArgs<ConfigType>);
  protected get sessionManager(): SpanSessionManager;
  protected get logManager(): LogManager;
  protected get perf(): PerformanceManager;
  protected get limitManager(): LimitManagerInternal | undefined;
  setLimitManager(limitManager: LimitManagerInternal): void;
  protected init(): InstrumentationModuleDefinition | InstrumentationModuleDefinition[] | undefined;
  setLogManager(logManager: LogManager): void;
  setSessionManager(sessionManager: SpanSessionManager): void;
}
//#endregion
export { EmbraceInstrumentationBase };
//# sourceMappingURL=EmbraceInstrumentationBase.d.cts.map