import { contextBridge, ipcRenderer } from 'electron' contextBridge.exposeInMainWorld('ruwioDesktop', { platform: process.platform, versions: { electron: process.versions.electron, chrome: process.versions.chrome, node: process.versions.node, }, onMenuCommand(callback: (command: string) => void) { const listener = (_event: Electron.IpcRendererEvent, command: string) => callback(command) ipcRenderer.on('ruwio:menu-command', listener) return () => { ipcRenderer.removeListener('ruwio:menu-command', listener) } }, renderMp4(options: { scene: unknown fps?: number crf?: number preset?: string suggestedName?: string }) { return ipcRenderer.invoke('ruwio:render-mp4', options) }, onRenderProgress(callback: (event: { jobId: string progress: number done: boolean error?: string }) => void) { const listener = (_event: Electron.IpcRendererEvent, payload: { jobId: string progress: number done: boolean error?: string }) => callback(payload) ipcRenderer.on('ruwio:render-progress', listener) return () => { ipcRenderer.removeListener('ruwio:render-progress', listener) } }, cancelRender(jobId: string) { return ipcRenderer.invoke('ruwio:render-cancel', jobId) }, })