/**
 * @license
 *-------------------------------------------------------------------------------------------
 * Copyright © 2026 Progress Software Corporation. All rights reserved.
 * Licensed under commercial license. See LICENSE.md in the package root for more information
 *-------------------------------------------------------------------------------------------
 */
import { AxisLabelClickEvent, DragEvent, DragStartEvent, DragEndEvent, LegendItemClickEvent, LegendItemHoverEvent, NoteClickEvent, NoteHoverEvent, PlotAreaClickEvent, PlotAreaHoverEvent, RenderEvent, SeriesClickEvent, SeriesHoverEvent, ZoomEvent, ZoomStartEvent, ZoomEndEvent, SelectEvent, SelectStartEvent, SelectEndEvent } from './common/events';
import { AxisDefaults, DragAction, Pane, PaneDefaults, SeriesDefaults, Zoomable } from './common/property-types';
/**
 * @hidden
 */
export interface BaseChartPrivateProps extends BaseChartProps {
    /**
     * @hidden
     */
    deriveOptionsFromParent?: (options: any) => any;
    /**
     * @hidden
     */
    chartConstructor: any;
    /**
     * @hidden
     */
    className: string;
    /**
     * @hidden
     */
    chartStyle: object;
    /**
     * @hidden
     */
    wrapper: string;
    /**
     * @hidden
     */
    getTarget: () => any;
    /**
     * @hidden
     */
    onRefresh?: (chartOptions: any, themeOptions: any, chartInstance: any) => void;
    /**
     * @hidden
     */
    dataItems?: any;
    /**
     * @hidden
     */
    onBasechartevent?: (event: any) => void;
}
/**
 * @hidden
 */
export interface BaseChartProps {
    /**
     * Represents the `dir` HTML attribute.
     */
    dir?: string;
    /**
     * Sets the preferred rendering engine ([see example]({% slug rendering_chart_charts %})). If not supported by the browser, the Chart switches to the first available mode.
     *
     * The supported values are:
     * - `"svg"`&mdash;If available, renders the component as an inline `.svg` file.
     * - `"canvas"`&mdash;If available, renders the component as a `canvas` element.
     */
    renderAs?: string;
    /**
     * Specifies if the Chart can be panned ([see example]({% slug panzoom_chart_charts %})).
     */
    pannable?: boolean | DragAction;
    /**
     * Specifies if the Chart can be zoomed ([see example]({% slug panzoom_chart_charts %})).
     */
    zoomable?: boolean | Zoomable;
    /**
     * The default colors for the Chart series. When all colors are used, new colors are pulled from the start again.
     */
    seriesColors?: string[];
    /**
     * If set to `true`, the Chart plays animations when it displays the series. By default, animations are enabled.
     */
    transitions?: boolean;
    /**
     * This option allows to override the default pane options.
     */
    paneDefaults?: PaneDefaults;
    /**
     * The chart panes configuration.
     */
    panes?: Pane[];
    /**
     * This option allows to override the default series options.
     */
    seriesDefaults?: SeriesDefaults;
    /**
     * This option allows to override the default axis options.
     */
    axisDefaults?: AxisDefaults;
    /**
     * @hidden
     */
    allListeners?: object;
    /**
     * Fires when the user clicks an axis label.
     */
    onAxislabelclick?: (event: AxisLabelClickEvent) => void;
    /**
     * Fires as long as the user is dragging the Chart with the mouse or through swipe gestures.
     */
    onDrag?: (event: DragEvent) => void;
    /**
     * Fires when the user stops dragging the Chart.
     */
    onDragend?: (event: DragEndEvent) => void;
    /**
     * Fires when the user starts dragging the Chart.
     */
    onDragstart?: (event: DragStartEvent) => void;
    /**
     * Fires when the user hovers over a legend item.
     */
    onLegenditemhover?: (event: LegendItemHoverEvent) => void;
    /**
     * Fires when the user clicks a legend item ([see example]({% slug legend_chart_charts %}#toc-clicking-legend-items)).
     */
    onLegenditemclick?: (event: LegendItemClickEvent) => void;
    /**
     * Fires when the user clicks a note.
     */
    onNoteclick?: (event: NoteClickEvent) => void;
    /**
     * Fires when the user hovers over a note.
     */
    onNotehover?: (event: NoteHoverEvent) => void;
    /**
     * Fires when the user clicks the plot area. The `click` event is triggered by the `tap` and `contextmenu` events. To distinguish between the original events, inspect the `e.originalEvent.type` field.
     */
    onPlotareaclick?: (event: PlotAreaClickEvent) => void;
    /**
     * Fires when the user hovers the plot area ([see example]({% slug crosshairs_chart_charts %}#toc-current-cursor-values)).
     */
    onPlotareahover?: (event: PlotAreaHoverEvent) => void;
    /**
     * Fires when the Chart is ready to render on screen ([see example]({% slug plotbands_chart_charts %}#toc-custom-plot-bands)). For example, you can use it to remove loading indicators. Any changes made to the options are ignored.
     */
    onRender?: (event: RenderEvent) => void;
    /**
     * Fires when the user modifies the selection.
     *
     * The range units are:
     * - Generic axis&mdash;Category index (0-based).
     * - Date axis&mdash;Date instance.
     */
    onSelect?: (event: SelectEvent) => void;
    /**
     * Fires when the user completes the modification of the selection ([see example]({% slug selection_chart_charts %}#toc-using-selection-as-navigator)).
     *
     * The range units are:
     * - Generic axis&mdash;Category index (0-based).
     * - Date axis&mdash;Date instance.
     */
    onSelectend?: (event: SelectEndEvent) => void;
    /**
     * Fires when the user starts modifying the axis selection.
     *
     * The range units are:
     * - Generic axis&mdash;Category index (0-based).
     * - Date axis&mdash;Date instance.
     */
    onSelectstart?: (event: SelectStartEvent) => void;
    /**
     * Fires when the user clicks the Chart series.
     *
     * The `click` event will be triggered by the `tap` and `contextmenu` events. To distinguish between the original events, inspect the `e.originalEvent.type` field.
     */
    onSeriesclick?: (event: SeriesClickEvent) => void;
    /**
     * Fires when the user hovers over the Chart series.
     */
    onSerieshover?: (event: SeriesHoverEvent) => void;
    /**
     * Fires as long as the user is zooming the Chart by using the mousewheel operation.
     */
    onZoom?: (event: ZoomEvent) => void;
    /**
     * Fires when the user stops zooming the Chart.
     */
    onZoomend?: (event: ZoomEndEvent) => void;
    /**
     * Fires when the user uses the mousewheel to zoom the Chart.
     */
    onZoomstart?: (event: ZoomStartEvent) => void;
}
