import { ToggleHeaderRowAction } from '../actions/toggle-header-row-action';
import { RTETableBlock } from '../dto/table-block';
import { TableRowCommonUtilitiesStrategy } from './table-row-strategy.abstract';
/**
 * Strategy class for handling converting selected rows to header rows or reverting them back to normal rows.
 */
export declare class ToggleHeaderRowStrategy extends TableRowCommonUtilitiesStrategy<ToggleHeaderRowAction, RTETableBlock> {
  /**
   * @inheritDoc
   */
  protected handleAction(action: ToggleHeaderRowAction, target: RTETableBlock): void;
  /**
   * Converts normal rows to header rows.
   *
   * @param {RTETableRowBlock[]} rows - The table row blocks to convert.
   * @param {RTETableBlock} table - The table block containing the rows.
   */
  private convertToHeaderRows;
  /**
   * Converts body rows to header rows.
   *
   * @param {RTETableBodyBlock} tableBody - The table body block containing the rows to be converted.
   * @param {RTETableHeadBlock} tableHead - The table head block to which the rows will be moved.
   * @param {RTETableRowBlock[]} shouldConvertRows - The rows to be converted.
   */
  private convertBodyRowsToHeaderRows;
  /**
   * Converts header rows back to normal rows.
   *
   * @param {RTETableRowBlock[]} rows - The table row blocks to convert.
   * @param {RTETableBlock} table - The table block containing the rows.
   */
  private revertToBodyRows;
  /**
   * Convert header rows to body rows.
   *
   * @param {RTETableHeadBlock} tableHead - The table head block containing the rows to be converted.
   * @param {RTETableBodyBlock} tableBody - The table body block to which the rows will be moved.
   * @param {RTETableRowBlock[]} shouldConvertRows - The rows to be converted.
   */
  private convertHeadRowsToBodyRows;
  /**
   * 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>} selectedIndices - Indices of selected rows.
   * @param {number} firstSelectedIndex - First selected row index.
   * @param {number} lastSelectedIndex - Last selected row index.
   * @returns {Map<number, CellToMove[]>} Map of target row index to cells to move.
   */
  private collectCellsToMove;
  /**
   * Converts a table data cell to a table header cell.
   *
   * @param {RTETableHeadCellBlock} cell - The table cell block to convert.
   * @returns {RTETableHeadCellBlock} The converted table header cell block.
   */
  private convertTdToTh;
  /**
   * Converts table header cells to table body cells.
   * Need to check each cell's logical column index to determine whether it should be converted or not.
   *
   * @param {RTETableRowBlock} row - The table row block containing the cells.
   * @param {number[]} rowCellStartCol - The starting column indices for each cell in the row.
   * @param {number} headCellLength - The number of header cells in the reference row.
   * @returns {RTETableCellBlock[]} The converted table body cell blocks.
   */
  private convertThToTd;
  /**
   * Clones a table cell with a new rowspan value, used when moving cells during row conversion.
   * For example, when converting body rows contains a cell with rowspan, we need to clone a new empty cell with same colspan and insert it into the remaining row, and update the original cell's rowspan to make sure the table structure is correct after conversion.
   *
   * @param {RTETableCellBlock} cell - The cell to clone.
   * @param {number} newRowSpan - The new rowspan value for the cloned cell.
   * @returns {RTETableCellBlock} The cloned cell with updated rowspan.
   */
  private cloneCellWithRowSpan;
  /**
   * Delete the default background color annotation from a header cell when converting it to a body cell.
   *
   * @param {VegaRTETableHeadCellBlock} cell - The table head cell block to process.
   * @returns {VegaRTETableCellBlock} The processed table cell block with default background color annotation removed if applicable.
   */
  private deleteHeadCellDefaultBackground;
}
