export interface Properties {
    element: HTMLElement;
    listeners?: 'auto' | 'mouse and touch';
    touchListeners?: TouchListeners;
    mouseListeners?: MouseListeners;
    otherListeners?: OtherListeners;
    resize?: boolean;
}
export type EventType = undefined | 'touchstart' | 'touchend' | 'touchmove' | 'mousedown' | 'mouseup' | 'mousemove' | 'pan' | 'pinch' | 'horizontal-swipe' | 'vertical-swipe' | 'tap' | 'longtap' | 'wheel' | 'double-tap' | 'resize';
export type TouchHandler = 'handleTouchstart' | 'handleTouchmove' | 'handleTouchend';
export type MouseHandler = 'handleMousedown' | 'handleMousemove' | 'handleMouseup' | 'handleWheel';
export type OtherHandler = 'handleResize';
export type TouchListeners = Partial<Record<'touchstart' | 'touchmove' | 'touchend', TouchHandler>>;
export type MouseListeners = Partial<Record<'mousedown' | 'mousemove' | 'mouseup' | 'wheel', MouseHandler>>;
export type OtherListeners = Partial<Record<'resize', OtherHandler>>;
export declare class Touches {
    private properties;
    private element;
    private elementPosition;
    private eventType;
    private handlers;
    private startX;
    private startY;
    private lastTap;
    private doubleTapTimeout;
    private doubleTapMinTimeout;
    private tapMinTimeout;
    private touchstartTime;
    private i;
    private isMousedown;
    private _touchListeners;
    private _mouseListeners;
    private _otherListeners;
    private get touchListeners();
    private get mouseListeners();
    private get otherListeners();
    constructor(properties: Properties);
    destroy(): void;
    private toggleEventListeners;
    addEventListeners(listener: string): void;
    removeEventListeners(listener: string): void;
    private handleTouchstart;
    private handleTouchmove;
    private handleLinearSwipe;
    private handleTouchend;
    private handleMousedown;
    private handleMousemove;
    private handleMouseup;
    private handleWheel;
    private handleResize;
    private runHandler;
    private detectPan;
    private detectDoubleTap;
    private detectTap;
    private detectPinch;
    private detectLinearSwipe;
    private getLinearSwipeType;
    private getElementPosition;
    private getTouchstartPosition;
    private getMousedownPosition;
    private moveLeft;
    private moveTop;
    private detectTouchScreen;
    on(event: EventType, handler: (event: Event) => void): void;
}
