import { EChart2DModifierType } from "../../../types/ChartModifierType";
import { EModifierType } from "../../../types/ModifierType";
import type { ModifierMouseArgs } from "../ModifierMouseArgs";
import type { IPinchZoomModifierOptions } from "../PinchZoomModifier";
import { PinchZoomModifier } from "../PinchZoomModifier";
export declare enum EPolarPanModifierPanMode {
    PolarStartAngle = "PolarStartAngle",
    PolarVisibleRange = "PolarVisibleRange",
    Cartesian = "Cartesian"
}
/**
 * Options for passing to the constructor of {@link PolarPanModifier} derived types
 */
export interface IPolarPanModifierOptions extends IPinchZoomModifierOptions {
    /** The pan mode to use with primary action {@link executeCondition} */
    primaryPanMode?: EPolarPanModifierPanMode;
    /** The pan mode to use with secondary action {@link secondaryExecuteCondition} */
    secondaryPanMode?: EPolarPanModifierPanMode;
    /** The multiplier which applies to sensitivity of panning. Should be greater than 0 */
    growFactor?: number;
    /** If True uses length scale zoom on the radial axis, otherwise uses visible range zoom. Default True */
    zoomSize?: boolean;
}
/**
 * The PolarPanModifier provides drag to pan behavior on a 2D {@link SciChartPolarSurface}
 * as well as pinch zoom behavior on touchscreen devices
 * within SciChart - High Performance {@link https://www.scichart.com/javascript-chart-features | JavaScript Charts}
 * @remarks
 *
 * To apply the PolarPanModifier to a {@link SciChartPolarSurface} and add drag to pan behavior,
 * use the following code:
 *
 * ```ts
 * const sciChartSurface: SciChartPolarSurface;
 * sciChartSurface.chartModifiers.add(new PolarPanModifier());
 * ```
 *
 * ---
 * 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/chart-modifier-api/polar-modifiers/polar-pan-modifier/}
 */
export declare class PolarPanModifier extends PinchZoomModifier {
    readonly type: EChart2DModifierType;
    /** The pan mode to use with primary action {@link executeCondition} */
    primaryPanMode: EPolarPanModifierPanMode;
    /** The pan mode to use with secondary action {@link secondaryExecuteCondition} */
    secondaryPanMode: EPolarPanModifierPanMode;
    /** The multiplier which applies to sensitivity of panning. Should be greater than 0 */
    growFactor: number;
    /** If True uses length scale zoom on the radial axis, otherwise uses visible range zoom. Default True */
    zoomSize: boolean;
    private panMode;
    /**
     * Creates an instance of a PolarPanModifier
     * @param options optional parameters to pass to the PolarPanModifier to configure it upon construction
     *
     * ---
     * 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/chart-modifier-api/polar-modifiers/polar-pan-modifier/}
     */
    constructor(options?: IPolarPanModifierOptions);
    /** @inheritDoc */
    get modifierType(): EModifierType;
    /** @inheritDoc */
    modifierMouseDown(args: ModifierMouseArgs): void;
    /** @inheritDoc */
    modifierMouseMove(args: ModifierMouseArgs): void;
    /** @inheritDoc */
    modifierPointerCancel(args: ModifierMouseArgs): void;
    /** @inheritDoc */
    modifierMouseUp(args: ModifierMouseArgs): void;
    /** @inheritDoc */
    toJSON(): {
        type: string;
        options: Required<Omit<import("../ChartModifierBase2D").IChartModifierBaseOptions, never>>;
    };
    protected getIsActionAllowed(args: ModifierMouseArgs): boolean;
    private performCartesianPan;
    /**
     * Performs polar pan
     * @param isStartAngleMode If True uses the start angle pan on X axis, if False the visible range pan
     * @param isLengthScaleZoom If True uses the length scale zoom on Y axis, if False the visible range zoom
     */
    private performPolarPan;
}
