/**
 * IndexedDB
 *
 * @deprecated
 * @category Storage
 * @description
 * 这个类为 IndexedDB 提供了一个包装器，IndexedDB 是一个用于客户端存储大量结构化数据（包括文件/二进制对象）的 API。
 * 它允许你以结构化格式存储和检索数据，并使用各种方法查询和操作这些数据。
 *
 * @Methods
 * | 方法名 | 描述 | 参数 | 返回值 |
 * |------|------|------|--------|
 * | `open` | 打开数据库连接 | — | `Promise<IDBDatabase>` |
 * | `add` | 添加一个新的键值对到对象存储中 | `key: IDBValidKey` <br> `value: any` | `Promise<void>` |
 * | `set` | 更新对象存储中已存在的键值对 | `key: IDBValidKey` <br> `value: any` | `Promise<void>` |
 * | `get` | 从对象存储中检索指定键的值 | `key: IDBValidKey` | `Promise<any>` |
 * | `delete` | 从对象存储中删除指定键对应的数据 | `key: IDBValidKey` | `Promise<void>` |
 * | `clear` | 清空对象存储中的所有数据 | — | `Promise<void>` |
 *
 * @example
 * ```typescript
 * import { IndexedDB } from 'dt-utils';
 *
 * // 初始化数据库
 * const db = new IndexedDB('userDB', 1, 'users');
 * await db.open();
 *
 * // 添加数据
 * await db.add('user1', { name: 'John', age: 30 });
 *
 * // 获取数据
 * const user = await db.get('user1');
 *
 * // 更新数据
 * await db.set('user1', { name: 'John', age: 31 });
 *
 * // 删除数据
 * await db.delete('user1');
 *
 * // 清空所有数据
 * await db.clear();
 * ```
 *
 * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB | MDN IndexedDB 使用指南}
 * @see {@link https://caniuse.com/#feat=indexeddb | 浏览器兼容性}
 */
declare class IndexedDB {
    private _db;
    private _version;
    private _database;
    private _storeName;
    private _openLog;
    /**
     * 创建一个新的 IndexedDB 对象
     * @param database 数据库名称
     * @param version 数据库版本
     * @param storeName 对象存储名称
     * @param openLog 是否记录 IndexedDB 的变更日志
     */
    constructor(database: string, version: number, storeName: string, openLog?: boolean);
    private checkBrowserSupport;
    /**
     * @hidden
     * 打开在构造函数中指定的数据库。
     * 此方法返回一个 Promise，解析为数据库实例。
     */
    open(): Promise<IDBDatabase>;
    private createConnection;
    private handleUpgrade;
    private setupVersionChangeHandler;
    private createTransactionStore;
    /** @hidden */
    add<T>(key: string, value: T): Promise<IDBRequest>;
    /** @hidden */
    set<T>(key: string, value: T): Promise<IDBRequest>;
    /** @hidden */
    get<T>(key: string): Promise<T>;
    /** @hidden */
    delete(key: string): Promise<IDBRequest>;
    /** @hidden */
    clear(): Promise<IDBRequest>;
    private ensureConnection;
    private executeStoreOperation;
    private log;
}
export default IndexedDB;
