import { VegaSlimmer } from '../../../../vega-slimmer/vega-slimmer-core';
import { VegaRichTextEditor } from '../../vega-rich-text-editor';
/**
 * The `DeleteSelectedNodesController` class provides methods to delete selected nodes.
 */
export declare class DeleteSelectedNodesController extends VegaSlimmer {
  protected host: VegaRichTextEditor['host'];
  protected selectionController: VegaRichTextEditor['selectionController'];
  protected value: VegaRichTextEditor['value'];
  /**
   * Adds the observer to the host element.
   */
  addDeleteObserver(): void;
  /**
   * Removes the observer from the host element.
   */
  removeDeleteObserver(): void;
  /**
   * Deletes the selected nodes.
   *
   * @param {NotifyObserverPayload<boolean>} payload The notify payload
   * @param {boolean} payload.detail The delete process need merge start node and end node or not, default value is true.
   */
  private deleteActionProcess;
  /**
   * Removes selected nodes within a range in a rich text editor content.
   * The method is only used for different nodes are selected
   *
   * @returns {RTENode} The range start node, usually the start node is the first item of selectedNodes, if the selectedNodes is all removed, the start node will be a new text node.
   */
  private removeSelectionRange;
  /**
   * Removes the selected text at the start and end of a range in a Rich Text Editor.
   */
  private removeRangeStartAndEndSelectedText;
  /**
   * Creates a new paragraph with an empty text node and returns it.
   *
   * @returns {RTETextBlock} An empty paragraph with a unique identifier and a text node appended to it.
   */
  private createEmptyParagraph;
  /**
   * Merges text nodes in a rich text editor.
   *
   * @param {Node} startContainer - Start text node element
   * @param {Node} endContainer - End text node element
   */
  private mergeRangeStartAndEnd;
  /**
   * Compares the annotations of two RTETextNodes to determine if they can be merged.
   *
   * @param {RTETextNode} nodeA - node A
   * @param {RTETextNode} nodeB - node B
   * @returns {boolean} true or false
   */
  private shouldMergeTextNode;
  /**
   * Check the decorator node is fully in the range end.
   *
   * @param {RTENode} rangeEndNode - The end node of the range
   * @param {number} endOffset - The end offset of the range
   * @param {RTENode<RTEBlock>} checkedNode - The checked decorator node
   * @returns {boolean} - Whether the end node is fully within the range
   */
  private isEndNodeFullyInTheRange;
  /**
   * Check if the start decorator node is fully in the range.
   *
   * @param {RTENode<RTEBlock>} rangeStartNode - The start node of the range
   * @param {RTENode} rangeEndNode - The end node of the range
   * @param {number} startOffset - The start offset of the range
   * @param {number} endOffset - The end offset of the range
   * @returns {boolean} - Whether the start node is fully within the range
   */
  private isStartNodeFullyInTheRange;
}
