import { Query } from 'mongoose';
declare class QueryBuilder<T> {
    modelQuery: Query<T[], T>;
    query: Record<string, unknown>;
    constructor(modelQuery: Query<T[], T>, query: Record<string, unknown>);
    search(searchableFields: string[]): this;
    filter(): this;
    sort(defaultSort?: string): this;
    paginate(defaultPage?: number, defaultLimit?: number): this;
    fields(defaultFields?: string): this;
    getMeta(): Promise<{
        page: number;
        limit: number;
        total: number;
        totalPage: number;
    }>;
}
export default QueryBuilder;
