import Highcharts from '@sisense/sisense-charts';
import type { SeriesLegendItemClickCallbackFunction } from '@sisense/sisense-charts';
import { ChartDataOptionsInternal } from '../../../../domains/visualizations/core/chart-data-options/types.js';
import { HighchartsPointerEvent, HighchartsSelectEvent } from '../../../../types.js';
import { SisenseChartDataPointEventHandler, SisenseChartDataPointsEventHandler } from '../../components/chart/components/sisense-chart/types';
import { HighchartsOptionsInternal } from './chart-options-service';
type HighchartsChartWithCustomProperties = Highcharts.Chart & {
    /**
     * Custom property that indicates that redraw was triggered by drill action,
  
     * @internal
     */
    isDrillingDownAction?: boolean;
    /**
     * Method to drill up
     * Exposed Highchart internal method
     *
     * @internal
     */
    drillUp: () => void;
};
export type HighchartsEventOptions = {
    chart: {
        zoomType?: string;
        events: {
            selection?: (ev: HighchartsSelectEvent) => void;
            drilldown?: (this: HighchartsChartWithCustomProperties) => void;
            redraw?: (this: HighchartsChartWithCustomProperties) => void;
        };
    };
    plotOptions: {
        series: {
            events?: {
                legendItemClick?: SeriesLegendItemClickCallbackFunction;
            };
            point: {
                events: {
                    click?: (ev: HighchartsPointerEvent) => void;
                    contextmenu?: (ev: HighchartsPointerEvent) => void;
                };
            };
        };
    };
};
export declare const applyEventHandlersToChart: (chartOptions: HighchartsOptionsInternal, dataOptions: ChartDataOptionsInternal, { onDataPointClick, onDataPointContextMenu, onDataPointsSelected, }?: {
    onDataPointClick?: SisenseChartDataPointEventHandler | undefined;
    onDataPointContextMenu?: SisenseChartDataPointEventHandler | undefined;
    onDataPointsSelected?: SisenseChartDataPointsEventHandler | undefined;
}) => HighchartsOptionsInternal;
/**
 * Composable variant of applyEventHandlersToChart.
 * Returns a function that applies event handlers to the chart options.
 *
 * @param dataOptions - The data options to use.
 * @param onDataPointClick - The event handler for data point click.
 * @param onDataPointContextMenu - The event handler for data point context menu.
 * @param onDataPointsSelected - The event handler for data points selected.
 * @returns A function that applies event handlers to the chart options.
 */
export declare function withEventHandlers(dataOptions: ChartDataOptionsInternal, { onDataPointClick, onDataPointContextMenu, onDataPointsSelected, }?: {
    onDataPointClick?: SisenseChartDataPointEventHandler;
    onDataPointContextMenu?: SisenseChartDataPointEventHandler;
    onDataPointsSelected?: SisenseChartDataPointsEventHandler;
}): (chartOptions: HighchartsOptionsInternal) => HighchartsOptionsInternal;
export {};
