/**
 * Session Player
 *
 * Plays back recorded sessions for debugging and testing.
 *
 * @since v1.33.3
 * @since v1.36.0 - Extracted schemas to shared schemas.ts
 */
import type { AppState, PlaybackOptions, PlaybackProgress, PlaybackResult, PlaybackStatus, RecordedEvent, Recording } from './recording-types.js';
/**
 * State provider function type
 */
export type PlaybackStateProvider = () => Partial<AppState>;
/**
 * Event executor function type
 */
export type EventExecutor = (event: RecordedEvent) => Promise<void> | void;
/**
 * Progress callback type
 */
export type ProgressCallback = (progress: PlaybackProgress) => void;
/**
 * Session player for replaying recorded sessions
 */
export declare class SessionPlayer {
    private recording;
    private currentIndex;
    private isPaused;
    private isStopped;
    private isPlaying;
    private options;
    private outputDir;
    private stateProvider;
    private eventExecutor;
    private progressCallback;
    private startTime;
    private pauseResolve;
    constructor(outputDir?: string, options?: Partial<PlaybackOptions>);
    /**
     * Set playback options
     */
    setOptions(options: Partial<PlaybackOptions>): void;
    /**
     * Get current options
     */
    getOptions(): PlaybackOptions;
    /**
     * Set the state provider
     */
    setStateProvider(provider: PlaybackStateProvider): void;
    /**
     * Set the event executor
     */
    setEventExecutor(executor: EventExecutor): void;
    /**
     * Set progress callback
     */
    setProgressCallback(callback: ProgressCallback): void;
    /**
     * Load a recording by ID (with security validation)
     */
    load(recordingId: string): boolean;
    /**
     * Load a recording from a Recording object
     */
    loadRecording(recording: Recording): void;
    /**
     * Get loaded recording
     */
    getRecording(): Recording | null;
    /**
     * Check if a recording is loaded
     */
    isLoaded(): boolean;
    /**
     * Play the recording
     */
    play(): Promise<PlaybackResult>;
    /**
     * Pause playback
     */
    pause(): void;
    /**
     * Resume playback
     */
    resume(): void;
    /**
     * Stop playback
     */
    stop(): void;
    /**
     * Step to next event (when paused)
     */
    step(): Promise<RecordedEvent | null>;
    /**
     * Skip to a specific event index
     */
    skipTo(index: number): boolean;
    /**
     * Restart from beginning
     */
    restart(): void;
    /**
     * Get current playback status
     */
    getStatus(): PlaybackStatus;
    /**
     * Get current progress
     */
    getProgress(): PlaybackProgress;
    /**
     * Get current event
     */
    getCurrentEvent(): RecordedEvent | null;
    /**
     * Get event at index
     */
    getEvent(index: number): RecordedEvent | null;
    /**
     * Capture current state
     */
    private captureState;
    /**
     * Validate state matches expected
     */
    private validateState;
    /**
     * Check if two values are equal (shallow comparison for performance)
     */
    private valuesEqual;
    /**
     * Wait for resume or stop
     */
    private waitForResume;
    /**
     * Update progress callback
     */
    private updateProgress;
    /**
     * Reset the player
     */
    reset(): void;
}
/**
 * Get the singleton session player
 */
export declare function getSessionPlayer(): SessionPlayer;
/**
 * Reset the singleton
 */
export declare function resetSessionPlayer(): void;
//# sourceMappingURL=session-player.d.ts.map