import { NodeId } from '../../../types/core'; /** * @file Drag state store for NodeTree DnD * * Keeps drag hover updates out of React component state so only affected items update. */ import * as React from "react"; export type NodeTreeDragState = { draggingNodeId: NodeId | null; dragOverNodeId: NodeId | null; dragOverPosition: "before" | "inside" | "after" | null; }; export type NodeTreeDragNodeSnapshot = { isDragging: boolean; isDragOverInside: boolean; dragOverPositionAttr: "before" | "after" | undefined; }; export type NodeTreeDragStateStore = { getState: () => NodeTreeDragState; setState: (partial: Partial) => void; subscribeNode: (nodeId: NodeId, listener: () => void) => () => void; getNodeSnapshot: (nodeId: NodeId) => NodeTreeDragNodeSnapshot; }; export declare const createNodeTreeDragStateStore: () => NodeTreeDragStateStore; export declare const NodeTreeDragStateContext: React.Context; export declare const useNodeTreeDragStateStore: () => NodeTreeDragStateStore; export declare const useNodeTreeDragNodeSnapshot: (nodeId: NodeId) => NodeTreeDragNodeSnapshot;