/**
 * Utility exports
 */

export { createDebug, debug } from './debug';
export { getNodeGestureConfig, getViewportGestureConfig } from './gesture-configs';
export {
	pendingNodeMutations,
	getPendingState,
	clearPendingState,
	hasPendingMutations,
	type PendingMutation,
} from './mutation-queue';
export {
	createComponentRegistry,
	createFallbackComponent,
	type ComponentMap,
	type ComponentRegistry,
	type CreateComponentRegistryOptions,
} from './component-registry';
export {
	bezierHorizontal,
	bezierVertical,
	bezierSmart,
	straight,
	stepHorizontal,
	stepVertical,
	stepSmart,
	smoothStep,
	getEdgePathCalculator,
	defaultEdgePathCalculator,
	type EdgePathCalculator,
	type EdgePathInput,
	type EdgePathResult,
	type EdgePathType,
} from './edge-path-calculators';
export {
	// Types
	type Rect,
	type NodeWithDimensions,
	type NodeBounds,
	FitToBoundsMode,
	// Bounds calculation
	calculateBounds,
	// Node geometry
	getNodeCenter,
	setNodeCenter,
	checkNodesOverlap,
	getNodeBounds,
	areNodesClose,
} from './layout';
export {
	hitTestNode,
	hitTestPort,
	setHitTestProvider,
	type HitTestResult,
	type PortHitTestResult,
	type HitTestProvider,
} from './hit-test';
export {
	registerEdgePathCalculator,
	unregisterEdgePathCalculator,
	resolveEdgePathCalculator,
	hasCustomEdgePathCalculator,
	getCustomEdgePathCalculatorNames,
	clearCustomEdgePathCalculators,
} from './edge-path-registry';
