import { LogManager } from "../../api-logs/manager/types.js";
import "../../api-logs/index.js";
import "../../api-sessions/index.js";
import { PerformanceManager } from "../../utils/PerformanceManager/types.js";
import "../../utils/index.js";
import { LimitManagerInternal } from "../../managers/EmbraceLimitManager/types.js";
import "../../managers/index.js";
import { InstrumentationAbstract } from "../InstrumentationAbstract/InstrumentationAbstract.js";
import "../InstrumentationAbstract/index.js";
import { EmbraceInstrumentationBaseArgs } from "./types.js";
import { SessionPartStartedEvent } from "../../api-sessions/manager/types.js";
import { UserSessionManagerInternal } from "../../managers/EmbraceUserSessionManager/types.js";
import { Instrumentation, InstrumentationConfig, InstrumentationModuleDefinition } from "@opentelemetry/instrumentation";
//#region src/instrumentations/EmbraceInstrumentationBase/EmbraceInstrumentationBase.d.ts
type SessionPartListeners = {
  start?: (event: SessionPartStartedEvent) => void;
  end?: () => void;
};
declare abstract class EmbraceInstrumentationBase<ConfigType extends InstrumentationConfig = InstrumentationConfig> extends InstrumentationAbstract<ConfigType> implements Instrumentation<ConfigType> {
  private _userSessionManager;
  private _logManager;
  private readonly _perf;
  private _limitManager;
  protected _isEnabled: boolean;
  private _removeSessionPartListeners;
  private _sessionPartListeners;
  protected constructor({ instrumentationName, instrumentationVersion, config, diag, perf, limitManager }: EmbraceInstrumentationBaseArgs<ConfigType>);
  protected get userSessionManager(): UserSessionManagerInternal;
  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;
  setUserSessionManager(userSessionManager: UserSessionManagerInternal): void;
  protected setSessionPartListeners(listeners: SessionPartListeners): void;
  protected unregisterSessionPartListeners(): void;
  private _registerSessionPartListeners;
  disable(): void;
  enable(): void;
  protected abstract onDisable(): void;
  abstract onEnable(): void;
}
//#endregion
export { EmbraceInstrumentationBase };
//# sourceMappingURL=EmbraceInstrumentationBase.d.ts.map