import { DeleteTableColumnAction } from '../actions/delete-table-column-action';
import { RTETableBlock } from '../dto/table-block';
import { TableColumnStrategy } from './table-column-strategy.abstract';
/**
 * Strategy to handle the deletion of table column from the parent.
 */
export declare class DeleteTableColumnStrategy extends TableColumnStrategy<DeleteTableColumnAction> {
  /**
   * Deletes the specified table column and updates the cursor position.
   *
   * @param {DeleteTableColumnAction} action - The action containing the table column to delete.
   * @param {RTETableBlock} target - The target table block from which the column will be deleted.
   */
  protected handleAction(action: DeleteTableColumnAction, target: RTETableBlock): void;
  /**
   * Analyze overlap between each cell and the delete range in a single pass.
   * Returns fully covered cells (to delete) and partially covered cells (to adjust).
   *
   * @param {RTETableRowBlock[]} allRows - All rows in the table.
   * @param {number} startCol - Start logical column to delete (inclusive).
   * @param {number} endCol - End logical column to delete (inclusive).
   * @param {string[][]} tableGrid - The 2D grid representation of the table.
   * @returns {DeleteCellInfo} Overlap analysis for deletion and span adjustments.
   */
  private getDeleteCellsInfo;
  /**
   * Find the next focusable cell based on logical column position.
   *
   * @param {RTETableRowBlock[]} allTableRows - All table rows.
   * @param {string[][]} tableGrid - The 2D grid representation.
   * @param {number} startLogicalCol - Start of delete range.
   * @param {number} endLogicalCol - End of delete range.
   * @param {Set<string>} cellIdsToDelete - delete cell ids
   * @param {number} anchorRowIndex - the anchor row index
   * @returns {Nullable<RTETableCellBlock | RTETableHeadCellBlock>} The next focusable cell.
   */
  private findNextFocusableCell;
  /**
   * Find the next focusable cell ID in a grid row, skipping deleted cells.
   *
   * @param {string[]} gridRow - The grid row array.
   * @param {number} startCol - Start logical column.
   * @param {number} endCol - End logical column.
   * @param {Set<string>} cellIdsToDelete - Set of cell IDs to skip.
   * @returns {Nullable<string>} The next focusable cell ID, or null if none found.
   */
  private findFocusableCellIdInGridRow;
  /**
   * Deletes cells by adjusting partial cells and removing fully covered cells.
   *
   * @param {(RTETableCellBlock | RTETableHeadCellBlock)[]} coveredCells - Cells that should be fully removed.
   * @param {AdjustmentCellInfo[]} partialAdjustments - Cells that need colspan reduction.
   * @param {RTETableBlock} table - The table block.
   */
  private deleteCells;
  /**
   * Re-apply span attributes after deletion so remaining cells are normalized
   * against the new table width. When colspan equals table column count, don't set rowspan.
   *
   * @param {RTETableBlock} table - The table block.
   * @param {Set<string>} skipCellIds - The table skip cell`s id.
   */
  private normalizeRemainingCellSpans;
  /**
   * Get overlap count of two logical column ranges.
   *
   * @param {number} cellStartCol - Logical start column of the cell.
   * @param {number} cellColSpan - Colspan value of the cell.
   * @param {number} deleteStartCol - Start logical column of delete range.
   * @param {number} deleteEndCol - End logical column of delete range.
   * @returns {number} The number of overlapping logical columns.
   */
  private getColumnOverlapCount;
}
