import { RTETableExtensionContext } from '../table-extension';
import { SettingEventHandler } from './setting-event-handler.abstract';
export declare enum MergeCellsOperationType {
  MERGE_CELLS = "MERGE_CELLS",
  MERGE_CELL_UP = "MERGE_CELL_UP",
  MERGE_CELL_RIGHT = "MERGE_CELL_RIGHT",
  MERGE_CELL_DOWN = "MERGE_CELL_DOWN",
  MERGE_CELL_LEFT = "MERGE_CELL_LEFT"
}
/**
 * Event handler for merge cells operations in a table.
 */
export declare class MergeCellsOperationEventHandler extends SettingEventHandler {
  /**
   * @inheritDoc
   */
  canHandle(action: Array<string>): boolean;
  /**
   * @inheritDoc
   */
  execute(action: Array<string>, extensionContext: RTETableExtensionContext): void;
  /**
   * Get the adjacent cell in the specified direction.
   *
   * @param {MergeCellsOperationType} direction - The direction to look for the adjacent cell.
   * @param {RTETableCellBlock | RTETableHeadCellBlock} cell - The current cell.
   * @returns {Array<RTETableCellBlock | RTETableHeadCellBlock>} Array containing the cells to merge.
   */
  private getDirectionMergeCells;
  /**
   * Handle the merge cells operation by creating and applying a MergeCellsAction.
   *
   * @param {Array<RTETableCellBlock | RTETableHeadCellBlock>} mergeCells - The cells to merge.
   * @param {MergeCellsOperationType} direction - The merge cell direction.
   */
  private handleMergeCells;
  /**
   * Apply the specified action on the table containing the selected cell.
   *
   * @param {MergeCellsAction} action - The action to apply.
   * @param {RTETableCellBlock | RTETableHeadCellBlock} selectedCell - The selected table cell.
   */
  private applyActionOnTable;
}
