/**
 * LocalStorageUtil — 基于 IndexedDB 的持久化存储工具，配备内存 LRU 缓存
 *
 * 数据流向：
 * - 写入：立即更新内存缓存（L1），然后异步写入 IndexedDB（L2）
 * - 读取：内存缓存命中直接返回；未命中时触发后台异步预热
 * - 旧版 localStorage 数据在首次读取时自动迁移到 IndexedDB
 *
 * 超大项（默认 > 2MB）跳过内存缓存，直接操作 IndexedDB，
 * 防止单个巨型对象挤出整个缓存。
 */
/** getStorageStats 返回的存储使用情况统计 */
export interface StorageStats {
    /** IndexedDB 中所有 key/value 的估算字节数 */
    indexedDB: number;
    /** 当前内存缓存的 key 数量 */
    memoryCache: number;
    /** 当前内存缓存的估算字节数 */
    memoryCacheSize: number;
    /** 内存缓存的最大字节限制 */
    memoryCacheMaxSize: number;
}
declare class LocalStorageUtil {
    static readonly DB_NAME = "keepwork-personal-store";
    static readonly STORE_NAME = "keyval";
    /** IndexedDB 连接 Promise（单例，全生命周期共享） */
    private static _dbPromise;
    /** 内存 LRU 缓存（L1），key → 任意值 */
    private static _memoryCache;
    /** 当前内存缓存的估算字节数 */
    private static _memoryCacheSize;
    /** 各 key 的最近访问时间戳（用于 LRU 淘汰） */
    private static _memoryCacheAccess;
    /** 内存缓存最大字节限制（10 MB） */
    static MAX_CACHE_SIZE: number;
    /** 单项占内存缓存最大比例（20%），超过此比例的项跳过内存缓存 */
    static MAX_ITEM_SIZE_RATIO: number;
    /** 触发 LRU 淘汰的缓存使用率阈值（80%） */
    static CACHE_EVICTION_THRESHOLD: number;
    static get MAX_ITEM_SIZE_FOR_CACHE(): number;
    /**
     * 估算值在内存中的字节占用（近似值，UTF-16 计算）。
     * @internal
     */
    private static _estimateSize;
    /**
     * 将项写入内存缓存。
     * 超大项跳过缓存；若缓存接近阈值则先触发 LRU 淘汰。
     *
     * @returns 是否成功写入内存缓存
     * @internal
     */
    private static _setCacheItem;
    /** 从内存缓存读取项，并更新 LRU 访问时间。@internal */
    private static _getCacheItem;
    /** 从内存缓存中移除项。@internal */
    private static _removeCacheItem;
    /**
     * LRU 淘汰：按最近访问时间升序逐项删除，直到腾出足够空间。
     * @internal
     */
    private static _evictLRUItems;
    /**
     * 获取（或初始化）IndexedDB 连接，返回单例 Promise。
     * @internal
     */
    private static _getDB;
    /**
     * 在 IndexedDB 事务中执行回调。
     * `callback` 接收 store、resolve、reject 三个参数，
     * 可在其中调用 store 方法并决定 Promise 结果。
     * @internal
     */
    private static _withStore;
    /**
     * 同步写入（立即更新内存缓存，异步写入 IndexedDB）。
     * 适用于写入频繁、读取延迟不敏感的场景。
     *
     * @param key   - 存储键
     * @param value - 要存储的值（任意可序列化对象）
     * @returns 始终返回 true（写入操作已调度）
     */
    static setItem(key: string, value: unknown): boolean;
    /** @internal */
    private static _setItemAsync;
    /**
     * 同步读取（从内存缓存取值，并在后台异步预热缓存）。
     * 若内存缓存未命中，立即返回 `defaultValue` 并在后台加载 IndexedDB 数据。
     *
     * @param key          - 存储键
     * @param defaultValue - 缓存未命中时的默认值（默认 null）
     */
    static getItem<T = unknown>(key: string, defaultValue?: T | null): T | null;
    /** @internal */
    private static _getItemAsync;
    /**
     * 异步读取，保证获得持久化数据。
     * 优先级：内存缓存 → IndexedDB → localStorage 旧版迁移。
     *
     * @param key          - 存储键
     * @param defaultValue - 未找到时的默认值
     */
    static getItemAsync<T = unknown>(key: string, defaultValue?: T | null): Promise<T | null>;
    /**
     * 直接从 IndexedDB 读取（绕过内存缓存，适合需要强一致性的场景）。
     */
    static getFromIndexedDB<T = unknown>(key: string, defaultValue?: T | null): Promise<T | null>;
    /** 直接写入 IndexedDB（绕过内存缓存）。 */
    static setToIndexedDB(key: string, value: unknown): Promise<boolean>;
    /**
     * 获取 IndexedDB 中所有 key 的列表。
     */
    static getAllKeys(): Promise<IDBValidKey[]>;
    /**
     * 同步删除（立即清理内存缓存，异步删除 IndexedDB）。
     */
    static removeItem(key: string): boolean;
    /** @internal */
    private static _removeItemAsync;
    /**
     * 清空所有数据（内存缓存 + IndexedDB）。
     */
    static clear(): boolean;
    /** @internal */
    private static _clearAsync;
    /**
     * 获取存储使用情况统计（内存缓存 + IndexedDB 估算大小）。
     * 用于调试和容量监控。
     */
    static getStorageStats(): Promise<StorageStats>;
}
/** StorageUtil 是 LocalStorageUtil 的别名，保持向后兼容 */
declare const StorageUtil: typeof LocalStorageUtil;
export default LocalStorageUtil;
export { LocalStorageUtil, StorageUtil };
//# sourceMappingURL=LocalStorageUtil.d.ts.map