import { RTETableBlock } from '../dto/table-block';
import { RTETableCellBlock } from '../dto/table-cell-block';
import { RTETableHeadCellBlock } from '../dto/table-head-cell-block';
import { ToggleHeaderTableColumnAction } from '../actions/toggle-header-table-column-action';
import { TableColumnStrategy } from './table-column-strategy.abstract';
/**
 * Strategy to handle the toggle of header state of a table column.
 */
export declare class ToggleHeaderTableColumnStrategy extends TableColumnStrategy<ToggleHeaderTableColumnAction> {
  /**
   * Check if all cells in the column containing the selected cell are head cells.
   *
   * @param {(RTETableCellBlock | RTETableHeadCellBlock)[]} selectedCellRange - The range of selected table cell blocks.
   * @returns {boolean} True if all cells in the column containing the selected cell are head cells, false otherwise.
   */
  static isFullHeaderSelection(selectedCellRange: (RTETableCellBlock | RTETableHeadCellBlock)[]): boolean;
  /**
   * @inheritDoc
   */
  protected handleAction(action: ToggleHeaderTableColumnAction, target: RTETableBlock): void;
  /**
   * Toggle header cells within existing table-head rows.
   *
   * @param {RTETableBlock} table - The target table block.
   * @param {RTETableRowBlock[]} allTableRows - All table rows in order.
   * @param {string[][]} tableGrid - Table grid representation.
   * @param {boolean} headerOn - Whether header mode is being enabled.
   * @param {number} maxSelectCellCol - Maximum selected logical column.
   * @param {number} minSelectCellCol - Minimum selected logical column.
   */
  private toggleHeadRows;
  /**
   * Toggle header cells within body rows.
   *
   * @param {RTETableBlock} table - The target table block.
   * @param {RTETableRowBlock[]} allTableRows - All table rows in order.
   * @param {string[][]} tableGrid - Table grid representation.
   * @param {boolean} headerOn - Whether header mode is being enabled.
   * @param {number} minSelectCellCol - Minimum selected logical column.
   * @param {number} maxSelectCellCol - Maximum selected logical column.
   */
  private toggleBodyRows;
  /**
   * Toggle cell types in a row within a logical column range.
   *
   * @param {RTETableBlock} table - The table block containing the target row.
   * @param {RTETableRowBlock} row - The table row block.
   * @param {string[]} gridRow - The grid row array.
   * @param {number} startCol - Start logical column.
   * @param {number} endCol - End logical column.
   * @param {(cell: RTETableCellBlock | RTETableHeadCellBlock) => boolean} shouldConvert - Predicate to determine if a cell should be converted.
   * @param {(cell: RTETableCellBlock | RTETableHeadCellBlock) => RTETableCellBlock | RTETableHeadCellBlock} convert - Function to convert the cell.
   */
  private toggleCellType;
}
