import { SelectionMode, SelectionState } from './types';
/** Click modifier keys state */
export interface ClickModifiers {
    shiftKey: boolean;
    ctrlKey: boolean;
    metaKey: boolean;
}
/** Result from handling a row click for selection */
export interface RowClickResult {
    selected: Set<number>;
    lastSelected: number;
    anchor: number | null;
}
/**
 * Handle a row click event for selection purposes.
 *
 * In single mode: always selects the clicked row, clearing others.
 * In multiple mode:
 *   - Plain click: clears selection and selects clicked row
 *   - Ctrl/Cmd+click: toggles the clicked row
 *   - Shift+click: range select from anchor to clicked row
 *
 * @param state - Current selection state
 * @param rowIndex - The clicked row index
 * @param mode - Selection mode ('single' or 'multiple')
 * @param modifiers - Keyboard modifiers held during click
 * @returns Updated selection state values
 */
export declare function handleRowClick(state: SelectionState, rowIndex: number, mode: SelectionMode, modifiers: ClickModifiers): RowClickResult;
/**
 * Create a set containing all row indices (for select all).
 *
 * @param rowCount - Total number of rows
 * @returns Set containing indices 0 to rowCount-1
 */
export declare function selectAll(rowCount: number): Set<number>;
/**
 * Compute the difference between two selection states.
 *
 * @param oldSelected - Previous selection set
 * @param newSelected - New selection set
 * @returns Object with added and removed row indices
 */
export declare function computeSelectionDiff(oldSelected: Set<number>, newSelected: Set<number>): {
    added: number[];
    removed: number[];
};
//# sourceMappingURL=row-selection.d.ts.map