import { BlockToRTEBlockStrategyAbstract } from './block-to-rte-block-strategy.abstract';
import { RTEContentBlock, VegaRTETransformOptions } from '../../../../interface';
import { Nullable } from '../../../../../../types/general';
import { RTEHtmlBlock } from '../../../../dto/blocks/html-block';
/**
 * Converting HTML block elements into RTE blocks.
 */
export declare class HtmlBlockStrategy extends BlockToRTEBlockStrategyAbstract {
  /**
   * @inheritDoc
   */
  canHandle(elementsArray: HTMLElement[], currentIndex: number, options: VegaRTETransformOptions): number;
  /**
   * @inheritDoc
   */
  handle(elementsArray: HTMLElement[], options?: VegaRTETransformOptions): Nullable<RTEContentBlock>;
  /**
   * @inheritDoc
   */
  appendChildBlocks(currentBlock: RTEHtmlBlock, childBlocks: RTEContentBlock[]): void;
  /**
   * @inheritDoc
   */
  shouldProceedToElementChildren(): boolean;
  /**
   * Returns true for elements that should be treated as inline content even if they have no element children (e.g. <span>text</span>).
   * This includes any element in a block text context (P, H1-H6, LI) and any element with text-node children but no element-node children.
   *
   * In raw-HTML mode (autoMatchFormat: false), the text-only heuristic only
   * applies to elements whose parent is itself a text-only wrapper (e.g.
   * {@code <div><span>Title</span></div>}). Structural children of non-text
   * containers (TABLE → CAPTION, TR → TH/TD, etc.) skip this heuristic so
   * they reach {@link isCustomHtmlContainer} and become html-blocks.
   *
   * @param {HTMLElement} element - Element to check.
   * @param {VegaRTETransformOptions} options - Transform options.
   * @returns {boolean} True if the element should be treated as inline content.
   */
  private isInlineTagWithoutBlockChildren;
  /**
   * Returns true when a dedicated-strategy element should fall back to html-block
   * because all its children are non-text, non-inline, non-dedicated elements
   * — indicating purely block-level embedded content that the dedicated text-block
   * strategy cannot represent.
   *
   * @param {HTMLElement} element - The dedicated-strategy element to check.
   * @returns {boolean} True when the element should be treated as html-block.
   */
  private shouldFallBackToHtmlBlock;
  /**
   * Returns true for elements that should be treated as html containers.
   * A DIV is only a valid container when its first child is not an IMG
   * (IMG children are handled by the image strategy instead).
   *
   * @param {HTMLElement} element - Element to check.
   * @returns {boolean} True if the element qualifies as a html container.
   */
  private isCustomHtmlContainer;
  /**
   * Generate HTML block DTO from an HTML element.
   *
   * @param {HTMLElement} element - HTML element to convert.
   * @param {VegaRTETransformOptions} options - Options for transformation.
   * @returns {VegaRTEHtmlBlock} - HTML block DTO.
   */
  private generateHtmlBlock;
}
