import { DataNode } from '../../../types/data-structures';
import { FlattenedImageListNode, SelectionChangePayload } from '../image-list-types';
/**
 * Hook for managing single or multi-select behavior in an image list.
 *
 * Selection state is keyed by the node's obj identity (T|P|K) so it
 * naturally survives drill-down / navigate-back without any explicit
 * reset.  Only nodes that carry an obj can participate in selection.
 *
 * In **multi-select** mode:
 * - **Plain click** (no modifier): replaces the selection with only the
 *   clicked item.
 * - **Ctrl / Cmd click**: toggles the clicked item without affecting
 *   the rest of the selection.
 * - **Shift-click**: selects the range between the last-selected item
 *   and the clicked item.
 *
 * In **single-select** mode a click selects the item (deselecting any
 * previous one).  Clicking the already-selected item deselects it.
 *
 * After every state change the **complete** set of selected nodes is
 * emitted via `onSelectionChange(nodes)` — including nodes selected at
 * other navigation levels — so the consumer can use it as its bucket
 * directly, with no merging required.
 */
export declare function useSelection(isMultiSelect: boolean, flattenedData: FlattenedImageListNode[], onSelectionChange?: (selectedNodes: SelectionChangePayload) => void): {
    isSelected: (node: DataNode) => boolean;
    updateSelection: (node: FlattenedImageListNode, ev: {
        ctrlKey: boolean;
        metaKey: boolean;
        shiftKey: boolean;
    }) => void;
};
//# sourceMappingURL=useSelection.d.ts.map