export interface WorkflowRecordingOptions { /** Opt in to literal keys and input text. Defaults to false. */ captureContent?: boolean; /** Defaults to 20,000; accepted range 1–100,000. */ maxEvents?: number; /** Serialized UTF-16 budget. Defaults to 8 MiB; maximum 64 MiB. */ maxBytes?: number; } export interface WorkflowRecordingEvent { sequence: number; /** Milliseconds since recording started, on the browser's monotonic clock. */ atMs: number; type: string; data: Record; } export interface WorkflowRecordingSnapshot { schemaVersion: 1; sessionId: string; version: string; status: 'recording' | 'stopped' | 'incomplete'; startedAt: number; timeOrigin: number; startTimeMs: number; durationMs: number; captureContent: boolean; viewport: { width: number; height: number; devicePixelRatio: number; }; events: WorkflowRecordingEvent[]; retainedBytes: number; /** Known unsupported inputs. An empty list does not guarantee replay in a different environment. */ replayUnsupportedReasons: string[]; /** Engine work still queued or executing at the end of capture; inputs remain independently recorded. */ pendingIntentIds: string[]; } export interface WorkflowRecording { readonly active: boolean; /** Starts a new session. Throws if a session is active or the instance is destroyed. */ start(options?: WorkflowRecordingOptions): WorkflowRecordingSnapshot; stop(): WorkflowRecordingSnapshot | null; /** Detached data; no editor or worker queries. */ getSnapshot(): WorkflowRecordingSnapshot | null; } export declare class WorkflowRecorder { private readonly root; private readonly version; private session; private events; private startMs; private maxEvents; private maxBytes; private closed; private pendingIntents; private heldKeys; private heldButtons; private cleanups; readonly api: WorkflowRecording; constructor(root: HTMLElement, version: () => string); private attachInputs; private detachInputs; get active(): boolean; private start; observe(type: string, read: () => unknown): void; private unsupported; private fail; private input; private clearHeldInput; private stop; private snapshot; close(): void; }