/**
 * 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 { ExtendedStatsAggregation } from './ExtendedStatsAggregation';
import type { TermsAggregation } from './TermsAggregation';
import type { DateRangeAggregation } from './DateRangeAggregation';
import type { MissingAggregation } from './MissingAggregation';
import type { CardinalityAggregation } from './CardinalityAggregation';
import type { MinAggregation } from './MinAggregation';
import type { MaxAggregation } from './MaxAggregation';
import type { RangeAggregation } from './RangeAggregation';
import type { AvgAggregation } from './AvgAggregation';
import type { HistogramAggregation } from './HistogramAggregation';
import type { ValueCountAggregation } from './ValueCountAggregation';
import type { SumAggregation } from './SumAggregation';
import type { FiltersAggregation } from './FiltersAggregation';
import type { StatsAggregation } from './StatsAggregation';
import type { DateHistogramAggregation } from './DateHistogramAggregation';
import type { DslQuery } from './DslQuery';
/**
 * <p>A single <a href="https://docs.opensearch.org/latest/aggregations/">OpenSearch aggregation</a> definition. Exactly one of the aggregation-kind properties below may be set; <code>aggregations</code> may additionally carry nested sub-aggregations. The <code>filter</code> and <code>filters</code> kinds wrap a <a href="${org.sagebionetworks.repo.model.search.dsl.Query}">Query</a>; that query is validated identically to the top-level <code>query</code> and is scoped by it, so a <code>filter</code> aggregation never counts documents outside the top-level query.</p>
 * @export
 * @interface Aggregation
 */
export interface Aggregation {
    /**
     *
     * @type {TermsAggregation}
     * @memberof Aggregation
     */
    terms?: TermsAggregation;
    /**
     *
     * @type {HistogramAggregation}
     * @memberof Aggregation
     */
    histogram?: HistogramAggregation;
    /**
     *
     * @type {DateHistogramAggregation}
     * @memberof Aggregation
     */
    date_histogram?: DateHistogramAggregation;
    /**
     *
     * @type {RangeAggregation}
     * @memberof Aggregation
     */
    range?: RangeAggregation;
    /**
     *
     * @type {DateRangeAggregation}
     * @memberof Aggregation
     */
    date_range?: DateRangeAggregation;
    /**
     *
     * @type {MissingAggregation}
     * @memberof Aggregation
     */
    missing?: MissingAggregation;
    /**
     *
     * @type {MinAggregation}
     * @memberof Aggregation
     */
    min?: MinAggregation;
    /**
     *
     * @type {MaxAggregation}
     * @memberof Aggregation
     */
    max?: MaxAggregation;
    /**
     *
     * @type {AvgAggregation}
     * @memberof Aggregation
     */
    avg?: AvgAggregation;
    /**
     *
     * @type {SumAggregation}
     * @memberof Aggregation
     */
    sum?: SumAggregation;
    /**
     *
     * @type {StatsAggregation}
     * @memberof Aggregation
     */
    stats?: StatsAggregation;
    /**
     *
     * @type {ExtendedStatsAggregation}
     * @memberof Aggregation
     */
    extended_stats?: ExtendedStatsAggregation;
    /**
     *
     * @type {ValueCountAggregation}
     * @memberof Aggregation
     */
    value_count?: ValueCountAggregation;
    /**
     *
     * @type {CardinalityAggregation}
     * @memberof Aggregation
     */
    cardinality?: CardinalityAggregation;
    /**
     *
     * @type {DslQuery}
     * @memberof Aggregation
     */
    filter?: DslQuery;
    /**
     *
     * @type {FiltersAggregation}
     * @memberof Aggregation
     */
    filters?: FiltersAggregation;
    /**
     * Optional. Nested sub-aggregations, keyed by caller-chosen name. Bucket aggregations compute these once per bucket.
     * @type {{ [key: string]: Aggregation; }}
     * @memberof Aggregation
     */
    aggregations?: {
        [key: string]: Aggregation;
    };
}
/**
 * Check if a given object implements the Aggregation interface.
 */
export declare function instanceOfAggregation(value: object): value is Aggregation;
export declare function AggregationFromJSON(json: any): Aggregation;
export declare function AggregationFromJSONTyped(json: any, ignoreDiscriminator: boolean): Aggregation;
export declare function AggregationToJSON(json: any): Aggregation;
export declare function AggregationToJSONTyped(value?: Aggregation | null, ignoreDiscriminator?: boolean): any;
