import { InfoModel, FullPathTypes } from "../definitions/model";
import { Model, DocumentQuery } from 'mongoose';
export declare type CtxType = {
    fullPathTypes: FullPathTypes;
    refFullPaths: string[];
    stringFullPaths: string[];
    numberFullPaths: string[];
    booleanFullPaths: string[];
    dateFullPaths: string[];
    objectIdFullPaths: string[];
};
export declare class Query {
    private models;
    private model;
    private modelDefinition;
    private _query;
    private isMongo4;
    constructor(ctx: CtxType, query: {
        [key: string]: string | string[];
    }, models: {
        [key: string]: InfoModel;
    }, model: Model<any>, mongo4: boolean);
    readonly hasAny: boolean;
    readonly hasRefs: boolean;
    readonly refPaths: string[];
    readonly numberPaths: string[];
    readonly booleanPaths: string[];
    readonly datePaths: string[];
    readonly objectIdPaths: string[];
    parseQueryValue(val: string | string[], fn?: (el: string) => any): any;
    getValuesContains(fields: string[], val: string | string[]): {
        [key: string]: {
            $regex: string;
            $options: string;
        };
    }[];
    _anyOperatorQuery(val: string | string[]): {
        $or: any[];
    } | {
        $or?: undefined;
    };
    readonly _basicQuery: {};
    _convertStep(): any[];
    query(prevFilter: {
        [key: string]: any;
    }, callback: any): any;
}
declare const _default: (mongo4: boolean, models: {
    [key: string]: InfoModel;
}, model: Model<any>, ctx: CtxType, query: {
    [key: string]: string | string[];
}, prevFilter: {
    [key: string]: any;
}, callback: (err: Error, cursor?: DocumentQuery<any, any>) => void) => any;
export default _default;
