import { ipcMain } from 'electron' export function mainOn(name: string, listener: LX.IpcMainEventListener): void export function mainOn(name: string, listener: LX.IpcMainEventListenerParams): void export function mainOn(name: string, listener: LX.IpcMainEventListenerParams): void { ipcMain.on(name, (event, params) => { listener({ event, params }) }) } export function mainOnce(name: string, listener: LX.IpcMainEventListener): void export function mainOnce(name: string, listener: LX.IpcMainEventListenerParams): void export function mainOnce(name: string, listener: LX.IpcMainEventListenerParams): void { ipcMain.once(name, (event, params) => { listener({ event, params }) }) } export const mainOff = (name: string, listener: (...args: any[]) => void) => { ipcMain.removeListener(name, listener) } export const mainOffAll = (name: string) => { ipcMain.removeAllListeners(name) } export function mainHandle(name: string, listener: LX.IpcMainInvokeEventListener): void export function mainHandle(name: string, listener: LX.IpcMainInvokeEventListenerParams): void export function mainHandle(name: string, listener: LX.IpcMainInvokeEventListenerValue): void export function mainHandle(name: string, listener: LX.IpcMainInvokeEventListenerParamsValue): void export function mainHandle(name: string, listener: LX.IpcMainInvokeEventListenerParamsValue): void { ipcMain.handle(name, async(event, params) => { return await listener({ event, params }) }) } export function mainHandleOnce(name: string, listener: LX.IpcMainInvokeEventListener): void export function mainHandleOnce(name: string, listener: LX.IpcMainInvokeEventListenerParams): void export function mainHandleOnce(name: string, listener: LX.IpcMainInvokeEventListenerValue): void export function mainHandleOnce(name: string, listener: LX.IpcMainInvokeEventListenerParamsValue): void export function mainHandleOnce(name: string, listener: LX.IpcMainInvokeEventListenerParamsValue): void { ipcMain.handleOnce(name, async(event, params) => { return await listener({ event, params }) }) } export const mainHandleRemove = (name: string) => { ipcMain.removeHandler(name) } export function mainSend(window: Electron.BrowserWindow, name: string): void export function mainSend(window: Electron.BrowserWindow, name: string, params: T): void export function mainSend(window: Electron.BrowserWindow, name: string, params?: T): void { window.webContents.send(name, params) }