import type { FieldReference, Filter as FilterObject } from "@metabase/embedding-sdk-react/dist/frontend/src/metabase-types/api";
import type Dimension from "../../Dimension";
import type { FilterOperator } from "../../deprecated-types";
import type StructuredQuery from "../StructuredQuery";
import MBQLClause from "./MBQLClause";
interface FilterDisplayNameOpts {
    includeDimension?: boolean;
    includeOperator?: boolean;
}
export default class Filter extends MBQLClause {
    /**
     * Replaces the filter in the parent query and returns the new StructuredQuery
     * or replaces itself in the parent query if no {filter} argument is provided.
     */
    replace(filter?: Filter | FilterObject): StructuredQuery;
    /**
     * Adds itself to the parent query and returns the new StructuredQuery
     */
    add(): StructuredQuery;
    /**
     * Removes the filter in the parent query and returns the new StructuredQuery
     */
    remove(): StructuredQuery;
    /**
     * Returns the array of arguments as dates if they are specific dates, and returns their temporal unit.
     */
    specificDateArgsAndUnit(): any[];
    /**
     * Returns the display name for the filter
     */
    displayName({ includeDimension, includeOperator, }?: FilterDisplayNameOpts): string;
    /**
     * Returns true if the filter is valid
     */
    isValid(): boolean;
    /**
     * Returns true if this is a "standard" filter
     */
    isStandard(): boolean;
    /**
     * Returns true if this is a segment
     */
    isSegment(): boolean;
    /**
     * Returns true if this is custom filter created with the expression editor
     */
    isCustom(): boolean;
    /**
     * Returns true for filters where the first argument is a field
     */
    isFieldFilter(): boolean;
    segmentId(): any;
    segment(): import("../../metadata/Segment").default | null | undefined;
    dimension(): Dimension | null | undefined;
    field(): import("../../metadata/Field").default | null | undefined;
    operatorName(): any;
    operator(opName?: any): FilterOperator | null | undefined;
    setOperator(operatorName: string): any;
    setDimension(fieldRef: FieldReference | null | undefined, { useDefaultOperator, }?: {
        useDefaultOperator?: boolean;
    }): Filter;
    setArgument(index: number, value: any): any;
    setArguments(values: any[]): any;
    filterOperators(selected: string): FilterOperator[] | null | undefined;
    arguments(): any[];
    options(): any;
    setOptions(options: any): any;
    formattedArguments(maxDisplayValues?: number): any;
    isDimension(otherDimension: Dimension): boolean;
    isOperator(otherOperator: FilterOperator | string): boolean | null | undefined;
}
export {};
