import { Nullable } from '../../../../../../types/general';
import { RTEContentBlock, VegaRTETransformOptions } from '../../../../interface';
import { BlockToRTEBlockStrategyAbstract } from './block-to-rte-block-strategy.abstract';
/** Transform continue inline block elements to text block DTO */
export declare class ContinueInlineToRTETextBlockStrategy extends BlockToRTEBlockStrategyAbstract {
  /**
   * @inheritDoc
   */
  canHandle(elementsArray: HTMLElement[], currentIndex: number, options: VegaRTETransformOptions): number;
  /**
   * Parse to a text block.
   *
   * @param {HTMLElement[]} elementsArray - Current elements.
   * @param {VegaRTETransformOptions} [options] - Options for transformation.
   * @returns {Nullable<RTEContentBlock>} - Text block.
   */
  handle(elementsArray: HTMLElement[], options?: VegaRTETransformOptions): Nullable<RTEContentBlock>;
  /**
   * Append child blocks.
   */
  appendChildBlocks(): void;
  /**
   * Should continue process to child elements.
   *
   * @returns {boolean} - boolean.
   */
  shouldProceedToElementChildren(): boolean;
  /**
   * Match the block type by tag name.
   *
   * @param {HTMLElement} element - Target element.
   * @returns {Nullable<VegaRTETextBlockType>} - Block type.
   */
  private matchTextBlockTypeByTagName;
  /**
   * Check if the element is an inline candidate to be included in the text block.
   *
   * @param {HTMLElement} element - The element to check.
   * @param {VegaRTETransformOptions} [options] - Options for transformation.
   * @returns {boolean} - Whether the element is an inline candidate.
   */
  private isInlineCandidate;
  /**
   * Returns true when the tag has a dedicated block strategy (excludes inline annotation tags CODE and A).
   *
   * @param {string} nodeName - The node name to check.
   * @returns {boolean} - Whether the tag is a dedicated block tag.
   */
  private isDedicatedBlockTag;
  /**
   * Returns true for empty elements, text-only elements, or elements whose entire
   * descendant tree contains no block-level elements (e.g. {@code <u><i><b>text</b></i></u>}).
   *
   * @param {HTMLElement} element - The element to check.
   * @returns {boolean} - Whether the element is an inline leaf or wrapper.
   */
  private isInlineLeafOrWrapper;
  /**
   * Returns true when the element has text-node children but no element children.
   *
   * @param {HTMLElement} element - The element to check.
   * @returns {boolean} - Whether the element contains only text nodes.
   */
  private isTextOnlyElement;
  /**
   * Returns true if the element's subtree contains only inline formatting wrappers.
   * Instead of maintaining a hard coded tag allowlist, the check derives from:
   *  1. {@link DEDICATED_STRATEGY_TAGS} — rejects known block/media tags
   *  2. Void-element check — elements with no child nodes (INPUT, COL, HR, …)
   *     are replaced/embedded content, not formatting wrappers
   *
   * @param {HTMLElement} element - Element to inspect.
   * @returns {boolean} True if the element has no block-level descendants.
   */
  private hasOnlyInlineDescendants;
}
