import { BehaviorSubject } from 'rxjs/BehaviorSubject'; import { Subject } from 'rxjs/Subject'; import { ArrayEmitter } from './array-emitter.js'; import { Database, Model, Query as IQuery, QueryFunction, QueryList, Resource, SocketFactory } from './types'; export declare class Query extends ArrayEmitter implements IQuery { $refresh: (force?: boolean) => Promise>; $promise: Promise>; $subject: BehaviorSubject>; $resolvedSubject: Subject>; $resolved: boolean; $Model: any; $serverResults?: Query; $skip?: number; $hasNext: boolean; $hasPrev: boolean; extend: (obj: any, noSanitize?: boolean, retServer?: boolean) => Promise>; replace: (qry: any, retServer?: boolean) => Promise>; get: (...args: any[]) => any; next: (num?: number) => Promise>; prev: (num?: number) => Promise>; chain: (Model: Resource | QueryFunction, qryFn?: QueryFunction) => IQuery; transform: (tmpResults: any[]) => Promise | any[]; currentLimit: number; currentSkip: number; loading: boolean; hasNext: boolean; hasPrev: boolean; } export declare class LocalQuery extends Query { } export declare class ServerQuery extends Query { $newData?: (qryId: string, response: any, force?: boolean) => void; } export declare function createQueryFactory(socket: SocketFactory): (url: string, rootKey: string, rootKeyPlural: string, db?: Database) => QueryList;