import { QueryBuilder } from './query-builder'; import { QueryableKeys } from './type-utils'; export type QueryOptions = { sort?: Partial>; limit?: number; skip?: number; select?: Partial>; lean?: boolean; }; export type PopulateOptions = { path: string; select?: string | string[] | Record; match?: Record; populate?: PopulateOptions | PopulateOptions[]; model?: string; }; type LogicalQueryOperators = { $or?: Query[]; $and?: Query[]; $nor?: Query[]; }; export type Query> = { [K in QueryableKeys]?: any; } & LogicalQueryOperators; import type { Document } from './document'; export declare class DocumentQueryBuilder, TResult = (T & Document) | null> extends QueryBuilder { protected _select?: Partial>; protected _lean?: boolean; protected _populate?: string[] | PopulateOptions | PopulateOptions[]; protected _model: any; protected _executeInternal: (options?: QueryOptions) => Promise; constructor(model: any, operation: (options?: QueryOptions) => Promise); select(fields: Partial> | string): this; lean(value?: boolean): this; populate(field: string | string[] | PopulateOptions): DocumentQueryBuilder; exec(): Promise; } export {}; //# sourceMappingURL=document-query-builder.d.ts.map