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 { PaperTransform } from './paper';
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 transform: PaperTransform;
    readonly cssAnimations: number;
    readonly cssAnimationDuration: number | undefined;
}
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 rootRef;
    private readonly linkLayerRef;
    private readonly labelLayerRef;
    private readonly elementLayerRef;
    private readonly placeLayerContext;
    private readonly pageSize;
    private readonly canvasContext;
    private viewportAnimation;
    private movingState;
    private scrollBeforeUpdate;
    private _pointerMode;
    private readonly _zoomOptions;
    private resizeObserver;
    readonly metrics: CanvasMetrics;
    constructor(props: PaperAreaProps);
    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 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;
    focus(): void;
    centerTo(paperPosition?: Vector, options?: CenterToOptions): Promise<void>;
    centerContent(options?: ViewportOptions): Promise<void>;
    private centerToPosition;
    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 onKeyDown;
    private onKeyUp;
    private isEventFromCellLayer;
    private makeToSVGOptions;
    exportSvg(options?: ExportSvgOptions): Promise<string>;
    exportRaster(options?: ExportRasterOptions): Promise<string>;
    isAnimatingGraph(): boolean;
    animateGraph(setupChanges: () => void, duration?: number): Promise<void>;
    private changeGraphAnimationCount;
    private get viewportState();
    private setViewportState;
    private applyViewportState;
}
export {};
//# sourceMappingURL=paperArea.d.ts.map