import { ActiveEvent, ElementType, InputEventType } from "../types";
import { InputType, InputTypeObserver } from "./InputType";
export interface PanInputOption {
    inputType?: string[];
    inputKey?: string[];
    inputButton?: string[];
    scale?: number[];
    thresholdAngle?: number;
    threshold?: number;
    preventClickOnDrag?: boolean;
    preventDefaultOnDrag?: boolean;
    iOSEdgeSwipeThreshold?: number;
    releaseOnScroll?: boolean;
    touchAction?: string;
}
export declare const getDirectionByAngle: (angle: number, thresholdAngle: number) => number;
export declare class PanInput implements InputType {
    options: PanInputOption;
    axes: string[];
    element: HTMLElement;
    protected _observer: InputTypeObserver;
    protected _direction: number;
    protected _enabled: boolean;
    protected _activeEvent: ActiveEvent;
    private _originalCssProps;
    private _atRightEdge;
    private _rightEdgeTimer;
    private _dragged;
    private _isOverThreshold;
    constructor(el: ElementType, options?: PanInputOption);
    mapAxes(axes: string[]): void;
    connect(observer: InputTypeObserver): InputType;
    disconnect(): this;
    destroy(): void;
    enable(): this;
    disable(): this;
    isEnabled(): boolean;
    release(): this;
    protected _onPanstart(event: InputEventType): void;
    protected _onPanmove(event: InputEventType): void;
    protected _onPanend(event: InputEventType): void;
    protected _attachWindowEvent(activeEvent: ActiveEvent): void;
    protected _detachWindowEvent(activeEvent: ActiveEvent): void;
    protected _getOffset(properties: number[], direction: boolean[]): number[];
    private _getDistance;
    private _attachElementEvent;
    private _detachElementEvent;
    private _preventClickWhenDragged;
    private _voidFunction;
}
