import { type TIDBKeyType, type TIDBQueryValue, type TSdkStoreName } from './Storage.types';
export default class Storage {
    db: Promise<IDBDatabase>;
    /**
     * Change database version handler
     * @param db
     * @param event
     */
    private dbVersionChangeHandler;
    /**
     * Success database request handler
     * @param resolve
     * @param event
     */
    private dbRequestSuccessHandler;
    /**
     * Need upgrade database version handler
     * @param event
     */
    private dbRequestUpgradeNeededHandler;
    /**
     * Open db
     */
    getDB(): Promise<IDBDatabase>;
    /**
     * https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/put
     * @param storeName
     * @param data
     * @param key
     */
    put(storeName: TSdkStoreName, data: any, key?: string): Promise<TIDBKeyType>;
    /**
     * https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/delete
     * @param storeName
     * @param key
     */
    delete(storeName: TSdkStoreName, key: string | number): Promise<void>;
    /**
     * https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/get
     * @param storeName
     * @param key
     * @param defaultValue
     */
    get<Response, D>(storeName: TSdkStoreName, key: TIDBKeyType, defaultValue?: D): Promise<Response | D>;
    /**
     * https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/getAll
     * @param storeName
     */
    getAll<Response>(storeName: TSdkStoreName): Promise<Array<Response>>;
    /**
     * https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/count
     * @param storeName
     * @param query
     */
    count(storeName: TSdkStoreName, query?: IDBKeyRange): Promise<number>;
    /**
     * https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex/count
     * @param storeName
     * @param indexName
     * @param key
     */
    countByIndex(storeName: TSdkStoreName, indexName: string, key?: TIDBQueryValue): Promise<number>;
}
