import { Component } from '../Component/types';
import { DataSet } from '../DataSet/types';
import { Datum, ParsedDatumKey } from '../DatumKey';
import * as Dimension from '../Dimension';
import { QueryAttributes } from '../QueryAttributes/types';
import { QueryEngineConfig } from '../QueryEngineConfig/types';
export declare const updateTimeDimension: (dataSet: DataSet, option: QueryAttributes.TimeDimension & {
    function?: string;
}) => QueryAttributes.TimeDimension | null;
export declare type DrilldownField = Component.DrilldownOptions & {
    value: string | number | Date;
};
export declare type SelectedDrilldown = {
    newField: Component.DrilldownOptions;
    existingField?: DrilldownField;
};
export declare const newDimensions: (dataSet: DataSet, existingField: DrilldownField | undefined, option: QueryAttributes.Dimension, dimension: QueryAttributes.Dimension[], hasDateTimeInDimension?: boolean | undefined) => QueryAttributes.Dimension[];
export declare const updateFilter: (existingFilters: QueryAttributes.Filter[][], data: any[][], queryEngineConfig: QueryEngineConfig, existingField: DrilldownField | undefined, timeDimension: QueryAttributes.TimeDimension | null, dimension?: QueryAttributes.Dimension[] | undefined) => QueryAttributes.Filter[][];
export declare const drilldownDepthReached: (drilldownSelections: SelectedDrilldown[]) => boolean;
export declare const updatedOrder: (existingOrder: QueryAttributes.Order[], dataSet: DataSet, existingField: DrilldownField | undefined, option: QueryAttributes.Dimension | QueryAttributes.TimeDimension) => QueryAttributes.Order[];
export declare const validDrilldownProperties: (dataSet: DataSet, drilldown: SelectedDrilldown) => boolean;
export declare function buildSelectedField(clickedValue: Datum, queryEngineConfig: QueryEngineConfig): {
    field: string;
    value: string;
    function: string;
};
export declare function buildClickedOnFieldForQuery(getField: (metric: {
    field: string;
    function: string;
}) => string, parseKey: (key: string) => ParsedDatumKey | undefined, dimension?: QueryAttributes.Dimension[], timeDimension?: QueryAttributes.TimeDimension | null, clickedValue?: Datum | undefined): DrilldownField[];
export declare function buildDrilldownFilters(attributes: Component.BarChartAttributes | Component.HorizontalBarChartAttributes | Component.PieChartAttributes, queries: Partial<QueryAttributes>, existingField: DrilldownField[], combineFilters: (array1: QueryAttributes.Filter[][], array2: QueryAttributes.Filter[][]) => QueryAttributes.Filter[][], updateFilter: (field: DrilldownField, timeDimension: QueryAttributes.TimeDimension | null, dimension: QueryAttributes.Dimension[]) => QueryAttributes.Filter[][]): QueryAttributes.Filter[][];
