import { type BoardItem, type BoardMove } from "./board.types.js"; /** A drop as the DnD layer reports it: target index EXCLUDES the dragged item. */ export interface BoardDrop { /** The dragged item's id. */ id: string; /** The source column id. */ from: string; /** The target column id. */ to: string; /** Insertion index within the target column, dragged item excluded, 0..count. */ index: number; } /** * Compute the BoardMove for a drop against the CURRENT controlled `items` order. The target * column's order is the array order filtered by `columnId`, with the dragged item excluded * (it is being lifted out), so `afterId` is the item that ends up directly above the drop and * `beforeId` the one directly below; null marks the top/bottom of the column. Returns null when * the dragged id is not in `items` (a defensive no-op; the drop is stale). */ export declare function boardMoveFor(items: readonly BoardItem[], drop: BoardDrop): BoardMove | null; /** * Apply a BoardMove to a controlled `items` array, returning a NEW array (input untouched) * where the moved item carries the target `columnId` and sits at `move.index` within that * column. Items in other columns keep their relative order. This is the standard `onMove` * reducer for consumers that keep the list in local state, and the Board's own reducer in * uncontrolled (`defaultItems`) mode. Unknown ids return the input array unchanged. Generic * so a consumer's richer item type survives the reducer (the docs `applyDrop` precedent). */ export declare function applyBoardMove(items: readonly T[], move: BoardMove): T[]; //# sourceMappingURL=board.logic.d.ts.map