import { BaseDBAdapter, IBaseDBItem, QueryData, QueryDataSchema } from '@berish/orm';
import type { WebDBMethodParameters, WebDBMethodReturn } from './webDBReceiver';
export interface IWebDBAdapterParams {
    get: (...args: WebDBMethodParameters<'get'>) => WebDBMethodReturn<'get'>;
    create: (...args: WebDBMethodParameters<'create'>) => WebDBMethodReturn<'create'>;
    update: (...args: WebDBMethodParameters<'update'>) => WebDBMethodReturn<'update'>;
    delete: (...args: WebDBMethodParameters<'delete'>) => WebDBMethodReturn<'delete'>;
    count: (...args: WebDBMethodParameters<'count'>) => WebDBMethodReturn<'count'>;
    find: (...args: WebDBMethodParameters<'find'>) => WebDBMethodReturn<'find'>;
    index: (...args: WebDBMethodParameters<'index'>) => WebDBMethodReturn<'index'>;
    subscribe: (...args: WebDBMethodParameters<'subscribe'>) => WebDBMethodReturn<'subscribe'>;
}
export interface IWebDBAdapterConstructorParams {
    isConnected: () => boolean;
}
export declare class WebDBAdapter extends BaseDBAdapter<IWebDBAdapterParams> {
    private _emitter;
    private _constructorParams;
    private _uniqueQueries;
    private _offTriggers;
    constructor(constructorParams: IWebDBAdapterConstructorParams);
    initialize: (params: IWebDBAdapterParams) => Promise<void>;
    close: () => Promise<void>;
    count(query: QueryData<QueryDataSchema>): Promise<number>;
    get: (query: QueryData<QueryDataSchema>) => Promise<IBaseDBItem>;
    create: (tableName: string, items: IBaseDBItem[]) => Promise<void>;
    update: (tableName: string, items: IBaseDBItem[]) => Promise<void>;
    delete: (query: QueryData<QueryDataSchema>) => Promise<void>;
    index: (tableName: string, indexName: string, keys?: string[]) => void;
    find: (query: QueryData<QueryDataSchema>) => Promise<IBaseDBItem[]>;
    subscribe: (data: QueryData<QueryDataSchema>, callback: (oldValue: IBaseDBItem, newValue: IBaseDBItem) => any) => Promise<() => void>;
    connectSubscriptions: () => void;
    disconnectSubscriptions: () => void;
    private _realSubscribe;
}
