import { type HTMLAttributes, type MouseEvent } from 'react';
import { type NodeInputDefinition, type ChartNode, type NodeConnection, type NodeId, type PortId, type NodeOutputDefinition } from '@ironclad/rivet-core';
import type { HeightCache } from '../hooks/useNodeBodyHeight';
import { type ProcessDataForNode } from '../state/dataFlow.js';
import { type DraggingWireDef } from '../state/graphBuilder';
export type VisualNodeProps = {
heightCache: HeightCache;
node: ChartNode;
connections?: NodeConnection[];
xDelta?: number;
yDelta?: number;
isDragging?: boolean;
isOverlay?: boolean;
isSelected?: boolean;
isKnownNodeType: boolean;
isPinned: boolean;
lastRun?: ProcessDataForNode[];
processPage: number | 'latest';
draggingWire?: DraggingWireDef;
isZoomedOut: boolean;
isReallyZoomedOut: boolean;
renderSkeleton?: boolean;
onWireStartDrag?: (event: MouseEvent, startNodeId: NodeId, startPortId: PortId, isInput: boolean) => void;
onWireEndDrag?: (event: MouseEvent, endNodeId: NodeId, endPortId: PortId) => void;
onSelectNode?: (multi: boolean) => void;
onStartEditing?: () => void;
onNodeSizeChanged?: (newWidth: number, newHeight: number) => void;
onMouseOver?: (event: MouseEvent, nodeId: NodeId) => void;
onMouseOut?: (event: MouseEvent, nodeId: NodeId) => void;
onPortMouseOver?: (event: MouseEvent, nodeId: NodeId, isInput: boolean, portId: PortId, definition: NodeInputDefinition | NodeOutputDefinition) => void;
onPortMouseOut?: (event: MouseEvent, nodeId: NodeId, isInput: boolean, portId: PortId, definition: NodeInputDefinition | NodeOutputDefinition) => void;
nodeAttributes?: HTMLAttributes;
handleAttributes?: HTMLAttributes;
};
export declare const VisualNode: import("react").MemoExoticComponent>>;
//# sourceMappingURL=VisualNode.d.ts.map