import { Point } from "../../Core/Point";
import { EChart2DModifierType } from "../../types/ChartModifierType";
import type { IChartModifierBaseOptions } from "./ChartModifierBase2D";
import { ChartModifierBase2D } from "./ChartModifierBase2D";
import type { ModifierMouseArgs } from "./ModifierMouseArgs";
/**
 * Optional parameters used to configure a {@link PinchZoomModifier} at construct time
 */
export interface IPinchZoomModifierOptions extends IChartModifierBaseOptions {
    /**
     * Defines the sensitivity of zooming in horizontal direction
     */
    horizontalGrowFactor?: number;
    /**
     * Defines the sensitivity of zooming in vertical direction
     */
    verticalGrowFactor?: number;
}
/**
 * The PinchZoomModifier provides ability to zoom by pinch gesture on a 2D {@link SciChartSurface}
 * within SciChart - High Performance {@link https://www.scichart.com/javascript-chart-features | JavaScript Charts}
 * @remarks
 *
 * To apply the PinchZoomModifier to a {@link SciChartSurface} and add pinch zoom behavior,
 * use the following code:
 *
 * ```ts
 * const sciChartSurface: SciChartSurface;
 * sciChartSurface.chartModifiers.add(new PinchZoomModifier());
 * ```
 *
 * It is also necessary to set “touch-action: none” on the chart div element.
 *
 * ---
 * 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/chart-modifier-api/zooming-and-panning/pinch-zoom-modifier/#includeexclude-certain-axis-from-pinch-zoom}
 */
export declare class PinchZoomModifier extends ChartModifierBase2D {
    readonly type: EChart2DModifierType;
    /**
     * Defines the sensitivity of zooming in horizontal direction
     */
    horizontalGrowFactor: number;
    /**
     * Defines the sensitivity of zooming in vertical direction
     */
    verticalGrowFactor: number;
    /**
     * touch points X coordinates difference
     */
    protected previousHorizontalTouchPointsDistance: number | undefined;
    /**
     * touch points Y coordinates difference
     */
    protected previousVerticalTouchPointsDistance: number | undefined;
    /**
     * Creates an instance of a PinchZoomModifier
     * @param options Optional parameters used to configure the modifier
     *
     * ---
     * 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/chart-modifier-api/zooming-and-panning/pinch-zoom-modifier/#includeexclude-certain-axis-from-pinch-zoom}
     */
    constructor(options?: IPinchZoomModifierOptions);
    /**
     * @inheritDoc
     */
    modifierMouseDown(args: ModifierMouseArgs): void;
    /**
     * @inheritDoc
     */
    modifierMouseMove(args: ModifierMouseArgs): void;
    /**
     * @inheritDoc
     */
    modifierMouseUp(args: ModifierMouseArgs): void;
    /**
     * @inheritDoc
     */
    modifierPointerCancel(args: ModifierMouseArgs): void;
    toJSON(): {
        type: string;
        options: Required<Omit<IChartModifierBaseOptions, never>>;
    };
    /**
     * Performs the zoom operation around the mouse point
     * @param mousePoint The X,Y location of the mouse at the time of the zoom
     * @param horizontalPinchDelta horizontal pinch delta
     * @param verticalPinchDelta vertical pinch delta
     */
    protected performZoom(mousePoint: Point, horizontalPinchDelta: number, verticalPinchDelta: number, horizontalGrowFactor: number, verticalGrowFactor: number): boolean;
    /**
     * Handles pointer event becoming inactive
     * @param args pointer event properties
     */
    protected removeFromActiveTouchEvents(args: ModifierMouseArgs): void;
    protected performModifierAction(args: ModifierMouseArgs): boolean | void;
    protected getIsActionAllowed(args: ModifierMouseArgs): boolean;
    /**
     * returns a point equidistant to the provided ones
     * @param firstPoint the X,Y location of the first active pointer
     * @param secondPoint the X,Y location of the second active pointer
     */
    protected getMiddlePoint: (firstPoint: Point, secondPoint: Point) => Point;
}
