import { ChartType, CompleteThemeSettings } from '../../../../types'; import { CartesianChartData } from '../../../../chart-data/types'; import { CartesianChartDataOptionsInternal } from '../../../../chart-data-options/types'; import { StackableChartDesignOptions, PolarChartDesignOptions } from '../../../translations/design-options'; import { ChartDesignOptions } from '../../../translations/types'; import { Axis, AxisSettings, AxisMinMax, PlotBand } from '../../../translations/axis-section'; import { withChartSpecificAxisSettings, withPolarSpecificAxisSettings, withStacking } from './axis-utils'; export { withChartSpecificAxisSettings, withPolarSpecificAxisSettings, withStacking }; import { AxisClipped } from '../../../translations/translations-to-highcharts'; import { Stacking } from '../../../chart-options-service'; /** * X-axis orientation type */ export type XAxisOrientation = 'horizontal' | 'vertical'; /** * Y-axis metadata containing all Y-axis related configuration */ export interface YAxisMeta { side: number[]; chartType: (string | undefined)[]; treatNullAsZero: boolean[]; connectNulls: boolean[]; } /** * Categories metadata containing categories, index mapping, and plot bands */ export interface CategoriesMeta { categories: string[]; indexMap: number[]; plotBands: PlotBand[]; } /** * Parameters for building X-axis settings */ export interface BuildXAxisSettingsParams { designOptions: ChartDesignOptions; dataOptions: CartesianChartDataOptionsInternal; chartData: CartesianChartData; categoriesMeta: CategoriesMeta; orientation: XAxisOrientation; isContinuous: boolean; dateFormatter?: (date: Date, format: string) => string; } /** * Stacking configuration metadata */ export interface StackingMeta { stacking?: Stacking; showTotal?: boolean; } /** * Y-axis settings result containing both settings and clipping information */ export interface YAxisSettingsResult { settings: AxisSettings[]; clipped: AxisClipped[]; } /** * Determines if the X-axis should use continuous datetime scale * * @param xDataOptions - X-axis data options * @returns true if continuous datetime X-axis should be used */ export declare const isContinuousDatetimeXAxis: (xDataOptions: CartesianChartDataOptionsInternal['x']) => boolean; /** * Builds Y-axis metadata from chart data and options * * @param chartData - Cartesian chart data * @param dataOptions - Chart data options * @returns Y-axis metadata object */ export declare const buildYAxisMeta: (chartData: CartesianChartData, dataOptions: CartesianChartDataOptionsInternal) => YAxisMeta; /** * Determines X-axis orientation based on chart type and Y-axis chart types * * @param chartType - Main chart type * @param yAxisChartTypes - Array of Y-axis chart types * @returns X-axis orientation */ export declare const getXAxisOrientation: (chartType: ChartType, yAxisChartTypes: (string | undefined)[]) => XAxisOrientation; /** * Builds categories metadata including categories, index map, and plot bands * * @param chartData - Chart data * @param dataOptions - Chart data options * @param designOptions - Chart design options * @param isContinuous - Whether X-axis is continuous * @returns Categories metadata object */ export declare const buildCategoriesMeta: (chartData: CartesianChartData, dataOptions: CartesianChartDataOptionsInternal, designOptions: ChartDesignOptions, isContinuous: boolean) => CategoriesMeta; /** * Builds X-axis settings based on whether it's continuous datetime or categorical * * @param params - Parameters object containing all required data * @param params.designOptions - Chart design options * @param params.dataOptions - Chart data options * @param params.chartData - Chart data * @param params.categoriesMeta - Categories metadata * @param params.orientation - X-axis orientation * @param params.isContinuous - Whether X-axis is continuous * @param params.dateFormatter - Optional date formatter function * @returns X-axis settings array */ export declare const buildXAxisSettings: ({ designOptions, dataOptions, chartData, categoriesMeta, orientation, isContinuous, dateFormatter, }: BuildXAxisSettingsParams) => AxisSettings[]; /** * Calculates Y-axis min/max values for a specific axis side * * @param axisIndex - Axis index (0 for left/primary, 1 for right/secondary) * @param chartType - Chart type * @param chartData - Chart data * @param designOptions - Chart design options * @param yAxisSide - Array indicating which side each series belongs to * @param treatNullAsZero - Array indicating null treatment for each series * @returns Axis min/max values */ export declare const buildYAxisMinMax: (axisIndex: 0 | 1, chartType: ChartType, chartData: CartesianChartData, designOptions: ChartDesignOptions, yAxisSide: number[], treatNullAsZero: boolean[]) => AxisMinMax; /** * Builds stacking configuration metadata * * @param chartType - Chart type * @param designOptions - Stackable chart design options * @returns Stacking metadata */ export declare const buildStackingMeta: (chartType: ChartType, designOptions: StackableChartDesignOptions) => StackingMeta; /** * Contextless transformer that normalizes Y-axis configuration for polar charts. * Disables Y-axis titles which are not meaningful in polar coordinate system. * * @param designOptions - Polar chart design options to normalize * @returns Normalized polar chart design options with Y-axis title disabled * @example * const normalizedOptions = withYAxisNormalizationForPolar(polarDesignOptions); */ export declare const withYAxisNormalizationForPolar: (designOptions: Readonly) => PolarChartDesignOptions; /** * Builds Y-axis settings and clipping information * * @param yAxis - Primary Y-axis configuration * @param y2Axis - Secondary Y-axis configuration * @param primaryMinMax - Primary axis min/max values * @param secondaryMinMax - Secondary axis min/max values (optional) * @param stackingMeta - Stacking configuration * @param totalLabelRotation - Total label rotation angle * @param dataOptions - Chart data options * @param themeSettings - Theme settings (optional) * @returns Y-axis settings and clipping information */ export declare const buildYAxisSettings: (yAxis: Axis, y2Axis: Axis | undefined, primaryMinMax: AxisMinMax, secondaryMinMax: AxisMinMax | undefined, stackingMeta: StackingMeta, totalLabelRotation: number, dataOptions: CartesianChartDataOptionsInternal, themeSettings?: CompleteThemeSettings) => YAxisSettingsResult; /** * Determines if a secondary Y-axis is needed based on Y-axis side configuration * * @param yAxisSide - Array indicating which side each series belongs to * @returns true if secondary Y-axis is needed */ export declare const hasSecondaryYAxis: (yAxisSide: number[]) => boolean; //# sourceMappingURL=axis-builders.d.ts.map