import type { AppConfig } from "../../../types/config"; export { sanitizeLayout } from "../layout"; export interface ConfigStoreHost { getDataDir(): Promise; loadConfig(dataDir: string): Promise; saveConfig(config: AppConfig): Promise; initDataDir(dataDir: string): Promise; resetAllData(dataDir: string): Promise; exportConfig(config: AppConfig, destPath: string): Promise; importConfig(dataDir: string, srcPath: string): Promise; } let configuredHost: ConfigStoreHost | null = null; let nodeHostPromise: Promise | null = null; export function setConfigStoreHost(host: ConfigStoreHost | null): void { configuredHost = host; } async function loadNodeHost(): Promise { if (!nodeHostPromise) { nodeHostPromise = import("./node") as Promise; } return nodeHostPromise; } async function getHost(): Promise { if (configuredHost) return configuredHost; if (typeof Bun === "undefined") { throw new Error("Config store host is not configured for this renderer."); } return loadNodeHost(); } export async function getDataDir(): Promise { return (await getHost()).getDataDir(); } export async function loadConfig(dataDir: string): Promise { return (await getHost()).loadConfig(dataDir); } export async function saveConfig(config: AppConfig): Promise { return (await getHost()).saveConfig(config); } export async function initDataDir(dataDir: string): Promise { return (await getHost()).initDataDir(dataDir); } export async function resetAllData(dataDir: string): Promise { return (await getHost()).resetAllData(dataDir); } export async function exportConfig(config: AppConfig, destPath: string): Promise { return (await getHost()).exportConfig(config, destPath); } export async function importConfig(dataDir: string, srcPath: string): Promise { return (await getHost()).importConfig(dataDir, srcPath); }