/**
 * Hook exports
 */

// Node-specific hooks
export { useNodeSelection } from './useNodeSelection';
export { useNodeDrag, type UseNodeDragOptions } from './useNodeDrag';
export { useNodeResize, type UseNodeResizeOptions, type UseNodeResizeProps, type ResizeDirection } from './useNodeResize';

// Canvas-wide hooks
export { useCanvasHistory, type UseCanvasHistoryOptions } from './useCanvasHistory';

// Subscription hooks (for reactive state access)
export { useCanvasSelection, type CanvasSelectionState } from './useCanvasSelection';
export { useCanvasViewport, type CanvasViewportState } from './useCanvasViewport';
export { useCanvasDrag, type CanvasDragState } from './useCanvasDrag';

// Layout hooks
export {
	useLayout,
	useFitToBounds,
	useGetGraphBounds,
	useSelectionBounds,
	FitToBoundsMode,
	type Rect,
} from './useLayout';
export { useForceLayout, type UseForceLayoutOptions, type NodePositionUpdate } from './useForceLayout';

// Settings hooks
export { useCanvasSettings, type UseCanvasSettingsReturn } from './useCanvasSettings';
export { useActionExecutor, type UseActionExecutorOptions, type UseActionExecutorReturn } from './useActionExecutor';

// Gesture resolver hook
export { useGestureResolver } from './useGestureResolver';

// Command hooks
export { useCommandLine } from './useCommandLine';

// Virtualization hooks
export { useVirtualization, type VirtualizationMetrics, type UseVirtualizationReturn } from './useVirtualization';

// Tap gesture hook (cross-input multi-tap detection)
export { useTapGesture, type UseTapGestureOptions } from './useTapGesture';

// Arrow key navigation
export { useArrowKeyNavigation } from './useArrowKeyNavigation';

// Graph structure
export { useCanvasGraph, type UseCanvasGraphReturn } from './useCanvasGraph';

// Zoom transitions
export { useZoomTransition, type UseZoomTransitionReturn } from './useZoomTransition';

// Split gesture (two-finger node split)
export { useSplitGesture, type UseSplitGestureReturn } from './useSplitGesture';

// Layout algorithms
export { useAnimatedLayout, type UseAnimatedLayoutReturn, type UseAnimatedLayoutOptions } from './useAnimatedLayout';
export { useTreeLayout, type UseTreeLayoutOptions } from './useTreeLayout';
export { useGridLayout, type UseGridLayoutOptions } from './useGridLayout';

// Plugin hooks
export { usePlugin, usePlugins } from './usePlugin';
