declare type Op = "$eq" | "$ne" | "$lt" | "$lte" | "$gt" | "$gte"; declare type OpArray = "$in" | "$nin"; declare type MultipleOp = "$and" | "$or"; export declare type SingleOperator = { [key in keyof T]?: { [op in Op]?: T[key]; }; }; export declare type SingleArrayOperator = { [key in keyof T]?: { [op in OpArray]?: T[key][]; }; }; export declare type SpecialOperfator = { [key in keyof T]?: { $like?: T[key] extends string ? string : never; $regex?: T[key] extends string ? RegExp | string : never; $exists?: boolean; $options?: "i"; $eq?: T[key]; $lt?: T[key]; $lte?: T[key]; $gt?: T[key]; $gte?: T[key]; }; }; export declare type MultipleOperator = { [key in MultipleOp]?: (SingleOperator | SingleArrayOperator | SpecialOperfator | MultipleOperator)[]; }; export declare type SingleQueryCondition = SingleOperator | SingleArrayOperator | SpecialOperfator; export declare type QueryCondition = SingleQueryCondition | MultipleOperator; export declare type Sort = string | Exclude | string[] | { [key: string]: SortDirection; } | Map | [string, SortDirection][] | [string, SortDirection]; export declare type SortDirection = 1 | -1 | 'asc' | 'desc' | 'ascending' | 'descending' | { $meta: string; }; export declare type FindOptions = { /** Sets the limit of documents returned in the query. */ limit?: number; /** Set to sort the documents coming back from the query. Array of indexes, `[['a', 1]]` etc. */ sort?: Sort; /** The fields to return in the query. Object of fields to either include or exclude (one of, not both), `{'a':1, 'b': 1}` **or** `{'a': 0, 'b': 0}` */ projection?: { [key in keyof T]?: 0 | 1; }; /** Set to skip N documents ahead in your query (useful for pagination). */ skip?: number; fromCRUD?: boolean; }; export {};