import { SpanSessionManagerInternal } from "../../managers/EmbraceSpanSessionManager/types.cjs";
import { DiagLogger } from "@opentelemetry/api";
import { ReadableSpan } from "@opentelemetry/sdk-trace-web";
import { Resource } from "@opentelemetry/resources";

//#region src/utils/EmbraceSpanStorage/EmbraceSpanStorage.d.ts
interface SpanStorageOptions {
  spanSessionManager: SpanSessionManagerInternal;
  resource?: Resource;
  storage?: Storage;
  diag?: DiagLogger;
  storedSpansExpireTimeoutMS?: number;
  onExpiredSpansExport?: (spans: ReadableSpan[]) => void;
}
declare class EmbraceSpanStorage {
  private readonly _noExportTracer;
  private readonly _storage;
  private readonly _diag;
  private readonly _onExpiredSpansExport?;
  private readonly _storedSpansExpireTimeoutMS;
  private readonly _spanSessionManager;
  private _checkExpiredSpansInterval?;
  constructor({
    resource,
    storage,
    diag: diagParam,
    storedSpansExpireTimeoutMS,
    // 1 hour
    onExpiredSpansExport,
    spanSessionManager
  }: SpanStorageOptions);
  storePendingSpans(sessionId: string, sessionSpan: ReadableSpan, pendingSpans: ReadableSpan[]): void;
  clearStoredSpans(sessionId: string): void;
  startExpiredSpansCheck(): void;
  stopExpiredSpansCheck(): void;
  checkAndExportExpiredSpans(): void;
  _getPendingSpansKeys(): string[];
  destroy(): void;
}
//#endregion
export { EmbraceSpanStorage, SpanStorageOptions };
//# sourceMappingURL=EmbraceSpanStorage.d.cts.map