/** * Type declarations for Electron API exposed via preload script */ /** Update status data sent from main process */ type UpdateStatusData = | { status: "available"; version: string } | { status: "available-manual"; version: string; url: string } | { status: "downloading"; percent: number } | { status: "downloaded" } | { status: "error"; message: string } /** Configuration preset interface */ interface ConfigPreset { id: string name: string createdAt: number updatedAt: number config: { AI_PROVIDER?: string AI_MODEL?: string AI_API_KEY?: string AI_BASE_URL?: string TEMPERATURE?: string [key: string]: string | undefined } } /** Result of applying a preset */ interface ApplyPresetResult { success: boolean error?: string env?: Record } /** Proxy configuration interface */ interface ProxyConfig { httpProxy?: string httpsProxy?: string } /** Result of setting proxy */ interface SetProxyResult { success: boolean error?: string devMode?: boolean } /** Result of setting user locale */ interface SetUserLocaleResult { success: boolean error?: string } declare global { interface Window { /** Main window Electron API */ electronAPI?: { /** Current platform (darwin, win32, linux) */ platform: NodeJS.Platform /** Whether running in Electron environment */ isElectron: boolean /** Get application version */ getVersion: () => Promise /** Minimize the window */ minimize: () => void /** Maximize/restore the window */ maximize: () => void /** Close the window */ close: () => void /** Open file dialog and return file path */ openFile: () => Promise /** Save data to file via save dialog */ saveFile: (data: string) => Promise /** Get proxy configuration */ getProxy: () => Promise /** Set proxy configuration (saves and restarts server) */ setProxy: (config: ProxyConfig) => Promise /** Get user's preferred locale */ getUserLocale: () => Promise< "en" | "zh" | "ja" | "zh-Hant" | undefined > /** Set user's preferred locale */ setUserLocale: (locale: string) => Promise /** Listen for update status events from main process */ onUpdateStatus: ( callback: (data: UpdateStatusData) => void, ) => () => void /** Start downloading the available update */ startDownload: () => Promise } /** Settings window Electron API */ settingsAPI?: { /** Get all configuration presets */ getPresets: () => Promise /** Get current preset ID */ getCurrentPresetId: () => Promise /** Get current preset */ getCurrentPreset: () => Promise /** Save (create or update) a preset */ savePreset: (preset: { id?: string name: string config: Record }) => Promise /** Delete a preset */ deletePreset: (id: string) => Promise /** Apply a preset (sets environment variables and restarts server) */ applyPreset: (id: string) => Promise /** Close settings window */ close: () => void } } } export type { ConfigPreset, ApplyPresetResult, ProxyConfig, SetProxyResult, SetUserLocaleResult, }