import type { RTETableExtensionContext } from '../table-extension';
import { SettingEventHandler } from './setting-event-handler.abstract';
export declare enum RowOperationType {
  HEADER_ROW = "HEADER_ROW",
  ADD_ROW_ABOVE = "ADD_ROW_ABOVE",
  ADD_ROW_BELOW = "ADD_ROW_BELOW",
  DELETE_ROW = "DELETE_ROW",
  SELECT_ROW = "SELECT_ROW"
}
/**
 * Event handler for row operations in a table.
 */
export declare class RowOperationEventHandler extends SettingEventHandler {
  /**
   * @inheritDoc
   */
  canHandle(action: Array<string>): boolean;
  /**
   * @inheritDoc
   */
  execute(action: Array<string>, extensionContext: RTETableExtensionContext): void;
  /**
   * Adds a new row to the table at the specified position.
   *
   * @param {RowOperationType} direction - The position to insert the new row (above or below).
   * @param {RTETableExtensionContext} extensionContext - The extension context.
   */
  private handleInsertRow;
  /**
   * Checks if a header row should be inserted based on the selected rows and position.
   *
   * @param {RTETableRowBlock} refBlock - The reference table row block.
   * @param {InsertTableRowDirection} direction - The direction to insert the new row (above or below).
   * @returns {boolean} True if a header row should be inserted, false otherwise.
   */
  private shouldInsertHeaderRow;
  /**
   * Deletes the selected row(s) from the table.
   *
   * @param {RTETableExtensionContext} extensionContext - The extension context.
   */
  private handleDeleteRow;
  /**
   * Converts selected rows to header rows or reverts them back to normal rows.
   *
   * @param {RTETableExtensionContext} extensionContext - The extension context.
   */
  private handleToggleHeader;
  /**
   * Selects the focus row(s) in the table.
   *
   * @param {RTETableExtensionContext} extensionContext - The extension context.
   */
  private handleSelectRow;
  /**
   * Get all selected table rows.
   *
   * @param {RTETableExtensionContext} extensionContext - The extension context.
   * @returns {RTETableRowBlock[]} The selected table row blocks.
   */
  private getAllSelectedRows;
  /**
   * Applies the given action to the table containing the reference block.
   *
   * @param {RTEBlock} refBlock - The reference block within the table.
   * @param {ModifyContentAction} action - The action to apply to the table.
   */
  private applyActionToTable;
}
