import * as r from 'rethinkdb';
import { BaseDBAdapter, IBaseDBItem, QueryData, QueryDataSchema } from '@berish/orm';
export interface IRethinkDBAdapterParams {
    dbName?: string;
    host?: string;
    port?: number;
    password?: string;
    user?: string;
    ssl?: r.ConnectionOptions['ssl'];
    subscribe?: {
        changefeedQueueSize?: number;
        squash?: number | boolean;
        includeInitial?: boolean;
    };
}
export default class RethinkDBAdapter extends BaseDBAdapter<IRethinkDBAdapterParams> {
    private connection;
    private _cacheEmitter;
    private tables;
    private indexNames;
    private subscribeCursors;
    private _subscribeEventHashes;
    initialize(params: IRethinkDBAdapterParams): Promise<void>;
    close(): Promise<void>;
    reconnect(): Promise<void>;
    count(queryData: QueryData<QueryDataSchema>): Promise<number>;
    get<T>(query: QueryData<QueryDataSchema>): Promise<T>;
    create(tableName: string, items: IBaseDBItem[]): Promise<void>;
    update(tableName: string, items: IBaseDBItem[]): Promise<void>;
    index(tableName: string, indexName: string, keys?: string[]): Promise<any>;
    find<T>(queryData: QueryData<QueryDataSchema>): Promise<T[]>;
    delete(queryData: QueryData<QueryDataSchema>): Promise<void>;
    subscribe<T>(query: QueryData<QueryDataSchema>, callback: (oldValue: T, newValue: T) => void, onError: (reason: any) => any): () => void;
    private closeCursor;
    private db;
    private table;
    private filter;
    private subQuery;
    private where;
    private contains;
    private limit;
    private skip;
    private ids;
    private less;
    private lessOrEqual;
    private greater;
    private greaterOrEqual;
    private pluck;
}
