import type { Table as TanStackTable, Row as TanStackRow } from '@tanstack/table-core';
import { type TableNode, type TableRecord, type TableRowState } from '../../types';
/**
 * Abstract base class for handling behavior associated with interactive row selection of the table.
 */
export declare abstract class SelectionManagerBase<TData extends TableRecord> {
    protected tanStackTable: TanStackTable<TableNode<TData>>;
    protected actionMenusPreserveSelection: boolean;
    constructor(tanStackTable: TanStackTable<TableNode<TData>>, actionMenusPreserveSelection: boolean);
    abstract handleRowSelectionToggle(rowState: TableRowState, isSelecting: boolean, shiftKey: boolean): boolean;
    abstract handleRowClick(rowState: TableRowState, shiftKey: boolean, ctrlKey: boolean): boolean;
    abstract handleActionMenuOpening(rowState: TableRowState): boolean;
    updateActionMenusPreserveSelection(actionMenusPreserveSelection: boolean): void;
    reset(): void;
    protected toggleIsRowSelected(rowState: TableRowState, isSelecting?: boolean): void;
    protected selectSingleRow(rowState: TableRowState): boolean;
    protected deselectAllLeafRows(rowId: string): void;
    protected getAllLeafRowIds(id: string): string[];
    protected getAllOrderedRows(): TanStackRow<TableNode<TData>>[];
    private getOrderedRows;
}
