import { Observable } from 'rxjs';
declare enum Constants {
    Key = "key",
    Value = "value",
    Readonly = "readonly",
    Readwrite = "readwrite",
    DefaultStoreName = "key-value"
}
export interface KeyValueItems<K, V> {
    [Constants.Key]: K;
    [Constants.Value]: V;
}
export declare class IDB<K extends string | number = string, V extends any = unknown> {
    private dbName;
    private tableName;
    private conn$;
    static createInstance<K extends string | number = string, V extends any = unknown>(dbName: string, tableName?: string): IDB<K, V>;
    constructor(dbName: string, tableName?: string);
    private initConn;
    setItem(key: K, value: V): Observable<V>;
    getItem(key: K): Observable<V | undefined>;
    list(): Observable<Record<K, V>>;
    removeItem(key: K): Observable<void>;
    clear(): Observable<void>;
    size(): Observable<number>;
    keys(): Observable<K[]>;
    values(): Observable<V[]>;
    getItems(keys: K[]): Observable<Record<K, V>>;
    setItems(items: Record<K, V>): Observable<void>;
    setItems(items: KeyValueItems<K, V>[]): Observable<void>;
    removeItems(keys: K[]): Observable<void>;
    getItemsWhenKeyStartsWith(prefix: K): Observable<Record<K, V>>;
    getKeysWhenKeyStartsWith(prefix: string): Observable<K[]>;
}
export {};
