import { Nullable } from '../../../../../types/general';
import { RTENode } from '../../../dto/nodes/node.abstract';
import { RTETablePropertiesType, TableCellStylePropertiesMap } from '../../../interface';
import { RTETableCellBlock } from '../dto/table-cell-block';
import { RTETableExtensionContext } from '../table-extension';
/**
 * Event handler for cell properties in a table.
 */
export declare abstract class CellPropertiesEventHandler {
  /**
   * Get the style collection from the selected table cells.
   *
   * @param {RTETableCellBlock[]} selectedCells - The selected table cells to merge styles from
   * @returns {TableCellStylePropertiesMap} The merged styles object containing only common style properties
   */
  static getStyleCollectionFromCell(selectedCells: RTETableCellBlock[]): TableCellStylePropertiesMap;
  /**
   * Convert the style collection prop to a form field value by merging styles.
   *
   * @param {TableCellStylePropertiesMap} styleMap - The default value prop.
   * @returns {RTETablePropertiesType} The merged form field value.
   */
  static convertStyleMapToFormField(styleMap: TableCellStylePropertiesMap): RTETablePropertiesType;
  /**
   * Apply the given properties to the selected cells
   *
   * @param {RTETableExtensionContext} extensionContext The extensionContext
   * @param {Record<string, RTETablePropertiesType>} properties - The properties to apply
   * @param {boolean} isFlushable - Whether the action is flushable
   */
  protected applyProperties(extensionContext: RTETableExtensionContext, properties: Record<string, RTETablePropertiesType>, isFlushable: boolean): void;
  /**
   * Update the rich text editor cursor position
   *
   * @param {RTETableExtensionContext} extensionContext - The table extension context.
   * @param {Nullable<RTENode>} focusNode - The node to focus on.
   */
  protected updateCursorPosition(extensionContext: RTETableExtensionContext, focusNode: Nullable<RTENode>): void;
  /**
   * Convert RTETablePropertiesType to VegaRTETableCellAnnotation
   *
   * @param {RTETablePropertiesType} originalStyles - The original style properties
   * @returns {VegaRTETableCellAnnotation} The converted VegaRTETableCellAnnotation
   */
  private convertToVegaTableCellAnnotation;
  /**
   * Apply the given annotation to the specified table cell
   *
   * @param {RTETableCellBlock} cell - The table cell to apply the annotation to
   * @param {VegaRTETableCellAnnotation} annotation - The annotation to apply
   * @param {boolean} isFlushable - Whether the action is flushable
   */
  private applyAnnotation;
  /**
   * Handle the event
   *
   * @param {RTETableExtensionContext} context - The table extension context.
   * @param { Record<string, RTETablePropertiesType>} data - The table properties data.
   * @param {RTENode} focusNode - The node to focus on.
   */
  abstract handle(context: RTETableExtensionContext, data: Record<string, RTETablePropertiesType>, focusNode?: RTENode): void;
}
