import * as React from 'react';
import { Component } from 'react';
import { Cell } from './elements';
import { Vector } from './geometry';
import { DiagramModel } from './model';
import { MutableRenderingState } from './renderingState';
export interface PaperProps {
    model: DiagramModel;
    renderingState: MutableRenderingState;
    paperTransform: PaperTransform;
    svgCanvasRef?: React.RefObject<SVGSVGElement>;
    onPointerDown?: (e: React.PointerEvent<HTMLElement>, cell: Cell | undefined) => void;
    onContextMenu?: (e: React.MouseEvent<HTMLElement>, cell: Cell | undefined) => void;
    onScrollCapture?: (e: React.UIEvent<HTMLElement>, cell: Cell | undefined) => void;
    linkLayerWidgets?: React.ReactElement<any>;
    elementLayerWidgets?: React.ReactElement<any>;
}
export declare class Paper extends Component<PaperProps> {
    render(): import("react/jsx-runtime").JSX.Element;
    private onPointerDown;
    private onContextMenu;
    private onScrollCapture;
}
/**
 * Transformation data between paper and scrollable pane coordinates.
 *
 * @category Geometry
 */
export interface PaperTransform {
    width: number;
    height: number;
    originX: number;
    originY: number;
    scale: number;
    paddingX: number;
    paddingY: number;
}
/**
 * Props for {@link TransformedSvgCanvas} component.
 *
 * @see {@link TransformedSvgCanvas}
 */
export interface TransformedSvgCanvasProps extends React.HTMLProps<SVGSVGElement> {
    paperTransform: PaperTransform;
    svgCanvasRef?: React.RefObject<SVGSVGElement>;
}
/**
 * SVG canvas component to render its children on the diagram in paper coordinate system.
 *
 * @category Components
 */
export declare function TransformedSvgCanvas(props: TransformedSvgCanvasProps): import("react/jsx-runtime").JSX.Element;
/**
 * @returns scrollable pane size in non-scaled pane coords.
 *
 * @category Geometry
 */
export declare function totalPaneSize(pt: PaperTransform): Vector;
/**
 * @returns scrollable pane top-left corner position in non-scaled pane coords.
 *
 * @category Geometry
 */
export declare function paneTopLeft(pt: PaperTransform): Vector;
/**
 * Translates paper to scrollable pane coordinates.
 *
 * @category Geometry
 */
export declare function paneFromPaperCoords(paper: Vector, pt: PaperTransform): Vector;
/**
 * Translates scrollable pane to paper coordinates.
 *
 * @category Geometry
 */
export declare function paperFromPaneCoords(pane: Vector, pt: PaperTransform): Vector;
//# sourceMappingURL=paper.d.ts.map