import { DataSet } from '../DataSet/types';
import { FieldFilterOptions } from '../DataSet/fieldFilterOptions';
import { QueryAttributes } from '../QueryAttributes/types';
import { Section as ConstSection, Pagination } from '../ComponentInterface/types/namespaces.types';
export declare type Section<Type> = ConstSection<Type> & {
    testId?: string;
    namespace?: string;
};
declare type MetricOptions = {
    allowsMultiple?: boolean;
    maximumMetricsAllowed?: number;
    propKey?: 'xMeasure' | 'yMeasure' | 'zMeasure' | 'measure' | 'barMeasure' | 'lineMeasure';
    filterFieldOptions?: FieldFilterOptions;
};
export declare type FieldCollectorOptions<Attrs> = {
    callToAction?: string;
    maxAllowed?: number;
    preventDuplicates?: boolean;
    fieldFilterOptions?: FieldFilterOptions;
    getValues: (attributes: Attrs) => Array<QueryAttributes['measure'][number] | QueryAttributes['dimension'][number]>;
    preSetPartialAttributes: (values: Array<QueryAttributes['measure'][number] | QueryAttributes['dimension'][number]>, dataSet: DataSet, originalAttributes: Attrs) => Partial<Attrs>;
};
export declare type FieldCollectorSection = Section<'fieldCollector'> & FieldCollectorOptions<any>;
export declare type MetricsSection = Section<'metrics'> & MetricOptions;
export declare type DimensionSection = Section<'dimension'> & {
    newCallToAction?: string;
    allowsMultiple?: boolean;
    filterFieldOptions?: FieldFilterOptions;
};
export declare type LabelledMetricSection = Section<'labelledMetrics'> & {
    subSection: Array<MetricOptions & {
        title: string;
    }>;
};
export interface ProgressGoalSection<T> extends Omit<Section<T>, 'type'> {
    goals?: {
        field: string;
        value: number;
    }[];
}
export declare type ProgressGoalsSection = Section<'progressGoals'> & ProgressGoalSection<'progressGoals'>;
export declare type PaginationSection = Section<'pagination'> & Pagination;
export declare type DataPanelSection = DimensionSection | FieldCollectorSection | LabelledMetricSection | MetricsSection | PaginationSection | ProgressGoalsSection | Section<'comboChartDimension'> | Section<'comparison'> | Section<'country'> | Section<'customMetrics'> | Section<'dataSet'> | Section<'dateComparison'> | Section<'drilldown'> | Section<'fields'> | Section<'filter'> | Section<'limit'> | Section<'aggregateMetricGroup'> | Section<'sort'> | Section<'timeDimension'> | Section<'views'> | Section<'xAxis'>;
export declare type DataPanelConfig = Array<DataPanelSection>;
export {};
