import React, { FC, ReactElement, ReactNode } from 'react'; import { Port, PortProps } from '../Port'; import { Label, LabelProps } from '../Label'; import { EdgeData, NodeData, PortData } from '../../types'; import { Icon, IconProps } from '../Icon'; import { Remove, RemoveProps } from '../Remove'; import { NodeDragEvents } from '../../utils/useNodeDrag'; import { Edge, EdgeProps } from '../Edge'; export interface NodeChildProps { height: number; width: number; x: number; y: number; node: NodeData; nodes?: NodeData[]; edges?: EdgeData[]; } export type NodeDragType = 'node' | 'port' | 'multiportOnly' | 'all'; export type NodeChildrenAsFunction = (nodeChildProps: NodeChildProps) => ReactNode; export interface NodeProps extends NodeDragEvents, PortData> { id: string; height: number; width: number; x: number; y: number; rx: number; ry: number; offsetX?: number; offsetY?: number; disabled?: boolean; ports?: PortProps[]; labels?: LabelProps[]; properties: NodeData; className?: string; style?: any; children?: ReactNode | NodeChildrenAsFunction; parent?: string; animated?: boolean; draggable?: boolean; linkable?: boolean; selectable?: boolean; removable?: boolean; dragType?: NodeDragType; dragCursor?: string; nodes?: NodeData[]; edges?: EdgeData[]; onRemove?: (event: React.MouseEvent, node: NodeData) => void; onClick?: (event: React.MouseEvent, data: NodeData) => void; onKeyDown?: (event: React.KeyboardEvent, data: NodeData) => void; onEnter?: (event: React.MouseEvent, node: NodeData) => void; onLeave?: (event: React.MouseEvent, node: NodeData) => void; childNode?: ReactElement | ((node: NodeProps) => ReactElement); childEdge?: ReactElement | ((edge: EdgeProps) => ReactElement); remove: ReactElement; icon: ReactElement; label: ReactElement; port: ReactElement; } export declare const Node: FC>;