/** * StorageBackend — Unified storage abstraction layer * * Provides a common interface for AI sub-systems (session, context, memory, * user profile, follow-up) to switch between in-memory and database backends * without changing business logic. * * Usage: * const backend = new MemoryStorageBackend(); * // ... later, when DB is ready: * const dbBackend = new DatabaseStorageBackend(model, { keyField: 'session_id' }); * service.upgradeBackend(dbBackend); */ export interface StorageBackend> { get(key: string): Promise; set(key: string, value: T): Promise; delete(key: string): Promise; list(filter?: Partial): Promise; clear(): Promise; readonly type: 'memory' | 'database'; } /** * In-memory storage backend. */ export declare class MemoryStorageBackend> implements StorageBackend { readonly type: "memory"; private data; get(key: string): Promise; set(key: string, value: T): Promise; delete(key: string): Promise; list(filter?: Partial): Promise; clear(): Promise; } /** * Database model interface aligned with @zhin.js/database's RelatedModel API. */ export interface DbModel { select(...fields: string[]): any; create(data: Record): Promise; update(data: Partial): any; delete(condition: Record): any; } /** * Database-backed storage backend. */ export declare class DatabaseStorageBackend> implements StorageBackend { private model; private options; readonly type: "database"; constructor(model: DbModel, options: { /** The field name used as lookup key (e.g. 'session_id', 'user_id') */ keyField: string; }); get(key: string): Promise; set(key: string, value: T): Promise; delete(key: string): Promise; list(filter?: Partial): Promise; clear(): Promise; } /** * Helper to create a swappable backend ref. * Call `swap(newBackend)` to atomically upgrade from memory to database. */ export declare function createSwappableBackend>(initial: StorageBackend): { backend: StorageBackend; swap: (next: StorageBackend) => void; }; //# sourceMappingURL=storage.d.ts.map