/**
 * Specifies how the individual match terms should be logically concatenated.
 *
 * @experimental This API is subject to change without notice.
 * @category Full Text Search
 */
export declare enum MatchOperator {
    /**
     * Specifies that individual match terms are concatenated with a logical OR - this is the default if not provided.
     */
    Or = "or",
    /**
     * Specifies that individual match terms are concatenated with a logical AND.
     */
    And = "and"
}
/**
 * GeoPoint represents a specific coordinate on earth.  We support
 * a number of different variants of geopoints being specified.
 *
 * @category Full Text Search
 */
export type GeoPoint = [longitude: number, latitude: number] | {
    lon: number;
    lat: number;
} | {
    longitude: number;
    latitude: number;
};
/**
 * Provides the ability to specify the query for a search query.
 *
 * @category Full Text Search
 */
export declare class SearchQuery {
    protected _data: any;
    constructor(data: any);
    toJSON(): any;
    /**
     * @internal
     */
    static toJSON(query: SearchQuery | any): any;
    /**
     * @internal
     */
    static hasProp(query: SearchQuery | any, prop: string): boolean;
    static match(match: string): MatchSearchQuery;
    static matchPhrase(phrase: string): MatchPhraseSearchQuery;
    static regexp(regexp: string): RegexpSearchQuery;
    static queryString(query: string): QueryStringSearchQuery;
    static numericRange(): NumericRangeSearchQuery;
    static dateRange(): DateRangeSearchQuery;
    /**
     * Creates a ConjunctionSearchQuery from a set of other SearchQuery's.
     *
     * @deprecated Use the multi-argument overload instead.
     */
    static conjuncts(queries: SearchQuery[]): ConjunctionSearchQuery;
    /**
     * Creates a ConjunctionSearchQuery from a set of other SearchQuery's.
     */
    static conjuncts(...queries: SearchQuery[]): ConjunctionSearchQuery;
    /**
     * Creates a DisjunctionSearchQuery from a set of other SearchQuery's.
     *
     * @deprecated Use the multi-argument overload instead.
     */
    static disjuncts(queries: SearchQuery[]): DisjunctionSearchQuery;
    /**
     * Creates a DisjunctionSearchQuery from a set of other SearchQuery's.
     */
    static disjuncts(...queries: SearchQuery[]): DisjunctionSearchQuery;
    static boolean(): BooleanSearchQuery;
    static wildcard(wildcard: string): WildcardSearchQuery;
    /**
     * Creates a DocIdSearchQuery from a set of document-ids.
     *
     * @deprecated Use the multi-argument overload instead.
     */
    static docIds(queries: string[]): DocIdSearchQuery;
    /**
     * Creates a DocIdSearchQuery from a set of document-ids.
     */
    static docIds(...queries: string[]): DocIdSearchQuery;
    static booleanField(val: boolean): BooleanFieldSearchQuery;
    static term(term: string): TermSearchQuery;
    static phrase(terms: string[]): PhraseSearchQuery;
    static prefix(prefix: string): PrefixSearchQuery;
    static matchAll(): MatchAllSearchQuery;
    static matchNone(): MatchNoneSearchQuery;
    static geoDistance(lon: number, lat: number, distance: number): GeoDistanceSearchQuery;
    static geoBoundingBox(tl_lon: number, tl_lat: number, br_lon: number, br_lat: number): GeoBoundingBoxSearchQuery;
    static geoPolygon(points: GeoPoint[]): GeoPolygonSearchQuery;
}
/**
 * Represents a match search query.
 *
 * @category Full Text Search
 */
export declare class MatchSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(match: string);
    operator(op: MatchOperator): MatchSearchQuery;
    field(field: string): MatchSearchQuery;
    analyzer(analyzer: string): MatchSearchQuery;
    prefixLength(prefixLength: number): MatchSearchQuery;
    fuzziness(fuzziness: number): MatchSearchQuery;
    boost(boost: number): MatchSearchQuery;
}
/**
 * Represents a match-phrase search query.
 *
 * @category Full Text Search
 */
export declare class MatchPhraseSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(phrase: string);
    field(field: string): MatchPhraseSearchQuery;
    analyzer(analyzer: string): MatchPhraseSearchQuery;
    boost(boost: number): MatchPhraseSearchQuery;
}
/**
 * Represents a regexp search query.
 *
 * @category Full Text Search
 */
export declare class RegexpSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(regexp: string);
    field(field: string): RegexpSearchQuery;
    boost(boost: number): RegexpSearchQuery;
}
/**
 * Represents a query-string search query.
 *
 * @category Full Text Search
 */
export declare class QueryStringSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(query: string);
    boost(boost: number): QueryStringSearchQuery;
}
/**
 * Represents a numeric-range search query.
 *
 * @category Full Text Search
 */
export declare class NumericRangeSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor();
    min(min: number, inclusive?: boolean): NumericRangeSearchQuery;
    max(max: number, inclusive?: boolean): NumericRangeSearchQuery;
    field(field: string): NumericRangeSearchQuery;
    boost(boost: number): NumericRangeSearchQuery;
}
/**
 * Represents a date-range search query.
 *
 * @category Full Text Search
 */
export declare class DateRangeSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor();
    start(start: Date | string, inclusive?: boolean): DateRangeSearchQuery;
    end(end: Date | string, inclusive?: boolean): DateRangeSearchQuery;
    field(field: string): DateRangeSearchQuery;
    dateTimeParser(parser: string): DateRangeSearchQuery;
    boost(boost: number): DateRangeSearchQuery;
}
/**
 * Represents a conjunction search query.
 *
 * @category Full Text Search
 */
export declare class ConjunctionSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(...queries: SearchQuery[]);
    /**
     * Adds additional queries to this conjunction query.
     *
     * @deprecated Use the multi-argument overload instead.
     */
    and(queries: SearchQuery[]): ConjunctionSearchQuery;
    /**
     * Adds additional queries to this conjunction query.
     */
    and(...queries: SearchQuery[]): ConjunctionSearchQuery;
    boost(boost: number): ConjunctionSearchQuery;
}
/**
 * Represents a disjunction search query.
 *
 * @category Full Text Search
 */
export declare class DisjunctionSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(...queries: SearchQuery[]);
    /**
     * Adds additional queries to this disjunction query.
     *
     * @deprecated Use the multi-argument overload instead.
     */
    or(queries: SearchQuery[]): DisjunctionSearchQuery;
    /**
     * Adds additional queries to this disjunction query.
     */
    or(...queries: SearchQuery[]): DisjunctionSearchQuery;
    boost(boost: number): DisjunctionSearchQuery;
}
/**
 * Represents a boolean search query.
 *
 * @category Full Text Search
 */
export declare class BooleanSearchQuery extends SearchQuery {
    private _shouldMin;
    /**
     * @internal
     */
    constructor();
    must(query: ConjunctionSearchQuery): BooleanSearchQuery;
    should(query: DisjunctionSearchQuery): BooleanSearchQuery;
    mustNot(query: DisjunctionSearchQuery): BooleanSearchQuery;
    shouldMin(shouldMin: number): BooleanSearchQuery;
    boost(boost: number): BooleanSearchQuery;
    toJSON(): any;
}
/**
 * Represents a wildcard search query.
 *
 * @category Full Text Search
 */
export declare class WildcardSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(wildcard: string);
    field(field: string): WildcardSearchQuery;
    boost(boost: number): WildcardSearchQuery;
}
/**
 * Represents a document-id search query.
 *
 * @category Full Text Search
 */
export declare class DocIdSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(...ids: string[]);
    /**
     * Adds additional document-id's to this query.
     *
     * @deprecated Use the multi-argument overload instead.
     */
    addDocIds(ids: string[]): DocIdSearchQuery;
    /**
     * Adds additional document-id's to this query.
     */
    addDocIds(...ids: string[]): DocIdSearchQuery;
    field(field: string): DocIdSearchQuery;
    boost(boost: number): DocIdSearchQuery;
}
/**
 * Represents a boolean-field search query.
 *
 * @category Full Text Search
 */
export declare class BooleanFieldSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(val: boolean);
    field(field: string): BooleanFieldSearchQuery;
    boost(boost: number): BooleanFieldSearchQuery;
}
/**
 * Represents a term search query.
 *
 * @category Full Text Search
 */
export declare class TermSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(term: string);
    field(field: string): TermSearchQuery;
    prefixLength(prefixLength: number): TermSearchQuery;
    fuzziness(fuzziness: number): TermSearchQuery;
    boost(boost: number): TermSearchQuery;
}
/**
 * Represents a phrase search query.
 *
 * @category Full Text Search
 */
export declare class PhraseSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(terms: string[]);
    field(field: string): PhraseSearchQuery;
    boost(boost: number): PhraseSearchQuery;
}
/**
 * Represents a prefix search query.
 *
 * @category Full Text Search
 */
export declare class PrefixSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(prefix: string);
    field(field: string): PrefixSearchQuery;
    boost(boost: number): PrefixSearchQuery;
}
/**
 * Represents a match-all search query.
 *
 * @category Full Text Search
 */
export declare class MatchAllSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor();
}
/**
 * Represents a match-none search query.
 *
 * @category Full Text Search
 */
export declare class MatchNoneSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor();
}
/**
 * Represents a geo-distance search query.
 *
 * @category Full Text Search
 */
export declare class GeoDistanceSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(lon: number, lat: number, distance: number);
    field(field: string): GeoDistanceSearchQuery;
    boost(boost: number): GeoDistanceSearchQuery;
}
/**
 * Represents a geo-bounding-box search query.
 *
 * @category Full Text Search
 */
export declare class GeoBoundingBoxSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(tl_lon: number, tl_lat: number, br_lon: number, br_lat: number);
    field(field: string): GeoBoundingBoxSearchQuery;
    boost(boost: number): GeoBoundingBoxSearchQuery;
}
/**
 * Represents a geo-polygon search query.
 *
 * @category Full Text Search
 */
export declare class GeoPolygonSearchQuery extends SearchQuery {
    /**
     * @internal
     */
    constructor(points: GeoPoint[]);
    field(field: string): GeoPolygonSearchQuery;
    boost(boost: number): GeoPolygonSearchQuery;
}
