import { ExtendedSpan } from "../../api-traces/api/TraceAPI/types.cjs";
import { EmbraceSpanSessionManagerArgs, SessionEndedListener, SessionStartedListener, SpanSessionManagerInternal } from "./types.cjs";
import { PropertyOptions, ReasonSessionEnded, StartSessionOptions } from "../../api-sessions/manager/types.cjs";
import { HrTime, TracerProvider } from "@opentelemetry/api";
import { ReadableSpan } from "@opentelemetry/sdk-trace-web";

//#region src/managers/EmbraceSpanSessionManager/EmbraceSpanSessionManager.d.ts
declare class EmbraceSpanSessionManager implements SpanSessionManagerInternal {
  private _previousSessionId;
  private _activeSessionId;
  private _activeSessionStartTime;
  private _sessionSpan;
  private _activeSessionCounts;
  private _nextSessionCounts;
  private _coldStart;
  private _sdkStartupDuration;
  private readonly _sessionStartedListeners;
  private readonly _sessionEndedListeners;
  private _tracer;
  private readonly _noExportTracer;
  private readonly _diag;
  private readonly _perf;
  private readonly _visibilityDoc;
  private readonly _storage;
  private readonly _limitManager;
  constructor({
    diag: diagParam,
    perf,
    visibilityDoc,
    storage,
    limitManager
  }: EmbraceSpanSessionManagerArgs);
  private _getPermanentAttributes;
  addBreadcrumb(name: string): void;
  addProperty(propertyKey: string, value: string, options?: PropertyOptions): void;
  removeProperty(propertyKey: string): void;
  endSessionSpan(): void;
  endSessionSpanInternal(reason: ReasonSessionEnded): void;
  private _endSessionSpanAttributes;
  currentSessionAsReadableSpan(reason: ReasonSessionEnded): ReadableSpan | null;
  getSessionId(): string | null;
  getPreviousSessionId(): string | null;
  getSessionSpan(): ExtendedSpan | null;
  getSessionStartTime(): HrTime | null;
  startSessionSpan(options?: StartSessionOptions): void;
  incrSessionCountForKey(key: string): void;
  incrNextSessionCountForKey(key: string): void;
  addSessionStartedListener(listener: SessionStartedListener): () => void;
  addSessionEndedListener(listener: SessionEndedListener): () => void;
  recordSDKStartupDuration(duration: number): void;
  setTracerProvider(tracerProvider: TracerProvider): void;
}
//#endregion
export { EmbraceSpanSessionManager };
//# sourceMappingURL=EmbraceSpanSessionManager.d.cts.map