import { RowConfig } from '../../../shared/types/table';
export interface UseTableSelectionOptions<T> {
    /** Si devuelve false, la fila no se puede seleccionar (checkbox deshabilitado en UI). */
    isRowSelectable?: (row: RowConfig<T>) => boolean;
    /**
     * Called whenever the table selection ids change (initial mount included, with `[]` until rows are selected).
     * Uses a ref so callers may pass an inline handler without re-running this effect every render.
     */
    onSelectionChange?: (selectedIds: (string | number)[]) => void;
    /**
     * When defined (including `[]`), selection is controlled by the parent: it must update this list in response
     * to `onSelectionChange`. Fixes consumers that pass `selection.selectedIds` while the table used to ignore it.
     */
    controlledSelectedIds?: (string | number)[];
}
export declare const useTableSelection: <T>(rows: RowConfig<T>[], multiple?: boolean, options?: UseTableSelectionOptions<T>) => {
    selectedIds: (string | number)[];
    selectedCount: number;
    allSelected: boolean;
    someSelected: boolean;
    handleRowSelect: (row: RowConfig<T>) => void;
    handleSelectAll: (checked: boolean) => void;
    clearSelection: () => void;
    selectRows: (ids: (string | number)[]) => void;
    isSelected: (rowId: string | number) => boolean;
};
//# sourceMappingURL=useTableSelection.d.ts.map