import { TYPE_LANGUAGE_SUPPORT } from '@libs-ui/interfaces-types'; /** * Tiện ích quản lý Cache, hỗ trợ cả LocalStorage (đồng bộ) và IndexedDB (bất đồng bộ) * Tự động mã hóa dữ liệu và xử lý thời gian hết hạn */ export declare class UtilsCache { static readonly CACHE_EXPIRE_TIME_DEFAULT: number; static readonly CACHE_EXPIRE_NONE = -1; static readonly idService: string; static typeKeyClearLocalStorage: string; private static languageKeyCache; private static listKeyKeepWhenClearALll; private static initdEvent?; private static storage; private static dbName; private static itemIndexByKey; private static dbVersion; private static db; /** * Khởi tạo cấu hình cho Cache * @param config Cấu hình khởi tạo (tên DB, key ngôn ngữ, event clear...) */ static init(config: { indexedDBName?: string; languageKeyCache?: string; typeKeyClearLocalStorage?: string; listKeyKeepWhenClearAll?: Array; }): void; /** * Lưu ngôn ngữ hiện tại vào cache * @param lang Mã ngôn ngữ (vi, en, ...) */ static setLang(lang: TYPE_LANGUAGE_SUPPORT): void; /** * Lấy ngôn ngữ từ cache * @returns Mã ngôn ngữ */ static getLang(): TYPE_LANGUAGE_SUPPORT; private static openDB; private static getObjectStore; private static get LocalStorage(); private static getLocalStorageFakeOnSafari; private static getLocalStorageFake; /** * Lấy giá trị từ IndexedDB theo key (bất đồng bộ) * @param key Khóa cache * @param default_value Giá trị mặc định nếu không tìm thấy * @param isKeyMD5 Nếu true, key đã là MD5. Nếu false (mặc định), sẽ tự động MD5 key. * @returns Promise chứa giá trị đã giải mã */ static GetAsync(key: string, default_value?: any, isKeyMD5?: boolean): Promise; /** * Lấy giá trị từ LocalStorage theo key (đồng bộ) * @param key Khóa cache * @param default_value Giá trị mặc định nếu không tìm thấy * @returns Giá trị đã giải mã hoặc giá trị mặc định */ static Get(key: string, default_value?: any): T; static GetDefaultValueBySpecificKey(key: string, default_value: any): any; /** * Lưu giá trị vào IndexedDB (bất đồng bộ) * @param key Khóa cache * @param value Giá trị cần lưu * @param expireTimeBySecond Thời gian hết hạn (giây). Mặc định 5 phút. Dùng CACHE_EXPIRE_NONE để vĩnh viễn. * @param isKeyMD5 Nếu true, key đã là MD5. * @returns Promise chứa thông tin kết quả */ static SetAsync(key: string, value: any, expireTimeBySecond?: number, isKeyMD5?: boolean): Promise; /** * Lưu giá trị vào LocalStorage (đồng bộ) * @param key Khóa cache * @param value Giá trị cần lưu * @param expireTimeBySecond Thời gian hết hạn (giây). Mặc định 5 phút. * @returns true nếu thành công */ static Set(key: string, value: any, expireTimeBySecond?: number): boolean; /** * Xóa một key trong IndexedDB * @param key Khóa cần xóa * @param isMD5 Nếu true, key đã được MD5. */ static ClearAsync(key: string, isMD5?: boolean): Promise; /** * Xóa một key trong LocalStorage * @param key Khóa cần xóa */ static Clear(key: string): void; /** * Xóa toàn bộ dữ liệu trong IndexedDB */ static ClearAllAsync(): Promise; /** * Xóa toàn bộ dữ liệu trong LocalStorage (kiểm soát các key đặc biệt) */ static ClearAll(): void; private static GetDataByKeys; private static SetDataByKey; /** * Xóa tất cả các khóa bắt đầu bằng tiền tố nhất định trong IndexedDB * @param keyCacheStartWith Tiền tố khóa * @param isKeyMD5 Nếu true, tiền tố đã được MD5. */ static DeleteKeyStartWithAsync(keyCacheStartWith: string, isKeyMD5?: boolean): Promise; /** * Xóa tất cả các khóa bắt đầu bằng tiền tố nhất định trong LocalStorage * @param keyCache Tiền tố khóa * @param isMD5 Nếu true, tiền tố sẽ được MD5 trước khi so sánh. */ static DeleteKeyStartWith(keyCache: string, isMD5?: boolean): void; /** * Xóa hoàn toàn cơ sở dữ liệu IndexedDB * @param dbName Tên DB, mặc định theo cấu hình. */ static DeleteDatabaseIndexDB(dbName?: string): Promise; }