import { ElectronAPI } from '@electron-toolkit/preload'; import type { AppUpdateState } from '../shared/appUpdate'; interface API { minimize: () => void; maximize: () => void; close: () => void; quitApp: () => void; dragStart: (data: any) => void; miniTray: () => void; miniWindow: () => void; restore: () => void; restart: () => void; resizeWindow: (width: number, height: number) => void; resizeMiniWindow: (showPlaylist: boolean) => void; openLyric: () => void; sendLyric: (data: any) => void; sendSong: (data: any) => void; unblockMusic: (id: number, data: any, enabledSources?: string[]) => Promise; onLyricWindowClosed: (callback: () => void) => void; onLyricWindowReady: (callback: () => void) => void; getAppUpdateState: () => Promise; checkAppUpdate: (manual?: boolean) => Promise; downloadAppUpdate: () => Promise; installAppUpdate: () => Promise; openAppUpdatePage: () => Promise; onAppUpdateState: (callback: (state: AppUpdateState) => void) => void; removeAppUpdateListeners: () => void; onLanguageChanged: (callback: (locale: string) => void) => void; importCustomApiPlugin: () => Promise<{ name: string; content: string } | null>; importLxMusicScript: () => Promise<{ name: string; content: string } | null>; invoke: (channel: string, ...args: any[]) => Promise; getSearchSuggestions: (keyword: string) => Promise; lxMusicHttpRequest: (request: { url: string; options: any; requestId: string }) => Promise; lxMusicHttpCancel: (requestId: string) => Promise; /** 扫描指定文件夹中的本地音乐文件 */ scanLocalMusic: (folderPath: string) => Promise<{ files: string[]; count: number }>; /** 扫描指定文件夹中的本地音乐文件(包含修改时间) */ scanLocalMusicWithStats: ( folderPath: string ) => Promise<{ files: { path: string; modifiedTime: number }[]; count: number }>; /** 批量解析本地音乐文件元数据 */ parseLocalMusicMetadata: ( filePaths: string[] ) => Promise; // Download manager downloadAdd: (task: any) => Promise; downloadAddBatch: (tasks: any) => Promise<{ batchId: string; taskIds: string[] }>; downloadPause: (taskId: string) => Promise; downloadResume: (taskId: string) => Promise; downloadCancel: (taskId: string) => Promise; downloadCancelAll: () => Promise; downloadGetQueue: () => Promise; downloadSetConcurrency: (n: number) => void; downloadGetCompleted: () => Promise; downloadDeleteCompleted: (filePath: string) => Promise; downloadClearCompleted: () => Promise; getEmbeddedLyrics: (filePath: string) => Promise; downloadProvideUrl: (taskId: string, url: string) => Promise; onDownloadProgress: (cb: (data: any) => void) => void; onDownloadStateChange: (cb: (data: any) => void) => void; onDownloadBatchComplete: (cb: (data: any) => void) => void; onDownloadRequestUrl: (cb: (data: any) => void) => void; removeDownloadListeners: () => void; } // 自定义IPC渲染进程通信接口 interface IpcRenderer { send: (channel: string, ...args: any[]) => void; invoke: (channel: string, ...args: any[]) => Promise; on: (channel: string, listener: (...args: any[]) => void) => () => void; removeAllListeners: (channel: string) => void; } declare global { interface Window { electron: ElectronAPI; api: API; ipcRenderer: IpcRenderer; $message: any; } }