import { DBConfig } from '.';
import { IndexDBItem } from './entity';
type QueryCondition = {
    field: string;
    value: any;
    operator?: Operator;
};
export declare const enum Operator {
    Equal = 1,
    NotEqual = 2,
    LessThan = 3,
    GreaterThan = 4,
    LessThanOrEqual = 5,
    GreaterThanOrEqual = 6
}
export declare class IndexDBSaver {
    private _db?;
    constructor();
    /**
     * 打开（创建） DB
     * @param dbConfig db 配置
     */
    openDB(appId: number, dbConfig: DBConfig): Promise<void>;
    closeDB(): Promise<void>;
    private _checkConn;
    getTransaction(tableNames: string[], writeAble?: boolean): IDBTransaction;
    /**
     * 新增数据
     * @param tableName 表名
     * @param item 数据项
     */
    save(tableName: string, item: IndexDBItem, transaction?: IDBTransaction): Promise<IDBValidKey>;
    /**
     * 新增数据
     * @param tableName 表名
     * @param item 数据项
     */
    addList(tableName: string, items: IndexDBItem[], transaction?: IDBTransaction): Promise<void>;
    /**
     * 更新数据
     * @param tableName 数据表
     * @param item 数据项（必须包含id）
     */
    update(tableName: string, item: IndexDBItem, transaction?: IDBTransaction): Promise<void>;
    /**
     * 根据ID查找
     * @param tableName 表名
     * @param id 数据项 ID
     */
    queryById(tableName: string, id: IDBValidKey, transaction?: IDBTransaction): Promise<IndexDBItem | null>;
    /**
     * 从游标开始查找
     * @param maxCount 查询的最大数量，不填就是全部返回
     */
    queryByCursor(tableName: string, options: {
        maxCount?: number;
        conditions?: QueryCondition[];
        transaction?: IDBTransaction;
    }): Promise<IndexDBItem[]>;
    /**
     * 小数据量通过该方法获取全部数据
     * @param tableName 表名
     * @param maxCount 最大数量，不填就是返回全部数据
     */
    getAll(tableName: string, maxCount?: number, transaction?: IDBTransaction): Promise<IndexDBItem[]>;
    /**
     * 获取表的行数，支持条件过滤
     * @param tableName 表名
     * @param conditions 过滤条件（可选）首个过滤条件得是索引
     * @returns 符合条件的行数
     */
    lines(tableName: string, conditions?: QueryCondition[], transaction?: IDBTransaction): Promise<number>;
    /**
     * 打开并获取表的游标
     * @param tableName 表名
     */
    openCursor(tableName: string, transaction?: IDBTransaction): IDBRequest<IDBCursorWithValue | null>;
    /**
     * 根据 ID 删除数据项
     * @param tableName 表名
     * @param id ID
     */
    deleteById(tableName: string, id: IDBValidKey, transaction?: IDBTransaction): Promise<void>;
    deleteByCount(tableName: string, count: number): Promise<void>;
    /**
     * 删除表中所有数据项
     * @param tableName 表名
     */
    deleteAll(tableName: string, transaction?: IDBTransaction): Promise<void>;
    /**
     * 批量删除数据项
     * @param items 数据项列表（带ID）
     */
    deleteItems(tableName: string, items: IndexDBItem[], transaction?: IDBTransaction): Promise<void>;
    /**
     * 检查数据项是否满足所有条件
     */
    private _checkConditions;
    /**
     * 根据条件获取IDBKeyRange
     */
    private _getKeyRange;
    onDBClose?: Function;
}
export {};
