import { RTETableCellBlock } from '../dto/table-cell-block';
import { SplitCellHorizontallyAction } from '../actions/split-cell-horizontally-action';
import { ActionHandleStrategy } from '../../../dto/action-handle-strategies/action-handle-strategy.abstract';
/**
 * Strategy to handle horizontal split of a table cell (splits top/bottom).
 */
export declare class SplitCellHorizontallyStrategy extends ActionHandleStrategy<SplitCellHorizontallyAction, RTETableCellBlock> {
  /**
   * @inheritDoc
   */
  protected handleAction(_action: SplitCellHorizontallyAction, target: RTETableCellBlock): void;
  /**
   * Find the correct insertion position for a cell at a given column position in a row.
   * Accounts for cells from previous rows with rowspan extending into the target row.
   *
   * @param {RTETableRowBlock} targetRow - The row to insert into.
   * @param {number} targetColumnPosition - The target column position.
   * @param {RTETableRowBlock[]} allRows - All rows in the table.
   * @param {number} rowIndex - The index of the target row.
   * @returns {number} The physical cell index to insert at.
   */
  private findInsertPosition;
  /**
   * Create a new row with only the bottom cell.
   * Other columns will be covered by cells from the original row with increased rowSpan.
   *
   * @param {RTETableBodyBlock | RTETableHeadBlock} section - The section (thead or tbody).
   * @param {RTETableCellBlock | RTETableHeadCellBlock} bottomCell - The bottom cell to insert.
   * @returns {RTETableRowBlock} The newly created row.
   */
  private createNewRowWithCell;
  /**
   * Update all cells from all previous rows that span through the newly inserted row.
   * When a new row is inserted at `insertionRowIndex`, any cell from a previous row
   * that has rowSpan extending to or beyond that position needs rowSpan increased by 1.
   *
   * @param {RTETableRowBlock[]} allRows - All rows in the table (after insertion).
   * @param {number} insertionRowIndex - The index where the new row was inserted.
   * @param {RTETableCellBlock | RTETableHeadCellBlock} splitCell - The cell that was split (skip this one).
   * @param {RTETableBlock} table - The table block.
   */
  private updateCellsSpanningThroughInsertionPoint;
}
