import React from 'react';
import { LayoutResult } from '../layout/useLayout';
import { NodeData, PortData } from '../types';
import { EdgeDragResult } from './useEdgeDrag';
import { ZoomResult } from './useZoom';
export interface CanvasProviderValue extends EdgeDragResult, LayoutResult, ZoomResult {
    selections?: string[];
    readonly?: boolean;
    pannable: boolean;
    panType: 'scroll' | 'drag';
}
export declare const CanvasContext: React.Context<CanvasProviderValue>;
export interface CanvasProviderProps {
    onNodeLink?: (event: any, fromNode: NodeData, toNode: NodeData, fromPort?: PortData) => void;
    onNodeLinkCheck?: (event: any, fromNode: NodeData, toNode: NodeData, fromPort?: PortData) => undefined | boolean;
}
export declare const CanvasProvider: ({ selections, onNodeLink, readonly, children, nodes, edges, maxHeight, fit, maxWidth, direction, layoutOptions, pannable, panType, defaultPosition, zoomable, zoom, minZoom, maxZoom, onNodeLinkCheck, onLayoutChange, onZoomChange }: {
    selections: any;
    onNodeLink: any;
    readonly: any;
    children: any;
    nodes: any;
    edges: any;
    maxHeight: any;
    fit: any;
    maxWidth: any;
    direction: any;
    layoutOptions: any;
    pannable: any;
    panType: any;
    defaultPosition: any;
    zoomable: any;
    zoom: any;
    minZoom: any;
    maxZoom: any;
    onNodeLinkCheck: any;
    onLayoutChange: any;
    onZoomChange: any;
}) => import("react/jsx-runtime").JSX.Element;
export declare const useCanvas: () => CanvasProviderValue;
