import { QueryAttributes } from '../QueryAttributes/types';
export declare type DataType = 'number' | 'boolean' | 'string' | 'date_time' | 'string[]';
export declare enum DataTypeEnum {
    Number = "number",
    Boolean = "boolean",
    String = "string",
    DateTime = "date_time",
    StringArray = "string[]"
}
export declare type DateTimeFormat = 'DD/MM/YYYY' | 'MM/DD/YYYY' | 'DD-MM-YYYY' | 'MM-DD-YYYY' | 'DD MMMM YYYY, hh:mm' | 'dddd DD MMMM YYYY, hh:mm' | 'hh:mm' | 'hh:mm:ss' | 'DD MMMM YYYY' | 'MMMM YYYY' | 'YYYY' | 'YYYY-MM-DD[T]HH:mm:ss' | 'quarter' | 'week' | 'day_of_month' | 'day_of_week_iso' | 'week_of_year' | 'hour_of_day' | 'month_of_year';
export declare type SupportedAggregateOption = string;
declare type DashboardRequiredFilterGroup = {
    /** This is displayed on the global filter, and it is also used to group related filters */
    publicName: string;
};
export declare type BaseField = {
    id: string;
    publicName: string;
    description?: string;
    canBeDimension: boolean;
    canBeMeasure: boolean;
    allowedOperators: Array<QueryAttributes.Operator>;
    dashboardRequiredFilterGroups?: DashboardRequiredFilterGroup[];
    supportedAggregateOptions?: SupportedAggregateOption[];
};
export declare type DateTimeField = BaseField & {
    dataType: 'date_time';
    allowedGranularities: QueryAttributes.TimeDimension.Truncate[];
};
export interface NonDateTimeField extends BaseField {
    dataType: Exclude<DataType, 'date_time'>;
}
export {};
