import { Params } from "@feathersjs/feathers";
import { AqlQuery, AqlValue, GeneratedAqlQuery } from "arangojs/aql";
import { AqlLiteral } from "arangojs/aql";
import { SearchField } from "./searchBuilder";
export declare enum LogicalOperator {
    And = " AND ",
    Or = " OR "
}
export declare class QueryBuilder {
    reserved: string[];
    bindVars: {
        [key: string]: any;
    };
    maxLimit: number;
    _limit: number;
    _countNeed: string;
    _skip: number;
    _search?: AqlQuery;
    _sort?: AqlQuery;
    searchFields: SearchField[];
    _filter?: AqlQuery;
    docName: string;
    returnDocName: string;
    returnFilter?: AqlQuery | AqlLiteral;
    varCount: number;
    constructor(params: Params, docName?: string, returnDocName?: string, searchFields?: SearchField[]);
    getParameterizedPath(path: string, basePath: string): GeneratedAqlQuery;
    projectRecursive(o: object): AqlValue;
    selectBuilder(params: Params): AqlQuery | AqlLiteral;
    create(params: Params): QueryBuilder;
    _runCheck(query: unknown): this | undefined;
    _aqlFilterFromFeathersQuery(feathersQuery: boolean | number | string | null | object, aqlFilterVar: AqlQuery | AqlLiteral): AqlQuery | undefined;
    _aqlFilterArrayElement(elementQuery: any, aqlFilterVar: AqlQuery | AqlLiteral): AqlQuery | undefined;
    _aqlFilterFromFeathersQueryArray(feathersQueries: any[], aqlFilterVar: AqlQuery | AqlLiteral, operator: LogicalOperator): AqlQuery | undefined;
    _joinAqlFiltersWithOperator(aqlFilters: (AqlQuery | undefined)[], operator: LogicalOperator): AqlQuery | undefined;
    addSort(sort: unknown): AqlQuery | undefined;
    addSearch(searchFields: SearchField[], search: unknown): AqlQuery | undefined;
    get limit(): AqlQuery;
    get sort(): AqlQuery;
    get filter(): AqlQuery | undefined;
}
