import { CSSProperties, HTMLAttributes, MouseEvent, WheelEvent } from 'react';
import { Elements, NodeTypesType, EdgeTypesType, OnLoadFunc, Node, Edge, Connection, ConnectionLineType, ConnectionLineComponent, FlowTransform, OnConnectStartFunc, OnConnectStopFunc, OnConnectEndFunc, TranslateExtent, OnEdgeUpdateFunc, KeyCode, PanOnScrollMode } from '../../types';
import '../../style.css';
export interface ReactFlowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onLoad'> {
    elements: Elements;
    onElementClick?: (event: MouseEvent, element: Node | Edge) => void;
    onElementsRemove?: (elements: Elements) => void;
    onNodeMouseEnter?: (event: MouseEvent, node: Node) => void;
    onNodeMouseMove?: (event: MouseEvent, node: Node) => void;
    onNodeMouseLeave?: (event: MouseEvent, node: Node) => void;
    onNodeContextMenu?: (event: MouseEvent, node: Node) => void;
    onNodeDragStart?: (event: MouseEvent, node: Node) => void;
    onNodeDragStop?: (event: MouseEvent, node: Node) => void;
    onConnect?: (connection: Edge | Connection) => void;
    onConnectStart?: OnConnectStartFunc;
    onConnectStop?: OnConnectStopFunc;
    onConnectEnd?: OnConnectEndFunc;
    onLoad?: OnLoadFunc;
    onMove?: (flowTransform?: FlowTransform) => void;
    onMoveStart?: (flowTransform?: FlowTransform) => void;
    onMoveEnd?: (flowTransform?: FlowTransform) => void;
    onSelectionChange?: (elements: Elements | null) => void;
    onSelectionDragStart?: (event: MouseEvent, nodes: Node[]) => void;
    onSelectionDrag?: (event: MouseEvent, nodes: Node[]) => void;
    onSelectionDragStop?: (event: MouseEvent, nodes: Node[]) => void;
    onSelectionContextMenu?: (event: MouseEvent, nodes: Node[]) => void;
    onPaneScroll?: (event?: WheelEvent) => void;
    onPaneClick?: (event: MouseEvent) => void;
    onPaneContextMenu?: (event: MouseEvent) => void;
    nodeTypes?: NodeTypesType;
    edgeTypes?: EdgeTypesType;
    connectionLineType?: ConnectionLineType;
    connectionLineStyle?: CSSProperties;
    connectionLineComponent?: ConnectionLineComponent;
    deleteKeyCode?: KeyCode;
    selectionKeyCode?: KeyCode;
    multiSelectionKeyCode?: KeyCode;
    snapToGrid?: boolean;
    snapGrid?: [number, number];
    onlyRenderVisibleElements?: boolean;
    nodesDraggable?: boolean;
    nodesConnectable?: boolean;
    elementsSelectable?: boolean;
    selectNodesOnDrag?: boolean;
    paneMoveable?: boolean;
    minZoom?: number;
    maxZoom?: number;
    defaultZoom?: number;
    defaultPosition?: [number, number];
    translateExtent?: TranslateExtent;
    arrowHeadColor?: string;
    markerEndId?: string;
    zoomOnScroll?: boolean;
    panOnScroll?: boolean;
    panOnScrollSpeed?: number;
    panOnScrollMode?: PanOnScrollMode;
    zoomOnDoubleClick?: boolean;
    onEdgeUpdate?: OnEdgeUpdateFunc;
}
declare const ReactFlow: {
    ({ elements, className, nodeTypes, edgeTypes, onElementClick, onLoad, onMove, onMoveStart, onMoveEnd, onElementsRemove, onConnect, onConnectStart, onConnectStop, onConnectEnd, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDragStart, onNodeDragStop, onSelectionChange, onSelectionDragStart, onSelectionDrag, onSelectionDragStop, onSelectionContextMenu, connectionLineType, connectionLineStyle, connectionLineComponent, deleteKeyCode, selectionKeyCode, multiSelectionKeyCode, snapToGrid, snapGrid, onlyRenderVisibleElements, selectNodesOnDrag, nodesDraggable, nodesConnectable, elementsSelectable, minZoom, maxZoom, defaultZoom, defaultPosition, translateExtent, arrowHeadColor, markerEndId, zoomOnScroll, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, paneMoveable, onPaneClick, onPaneScroll, onPaneContextMenu, children, onEdgeUpdate, ...rest }: ReactFlowProps): JSX.Element;
    displayName: string;
};
export default ReactFlow;
