import { Attribute, Column } from '@sisense/sdk-data';
import { DrilldownSelection, ScatterDataPoint, StyledColumn } from '../../types';
import { ChartDataOptions, ChartType, DataPoint } from '../../types';
import { Hierarchy } from './hierarchy-model';
export declare function getDrilldownInitialDimension(chartType: ChartType, dataOptions: ChartDataOptions): Attribute | undefined;
export declare function isDrilldownApplicableToChart(chartType: ChartType, dataOptions: ChartDataOptions): boolean;
export declare function applyDrilldownDimension(chartType: ChartType, dataOptions: ChartDataOptions, drilldownDimension: Attribute): ChartDataOptions;
export declare function prepareDrilldownSelectionPoints(points: (DataPoint | ScatterDataPoint)[], nativeEvent: MouseEvent, dataOptions: ChartDataOptions): DataPoint[];
/**
 * Collects the available drilldown paths based on the provided paths and currently selected attributes.
 * @param drilldownPaths - The available drilldown paths (attributes or hierarchies)
 * @param selectedAttributes - The currently selected attributes in the drilldown chain
 * @returns Filtered drilldown paths that are still available for selection
 * @internal
 */
export declare function getAvailableDrilldownPaths(drilldownPaths: (Attribute | Hierarchy)[], selectedAttributes: Attribute[]): (Attribute | Hierarchy)[];
/**
 * Collects the currently selected attributes in the drilldown chain.
 * @param initialDimension - The initial dimension
 * @param drilldownSelections - The drilldown selections
 * @returns The currently selected attributes in the drilldown chain
 */
export declare function getSelectedDrilldownAttributes(initialDimension: Attribute | Column | StyledColumn, drilldownSelections: DrilldownSelection[]): Attribute[];
