import { Observable } from 'rxjs'; import { RxCollection } from './rx-collection'; import { PouchdbQuery } from './pouch'; export interface RxQueryOptions { $eq?: T; $gt?: T; $gte?: T; $lt?: T; $lte?: T; $ne?: T; $in?: T[]; $nin?: T[]; $regex?: RegExp; $exists?: boolean; $type?: 'null' | 'boolean' | 'number' | 'string' | 'array' | 'object'; $mod?: number; $not?: T; $all?: T[]; $size?: number; $elemMatch?: RxQueryOptions; } export type RxQueryObject = keyof T & { [P in keyof T]?: T[P] | RxQueryOptions; } & { $or: RxQueryObject[]; $nor: RxQueryObject[]; $and: RxQueryObject[]; }; export declare class RxQuery { readonly collection: RxCollection; where(queryObj: RxQueryObject | keyof RxDocumentType | string): RxQuery; equals(queryObj: any): RxQuery; eq(queryObj: any): RxQuery; or(queryObj: keyof RxDocumentType | string): RxQuery; nor(queryObj: keyof RxDocumentType | string): RxQuery; and(queryObj: keyof RxDocumentType | string): RxQuery; gt(queryObj: any): RxQuery; gte(queryObj: any): RxQuery; lt(queryObj: any): RxQuery; lte(queryObj: any): RxQuery; ne(queryObj: any): RxQuery; in(queryObj: any[]): RxQuery; nin(queryObj: any[]): RxQuery; all(queryObj: any): RxQuery; regex(queryObj: RegExp): RxQuery; exists(queryObj: any): RxQuery; elemMatch(queryObj: any): RxQuery; sort(params: any): RxQuery; limit(amount: number): RxQuery; skip(amount: number): RxQuery; // TODO fix attribute-types of this function mod(p1: any, p2: any, p3: any): RxQuery; exec(): Promise; readonly $: Observable; remove(): Promise; update(updateObj: any): Promise; toJSON(): PouchdbQuery; }