import { RTETextNode } from '../../nodes/text-node';
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
import { TextSplittableAction } from '../../actions/splittable-action.abstract';
import { Nullable } from '../../../../../types/general';
/**
 * Split the text node into two or there nodes according to the rules.
 */
export declare class NodeSplitTextStrategy extends ActionHandleStrategy<TextSplittableAction, RTETextNode, Nullable<RTETextNode>> {
  private applyTargetNode;
  /**
   * Split the text node.
   *
   * @param {TextSplittableAction} action - The split action.
   * @param {RTETextNode} target - The text node that need to be splited.
   * @returns {Nullable<RTETextNode>} - The new insert text node or the current text node that need to apply the action.
   */
  protected handleAction(action: TextSplittableAction, target: RTETextNode): Nullable<RTETextNode>;
  /**
   * Insert the new node at the start offset
   *
   * @param {number} startOffset - The start position offset
   * @param {RTETextNode} target - RTETextNode
   * @returns {RTETextNode[]} - RTETextNode array
   */
  private insertNewNode;
  /**
   * Whether a given range should be split based on various conditions within the range.
   *
   * @param {Range} range - Selection range
   * @returns {boolean} Returns a boolean value indicating whether the selection range should be split.
   */
  private shouldSplitSelection;
  /**
   * Split text node with range
   *
   * @param {Range} range - Selection range
   * @param {RTETextNode} target - RTETextNode
   * @returns {RTETextNode[] | RTETextNode} RTETextNode array
   */
  private splitTextNode;
  /**
   * Store the text node which need to apply the annotation. Clear the value if the input is null.
   *
   * @param {RTETextNode | null} node - The new text node.
   */
  private setApplyTargetNode;
}
