import { App } from "../../main/app/app"; import { PlatformInfo } from "../../shared/utils/os"; import { StoreProvider } from "../../main/app/mgr/storage/storeProvider"; import { MainPlatform } from "@narraleaf/shared"; export interface BaseAppConfig { forceSandbox: boolean; recoveryCreationInterval: number; appErrorHandling: "terminate" | "raw" | "restart"; deleteCorruptedSaves: boolean; store?: StoreProvider; } export interface IWindowsConfig { /** * Application icon path relative to the project root * * should be a path to a .ico file */ appIcon?: string; } export interface ILinuxConfig { /** * Application icon path relative to the project root * * should be a path to a .png file */ appIcon?: string; } export interface IMacConfig { /** * Application icon path relative to the project root * * should be a path to a .icns file */ appIcon?: string; } type PlatformConfigMap = { [MainPlatform.Windows]: IWindowsConfig; [MainPlatform.Linux]: ILinuxConfig; [MainPlatform.Mac]: IMacConfig; }; export declare class AppConfig { static readonly DefaultBaseConfig: BaseAppConfig; static readonly DefaultWindowsConfig: IWindowsConfig; static readonly DefaultLinuxConfig: ILinuxConfig; static readonly DefaultMacConfig: IMacConfig; static Platform: typeof MainPlatform; baseConfig: BaseAppConfig; platformConfigs: PlatformConfigMap; constructor(baseConfig?: Partial); /** * Configures platform-specific settings for the application. * Merges the provided configuration with existing platform settings using deep merge. * * @param platform - The target platform to configure * @param config - Partial configuration object to merge with existing settings * @returns This instance for method chaining */ configure(platform: MainPlatform, config: Partial): this; /** * Configures Windows-specific application settings. * Convenience method for configuring Windows platform settings. * * @param config - Partial Windows configuration object * @returns This instance for method chaining */ configWindows(config: Partial): this; /** * Configures Linux-specific application settings. * Convenience method for configuring Linux platform settings. * * @param config - Partial Linux configuration object * @returns This instance for method chaining */ configLinux(config: Partial): this; /** * Configures macOS-specific application settings. * Convenience method for configuring macOS platform settings. * * @param config - Partial macOS configuration object * @returns This instance for method chaining */ configMac(config: Partial): this; /** * Creates and returns a new App instance using this configuration. * Initializes the application with the configured settings. * * @returns A new App instance configured with this AppConfig */ create(): App; /** * Maps platform information to the corresponding MainPlatform enum value. * Converts detailed platform info to simplified platform categories. * * @param platform - Platform information object containing system details * @returns The corresponding MainPlatform enum value * @throws Error if the platform system is not supported */ getMainPlatform(platform: PlatformInfo): MainPlatform; /** * Retrieves the complete configuration for a specific platform. * Merges base configuration with platform-specific settings. * * @param platform - Platform information to get configuration for * @returns Merged configuration object containing both base and platform-specific settings */ getConfig(platform: PlatformInfo): BaseAppConfig & PlatformConfigMap[MainPlatform]; } export declare const AppLifeCycleViolationTimeout = 5000; export {};