import type { CatalogueCategory, CatalogueEntry, Game, GameShop, HowLongToBeatCategory, ShopDetails, TorrentProgress, UserPreferences, } from "@types"; import type { DiskSpace } from "check-disk-space"; declare global { declare module "*.svg" { const content: React.FunctionComponent>; export default content; } interface Electron { /* Torrenting */ startGameDownload: ( repackId: number, objectID: string, title: string, shop: GameShop, downloadPath: string ) => Promise; cancelGameDownload: (gameId: number) => Promise; pauseGameDownload: (gameId: number) => Promise; resumeGameDownload: (gameId: number) => Promise; onDownloadProgress: ( cb: (value: TorrentProgress) => void ) => () => Electron.IpcRenderer; /* Catalogue */ searchGames: (query: string) => Promise; getCatalogue: (category: CatalogueCategory) => Promise; getGameShopDetails: ( objectID: string, shop: GameShop, language: string ) => Promise; getRandomGame: () => Promise; getHowLongToBeat: ( objectID: string, shop: GameShop, title: string ) => Promise; getGames: ( take?: number, prevCursor?: number ) => Promise<{ results: CatalogueEntry[]; cursor: number }>; /* Library */ addGameToLibrary: ( objectID: string, title: string, shop: GameShop ) => Promise; getLibrary: () => Promise; getRepackersFriendlyNames: () => Promise>; openGameInstaller: (gameId: number) => Promise; openGame: (gameId: number, path: string) => Promise; closeGame: (gameId: number) => Promise; removeGame: (gameId: number) => Promise; deleteGameFolder: (gameId: number) => Promise; getGameByObjectID: (objectID: string) => Promise; onPlaytime: (cb: (gameId: number) => void) => () => Electron.IpcRenderer; onGameClose: (cb: (gameId: number) => void) => () => Electron.IpcRenderer; /* User preferences */ getUserPreferences: () => Promise; updateUserPreferences: ( preferences: Partial ) => Promise; /* Hardware */ getDiskFreeSpace: () => Promise; /* Misc */ getOrCacheImage: (url: string) => Promise; openExternal: (src: string) => Promise; getVersion: () => Promise; ping: () => string; getDefaultDownloadsPath: () => Promise; showOpenDialog: ( options: Electron.OpenDialogOptions ) => Promise; platform: NodeJS.Platform; } interface Window { electron: Electron; } }