import type { Context, CSSProperties, FunctionComponent, ReactElement, ReactNode, ReactText } from 'react'; declare const Edge: FunctionComponent; declare const Edges: FunctionComponent; declare const Graph: FunctionComponent; declare const GraphContexts: FunctionComponent; declare const Grid: FunctionComponent; declare const Node: FunctionComponent; declare const Nodes: FunctionComponent; declare const Path: FunctionComponent; declare const GraphContext: Context; declare const GridContext: Context; declare const defaultSettings: { edgeFrequency: number; grid: [number, number]; height: number; line: Line; nodeFrequency: number; shape: Shape; width: number; }; declare class NodePositions { constructor(); subscribe: (id: string, callback_: (size?: Size, nodes?: NodesDimensions) => void) => void; unsubscribe: (id: string) => void; register: (node: Dimensions) => void; unregister: (id: ReactText) => void; update: (node: Dimensions) => void; match: (x: number, y: number) => Promise; size: () => Size; } declare class EdgeSubscriber { constructor(frequency?: number); getFrequency: () => number; setFrequency: (frequency: number) => number; register: (edgeId: ReactText, nodeId: ReactText, updateFn: (update: T) => void) => EdgeNodeProps; unregister: (edgeId: ReactText, nodeId: ReactText) => void; update: (props: EdgeNodeProps) => void; } export declare type EdgeNodeProps = { height: number; id: ReactText; shape: Shape; width: number; x: number; y: number; }; export declare type Line = 'curve' | 'direct' | 'step'; export declare type Shape = 'oval' | 'rectangle'; export declare type EdgeProps = { children?: ReactNode; className?: string; dash?: Boolean; id: ReactText; line?: Line; markerEnd?: string; markerStart?: string; path?: (source?: EdgeNodeProps, target?: EdgeNodeProps, children?: ReactNode) => ReactElement; sourceId: ReactText; targetId: ReactText; }; export declare type EdgesProps = { children: Array> | ReactElement; dash?: Boolean; }; export declare type PathProps = { children?: ReactNode; className?: string; diagramId?: ReactText; id: ReactText; line?: Line; markerEnd?: string; markerStart?: string; source?: EdgeNodeProps; target?: EdgeNodeProps; }; export declare type NodeProps = { children?: ReactElement | ReactElement[]; className?: string; height?: number; id: ReactText; ref?: React.MutableRefObject | ((instance: HTMLDivElement | null) => void) | null; shape?: Shape; style?: CSSProperties; width?: number; x?: number; y?: number; }; export declare type NodesProps = { children: Array> | ReactElement; }; export declare type GridType = [ number, number ]; export declare type GridContextProps = GridType; export declare type GridProps = { children?: ReactNode; scale?: number; xOffset?: number; yOffset?: number; }; export declare type GraphProps = { children?: ReactNode | ReactNode[]; edgeFrequency?: number; grid?: GridType | false; id: ReactText; line?: Line; nodeFrequency?: number; nodeHeight?: number; nodeWidth?: number; shape?: Shape; }; export declare type Dimensions = { height: number; id: ReactText; shape: Shape; width: number; x: number; y: number; }; export declare type Size = { bottom: number; height: number; left: number; right: number; top: number; width: number; }; export declare type NodesDimensions = { [key: string]: Dimensions; }; export declare type GraphContextProps = { defaultSettings: Omit; diagramId: ReactText; edgeSubscriber: EdgeSubscriber; nodePositions: NodePositions; }; export declare type GraphContextsProps = Omit & { children: ReactElement | ReactNode | ReactNode[]; }; export { defaultSettings, Edge, Edges, Graph, GraphContext, GraphContexts, Grid, GridContext, Node, Nodes, Path };