import { PostHog } from './module';
import { SessionIdChangedCallback } from "@posthog/types";
//#region lib/src/extensions/tracing-headers-types.d.ts
/**
 * Public config is `string[]` today. Keep `boolean` internally because the
 * earliest browser-only `__add_tracing_headers` preview option shipped as a
 * boolean, where `true` meant "add tracing headers to every request".
 */
type TracingHeadersHostnames = string[] | boolean | undefined;
/**
 * Allow a provider so headers use the current distinct ID after bootstrap,
 * identify(), reset(), or other identity changes without re-patching fetch/XHR.
 */
type TracingHeadersDistinctId = string | (() => string | undefined);
//#endregion
//#region lib/src/sessionid.d.ts
declare class SessionIdManager {
  private readonly _sessionIdGenerator;
  private readonly _windowIdGenerator;
  private _config;
  private _persistence;
  private _windowId;
  private _sessionId;
  private readonly _window_id_storage_key;
  private readonly _primary_window_exists_storage_key;
  private _sessionStartTimestamp;
  private _pendingBootstrapSession;
  private _sessionActivityTimestamp;
  private _lastPersistedActivityTimestamp;
  private _lastCookieSyncTimestamp;
  private _sessionIdChangedHandlers;
  private readonly _sessionTimeoutMs;
  private _enforceIdleTimeout;
  private _beforeUnloadListener;
  private _destroyed;
  private _eventEmitter;
  on(event: 'forcedIdleReset', handler: () => void): () => void;
  constructor(instance: PostHog, sessionIdGenerator?: () => string, windowIdGenerator?: () => string);
  get sessionTimeoutMs(): number;
  onSessionId(callback: SessionIdChangedCallback): () => void;
  private _canUseSessionStorage;
  private _setWindowId;
  private _getWindowId;
  private _isActivityChangeBelowGranularity;
  private _setSessionId;
  private _useCrossTabRefreshHardening;
  private _refreshSessionIdFromStorage;
  private _flushPendingActivityTimestamp;
  private _freshestActivityTimestamp;
  private _isSessionIdleAfterCrossTabRefresh;
  private _getSessionId;
  resetSessionId(): void;
  setBootstrapSessionId(sessionID: string, deferUntilNextSession?: boolean): boolean;
  /**
   * Cleans up resources used by SessionIdManager.
   * Should be called when the SessionIdManager is no longer needed to prevent memory leaks.
   */
  destroy(): void;
  private _listenToReloadWindow;
  private _sessionHasBeenIdleTooLong;
  checkAndGetSessionAndWindowId(readOnly?: boolean, _timestamp?: number | null, persistenceAlreadySynced?: boolean): {
    sessionId: string;
    windowId: string;
    sessionStartTimestamp: number;
    changeReason: {
      noSessionId: boolean;
      activityTimeout: boolean;
      sessionPastMaximumLength: boolean;
      crossTabAdoption: boolean;
    } | undefined;
    lastActivityTimestamp: number;
  };
  private _resetIdleTimer;
}
//#endregion
//#region lib/src/entrypoints/tracing-headers.d.ts
declare const patchFns: {
  _patchFetch: (hostnames: TracingHeadersHostnames, distinctId: TracingHeadersDistinctId, sessionManager?: SessionIdManager) => (() => void);
  _patchXHR: (hostnames: TracingHeadersHostnames, distinctId: TracingHeadersDistinctId, sessionManager?: SessionIdManager) => (() => void);
};
//#endregion
export { patchFns as default };