import { ExtendedSpan } from "../../api-traces/api/TraceAPI/types.cjs";
import { HrTime } from "@opentelemetry/api";
import { ReadableSpan } from "@opentelemetry/sdk-trace-web";

//#region src/api-sessions/manager/types.d.ts
interface SpanSessionManager {
  getSessionId: () => string | null;
  getPreviousSessionId: () => string | null;
  getSessionStartTime: () => HrTime | null;
  getSessionSpan: () => ExtendedSpan | null;
  startSessionSpan: (options?: StartSessionOptions) => void;
  endSessionSpan: () => void;
  addBreadcrumb: (name: string) => void;
  addProperty: (key: string, value: string, options?: PropertyOptions) => void;
  removeProperty: (key: string) => void;
  endSessionSpanInternal: (reason: ReasonSessionEnded) => void;
  currentSessionAsReadableSpan: (reason: ReasonSessionEnded) => ReadableSpan | null;
  addSessionStartedListener: (listener: () => void) => () => void;
  addSessionEndedListener: (listener: () => void) => () => void;
}
type ReasonSessionEnded = 'unknown' | 'inactivity' | 'timer' | 'manual' | 'max_size_reached' | 'state_changed';
type PropertyOptions = {
  lifespan?: 'permanent';
};
type StartSessionOptions = {
  reason?: string;
};
//#endregion
export { PropertyOptions, ReasonSessionEnded, SpanSessionManager, StartSessionOptions };
//# sourceMappingURL=types.d.cts.map