import type { AggregationOperator } from "@metabase/embedding-sdk-react/dist/frontend/src/metabase-lib/v1/deprecated-types";
import Filter from "@metabase/embedding-sdk-react/dist/frontend/src/metabase-lib/v1/queries/structured/Filter";
import type { Aggregation as AggregationObject, FieldId } from "@metabase/embedding-sdk-react/dist/frontend/src/metabase-types/api";
import type Dimension from "../../Dimension";
import { AggregationDimension } from "../../Dimension";
import type StructuredQuery from "../StructuredQuery";
import MBQLClause from "./MBQLClause";
export default class Aggregation extends MBQLClause {
    /**
     * Replaces the aggregation in the parent query and returns the new StructuredQuery
     * or replaces itself in the parent query if no {aggregation} argument is provided.
     */
    replace(aggregation?: AggregationObject | Aggregation): StructuredQuery;
    /**
     * Adds itself to the parent query and returns the new StructuredQuery
     */
    add(): StructuredQuery;
    /**
     * Removes the aggregation in the parent query and returns the new StructuredQuery
     */
    remove(): StructuredQuery;
    /**
     * Returns the display name for the aggregation
     */
    displayName(): any;
    /**
     * Returns the column name (non-deduplicated)
     */
    columnName(): any;
    short(): any;
    baseType(): string | null;
    /**
     * Predicate function to test if a given aggregation clause is valid
     */
    isValid(): boolean;
    /**
     * Returns true if this is a "standard" metric
     */
    isStandard(): boolean;
    /**
     * Returns true if this is custom expression created with the expression editor
     */
    isCustom(): boolean;
    /**
     * Gets the aggregation option matching this aggregation
     * Returns `null` if the clause isn't a "standard" metric
     */
    option(): AggregationOperator | null | undefined;
    /**
     * Get the operator from a standard aggregation clause
     * Returns `null` if the clause isn't a "standard" metric
     */
    operatorName(): string | null;
    expressionName(): string | null;
    /**
     * Get the fieldId from a standard aggregation clause
     * Returns `null` if the clause isn't a "standard" metric
     */
    getFieldReference(): FieldId | null | undefined;
    /**
     * Gets the dimension for this this aggregation
     * Returns `null` if the clause isn't a "standard" metric
     */
    dimension(): Dimension | null | undefined;
    hasOptions(): boolean;
    options(): any;
    /**
     * Returns the aggregation without "aggregation-options" clause, if any
     */
    aggregation(): Aggregation;
    filters(): Filter[];
    customFilter(): Filter | null;
    aggregationDimension(): AggregationDimension;
}
