/**
 * Deterministic Session Replay (Item 105)
 */
import { EventEmitter } from 'events';
export interface ReplayEvent {
    id: string;
    timestamp: number;
    type: 'input' | 'output' | 'tool' | 'api' | 'state';
    data: unknown;
    hash: string;
}
export interface ReplaySession {
    id: string;
    name: string;
    startTime: Date;
    endTime?: Date;
    events: ReplayEvent[];
    metadata: {
        model: string;
        systemPrompt: string;
        toolsEnabled: string[];
    };
}
export declare class SessionReplayManager extends EventEmitter {
    private storageDir;
    private currentSession;
    private recording;
    startRecording(name: string, metadata: ReplaySession['metadata']): ReplaySession;
    stopRecording(): ReplaySession | null;
    recordEvent(type: ReplayEvent['type'], data: unknown): void;
    saveSession(session: ReplaySession): Promise<string>;
    loadSession(sessionId: string): Promise<ReplaySession | null>;
    listSessions(): Promise<Array<{
        id: string;
        name: string;
        date: Date;
    }>>;
    replay(sessionId: string, options?: {
        speed?: number;
        onEvent?: (e: ReplayEvent) => void;
    }): Promise<void>;
    verifyIntegrity(session: ReplaySession): boolean;
    isRecording(): boolean;
    getCurrentSession(): ReplaySession | null;
}
export declare function getSessionReplayManager(): SessionReplayManager;
export default SessionReplayManager;
