import { OpenDialogOptions, OpenDialogReturnValue, SaveDialogOptions, SaveDialogReturnValue, } from 'electron'; export type ServerStatusEvent = { type: 'stdout' | 'stderr' | 'error' | 'terminated' | 'other'; message: string; }; export type OSStats = { type: 'linux' | 'windows' | 'macos' | 'unknown'; }; export interface CrossStorage { set(key: string, value: unknown): Promise; get(key: string): Promise; delete(key: string): Promise; save(): Promise; } export type GHGet = { type: 'fw-releases' } | { type: 'asset'; url: string }; export type GHReturn = { asset: [number, string][] | null; ['fw-releases']: | { assets: { browser_download_url: string; name: string; digest: string }[]; prerelease: boolean; tag_name: string; body: string; }[] | null; }; export type DiscordPresence = { enable: false } | { enable: true, activity: string } export interface IElectronAPI { onServerStatus: (cb: (data: ServerStatusEvent) => void) => () => void; openUrl: (url: string) => Promise; osStats: () => Promise; openLogsFolder: () => Promise; openConfigFolder: () => Promise; close: () => void; minimize: () => void; maximize: () => void; showDecorations: (decorations: boolean) => void; setTranslations: (translations: Record) => void; i18nOverride: () => Promise; getStorage: (type: 'settings' | 'cache') => Promise; openDialog: (options: OpenDialogOptions) => Promise; saveDialog: (options: SaveDialogOptions) => Promise; log: (type: 'info' | 'error' | 'warn', ...args: unknown[]) => void; openFile: (path: string) => void; ghGet: (options: T) => Promise; setPresence: (options: DiscordPresence) => void; } declare global { interface Window { electronAPI: IElectronAPI; } }