import React from 'react'; export interface Position { x: number; y: number; } export interface SocketData { id: string; label: string; type: string; value?: any; color?: string; } export interface NodeData { id: string; label: string; position: Position; inputs: SocketData[]; outputs: SocketData[]; size?: { width: number; height: number; }; component?: React.FC<{ data: NodeData; inputs: Record; onUpdateData: (newData: Record) => void; }>; process?: (inputs: Record, data: NodeData['data']) => Record; data?: Record; } export interface ConnectionData { id: string; sourceNodeId: string; sourceSocketId: string; targetNodeId: string; targetSocketId: string; color?: string; type?: 'curved' | 'straight'; } export interface FastMakeNode { type: string; data?: Record; } export interface GraphicsContextType { nodes: NodeData[]; setNodes: React.Dispatch>; connections: ConnectionData[]; setConnections: React.Dispatch>; pan: Position; setPan: React.Dispatch>; zoom: number; setZoom: React.Dispatch>; editorRef: React.RefObject; startConnecting: (nodeId: string, socketId: string, type: 'input' | 'output', e: React.MouseEvent) => void; stopConnecting: (nodeId: string, socketId: string, type: 'input' | 'output') => void; isConnecting: boolean; draftConnection: { start: Position; end: Position; } | null; processGraph: () => void; nodeOutputs: Record>; createNode: (node: Omit) => void; getNodes: () => NodeData[]; updateNode: (nodeId: string, data: Partial>) => void; deleteNode: (nodeId: string) => void; autoConnect: (sourceNodeId: string, sourceSocketId: string) => void; socketRelativePositions: Record>; registerSocketPositions: (nodeId: string, positions: Record) => void; creatableNodeTypes: Record>; newCreateNode: (label: string, nodeTemplate: Omit) => void; fastMake: (config: FastMakeNode[], startPosition: Position) => void; isContentBlurred: boolean; setIsContentBlurred: React.Dispatch>; } export declare const GraphicsContext: React.Context; export declare const useGraphicsContext: () => GraphicsContextType;