/// <reference types="node" />
import * as React from 'react';
import { EventEmitter } from 'events';
declare type MouseEvent = React.MouseEvent<HTMLDivElement>;
declare type TouchEvent = React.TouchEvent<HTMLDivElement>;
declare type MouseOrTouchEvent = MouseEvent | TouchEvent;
interface Props {
    options?: {
        minZoomLevel?: number;
        scaleFactor?: number;
        touchSensitivity?: number;
        wheelMax?: number;
        wheelSensitivityRotate?: number;
        wheelSensitivityZoom?: number;
    };
    onPanStart?: (event: MouseOrTouchEvent) => void;
    onPan?: (event: MouseOrTouchEvent) => void;
    onPanEnd?: (event: MouseOrTouchEvent) => void;
    onPinchStart?: (event: TouchEvent) => void;
    onPinch?: (event: TouchEvent) => void;
    onPinchEnd?: (event: TouchEvent) => void;
    onTranslate?: (x: number, y: number) => void;
    onScale?: (factor: number) => void;
    onRotate?: (degrees: number) => void;
    onReset?: () => void;
    onZoom?: (factor: number, x: number, y: number) => void;
    onCoordinates?: (x: number, y: number) => void;
}
export declare class Touch extends React.Component<Props> {
    node: HTMLDivElement;
    matrix: DOMMatrix;
    x: number;
    y: number;
    rotateStart: DOMPoint;
    rotated: boolean;
    panStart: DOMPoint;
    panned: boolean;
    touchCache: React.Touch[];
    lastDistance: number;
    zoomLevel: number;
    matrixEvents: EventEmitter;
    componentDidMount(): void;
    componentWillUnmount(): void;
    _onTranslate: (x: number, y: number) => void;
    _onScale: (factor: number) => void;
    _setup: (node: HTMLDivElement) => void;
    _reset: () => void;
    _updateCoordinates: (x: number, y: number) => void;
    _updateCoordinatesMouse: (event: React.MouseEvent<HTMLDivElement>) => void;
    _updateCoordinatesTouch: (event: React.TouchEvent<HTMLDivElement>) => void;
    _onMouseDown: (event: React.MouseEvent<HTMLDivElement>) => void;
    _onTouchStart: (event: React.TouchEvent<HTMLDivElement>) => void;
    _onPanStart: (event: any) => void;
    _onMouseMove: (event: React.MouseEvent<HTMLDivElement>) => void;
    _onTouchMove: (event: React.TouchEvent<HTMLDivElement>) => void;
    _onPanMove: (event: any) => void;
    _onMouseUp: (event: React.MouseEvent<HTMLDivElement>) => void;
    _onMouseLeave: (event: React.MouseEvent<HTMLDivElement>) => void;
    _onTouchEnd: (event: React.TouchEvent<HTMLDivElement>) => void;
    _onPanEnd: (event: any) => void;
    _onZoom: (clicks: number) => void;
    _onPinchStart: (event: React.TouchEvent<HTMLDivElement>) => void;
    _onPinch: (event: React.TouchEvent<HTMLDivElement>) => void;
    _onPinchEnd: (event: React.TouchEvent<HTMLDivElement>) => void;
    _onRotate: (delta: number) => void;
    _onWheel: (event: React.WheelEvent<HTMLDivElement>) => void;
    render(): JSX.Element;
}
export {};
