import { Nullable } from '../../../../../types/general';
import { DeleteBlockContentAction } from '../../actions/delete-block-content-action';
import { RemoveChildrenAction } from '../../actions/remove-child-action';
import type { RTEBlock } from '../../blocks/block.abstract';
import type { RTENode } from '../../nodes/node.abstract';
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
/**
 * The delete node content contains some common functions that used for image block delete the image node or text block delete text node.
 */
export declare abstract class BlockDeleteNodeContentStrategy<T extends RTEBlock> extends ActionHandleStrategy<DeleteBlockContentAction | RemoveChildrenAction, T> {
  /**
   * Returns the previous node relative to the current node in a rich text editor structure.
   *
   * @param {RTENode} currentNode - An object of type `RTENode`.
   * @returns {Nullable<RTENode>} the previous block last node
   */
  protected getPreviousNode(currentNode: RTENode): Nullable<RTENode>;
  /**
   * Returns the next node relative to the current node in a rich text editor structure.
   *
   * @param {RTENode} currentNode - An object of type `RTENode`.
   * @returns {Nullable<RTENode>} the next block first node
   */
  protected getNextNode(currentNode: RTENode): Nullable<RTENode>;
  /**
   * Determines if a given node is the first node within the current state.
   *
   * @param {RTENode} currentNode - An object representing a node in a rich text editor (RTE).
   * @returns {boolean} True or false;
   */
  protected isContentFirstNode(currentNode: RTENode): boolean;
  /**
   * TODO: The getPreviousBlock add nest list support
   * This function retrieves the previous block in a rich text editor, considering different scenarios such as being in a bullet list.
   *
   * @param {RTEBlock} currentBlock - Used to retrieve the previous block relative to the given `currentBlock` within a rich text editor context.
   * @returns {Nullable<RTEBlock>} The previous block if existing
   */
  private getPreviousBlock;
  /**
   * Returns the last node within a given RTE block, handling different block types accordingly.
   *
   * @param {RTEBlock} currentBlock - Returns the last node within that block.
   * @returns {Nullable<RTENode>} Returns the last node of the given `currentBlock` object.
   */
  private getBlockLastNode;
  /**
   * Returns the first node within a given RTE block, handling different block types accordingly.
   *
   * @param {RTEBlock} currentBlock - Returns the first node within that block.
   * @returns {Nullable<RTENode>} Returns the first node of the given `currentBlock` object.
   */
  private getBlockFirstNode;
  /**
   * This function retrieves the next block in a rich text editor, considering different scenarios such as being in a bullet list.
   *
   * @param {RTEBlock} currentBlock - Used to retrieve the next block relative to the given `currentBlock` within a rich text editor context.
   * @returns {Nullable<RTEBlock>} The next block if existing
   */
  private getNextBlock;
  /**
   * Checks if the given instance is not the root content block.
   *
   * @param {RTEBlock | VegaRTEContent} block - The instance to check.
   * @returns {boolean} True if the block is not the root content block, false otherwise.
   */
  private isRTEBlock;
}
