import { StorageManager } from './storage'; /** * Persistence configuration */ export interface PersistConfig { /** Storage key */ key: string; /** Storage manager to use */ storage?: StorageManager; /** Version for migrations */ version?: number; /** Time-to-live in milliseconds */ ttl?: number; /** State transformer before persisting */ serialize?: (state: T) => unknown; /** State transformer after loading */ deserialize?: (persisted: unknown) => T; /** Whitelist of keys to persist (if not provided, persist all) */ whitelist?: Array; /** Blacklist of keys to exclude from persistence */ blacklist?: Array; /** Migration functions by version */ migrations?: Record unknown>; /** Whether state contains PHI (will skip persistence) */ containsPHI?: boolean; /** Merge strategy for hydration */ merge?: 'shallow' | 'deep' | 'replace'; /** Throttle persistence writes (ms) */ throttle?: number; /** Debug mode */ debug?: boolean; } /** * Rehydrate result */ export interface RehydrateResult { state: T | null; error: Error | null; migrated: boolean; fromVersion: number | null; } /** * State persistence manager */ export declare class StatePersister { private config; private lastPersistTime; private pendingPersist; constructor(config: PersistConfig); /** * Persist state to storage */ persist(state: T): Promise; /** * Rehydrate state from storage */ rehydrate(): Promise>>; /** * Merge persisted state with initial state */ mergeStates(initial: T, persisted: Partial | null): T; /** * Clear persisted state */ clear(): void; /** * Force immediate persistence */ flush(state: T): Promise; /** * Filter state based on whitelist/blacklist */ private filterState; /** * Persist state immediately */ private persistImmediate; /** * Run migrations */ private runMigrations; } /** * Zustand persist middleware options */ export interface ZustandPersistOptions extends Omit, 'key'> { name: string; } /** * Create Zustand persist middleware */ export declare function createZustandPersist(options: ZustandPersistOptions): { persist: StatePersister; onFinishHydration: (fn: () => void) => () => void; hasHydrated: () => boolean; rehydrate: () => Promise; onHydrate: (listener: () => void) => () => void; clearStorage: () => void; getPersister: () => StatePersister; }; /** * Redux persist storage adapter */ export declare function createReduxPersistStorage(storage?: StorageManager): { getItem: (key: string) => Promise; setItem: (key: string, value: string) => Promise; removeItem: (key: string) => void; }; /** * Create PHI-safe transform for redux-persist */ export declare function createPHISafeTransform(phiKeys: string[]): { in: (state: Record, key: string) => Record | undefined; out: (state: Record) => Record; }; /** * Session-scoped state that clears on tab close */ export declare class SessionStatePersister extends StatePersister { constructor(config: Omit, 'storage'>); } /** * State snapshot for undo/redo or debugging */ export interface StateSnapshot { id: string; state: T; timestamp: number; label?: string; } /** * State snapshot manager for undo/redo functionality */ export declare class StateSnapshotManager { private snapshots; private currentIndex; private readonly maxSnapshots; private readonly persister; constructor(key: string, options?: { maxSnapshots?: number; persist?: boolean; }); /** * Take a snapshot */ snapshot(state: T, label?: string): void; /** * Undo to previous snapshot */ undo(): T | null; /** * Redo to next snapshot */ redo(): T | null; /** * Check if can undo */ canUndo(): boolean; /** * Check if can redo */ canRedo(): boolean; /** * Get current snapshot */ getCurrent(): StateSnapshot | null; /** * Get all snapshots */ getSnapshots(): StateSnapshot[]; /** * Clear all snapshots */ clear(): void; /** * Restore from storage */ restore(): Promise; } /** * Create a state persister */ export declare function createStatePersister(config: PersistConfig): StatePersister; /** * Create a session state persister */ export declare function createSessionPersister(config: Omit, 'storage'>): SessionStatePersister; /** * Create a snapshot manager */ export declare function createSnapshotManager(key: string, options?: { maxSnapshots?: number; persist?: boolean; }): StateSnapshotManager;