// eslint-disable-next-line @typescript-eslint/no-require-imports const { contextBridge, ipcRenderer } = require('electron'); contextBridge.exposeInMainWorld('electronAPI', { versions: { electron: process.versions.electron, node: process.versions.node, chrome: process.versions.chrome, }, install: { checkPrerequisites: () => ipcRenderer.invoke('install:check-prerequisites'), start: (options?: { includeNode?: boolean }) => ipcRenderer.invoke('install:start', options), cancel: () => ipcRenderer.invoke('install:cancel'), getLogs: () => ipcRenderer.invoke('install:get-logs'), onProgress: (callback: (data: unknown) => void) => { const listener = (_event: unknown, data: unknown) => callback(data); ipcRenderer.on('install:progress', listener); return () => { ipcRenderer.removeListener('install:progress', listener); }; }, }, });