import * as React from 'react';
import { DraggableEvent, DraggableData } from 'react-draggable';
import { Viewport } from '../Viewport';
import { Point } from '../layout/Point';
import { Rectangle } from '../layout/Rectangle';
interface ICanvasProps {
    svgRef: React.RefObject<SVGSVGElement>;
    viewport: Viewport;
    interactionMode: string;
    selectArea: (area: Rectangle) => any;
    clearSelection: () => any;
    updateViewport: (viewport: Viewport, transitionSettings?: any) => any;
    animateTransition: boolean;
    actions: any;
    writeable: boolean;
}
export declare class Canvas extends React.Component<ICanvasProps> {
    selectionRef: React.RefObject<SVGRectElement>;
    dragInitial: Point;
    dragExtent: Point;
    constructor(props: Readonly<ICanvasProps>);
    componentDidMount(): void;
    componentWillUnmount(): void;
    private onResize;
    private resizeSelection;
    private onDragMove;
    private onKeyDown;
    private onKeyUp;
    onDragEnd(e: DraggableEvent, data: DraggableData): void;
    onDragStart(e: DraggableEvent, data: DraggableData): void;
    private onMouseZoom;
    private onKeyZoom;
    private onDoubleClick;
    componentWillReceiveProps(nextProps: Readonly<ICanvasProps>): void;
    animationHandler(animateTransition: boolean, oldViewBox: string, viewBox: string, userDuration?: number): void;
    _animateTransition(oldViewBox: string, viewBox: string, userDuration?: number): void;
    _now(): number;
    render(): JSX.Element;
}
export {};
