/**
 * Replay Player (W4.2 ↔ W3.1 bridge).
 *
 * Takes a ReplaySequence (W4.2 sandbox-replay fixture) and emits TimelineRow
 * events (W3.1 runtime-event-renderer output) on a JS timer. Used by the
 * dashboard's "Run Demo" button on the no-install demo path to play back
 * a sanitized agent run as if it were happening in real time.
 *
 * Player is pluggable:
 *   - tick callback fires per emitted row
 *   - done callback fires when the sequence completes (or is stopped)
 *   - speedMultiplier scales replay time (5x for "fast-forward" demos)
 *   - schedule defaults to globalThis.setTimeout but is injectable for tests
 *
 * Pure browser-bundleable (no node-builtin imports).
 *
 * @connexum/ai-governance  F-NEW-PRODUCT-SANDBOX-REPLAY (player)
 */
import type { ReplaySequence } from './sandbox-replay.js';
import type { TimelineRow } from './runtime-event-renderer.js';
export interface ReplayPlayerOptions {
    /** Speed multiplier; 1 = real time, 5 = 5x faster. Default 1. */
    speedMultiplier?: number;
    /** Override the start timestamp; default now. */
    startIso?: string;
    /** Custom scheduler (tests inject a deterministic clock). */
    schedule?: (cb: () => void, delayMs: number) => () => void;
}
export interface ReplayPlayer {
    /** Start playback. Idempotent — second call is a no-op. */
    start(): void;
    /** Stop playback before the sequence ends; fires done with {ok:false}. */
    stop(): void;
    /** Whether the player is currently emitting events. */
    isPlaying(): boolean;
    /** Whether the sequence has fully completed. */
    isDone(): boolean;
}
export interface ReplayCallbacks {
    /** Fired once per emitted row (in sequence order). */
    onRow: (row: TimelineRow) => void;
    /** Fired once when playback completes (or stops). */
    onDone?: (result: {
        ok: boolean;
        rowsEmitted: number;
        reason?: string;
    }) => void;
}
export declare function createReplayPlayer(sequence: ReplaySequence, callbacks: ReplayCallbacks, options?: ReplayPlayerOptions): ReplayPlayer;
/**
 * Convenience: synchronously realise all rows of a sequence without any
 * scheduling delay. Useful for SSR / pre-render of the demo.
 */
export declare function realiseSequence(sequence: ReplaySequence, startIso?: string): TimelineRow[];
//# sourceMappingURL=replay-player.d.ts.map