import type { FrameEncoder, FormatConfigs } from "../encoders.js"; export type Timecode = { start: number; end: number; duration?: number; framerate: number; }; type CaptureStepSuccess = { kind: 'next-frame'; nextTimeMs: number; }; type CaptureStepStop = { kind: 'stop'; }; type CaptureStepError = { kind: 'error'; error: 'NOT_RECORDING' | string; }; type CaptureStep = CaptureStepSuccess | CaptureStepError | CaptureStepStop; export declare class VideoCapture { /** True if recording new canvas frames, false when saving, idle, etc. */ recording: boolean; /** True when working on a image frame capture. */ capturing: boolean; timeMs: number; timecode: Timecode | null; encoder: FrameEncoder | null; filename: string | null; onStop?: (() => void) | null; constructor(); isRecording(): boolean; /** * Start recording. */ render({ Encoder, formatConfigs, timecode, filename, onStop }: { Encoder: typeof FrameEncoder; formatConfigs: Partial; timecode: Timecode; filename?: string; onStop?: () => void; }): void; /** * Capture a frame of the canvas. */ capture(canvas: HTMLCanvasElement, proceedToNextFrame: (nextTimeMs: number) => void): void; /** * Stop and save recording. Execute onComplete when finished. */ stop({ onComplete, onSave, onStopped, abort }: { onComplete?: () => void; onSave?: (blob: Blob | null) => void; onStopped?: () => void; abort?: boolean; }): void; download(blob?: Blob | null): boolean; _save(callback?: (blob: Blob | null) => void): Promise; _sanitizeFilename(filename?: string): string; _sanatizeTimecode(timecode: Timecode): { start: number; end: number; duration: number; framerate: number; }; /** * Capture the current canvas. */ _capture(canvas: HTMLCanvasElement): Promise; _step(): CaptureStep; _getNextTimeMs(): number; } export {}; //# sourceMappingURL=video-capture.d.ts.map