/**
 * Synapse REST API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: v1
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import type { MatchPhrasePrefixFieldOptions } from './MatchPhrasePrefixFieldOptions';
import type { MatchPhraseFieldOptions } from './MatchPhraseFieldOptions';
import type { ExistsQuery } from './ExistsQuery';
import type { WildcardFieldOptions } from './WildcardFieldOptions';
import type { BoolQuery } from './BoolQuery';
import type { RangeFieldOptions } from './RangeFieldOptions';
import type { PrefixFieldOptions } from './PrefixFieldOptions';
import type { FuzzyFieldOptions } from './FuzzyFieldOptions';
import type { MultiMatchQuery } from './MultiMatchQuery';
import type { DisMaxQuery } from './DisMaxQuery';
import type { SimpleQueryStringQuery } from './SimpleQueryStringQuery';
import type { TermFieldOptions } from './TermFieldOptions';
import type { BoostingQuery } from './BoostingQuery';
import type { ConstantScoreQuery } from './ConstantScoreQuery';
import type { MatchBoolPrefixFieldOptions } from './MatchBoolPrefixFieldOptions';
import type { MatchAllQuery } from './MatchAllQuery';
import type { MatchFieldOptions } from './MatchFieldOptions';
/**
 * <p>A single <a href="https://docs.opensearch.org/latest/query-dsl/">OpenSearch query DSL</a> clause. Exactly one of the properties below may be set &mdash; the set property names the clause kind. See <a href="https://docs.opensearch.org/latest/query-dsl/query-filter-context/">query vs. filter context</a> and <a href="https://docs.opensearch.org/latest/query-dsl/term-vs-full-text/">term-level vs. full-text queries</a>.</p><p>The field-keyed leaf clauses (<code>match</code>, <code>term</code>, <code>range</code>, ...) are maps whose key is the column name and whose value is the per-field options object &mdash; only the long form is accepted (e.g. <code>{"match":{"title":{"query":"x"}}}</code>, not the <code>{"match":{"title":"x"}}</code> shorthand). The compound clauses (<code>bool</code>, <code>dis_max</code>, ...) nest further Query DSL clauses recursively.</p>
 * @export
 * @interface DslQuery
 */
export interface DslQuery {
    /**
     * A <a href="https://docs.opensearch.org/latest/query-dsl/full-text/match/"><code>match</code></a> full-text clause. Map of column name to its match options.
     * @type {{ [key: string]: MatchFieldOptions; }}
     * @memberof DslQuery
     */
    match?: {
        [key: string]: MatchFieldOptions;
    };
    /**
     * A <a href="https://docs.opensearch.org/latest/query-dsl/full-text/match-phrase/"><code>match_phrase</code></a> clause. Map of column name to its phrase options.
     * @type {{ [key: string]: MatchPhraseFieldOptions; }}
     * @memberof DslQuery
     */
    match_phrase?: {
        [key: string]: MatchPhraseFieldOptions;
    };
    /**
     * A <a href="https://docs.opensearch.org/latest/query-dsl/full-text/match-phrase-prefix/"><code>match_phrase_prefix</code></a> clause. Map of column name to its options.
     * @type {{ [key: string]: MatchPhrasePrefixFieldOptions; }}
     * @memberof DslQuery
     */
    match_phrase_prefix?: {
        [key: string]: MatchPhrasePrefixFieldOptions;
    };
    /**
     * A <a href="https://docs.opensearch.org/latest/query-dsl/full-text/match-bool-prefix/"><code>match_bool_prefix</code></a> clause. Map of column name to its options.
     * @type {{ [key: string]: MatchBoolPrefixFieldOptions; }}
     * @memberof DslQuery
     */
    match_bool_prefix?: {
        [key: string]: MatchBoolPrefixFieldOptions;
    };
    /**
     * A <a href="https://docs.opensearch.org/latest/query-dsl/term/term/"><code>term</code></a> term-level clause. Map of column name to its term options.
     * @type {{ [key: string]: TermFieldOptions; }}
     * @memberof DslQuery
     */
    term?: {
        [key: string]: TermFieldOptions;
    };
    /**
     * A <a href="https://docs.opensearch.org/latest/query-dsl/term/range/"><code>range</code></a> term-level clause. Map of column name to its range bounds.
     * @type {{ [key: string]: RangeFieldOptions; }}
     * @memberof DslQuery
     */
    range?: {
        [key: string]: RangeFieldOptions;
    };
    /**
     * A <a href="https://docs.opensearch.org/latest/query-dsl/term/prefix/"><code>prefix</code></a> term-level clause. Map of column name to its prefix options.
     * @type {{ [key: string]: PrefixFieldOptions; }}
     * @memberof DslQuery
     */
    prefix?: {
        [key: string]: PrefixFieldOptions;
    };
    /**
     * A <a href="https://docs.opensearch.org/latest/query-dsl/term/wildcard/"><code>wildcard</code></a> term-level clause. Map of column name to its wildcard options.
     * @type {{ [key: string]: WildcardFieldOptions; }}
     * @memberof DslQuery
     */
    wildcard?: {
        [key: string]: WildcardFieldOptions;
    };
    /**
     * A <a href="https://docs.opensearch.org/latest/query-dsl/term/fuzzy/"><code>fuzzy</code></a> term-level clause. Map of column name to its fuzzy options.
     * @type {{ [key: string]: FuzzyFieldOptions; }}
     * @memberof DslQuery
     */
    fuzzy?: {
        [key: string]: FuzzyFieldOptions;
    };
    /**
     * A <a href="https://docs.opensearch.org/latest/query-dsl/term/terms/"><code>terms</code></a> term-level clause (matches any of several exact values). Field-keyed: <code>{"terms":{"&lt;column&gt;":[v1, v2], "boost":1.0}}</code>. The cross-index <code>terms</code>-lookup form is rejected. Carried as an opaque object because the field name is itself a key and the values are an array of polymorphic scalars; the same allowlist is enforced server-side.
     * @type {any}
     * @memberof DslQuery
     */
    terms?: any | null;
    /**
     *
     * @type {ExistsQuery}
     * @memberof DslQuery
     */
    _exists?: ExistsQuery;
    /**
     *
     * @type {MultiMatchQuery}
     * @memberof DslQuery
     */
    multi_match?: MultiMatchQuery;
    /**
     *
     * @type {SimpleQueryStringQuery}
     * @memberof DslQuery
     */
    simple_query_string?: SimpleQueryStringQuery;
    /**
     *
     * @type {MatchAllQuery}
     * @memberof DslQuery
     */
    match_all?: MatchAllQuery;
    /**
     *
     * @type {BoolQuery}
     * @memberof DslQuery
     */
    bool?: BoolQuery;
    /**
     *
     * @type {DisMaxQuery}
     * @memberof DslQuery
     */
    dis_max?: DisMaxQuery;
    /**
     *
     * @type {ConstantScoreQuery}
     * @memberof DslQuery
     */
    constant_score?: ConstantScoreQuery;
    /**
     *
     * @type {BoostingQuery}
     * @memberof DslQuery
     */
    boosting?: BoostingQuery;
}
/**
 * Check if a given object implements the DslQuery interface.
 */
export declare function instanceOfDslQuery(value: object): value is DslQuery;
export declare function DslQueryFromJSON(json: any): DslQuery;
export declare function DslQueryFromJSONTyped(json: any, ignoreDiscriminator: boolean): DslQuery;
export declare function DslQueryToJSON(json: any): DslQuery;
export declare function DslQueryToJSONTyped(value?: DslQuery | null, ignoreDiscriminator?: boolean): any;
