import * as React from 'react';
import type { ColorSchemeApi } from '../coreUtils/colorScheme';
import { Events } from '../coreUtils/events';
import { CanvasApi, CanvasEvents, CanvasMetrics, CenterToOptions, ScaleOptions, ViewportOptions, CanvasPointerMode, ZoomOptions, ExportSvgOptions, ExportRasterOptions } from './canvasApi';
import { Vector, Rect } from './geometry';
import { DiagramModel } from './model';
import { MutableRenderingState } from './renderingState';
export interface PaperAreaProps {
    model: DiagramModel;
    renderingState: MutableRenderingState;
    colorSchemeApi: ColorSchemeApi;
    zoomOptions?: ZoomOptions;
    hideScrollBars?: boolean;
    watermarkSvg?: string;
    watermarkUrl?: string;
    children?: React.ReactNode;
}
interface State {
    readonly width: number;
    readonly height: number;
    readonly originX: number;
    readonly originY: number;
    readonly scale: number;
    readonly paddingX: number;
    readonly paddingY: number;
}
export declare class PaperArea extends React.Component<PaperAreaProps, State> implements CanvasApi {
    private readonly listener;
    private readonly source;
    readonly events: Events<CanvasEvents>;
    private area;
    private readonly svgCanvasRef;
    private readonly pageSize;
    private readonly canvasContext;
    private viewportAnimation;
    private cssAnimations;
    private movingState;
    private delayedPaperAdjust;
    private scrollBeforeUpdate;
    private _pointerMode;
    private readonly _zoomOptions;
    private resizeObserver;
    readonly metrics: CanvasMetrics;
    constructor(props: PaperAreaProps, context: any);
    get renderingState(): MutableRenderingState;
    get pointerMode(): CanvasPointerMode;
    setPointerMode(value: CanvasPointerMode): void;
    get zoomOptions(): Required<ZoomOptions>;
    render(): import("react/jsx-runtime").JSX.Element;
    private onAreaMount;
    componentDidMount(): void;
    componentDidUpdate(prevProps: PaperAreaProps, prevState: State): void;
    componentWillUnmount(): void;
    private getAllWidgets;
    private onWidgetsPointerDown;
    /** Returns bounding box of paper content in paper coordinates. */
    private getContentFittingBox;
    private computeAdjustedBox;
    private adjustPaper;
    private onAreaPointerDown;
    private onPaperPointerDown;
    private handleMultiPointerDown;
    private shouldStartPanning;
    private shouldStartElementMove;
    private onPointerMove;
    private handleMultiPointerMove;
    private generateLinkVertex;
    private onPointerUp;
    private onPointerCancel;
    private onPaperScrollCapture;
    private stopListeningToPointerMove;
    private onWheel;
    private shouldStartZooming;
    private onResize;
    centerTo(paperPosition?: Vector, options?: CenterToOptions): Promise<void>;
    centerContent(options?: ViewportOptions): Promise<void>;
    getScale(): number;
    setScale(value: number, options?: ScaleOptions): Promise<void>;
    zoomBy(value: number, options?: ScaleOptions): Promise<void>;
    zoomIn(scaleOptions?: ScaleOptions): Promise<void>;
    zoomOut(scaleOptions?: ScaleOptions): Promise<void>;
    zoomToFit(options?: ViewportOptions): Promise<void>;
    zoomToFitRect(paperRect: Rect, options?: ViewportOptions): Promise<void>;
    private onDragOver;
    private onDragDrop;
    private onScroll;
    private onContextMenu;
    private makeToSVGOptions;
    exportSvg(options?: ExportSvgOptions): Promise<string>;
    exportRaster(options?: ExportRasterOptions): Promise<string>;
    isAnimatingGraph(): boolean;
    animateGraph(setupChanges: () => void, duration?: number): Promise<void>;
    private onGraphAnimationEnd;
    private changeGraphAnimationCount;
    private get viewportState();
    private setViewportState;
    private applyViewportState;
}
export {};
//# sourceMappingURL=paperArea.d.ts.map