import { SessionRecordingConfig } from './session.model';
import { SessionManager } from './sessionManager';
export declare class SessionRecorder {
    private sessionWorker;
    private readonly isAutoStartRecording;
    private readonly maxMutations;
    private readonly onlySessionWithErrorMode;
    private readonly maxRecordTimeForSessionWithError;
    private recordEvents;
    private recordEventsForSessionWithError;
    private recordRef;
    private recordConfig;
    private segmentIndexCounter;
    private sessionManager;
    private hasRecording;
    private hasScreenshot;
    private recordingStopped;
    private batchingTimeInterval;
    private batchTimeDelay;
    private batchTimeout;
    private isErrorOccurred;
    private debugMode;
    private _recordingStopDueToTimeout;
    private mutationObserver;
    private request;
    private workerManager;
    private isWorkerReady;
    constructor(sessionManager: SessionManager, recordConfig: SessionRecordingConfig);
    getSessionHasScreenshot(): boolean;
    getSessionHasRecording(): boolean;
    updateSegmentIndexCounter(segmentIndexCounter: Record<string, number>): void;
    getIsAutoStartRecording(): boolean;
    set recordingStopDueToTimeout(value: boolean);
    get recordingStopDueToTimeout(): boolean;
    startRecording(): Promise<void>;
    screenshot(id: string): void;
    stopRecording(): void;
    private stopMutationObserver;
    private startMutationObserver;
    private clearIntervals;
    private prepareRecordConfig;
    private handleRecordEvent;
    private handleRecordEventForSessionWithError;
    private prepareRecordEventsBeforeSend;
    private prepareRecordEventsForSessionWithError;
    private compressRecordData;
    private registerToWorkerMessages;
    private resetBatching;
    private getMetadata;
    private sendRecordEvents;
    private handleSessionRecordingResponse;
    private startBatchingRecords;
    private initializeSessionWorker;
}
