export type DesktopExportBegin = { width: number; height: number; fpsNumerator: number; fpsDenominator: number; format: "mp4" | "webm"; quality: "low" | "medium" | "high" | "very_high"; hasAudio: boolean; sampleRate: number; channels: number; defaultFileName: string; }; export type OpenCutDesktop = { isDesktop: true; exportBegin: ( opts: DesktopExportBegin, ) => Promise<{ id: string; filePath: string } | null>; exportWriteAudio: (id: string, pcm: ArrayBuffer) => Promise; exportWriteFrame: (id: string, rgba: ArrayBuffer) => Promise; exportFinish: (id: string) => Promise; exportCancel: (id: string) => Promise; revealFile: (path: string) => Promise; }; declare global { interface Window { opencutDesktop?: OpenCutDesktop; } } export function getDesktopBridge(): OpenCutDesktop | null { if (typeof window === "undefined") return null; return window.opencutDesktop ?? null; }