/** Return value of {@link useResourceSelection}. */
export interface UseResourceSelectionReturn<TData> {
    /** Set of currently selected item IDs. */
    readonly selectedIds: ReadonlySet<string>;
    /** The full selected items (resolved from the current items array). */
    readonly selectedItems: readonly TData[];
    /** Number of selected items. */
    readonly selectedCount: number;
    /** `true` when at least one item is selected. */
    readonly hasSelection: boolean;
    /** `true` when all visible items are selected. */
    readonly allSelected: boolean;
    /** `true` when some (but not all) visible items are selected. */
    readonly someSelected: boolean;
    /** Toggle a single item's selection state. */
    readonly toggleItem: (id: string) => void;
    /**
     * Range-select from the last toggled item to the given ID (shift-click).
     * Selects all items between them (inclusive).
     */
    readonly rangeSelectTo: (id: string) => void;
    /** Select or deselect all visible items. */
    readonly toggleAll: () => void;
    /** Clear all selections. */
    readonly clearSelection: () => void;
}
/**
 * Headless hook that manages selection state for a resource collection.
 *
 * Supports single toggle, shift-click range selection, select-all, and
 * automatic clearing when the items array identity changes (page or
 * filter change).
 *
 * @param items      The current page of items. Used to resolve selected
 *                   items and to implement range selection.
 * @param getItemId  Extracts a stable unique ID from an item.
 *
 * @example
 * ```tsx
 * const selection = useResourceSelection(items, (item) => item.id);
 * ```
 */
export declare function useResourceSelection<TData>(items: readonly TData[], getItemId: (item: TData) => string): UseResourceSelectionReturn<TData>;
//# sourceMappingURL=useResourceSelection.d.ts.map