/** * Runtime-detected default storage backend. * * Imported via `@lostgradient/weft/storage/auto`. Resolves a persistent * storage adapter appropriate for the current runtime: * * 1. Bun -> `BunSQLiteStorage` * 2. Node -> `NodeSQLiteStorage` * 3. WebExtension -> `WebExtensionStorage` * 4. Browser / Service Worker -> `IndexedDBStorage` * 5. otherwise -> throw * * SQLite path policy: * - `process.env.WEFT_DEFAULT_STORAGE_PATH` if set * - else `${tmpdir()}/weft-default/.db` * * The parent directory is created (recursive) before the SQLite path is * returned. Browser and extension adapters use their own defaults. * * `resolveDefaultStorage()` is for developer convenience. Production * deployments should pick an explicit adapter and pass it to * `new Engine({ storage })`. * * @module @lostgradient/weft/storage/auto */ import type { Storage as WeftStorage } from './interface.ts'; type RuntimeGlobalsLike = { Bun?: unknown; browser?: { storage?: unknown; }; chrome?: { storage?: unknown; }; indexedDB?: unknown; IDBKeyRange?: unknown; process?: { cwd?: () => string; env?: Record; versions?: { node?: unknown; }; }; }; /** * Resolve a runtime-appropriate persistent storage adapter. * * Bun and Node resolve to SQLite. WebExtension contexts resolve to * `WebExtensionStorage`; browser and Service Worker contexts with IndexedDB * resolve to `IndexedDBStorage`. * * @example * ```ts * import { Engine } from '@lostgradient/weft'; * import { resolveDefaultStorage } from '@lostgradient/weft/storage/auto'; * * await using storage = await resolveDefaultStorage(); * await using engine = new Engine({ storage }); * void engine; * ``` */ export declare function resolveDefaultStorage(runtimeGlobals?: RuntimeGlobalsLike): Promise; export {};