import type { IChartModifierBaseOptions } from "../../Charting/ChartModifiers/ChartModifierBase2D";
import type { ICursorModifierOptions } from "../../Charting/ChartModifiers/CursorModifier";
import type { IDataPointSelectionModifierOptions } from "../../Charting/ChartModifiers/DataPointSelectionModifier";
import type { ILegendModifierOptions } from "../../Charting/ChartModifiers/LegendModifier";
import type { IMouseWheelZoomModifierOptions } from "../../Charting/ChartModifiers/MouseWheelZoomModifier";
import type { IRangeSelectionModifierOptions } from "../../Charting/ChartModifiers/OverviewRangeSelectionModifier";
import type { IPinchZoomModifierOptions } from "../../Charting/ChartModifiers/PinchZoomModifier";
import type { IRolloverModifierOptions } from "../../Charting/ChartModifiers/RolloverModifier";
import type { IVerticalSliceOptions } from "../../Charting/ChartModifiers/VerticalSliceModifier";
import type { IRubberBandXyZoomModifierOptions } from "../../Charting/ChartModifiers/RubberBandXyZoomModifier";
import type { ISeriesSelectionModifierOptions } from "../../Charting/ChartModifiers/SeriesSelectionModifier";
import type { IXAxisDragModifierOptions } from "../../Charting/ChartModifiers/XAxisDragModifier";
import type { IYAxisDragModifierOptions } from "../../Charting/ChartModifiers/YAxisDragModifier";
import type { IZoomExtentsModifierOptions } from "../../Charting/ChartModifiers/ZoomExtentsModifier";
import type { IZoomPanModifierOptions } from "../../Charting/ChartModifiers/ZoomPanModifier";
import type { IAnnotationHoverModifierOptions } from "../../Charting/ChartModifiers/AnnotationHoverModifier";
import type { IPolarArcZoomModifierOptions } from "../../Charting/ChartModifiers/Polar/PolarArcZoomModifier";
import type { IPolarCursorModifierOptions } from "../../Charting/ChartModifiers/Polar/PolarCursorModifier";
import type { IPolarDataPointSelectionModifierOptions } from "../../Charting/ChartModifiers/Polar/PolarDataPointSelectionModifier";
import type { IPolarSeriesSelectionModifierOptions } from "../../Charting/ChartModifiers/Polar/PolarSeriesSelectionModifier";
import type { IPolarLegendModifierOptions } from "../../Charting/ChartModifiers/Polar/PolarLegendModifier";
import type { IPolarMouseWheelZoomModifierOptions } from "../../Charting/ChartModifiers/Polar/PolarMouseWheelZoomModifier";
import type { IPolarZoomExtentsModifierOptions } from "../../Charting/ChartModifiers/Polar/PolarZoomExtentsModifier";
import type { IPolarPanModifierOptions } from "../../Charting/ChartModifiers/Polar/PolarPanModifier";
import type { IChartModifierBase3DOptions } from "../../Charting3D/ChartModifiers/ChartModifierBase3D";
import type { IMouseWheelZoomModifier3DOptions } from "../../Charting3D/ChartModifiers/MouseWheelZoomModifier3D";
import type { IPinchZoomModifier3DOptions } from "../../Charting3D/ChartModifiers/PinchZoomModifier3D";
import type { IOrbitModifier3DOptions } from "../../Charting3D/ChartModifiers/OrbitModifier3D";
import type { ITooltipModifier3DOptions } from "../../Charting3D/ChartModifiers/TooltipModifier3D";
import type { IResetCamera3DOptions } from "../../Charting3D/ChartModifiers/ResetCamera3DModifier";
import type { ILegendModifier3DOptions } from "../../Charting3D/ChartModifiers/LegendModifier3D";
import type { ISeriesSelectionModifier3DOptions } from "../../Charting3D/ChartModifiers/SeriesSelectionModifier3D";
import type { EChart2DModifierType, EChart3DModifierType } from "../../types/ChartModifierType";
/** Definition of a 2d chart modifier, comprising a {@link EChart2DModifierType} and the relevant options */
export type TModifierDefinition = {
    type: EChart2DModifierType;
    options?: IChartModifierBaseOptions;
} | {
    type: EChart2DModifierType.Cursor;
    options?: ICursorModifierOptions;
} | {
    type: EChart2DModifierType.PolarCursor;
    options?: IPolarCursorModifierOptions;
} | {
    type: EChart2DModifierType.DataPointSelection;
    options?: IDataPointSelectionModifierOptions;
} | {
    type: EChart2DModifierType.PolarDataPointSelection;
    options?: IPolarDataPointSelectionModifierOptions;
} | {
    type: EChart2DModifierType.PolarSeriesSelection;
    options?: IPolarSeriesSelectionModifierOptions;
} | {
    type: EChart2DModifierType.Legend;
    options?: ILegendModifierOptions;
} | {
    type: EChart2DModifierType.PolarLegend;
    options?: IPolarLegendModifierOptions;
} | {
    type: EChart2DModifierType.MouseWheelZoom;
    options?: IMouseWheelZoomModifierOptions;
} | {
    type: EChart2DModifierType.PolarMouseWheelZoom;
    options?: IPolarMouseWheelZoomModifierOptions;
} | {
    type: EChart2DModifierType.PinchZoom;
    options?: IPinchZoomModifierOptions;
} | {
    type: EChart2DModifierType.Rollover;
    options?: IRolloverModifierOptions;
} | {
    type: EChart2DModifierType.VerticalSlice;
    options?: IVerticalSliceOptions;
} | {
    type: EChart2DModifierType.RubberBandXYZoom;
    options?: IRubberBandXyZoomModifierOptions;
} | {
    type: EChart2DModifierType.PolarArcZoom;
    options?: IPolarArcZoomModifierOptions;
} | {
    type: EChart2DModifierType.SeriesSelection;
    options?: ISeriesSelectionModifierOptions;
} | {
    type: EChart2DModifierType.AnnotationHover;
    options?: IAnnotationHoverModifierOptions;
} | {
    type: EChart2DModifierType.XAxisDrag;
    options?: IXAxisDragModifierOptions;
} | {
    type: EChart2DModifierType.YAxisDrag;
    options?: IYAxisDragModifierOptions;
} | {
    type: EChart2DModifierType.ZoomExtents;
    options?: IZoomExtentsModifierOptions;
} | {
    type: EChart2DModifierType.PolarZoomExtents;
    options?: IPolarZoomExtentsModifierOptions;
} | {
    type: EChart2DModifierType.ZoomPan;
    options?: IZoomPanModifierOptions;
} | {
    type: EChart2DModifierType.PolarPan;
    options?: IPolarPanModifierOptions;
} | {
    type: EChart2DModifierType.OverviewRangeSelection;
    options?: IRangeSelectionModifierOptions;
} | {
    type: EChart2DModifierType.Custom;
    customType?: string;
    options?: IChartModifierBaseOptions;
};
export type TModifier3DDefinition = {
    type: EChart3DModifierType.MouseWheelZoom;
    options?: IMouseWheelZoomModifier3DOptions;
} | {
    type: EChart3DModifierType.Orbit;
    options?: IOrbitModifier3DOptions;
} | {
    type: EChart3DModifierType.PinchZoom;
    options?: IPinchZoomModifier3DOptions;
} | {
    type: EChart3DModifierType.Tooltip;
    options?: ITooltipModifier3DOptions;
} | {
    type: EChart3DModifierType.SeriesSelection;
    options?: ISeriesSelectionModifier3DOptions;
} | {
    type: EChart3DModifierType.ZoomExtents;
    options?: IResetCamera3DOptions;
} | {
    type: EChart3DModifierType.Legend;
    options?: ILegendModifier3DOptions;
} | {
    type: EChart3DModifierType.Custom;
    customType?: string;
    options?: IChartModifierBase3DOptions;
};
