/** * Headless browser capture — opens the StreamView in headless Chrome and * saves screenshots to a temp file. FFmpeg reads the temp file using * -loop 1 to continuously re-read the latest frame. * * This approach avoids the pipe bottleneck — FFmpeg reads at its own * pace while the browser updates the file independently. * * Visual parity with Electron: * - Appends `?popout` to the URL so the app renders StreamView directly * (skips onboarding, auth gates, navigation chrome). * - Enables SwiftShader for WebGL so VRM avatar renders identically. * - Seeds localStorage with overlay layout, theme, and avatar index so * the first rendered frame matches the configured appearance. * - Uses `waitUntil: "networkidle0"` to ensure all assets load before capture. * - Keeps CSS animations/transitions enabled for visual parity. */ /** Path to the temp frame file that FFmpeg reads */ export declare const FRAME_FILE: string; export interface BrowserCaptureConfig { url: string; width?: number; height?: number; fps?: number; quality?: number; /** Optional overlay layout JSON to seed into localStorage before page load. */ overlayLayout?: string; /** Theme name to apply (e.g. "milady", "haxor", "psycho"). */ theme?: string; /** Avatar VRM index (1–8). */ avatarIndex?: number; /** Destination ID — seeds the destination-specific localStorage key. */ destinationId?: string; } export declare function startBrowserCapture(config: BrowserCaptureConfig): Promise; export declare function stopBrowserCapture(): Promise; export declare function isBrowserCaptureRunning(): boolean; export declare function hasFrameFile(): boolean; //# sourceMappingURL=browser-capture.d.ts.map