/**
 * This is the consumer interface for the query - it's effectively a wrapper construct around
 * the AST and some of its related utility functions (e.g. parsing, text representation, executing, etc...)
 * It is immutable - all mutating operations return a new (mutated) query instance.
 */
export declare class Query {
    private ast;
    private text;
    private syntax;
    static parse(text: any, options: any, syntax?: Readonly<{
        parse: (query: any, options?: any) => import("src/components/SearchBar/query/ast")._AST;
        printClause: (clause: any, text: any, options: any) => any;
        print: (ast: any, options?: {}) => any;
    }>): Query;
    static parseDateValue(value: any, format?: any): {
        type: string;
        raw: any;
        granularity: any;
        text: any;
        resolve: () => any;
    };
    static isMust(clause: any): boolean;
    static MATCH_ALL: Query;
    static isTerm(clause: any): boolean;
    static isIs(clause: any): boolean;
    static isField(clause: any): boolean;
    constructor(ast: any, syntax?: Readonly<{
        parse: (query: any, options?: any) => import("src/components/SearchBar/query/ast")._AST;
        printClause: (clause: any, text: any, options: any) => any;
        print: (ast: any, options?: {}) => any;
    }>, text?: any);
    hasSimpleFieldClause(field: any, value?: any): any;
    getSimpleFieldClause(field: any, value: any): any;
    removeSimpleFieldClauses(field: any): Query;
    addSimpleFieldValue(field: any, value: any, must?: boolean, operator?: string): Query;
    removeSimpleFieldValue(field: any, value: any): Query;
    hasOrFieldClause(field: any, value?: any): any;
    getOrFieldClause(field: any, value: any): any;
    addOrFieldValue(field: any, value: any, must?: boolean): Query;
    removeOrFieldValue(field: any, value: any): Query;
    removeOrFieldClauses(field: any): Query;
    hasIsClause(flag: any): boolean;
    getIsClause(flag: any): any;
    addMustIsClause(flag: any): Query;
    addMustNotIsClause(flag: any): Query;
    removeIsClause(flag: any): Query;
    /**
     * Executes this query over the given iterable item and returns
     * an new array of all items that matched this query. Options:
     *
     * defaultFields: string[]
     *
     *    An array of field names to match the default clauses against. When not specified, the query
     *    will pick up all the string fields of each record and try to match against those.
     *
     * isClauseMatcher?: (record: any, flag: string, applied: boolean, explain?: []) => boolean
     *
     *    By default the 'is' clauses will try to match against boolean fields - where the flag of the clause
     *    indicates the field name. You can change this behaviour by providing this matcher function for the
     *    is clause. For example, if the object has a `tags` field, one can create a matcher that checks if
     *    an object has a specific tag (e.g. "is:marketing", "is:kitchen", etc..)
     *
     * explain?: boolean
     *
     *    When set to `true`, each item in the returns array will have an `__explain` field that will hold
     *    information about why the objects matched the query (default to `false`, mainly/only useful for
     *    debugging)
     */
    static execute(query: any, items: any, options?: {}): any;
    /**
     * Builds and returns an Elasticsearch query out this query. Options:
     *
     * defaultFields?: string[]
     *
     *    An array of field names to match the default clauses against. When not specified, the query
     *    will pick up all the string fields of each record and try to match against those.
     *
     * isToQuery?: (flag: string, on: boolean) => Object (elasticsearch query object)
     *
     *    By default, "is" clauses will be translated to a term query where the flag is the field
     *    and the "on" value will be the value of the field. This function lets you change this default
     *    translation and provide your own custom one.
     *
     * termValuesToQuery?: (values: string[]) => Object (elasticsearch query object)
     *
     *    By default, "term" clauses will be translated to a "simple_query_string" query where all
     *    the values serve as terms in the query string. This function lets you change this default
     *    translation and provide your own custom one.
     *
     * fieldValuesToAndQuery?: (field: string, values: string[]) => Object (elasticsearch query object)
     *
     *    By default, "field" clauses will be translated to a match query where all the values serve as
     *    terms in the query(the operator is AND). This function lets you change this default translation
     *    and provide your own custom one.
     */
    static toESQuery(query: any, options?: {}): {
        match_all: {};
        bool?: undefined;
    } | {
        bool: any;
        match_all?: undefined;
    };
    static toESQueryString(query: any, options?: {}): any;
}
