import { Observable } from 'rxjs';
import { NgStore } from './types/store.type';
/**
 * IndexedDB client
 */
export declare class IndexedDatabase {
    /** IndexedBD instance */
    private database;
    /** Indicates if databases has been upgraded */
    private upgraded;
    constructor(database: IDBDatabase, upgraded: boolean, stores?: NgStore[]);
    /**
     * If table has been upgrades, generates the recived stores
     * @param tables Tables metadata
     */
    createTables(tables: NgStore[]): void;
    /**
     * Generates one single sotre
     * @param storeName Store name
     */
    createTable(store: NgStore): void;
    /**
     * Request a list with all store elements
     * @param storeName Store name
     */
    list<M = any>(storeName: string): Observable<M[]>;
    /**
     * Request a single object found by the given key
     * @param storeName Store name
     * @param key Predicate key
     */
    get<M = any>(storeName: string, key: any): Observable<M>;
    /**
     * Request to store an element
     * @param storeName Store name
     * @param data data to store
     */
    create<M = any>(storeName: string, data: M): Observable<M>;
    /**
     * Request to update an element
     * @param storeName Store name
     * @param data data to store
     */
    update<M = any>(storeName: string, data: M): Observable<M>;
    /**
     * Request to delete an element with the given key
     * @param storeName Store name
     * @param key Element key to delete
     */
    delete(storeName: string, key: IDBValidKey): Observable<boolean>;
    /**
     * Find the a store table by the given name
     * @param storeName Store name to find
     * @param mode Transaction mode
     */
    private store;
}
