import { VegaRTETextBlock, VegaRTETextBlockType, VegaRTEBlockAnnotations, VegaRTETextStyleType, VegaRTETransformOptions } from '../../interface';
import { RTETextNode } from '../nodes/text-node';
import { Nullable } from '../../../../types/general';
import { VegaRTEContent } from '../content-state';
import { BlockAnnotationsEntity, RTEBlock } from './block.abstract';
import { AnnotationAction } from '../actions/annotation-action.abstract';
import { RTEListBlock } from './list-block';
import type { RTEHtmlBlock } from './html-block';
export declare type RTETextBlockTagType = 'div' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p';
/**
 * Text block
 */
export declare class RTETextBlock extends RTEBlock<VegaRTEContent | RTEListBlock | RTEHtmlBlock, RTETextNode> {
  static readonly dtoName: string;
  readonly dtoName: string;
  type: VegaRTETextBlockType;
  children: RTETextNode[];
  parent: VegaRTEContent | RTEListBlock | RTEHtmlBlock;
  constructor(id: string, type: VegaRTETextBlockType, options?: VegaRTETransformOptions);
  /**
   * Converts a VegaRTETextBlock into an RTETextBlock.
   *
   * @param {VegaRTETextBlock} block - The block object
   * @param {VegaRTETransformOptions} options - Optional transformation options.
   * @returns {RTETextBlock} A RTETextBlock class
   */
  static from(block: VegaRTETextBlock, options?: VegaRTETransformOptions): RTETextBlock;
  /**
   * The function `createAnnotationEntity` creates a block annotation entity based on the provided type
   * and value.
   *
   * @param {keyof VegaRTEBlockAnnotations} type - The `type` parameter is a key of the `VegaRTEBlockAnnotations` enum, which specifies
   * the type of annotation entity to create.
   * @param {unknown} value - The `value` parameter in the `createAnnotationEntity` function is the value
   * that will be used to create the annotation entity. It can be of any type depending on the specific
   * annotation being created.
   * @returns {Nullable<BlockAnnotationsEntity>} The `createAnnotationEntity` function returns a nullable tuple containing a
   * `BlockAnnotationTypeEnum` and a `BlockAnnotation` object.
   */
  protected static createAnnotationEntity(type: keyof VegaRTEBlockAnnotations | 'textStyle', value: unknown): Nullable<BlockAnnotationsEntity>;
  /**
   * Checks if a given text block type is one of the acceptable text styles.
   *
   * @param {VegaRTETextBlockType} type - The text block type
   * @returns {boolean} Return a boolean value indicating whether the `type` parameter is valid.
   */
  protected static isAcceptableTextStyle(type: VegaRTETextBlockType): type is VegaRTETextStyleType;
  /**
   * Merges RTETextNode nodes based on certain conditions.
   *
   * @param {AnnotationAction} action - AnnotationAction
   */
  mergeNodes(action: AnnotationAction): void;
  /**
   * @inheritDoc
   */
  toJSON(): VegaRTETextBlock;
  /**
   * @inheritDoc
   */
  toHtml(options?: VegaRTETransformOptions): string;
  /**
   * Clone the nodes to a new block
   *
   * @param {RTEBlock} nodes - The nodes will be copied
   * @returns {RTETextBlock} New block
   */
  cloneWithNodes(nodes: RTETextNode[]): RTETextBlock;
  /**
   * @inheritDoc
   */
  clone(parent: VegaRTEContent | RTEListBlock | RTEHtmlBlock): RTETextBlock;
  /**
   * @inheritDoc
   */
  isNotEmpty(): boolean;
  /**
   * @inheritDoc
   */
  getLastNode(): RTETextNode;
  /**
   * Get the HTML tag for the block based on its type.
   *
   * @returns {RTETextBlockTagType} The HTML tag for the block.
   */
  getBlockTag(): RTETextBlockTagType;
  /**
   * Get the HTML string for the children nodes, including handling link group annotations.
   *
   * @param {VegaRTETransformOptions} [options] - Optional conversion options that may affect how the children nodes are rendered as HTML.
   * @returns {string} The HTML string representing the children nodes.
   */
  getChildrenHtml(options?: VegaRTETransformOptions): string;
  /**
   * @inheritDoc
   */
  protected doAnnotationActionApply(action: AnnotationAction): void;
  /**
   * Recursively groups `nodes` by their inline HTML wrapper at the given
   * `depth`, emitting shared wrappers for adjacent siblings with the same
   * `groupId` and descending into the next depth for each group.
   *
   * @param {RTETextNode[]} nodes - The nodes to render.
   * @param {number} depth - Current depth in the inline HTML chain (0 = outermost).
   * @param {VegaRTETransformOptions} [options] - Optional conversion options.
   * @returns {string} HTML string with grouped wrappers at this depth.
   */
  private renderGroupedNodesAtDepth;
  /**
   * Generate Link Html
   *
   * @param {LinkGroupAnnotation} linkGroupAnnotation - linkGroupAnnotation
   * @param {string} nodesHtml - The nodes html
   * @param {VegaRTETransformOptions} [options] - Optional conversion options that may affect how the children nodes are rendered as HTML.
   * @returns {string} link html
   */
  private generateLinkHtml;
}
