import type { NodeDefinition, NodeShape } from '../types/index'; import type { Vec2 } from '../geometry/Vec2'; declare const DEFAULTS: { shape: NodeShape; radius: number; width: number; height: number; color: string; borderColor: string; borderWidth: number; glowColor: string; glowRadius: number; labelColor: string; labelSize: number; opacity: number; }; export declare class Node { readonly id: string; x: number; y: number; shape: NodeShape; radius: number; width: number; height: number; color: string; borderColor: string; borderWidth: number; glowColor: string; glowRadius: number; label: string; labelColor: string; labelSize: number; icon: string; opacity: number; data: Record; layer: number; gridRow: number; gridCol: number; /** Raw definition reference — passed to event callbacks */ definition: NodeDefinition; /** Interaction state — managed by InteractionSystem */ hovered: boolean; constructor(def: NodeDefinition, configDefaults?: Partial); /** * Returns the boundary point on this node's shape facing toward `target`. * Used by Edge.buildPath() to attach edges to the shape surface. */ getBoundaryToward(target: Vec2): Vec2; /** * Returns true if `point` is inside this node (with optional hit padding). */ hitTest(point: Vec2, padding?: number): boolean; render(ctx: CanvasRenderingContext2D): void; /** Update position (called by layout engine or dragging) */ setPosition(x: number, y: number): void; /** Update mutable visual properties from a new definition */ update(def: NodeDefinition, configDefaults?: Partial): void; } export {}; //# sourceMappingURL=Node.d.ts.map