import { BaseChartRepresentation, LabelRotationData, Tick } from '../../../../shared-logic/src/ChartsV2/types';
import { ApproxAxisLabelCountWithAllOptions } from '../../../../shared-logic/src/Component/types';
import { HorizontalBarChartRepresentation } from '../../../../shared-logic/src/HorizontalBarChartV2/types';
import { Result } from '../../../../shared-logic/src/Result/types';
import { ChartTheme } from '../../types';
declare type NumericScaleBounds = {
    min: number | null;
    max: number | null;
};
declare type NumericTickSelectionOptions = {
    maxWidth?: number;
    scaleBounds?: NumericScaleBounds;
    scaleDataType?: string | null;
    theme?: ChartTheme;
    useRotatedLabelWidths?: boolean;
};
/**
 * Returns how many tick labels can be displayed within `maxWidth` pixels
 * without overlapping, by finding the densest valid evenly-spaced interval.
 *
 * `getTicksIntervals` returns candidate skip-intervals sorted descending
 * (e.g. [9, 3, 1] for 10 ticks), so index 0 = fewest ticks, last index =
 * most ticks. The binary search walks from the sparsest end toward the
 * densest, keeping the last interval that still fits within `maxWidth`.
 */
export declare function howManyTicksFitInWidth(ticks: Tick<string | number | Date | boolean>[], maxWidth: number, theme?: ChartTheme): number;
export declare function determineYTicks(ticks: Tick<number>[], height: number, theme?: ChartTheme, _isStacked100?: boolean, scaleBounds?: NumericScaleBounds): Tick<number>[];
export declare function adjustTicks<T extends BaseChartRepresentation>(representation: T, width: number, height: number, approxXAxisLabelCount: ApproxAxisLabelCountWithAllOptions, keepAllXLabels: boolean, allowXLabelsAutoRotation: boolean, xKeyField?: Result.Field, theme?: ChartTheme): T;
export declare function adjustChartXAxisTicksAndLabelRotation<T extends BaseChartRepresentation>(representation: T, width: number, height: number, approxXAxisLabelCount: ApproxAxisLabelCountWithAllOptions, keepAllXLabels: boolean, allowXLabelsAutoRotation: boolean, xKeyField?: Result.Field, theme?: ChartTheme): T;
export declare function adjustChartYAxisTicks<T extends BaseChartRepresentation>(representation: T, height: number, theme?: ChartTheme, isStacked100?: boolean): T;
export declare function adjustXTicksAndLabelRotationAngle<DataType extends string | number | Date | boolean>(originalTicks: Tick<DataType>[], width: number, height: number, approxXAxisLabelCount: ApproxAxisLabelCountWithAllOptions, keepAllXLabels: boolean, allowXLabelsAutoRotation: boolean, xKeyField?: Result.Field, theme?: ChartTheme, numericOptions?: NumericTickSelectionOptions): {
    ticks: Tick<DataType>[];
    labelRotationData?: LabelRotationData;
};
export declare function adjustTicksForHorizontalChart(representation: HorizontalBarChartRepresentation, width: number, height: number, yKeyField?: Result.Field, theme?: ChartTheme): HorizontalBarChartRepresentation;
export declare function adjustHorizontalChartXAxisTicks(representation: HorizontalBarChartRepresentation, width: number, theme?: ChartTheme): HorizontalBarChartRepresentation;
export declare function adjustHorizontalChartYAxisTicks(representation: HorizontalBarChartRepresentation, height: number, yKeyField?: Result.Field, theme?: ChartTheme): HorizontalBarChartRepresentation;
export declare function getEvenlySpacedTicks<DataType extends string | number | Date | boolean>(ticks: Tick<DataType>[], count: number, xKeyField: Result.Field | undefined, numericOptions?: NumericTickSelectionOptions): Tick<DataType>[];
export {};
