import { EventEmitter } from "events"; import type { SavedGame } from "narraleaf-react"; import { SavedGameMeta, SavedGameResult, SaveType } from "../../shared/types/save"; import { PlatformInfo } from "../../shared/utils/os"; import { JsonStore } from "../../main/utils/jsonStore"; import { HookCallback, Hooks } from "../../main/utils/data"; import { Logger } from "../../shared/utils/logger"; import { CrashReport } from "../../main/app/mgr/crashManager"; import { TranslationManager } from "../../main/app/mgr/translationManager"; import { CrashManager, DevToolManager, MenuManager, ProtocolManager, StorageManager, WindowManager } from "./mgr/managers"; import type { AppEventToken } from "./types"; import type { AppConfig } from "../../main/app/config"; import type { AppWindow, WindowConfig } from "../../main/app/mgr/window/appWindow"; type AppEvents = { "ready": []; }; export declare enum AppDataNamespace { save = "msg_storage", flags = "app_flags", json = "json_storage" } export declare enum HookEvents { AfterReady = "afterReady", AfterMainWindowClose = "afterMainWindowClose", OnTerminate = "onTerminate" } export interface AppDependecy { crashManager: CrashManager; devToolManager: DevToolManager; menuManager: MenuManager; protocolManager: ProtocolManager; storageManager: StorageManager; windowManager: WindowManager; translationManager: TranslationManager; } export declare class App { static Constants: { readonly AppLifeCycleViolationTimeout: 5000; }; static Events: { readonly Ready: "ready"; }; /** * This method is used to create a new instance of the App class. * @internal */ static create(config: AppConfig): App; readonly electronApp: Electron.App; readonly platform: PlatformInfo; readonly events: EventEmitter; readonly config: AppConfig; readonly hooks: Hooks; readonly logger: Logger; readonly translationManager: TranslationManager; readonly crashManager: CrashManager; readonly devToolManager: DevToolManager; readonly menuManager: MenuManager; readonly protocolManager: ProtocolManager; readonly storageManager: StorageManager; readonly windowManager: WindowManager; private initialized; private constructor(); onReady(fn: (...args: AppEvents["ready"]) => void): AppEventToken; getConfig(): import("../../main/app/config").BaseAppConfig & (import("../../main/app/config").IWindowsConfig | import("../../main/app/config").ILinuxConfig | import("../../main/app/config").IMacConfig); getCrashReport(): CrashReport | null; getPreloadScript(): string; getEntryFile(): string; getPublicDir(): string; /** * Returns the build directory of the app * * For example, under development mode, it returns the directory of the `.narraleaf` folder which contains `app-dev` * Under production mode, it returns the virtual directory of the app.asar file which contains `app-build` and `package.json` * * The structure of the build directory */ getAppPath(): string; getRendererBuildDir(): string; /** * Check if HTTP dev server mode is enabled */ isHttpDevServerMode(): boolean; /** * Quit the app without any error */ quit(): void; /** * Quit the app and create a crash report * * If the reason is not provided, the crash will be considered critical */ crash(reason?: string, { disableRecovery }?: { disableRecovery?: boolean; }): void; launchApp(config?: Partial): Promise; isPackaged(): boolean; getUserDataDir(): string; createJsonStore>(name: string): JsonStore; createExposedJsonStore>(name: string): JsonStore; exposeJsonStore>(store: JsonStore): void; saveGameData(data: SavedGame, type: SaveType, id: string, preview?: string): Promise; readGameData(id: string): Promise; listGameData(): Promise; deleteGameData(id: string): Promise; private prepare; hook(event: HookEvents, fn: HookCallback): AppEventToken; onceHook(event: HookEvents, fn: HookCallback): AppEventToken; unhook(event: HookEvents, fn: HookCallback): void; emitHook(event: HookEvents): void; private emit; /** * Setup development userData path if running in development mode * This must be called before creating managers that depend on userData path */ private setupUserDataDir; } export {};