import type { NumberRange } from "../../Core/NumberRange";
import type { Point } from "../../Core/Point";
import { EChart2DModifierType } from "../../types/ChartModifierType";
import { ECursorStyle } from "../../types/CursorStyle";
import { EDragMode } from "../../types/DragMode";
import { AxisBase2D } from "../Visuals/Axis/AxisBase2D";
import { ModifierMouseArgs } from "./ModifierMouseArgs";
import { IPinchZoomModifierOptions, PinchZoomModifier } from "./PinchZoomModifier";
export interface IYAxisDragModifierOptions extends IPinchZoomModifierOptions {
    /**
     * Flags defining whether the {@link XAxisDragModifier} Drags or Pans the chart
     * @remarks see {@link EDragMode} for more details
     */
    dragMode?: EDragMode;
    /**
     * Sets whether to enable pinch zoom behavior of {@link SciChartSurface} on touchscreen devices
     */
    enableZoom?: boolean;
    /**
     * Not supported for {@link YAxisDragModifier}, use includedYAxisIds instead
     */
    includedXAxisIds?: string[];
    /**
     * Not supported for {@link YAxisDragModifier}, use includedYAxisIds instead
     */
    excludedXAxisIds?: string[];
}
/**
 * The YAxisDragModifier provides scaling/panning behavior for Y axis {@link AxisBase2D}
 * and pinch zoom support on mobile devices
 * within SciChart - High Performance {@link https://www.scichart.com/javascript-chart-features | JavaScript Charts}
 * @remarks
 *
 * To apply the YAxisDragModifier to a {@link SciChartSurface} and add scaling behavior,
 * use the following code:
 *
 * ```ts
 * sciChartSurface.chartModifiers.add(new YAxisDragModifier());
 * ```
 *
 * ---
 * 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/chart-modifier-api/zooming-and-panning/y-axis-drag-modifier/}
 */
export declare class YAxisDragModifier extends PinchZoomModifier {
    readonly type = EChart2DModifierType.YAxisDrag;
    dragMode: EDragMode;
    /**
     * Sets whether to enable pinch zoom behavior of {@link SciChartSurface} on touchscreen devices
     */
    enableZoom: boolean;
    protected isClickedOverYAxis: boolean;
    protected pointFrom: Point | undefined;
    protected activeAxes: AxisBase2D[];
    protected initialVisibleRanges: NumberRange[];
    protected isVerticalChart: boolean;
    protected cursorStyle: ECursorStyle;
    /**
     * Creates an instance of a XAxisDragModifier
     * @param options optional parameters to pass to the XAxisDragModifier to configure it upon construction
     *
     * ---
     * 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/chart-modifier-api/zooming-and-panning/y-axis-drag-modifier/}
     */
    constructor(options?: IYAxisDragModifierOptions);
    /**
     * Not supported for {@link YAxisDragModifier}, use includeYAxis instead
     */
    includeXAxis(axis: AxisBase2D, isIncluded: boolean): void;
    /**
     * Not supported for {@link YAxisDragModifier}, use getIncludedYAxis instead
     */
    getIncludedXAxis(): AxisBase2D[];
    /** @inheritDoc */
    modifierMouseDown(args: ModifierMouseArgs): void;
    /** @inheritDoc */
    modifierMouseMove(args: ModifierMouseArgs): void;
    /** @inheritDoc */
    modifierMouseUp(args: ModifierMouseArgs): void;
    /** @inheritDoc */
    toJSON(): {
        type: string;
        options: Required<Omit<import("./ChartModifierBase2D").IChartModifierBaseOptions, never>>;
    };
    protected getIsActionAllowed(args: ModifierMouseArgs): boolean;
    protected performModifierAction(args: ModifierMouseArgs): boolean | void;
    protected updateCursor(mousePoint: Point): void;
    protected doPanning(mousePoint: Point): void;
    protected doScaling(pointTo: Point): void;
    protected getVerticalYAxes(): AxisBase2D[];
    protected getHorizontalYAxes(): AxisBase2D[];
    protected startDragging(axes: AxisBase2D[], args: ModifierMouseArgs): void;
}
