import { DeleteTableRowAction } from '../actions/delete-table-row-action';
import { RTETableBlock } from '../dto/table-block';
import { TableRowCommonUtilitiesStrategy } from './table-row-strategy.abstract';
/**
 * Strategy class for handling the deletion of table rows.
 */
export declare class DeleteTableRowStrategy extends TableRowCommonUtilitiesStrategy<DeleteTableRowAction, RTETableBlock> {
  /**
   * @inheritDoc
   */
  protected handleAction(action: DeleteTableRowAction, target: RTETableBlock): void;
  /**
   * Removes the specified rows from their parent table section.
   * Handles rowspan adjustments when deleting rows that contain or are part of merged cells.
   *
   * Scenarios handled:
   * 1. If all rows in a section are being removed, the entire section is removed.
   * 2. If a cell with rowspan > 1 starts before the deleted rows and spans into them,
   *    the rowspan is adjusted to exclude the deleted rows.
   * 3. If a cell with rowspan > 1 starts in the first deleted row and spans beyond,
   *    the cell is moved to the next remaining row with adjusted rowspan.
   * 4. If a cell with rowspan is entirely within the deleted rows, it's removed with the rows.
   *
   * @param {RTETableRowBlock[]} rowsToBeRemoved - The rows to be removed.
   */
  private removeRows;
  /**
   * Collect cells that need to be moved to the next remaining row.
   *
   * @param {RTETableRowBlock[]} allRows - All rows in the section.
   * @param {number[][]} rowCellStartCols - Logical start columns per row.
   * @param {Set<number>} removalIndices - Indices of rows to remove.
   * @param {number} firstRemovalIndex - First row index to remove.
   * @param {number} lastRemovalIndex - Last row index to remove.
   * @returns {Map<number, CellToMove[]>} Map of target row index to cells to move.
   */
  private collectCellsToMove;
  /**
   * Clones a table cell with a new rowspan value.
   *
   * @param {RTETableCellBlock | RTETableHeadCellBlock} cell - The cell to clone.
   * @param {number} newRowSpan - The new rowspan value for the cloned cell.
   * @returns {RTETableCellBlock | RTETableHeadCellBlock} The cloned cell with updated rowspan.
   */
  private cloneCellWithRowSpan;
  /**
   * Get the future focus row after deletion.
   *
   * @param {RTETableRowBlock} startRow - The first row to be deleted.
   * @param {RTETableRowBlock} endRow - The last row to be deleted.
   * @param {RTETableBlock} table - The table containing the rows.
   * @returns {Nullable<RTETableRowBlock>} The row to be focused after deletion.
   */
  private getFutureFocusRow;
}
