import { Entity } from '../entity'; import { Manager } from '../manager'; export interface QueryDataSchema { where?: { [key: string]: any; }; subQueries?: { [key: string]: { query: QueryData; key: string; }; }; ids?: string[]; contains?: { [key: string]: any[]; }; limit?: number; skip?: number; className?: string; less?: { [key: string]: any; }; lessOrEqual?: { [key: string]: any; }; greater?: { [key: string]: any; }; greaterOrEqual?: { [key: string]: any; }; pluck?: string[]; } export declare type QueryData = { key: keyof TSchema; value: any; }[]; export declare class Query { private _builder; private _className; static clone>(query: TQuery): TQuery; static fromJSON(queryData: QueryData): Query; static getHash(queryData: QueryData): string; constructor(ctor: string | (new () => T)); get json(): QueryData; get hash(): string; get className(): string; append(key: TKey, value: QueryDataSchema[TKey]): this; replace(key: TKey, value: QueryDataSchema[TKey]): this; clear(key: TKey): this; equalTo(key: string, value: any): this; contains(key: string, value: any[]): this; limit(limit: number): this; skip(skip: number): this; matchesQuery(key: string, query: Query): this; matchesKeyInQuery(key: string, keyInQuery: string, subQuery: Query): this; matchesEdgeQuery(edgeName: string, query: Query): this; matchesEdgeDstQuery(edgeName: string, query: Query): this; ids(ids: string[]): this; less(key: string, value: any): this; lessOrEqual(key: string, value: any): this; greater(key: string, value: any): this; greaterOrEqual(key: string, value: any): this; pluck(...keys: string[]): this; count(manager: Manager): Promise; get(id: string, manager: Manager, deep?: number): Promise; find(manager: Manager, deep?: number): Promise; first(manager: Manager, deep?: number): Promise; delete(manager: Manager): Promise; subscribe(manager: Manager, cb: (oldValues: T, newValues: T, newValueIndex?: number) => any, deep?: number): () => any; }