import { ErrorBoundary, PrecomputedEvaluationsInterface } from '@statsig/client-core'; import { RRWebConfig, ReplayEvent, ReplaySessionData, SessionReplayClient } from './SessionReplayClient'; type SessionReplayOptions = { rrwebConfig?: RRWebConfig; forceRecording?: boolean; }; export type EndReason = 'is_leaving_page' | 'session_expired'; export declare function stopRecording(sdkKey?: string): void; export declare function startRecording(sdkKey?: string): void; export declare function forceStartRecording(sdkKey?: string): void; export declare abstract class SessionReplayBase { protected _sessionData: ReplaySessionData; protected _events: ReplayEvent[]; protected _currentSessionID: string; protected _errorBoundary: ErrorBoundary; protected _client: PrecomputedEvaluationsInterface; protected _options?: SessionReplayOptions; protected _replayer: SessionReplayClient; protected _wasStopped: boolean; protected _currentEventIndex: number; protected _totalLogs: number; constructor(client: PrecomputedEvaluationsInterface, options?: SessionReplayOptions); forceStartRecording(): void; stopRecording(): void; startRecording(): void; isRecording(): boolean; protected abstract _attemptToStartRecording(force?: boolean): void; protected _logRecording(endReason?: EndReason): void; private _onVisibilityChanged; protected _subscribeToVisibilityChanged(): void; protected _logRecordingWithSessionID(sessionID: string, endReason?: EndReason): void; protected _bumpSessionIdleTimerAndLogRecording(): void; protected _getSessionIdFromClient(bumpSession?: boolean): string; protected abstract _shutdown(endReason?: EndReason): void; protected _shutdownImpl(endReason?: EndReason): void; private _makeEmptySessionData; protected _onRecordingEvent(event: ReplayEvent, data: ReplaySessionData): void; } export {};