import { Observable } from '../../tools/observable'; import type { Context } from '../../tools/serialisation/context'; import type { RelativeTime } from '../../tools/utils/timeUtils'; import type { Configuration } from '../configuration'; import type { TrackingConsentState } from '../trackingConsent'; import type { SessionState } from './sessionState'; export interface SessionManager { findSession: (startTime?: RelativeTime, options?: { returnInactive: boolean; }) => SessionContext | undefined; renewObservable: Observable; expireObservable: Observable; sessionStateUpdateObservable: Observable<{ previousState: SessionState; newState: SessionState; }>; expire: () => void; updateSessionState: (state: Partial) => void; } export interface SessionContext extends Context { id: string; trackingType: TrackingType; isReplayForced: boolean; anonymousId: string | undefined; } export declare const VISIBILITY_CHECK_DELAY: number; export declare function startSessionManager(configuration: Configuration, productKey: string, computeTrackingType: (rawTrackingType?: string) => TrackingType, trackingConsentState: TrackingConsentState): SessionManager; export declare function stopSessionManager(): void;