import { DataSet } from './types';
import { CustomField, SimpleMathField } from '../CustomField/types';
import { DateTimeField, NonDateTimeField } from '../Field/types';
import { PreAggregatedQuery } from '../Query/types';
import * as Field from '../Field/Field';
import { QueryAttributes } from '../QueryAttributes/types';
import { QueryEngineConfig } from '../QueryEngineConfig/types';
import { ComponentType } from '../Component/types';
import { RawDashboard } from '../Dashboard';
export declare const find: <T extends {
    id: string;
}>(dataSets: T[], dataSetId: string) => T | null;
export declare const findByName: <T extends {
    name: string;
}>(dataSets: T[], dataSetName: string) => T | null;
export declare const findField: (dataSet: DataSet, id: string) => DataSet.Field;
export declare const isField: (dataSet: DataSet, id: string) => DataSet.Field | undefined;
export declare const findFieldByName: (dataSet: DataSet, name: string) => DataSet.Field;
export declare const findDataSet: (dataSets: DataSet[], dataSetId: string) => [DataSet | null, number];
export declare const upcastDataSet: (rawDataSet: any, queryEngineConfig: QueryEngineConfig) => DataSet;
export declare const upcastDataSets: (rawDataSet: any[], queryEngineConfig: QueryEngineConfig) => DataSet[];
export declare const hasDateTimeFields: (dataSet: DataSet) => boolean;
export declare const getPlaceholder: (dataSet: DataSet, field: string | null) => string;
export declare const takeFieldsForDimension: (dataSet: DataSet) => DataSet.Field[];
export declare const takeFieldsForMeasure: (dataSet: DataSet, componentType: ComponentType) => DataSet.Field[];
/**
 * Return all custom fields for a data set, and optionally
 * provide the componentType to ensure the custom fields which are returned
 * are also supported by the componentType.
 */
export declare const takeCustomFields: (dataSet: DataSet, componentType?: "progress" | "areaChart" | "areaChartV2" | "barChart" | "barChartV2" | "basicTable" | "bubbleChart" | "bubbleChartV2" | "comboChart" | "comboChartV2" | "custom" | "dataTable" | "funnelChart" | "horizontalBarChart" | "horizontalBarChartV2" | "lineChart" | "lineChartV2" | "mercatorMap" | "pieChart" | "radarChart" | "richText" | "scatterChart" | "scatterChartV2" | "singleStat" | "sunburstChart" | "waterfallChart" | undefined) => CustomField[];
export declare const takeNonCustomFields: (dataSet: DataSet) => Array<NonDateTimeField | DateTimeField | SimpleMathField>;
export declare const takeNonPercentageCustomFields: (dataSet: DataSet) => Array<NonDateTimeField | DateTimeField | SimpleMathField>;
export declare const removeCustomFields: (dataSet: DataSet) => DataSet;
export declare const upsertField: (dataSet: DataSet, upsertedField: DataSet.Field) => DataSet;
export declare const updateDataSet: (dataSets: DataSet[], updatedDataSet: DataSet) => DataSet[];
export declare const removeField: <T extends {
    fields: DataSet['fields'];
}>(dataSet: T, fieldId: string) => T;
export declare const findRemovedFieldsBetweenDataSets: (previousDataSets: DataSet[], newDataSets: DataSet[]) => Array<DataSet.Field>;
export declare const findRemovedFields: (original: DataSet, latest: DataSet) => Array<DataSet.Field>;
export declare const buildQueryAttributes: (dataSet: DataSet, queryEngineConfig: QueryEngineConfig, componentType: ComponentType) => QueryAttributes;
export declare const buildDownloadQuery: (dataSet: DataSet, maxCSVDownloadLimit: number, viewFilters: QueryAttributes['filter']) => QueryAttributes;
export declare const buildViewOnlyQuery: (dataSet: DataSet) => PreAggregatedQuery;
export declare const addCustomFields: (dataSets: Array<DataSet>, customFields: RawDashboard['definition']['customFields']) => Array<DataSet>;
export declare const validId: (id: string, dataSet: DataSet[]) => boolean;
