import { Node, Position, Size, ResizeHandle } from '../../types/core'; import { NodeDefinition } from '../../types/NodeDefinition'; import { NodeAppearance } from './nodeAppearance'; export type NodeBehaviorState = { isGroup: boolean; isAppearance: boolean; }; /** * Compute behavior state from node definition */ export declare const computeNodeBehaviorState: (nodeDefinition: NodeDefinition | undefined) => NodeBehaviorState; /** * Check if two behavior states are equal */ export declare const areNodeBehaviorStatesEqual: (prev: NodeBehaviorState, next: NodeBehaviorState) => boolean; export type NodeResizeState = { isResizing: boolean; currentHandle: ResizeHandle | null; currentSize: Size | null; currentPosition: Position | null; }; /** * Compute resize state for a specific node */ export declare const computeNodeResizeState: (nodeId: string, resizeState: { nodeId: string; handle: ResizeHandle; currentSize: Size; currentPosition: Position; } | null) => NodeResizeState; /** * Check if two resize states are equal */ export declare const areNodeResizeStatesEqual: (prev: NodeResizeState, next: NodeResizeState) => boolean; export type NodeDisplayGeometry = { displaySize: Size; displayPosition: Position; }; /** * Compute display geometry including drag and resize transformations */ export declare const computeNodeDisplayGeometry: (node: Node, resizeState: NodeResizeState, dragOffset: Position | undefined) => NodeDisplayGeometry; /** * Compute visual dragging state */ export declare const computeIsVisuallyDragging: (isDragging: boolean, dragOffset: Position | undefined) => boolean; export type NodeDerivedState = { behaviorState: NodeBehaviorState; appearance: NodeAppearance; resizeState: NodeResizeState; displayGeometry: NodeDisplayGeometry; isVisuallyDragging: boolean; hasChildren: boolean; }; /** * Compute all derived state for a node */ export declare const computeNodeDerivedState: (node: Node, nodeDefinition: NodeDefinition | undefined, resizeContextState: { nodeId: string; handle: ResizeHandle; currentSize: Size; currentPosition: Position; } | null, dragOffset: Position | undefined, isDragging: boolean, groupChildrenCount: number) => NodeDerivedState; /** * Check if two derived states are equal (for memoization) */ export declare const areNodeDerivedStatesEqual: (prev: NodeDerivedState, next: NodeDerivedState) => boolean;