import { ClientSession, MongoClient } from "mongodb";
import { IDocumentClass, IDocumentInstance, IExplain, IQueryOptions, IQueryUpdaterOptions, IRepositoryOptions, IWeakTypeQueryUpdaterOptions } from "../types";
import { QueryAsyncIterator } from "./QueryAsyncIterator";
import { QueryDeleter } from "./QueryDeleter";
import { QueryLogic } from "./QueryLogic";
import { QueryUpdater } from "./QueryUpdater";
export declare class Query
> extends QueryLogic {
readonly mongoClient: MongoClient;
readonly classObject: TD;
readonly dbName: string;
readonly collectionName: string;
readonly session?: ClientSession;
private _skip?;
private _limit?;
private _sort?;
constructor(options: IRepositoryOptions| , queryOptions?: IQueryOptions | );
getUpdater(options?: IQueryUpdaterOptions | ): QueryUpdater | >;
getUpdater(options?: IWeakTypeQueryUpdaterOptions | ): QueryUpdater | ;
getDeleter(): QueryDeleter | ;
sort(fieldName: K | "$natural", value: 1 | -1): this;
skip(value: number): this;
limit(value: number): this;
getAsyncIterator(): QueryAsyncIterator| ;
findOne(): Promise | undefined>;
findMany(): Promise[]>;
count(): Promise;
explain(): Promise;
}
| | |