import { EchartOptionsProps } from './types'; import { Theme } from '@mui/material'; /** * Deep-merges two ECharts option objects with smart handling for `color`, `axisLabel`, and `series` keys. * * @param optionA - Base ECharts options. * @param optionB - Override ECharts options to merge on top. * @param customMergeFn - Optional function returning a custom merge strategy per key. * @returns The merged ECharts options object. * * @remarks * - `color` arrays are replaced entirely (not concatenated). * - `axisLabel` formatters are composed so the base formatter can suppress values by returning `''`. * - `series` arrays are merged element-by-element rather than concatenated. * * @example * ```tsx * const option = mergeEchartWidgetConfig(props.option, { * series: [{ barWidth: '60%', itemStyle: { borderRadius: [4, 4, 0, 0] } }], * tooltip: { trigger: 'axis' }, * }) * ``` */ export declare function mergeEchartWidgetConfig(optionA: T | undefined, optionB: T | undefined, customMergeFn?: (key: string) => ((a: unknown, b: unknown) => unknown) | undefined): T; /** * Generates ECharts `dataZoom` configuration for interactive zoom and pan on chart axes. * * @param range - Initial visible range as `{ start, end }` percentages (0-100). Defaults to full range. * @param options - Zoom behavior options including axis sliders, inside zoom, and formatter. * @param theme - Optional MUI theme for styled slider handles and backgrounds. * @returns An object containing the `dataZoom` array configuration. */ export declare function getEChartZoomConfig({ start, end }?: { start: number; end: number; }, { inside, xSlider, ySlider, showSliders, xAxisLabelFormatter, bottomOffset, }?: { inside?: boolean; xSlider?: boolean; ySlider?: boolean; showSliders?: boolean; xAxisLabelFormatter?: (value: number) => string; bottomOffset?: number; }, theme?: Theme): { dataZoom: ({ throttle: number; type: string; xAxisIndex: number[]; yAxisIndex: number[]; show: boolean; zoomLock: boolean; start: number; end: number; orientation?: undefined; } | { throttle: number; type: string; show: boolean; zoomLock: boolean; start: number; end: number; orientation: string; xAxisIndex?: undefined; yAxisIndex?: undefined; } | { brushSelect: boolean; moveHandleSize: number; handleSize: string; handleIcon: string; throttle: number; type: string; xAxisIndex: number[]; bottom: number; height: number; show: boolean; zoomLock: boolean; start: number; end: number; labelFormatter: ((value: number) => string) | undefined; showDetail: boolean; yAxisIndex?: undefined; orientation?: undefined; } | { brushSelect: boolean; moveHandleSize: number; handleSize: string; handleIcon: string; throttle: number; type: string; left: number; width: number; yAxisIndex: number[]; show: boolean; zoomLock: boolean; start: number; end: number; xAxisIndex?: undefined; orientation?: undefined; })[]; }; /** * Generates ECharts `brush` configuration for interactive data selection on charts. * * @param options - Brush options including type, mode, and target axis index. * @returns An object containing the `brush` configuration. */ export declare function getEChartBrushConfig({ brushType, brushMode, xAxisIndex }?: { brushType?: string; brushMode?: string; xAxisIndex?: number; throttleType?: string; throttleDelay?: number; }): { brush: { toolbox: string[]; brushType: string; brushMode: string; xAxisIndex: number; }; }; /** * Returns an ECharts `stack` configuration to group series into a stacked layout. * * @param stackGroup - The stack group identifier. Defaults to the library's default group. * @returns An object with the `stack` property set to the group name. */ export declare function getEChartStackConfig(stackGroup?: string): { stack: string; };