import { IPC_EVENTS } from '@common/constants' declare global { // 定义每个通道的参数和返回值类型 interface IPCTypings { // 同步通信 [IPC_EVENTS.APP_MINIMIZE]: { params: [window:number] return: {success: boolean, error?: string} } [IPC_EVENTS.APP_MAXIMIZE]: { params: [window:number] return: {success: boolean, error?: string} } [IPC_EVENTS.GET_WINDOW_ID]: { params: [] return: number } // 异步通信 [IPC_EVENTS.FILE_READ]: { params: [filePath: string] return: Promise<{success: boolean, data?: string, error?: string}> } [IPC_EVENTS.FILE_WRITE]: { params: [filePath: string, content: string] return: Promise<{success: boolean, error?: string}> } // 事件通信 [IPC_EVENTS.TIME_UPDATE]: { params: [time: string] return: void } [IPC_EVENTS.CUSTOM_EVENT]: { params: [message: string] return: void } } // 定义IPC API 接口 interface WindowApi { invoke(channel: T, ...args: IPCTypings[T]['params']): IPCTypings[T]['return'], invokeAsync(channel: T, ...args: IPCTypings[T]['params']): IPCTypings[T]['return'], on(channel: T, callback: (...args: IPCTypings[T]['params']) => void): () => void send(channel: T, ...args: IPCTypings[T]['params']): void, getCurrentWindowId(): number, versions: NodeJS.ProcessVersions, external: { open: (url: string) => void }, window: { minimize: () => void, maximize: () => void, close: () => void }, app: { setFrameless: (route?: string) => void }, tabs: { create: (url?: string) => void, list: () => void, navigate: (tabId: string, url: string) => void, reload: (tabId: string) => void, back: (tabId: string) => void, forward: (tabId: string) => void, switch: (tabId: string) => void, close: (tabId: string) => void, on: (event: 'tab-updated' | 'tab-created' | 'tab-closed' | 'tab-switched', handler: (payload: any) => void) => void }, readFile: (filePath: string) => Promise<{success: boolean, data?: string, error?: string}>, logToMain: (logLevel: string, message: string) => void, } declare interface Window { api: WindowApi; } }