import { RTEExtensionContext } from '../../../interface';
import { RTETableBlock } from '../dto/table-block';
import { Nullable } from '../../../../../types/general';
import { VegaRTEContent } from '../../../dto/content-state';
import { RTENode } from '../../../dto/nodes/node.abstract';
export declare enum TableSettingType {
  ROW = "ROW",
  CAPTION = "CAPTION",
  COLUMN = "COLUMN",
  MERGE_CELLS = "MERGE_CELLS",
  TABLE = "TABLE",
  CELL = "CELL",
  SPLIT_CELL = "SPLIT_CELL"
}
/**
 * Abstract class for setting event handlers.
 */
export declare abstract class SettingEventHandler {
  /**
   * Applies a cursor update action so the editor focuses on the resolved node.
   *
   * @param {RTETableBlock} block - Table block currently being toggled.
   * @param {Nullable<RTENode>} focusNode - Target node that should receive the caret.
   */
  protected syncCursorPosition(block: RTETableBlock, focusNode: Nullable<RTENode>): void;
  /**
   * Walks up the parent chain to locate the nearest VegaRTEContent root.
   *
   * @param {RTETableBlock} block - Table block used as the starting point.
   * @returns {Nullable<VegaRTEContent>} Content root containing the table, if found.
   */
  protected findRootContent(block: RTETableBlock): Nullable<VegaRTEContent>;
  /**
   * Determines if the handler can process the given action.
   *
   * @param {Array<string>} action - The action to check.
   */
  abstract canHandle(action: Array<string>): boolean;
  /**
   * Determines how to handle the given action.
   *
   * @param {Array<string>} action - The action to handle.
   * @param {RTEExtensionContext} extensionContext - The context for the extension.
   * @param {RTETableBlock} tableBlock - The table dto instance.
   * @param {unknown} data - The data associated with the action.
   */
  abstract execute(action: Array<string>, extensionContext: RTEExtensionContext, tableBlock: RTETableBlock, data?: unknown): void;
}
