import { Node, NodeId, Connection, ConnectionId, Port, PortId } from '../../../../types/core'; import { PortKey } from '../../../../core/port/identity/key'; /** * Create a lookup map from port ID to node ID * @param nodes - The nodes object * @param getNodePorts - Optional function to get ports for a node. If not provided, will use node.ports directly */ export declare function createPortToNodeMap(nodes: Record, getNodePorts?: (nodeId: NodeId) => Port[]): Map; /** * Create a lookup map from parent ID to child node IDs */ export declare function createParentToChildrenMap(nodes: Record): Map; /** * Create lookup maps for connections by endpoints */ export declare function createConnectionLookupMaps(connections: Record): { byFromNode: Map; byToNode: Map; byFromPort: Map; byToPort: Map; byEndpoint: Map; }; /** * Create a lookup map from position to ports on a node */ export declare function createPortsByPositionMap(ports: Port[]): Map; /** * Group array items by a key function */ export declare function groupBy(items: T[], keyFn: (item: T) => K): Map; /** * Create a spatial grid for efficient spatial queries */ export declare class SpatialGrid { private cells; private cellSize; constructor(cellSize?: number); /** * Get cell key for a position */ private getCellKey; /** * Insert item at position */ insert(item: T, x: number, y: number): void; /** * Get all items in cells near a position */ getNearby(x: number, y: number, radius?: number): T[]; /** * Clear all items */ clear(): void; /** * Get all items in a rectangular area */ getInArea(minX: number, minY: number, maxX: number, maxY: number): T[]; }