import { Nullable } from '../../../../../../types/general';
import { RTEContentBlock, VegaRTECustomNode, VegaRTETextAnnotations, VegaRTETransformOptions } from '../../../../interface';
import { RTEBlock } from '../../../../dto/blocks/block.abstract';
/**
 * Abstract class to define strategies for processing HTML elements
 */
export declare abstract class ElementToDTOStrategy {
  abstract canHandle(elementsArray: HTMLElement[], currentIndex: number, options: VegaRTETransformOptions): number;
  abstract handle(elementsArray: HTMLElement[], options?: VegaRTETransformOptions, parentTextAnnotations?: VegaRTETextAnnotations): Nullable<RTEBlock | VegaRTECustomNode>;
  abstract appendChildBlocks(currentBlock: RTEBlock, childBlocks: RTEBlock[]): void;
  abstract shouldProceedToElementChildren(): boolean;
}
/**
 * Class to represent the output of a strategy applied to HTML elements
 */
export declare class ElementToDTOStrategyOutput {
  private childrenOutput;
  private readonly currentStrategy;
  private readonly currentElements;
  constructor(currentStrategy: ElementToDTOStrategy, currentElements: HTMLElement[]);
  /**
   * Set children output.
   *
   * @param {ElementToDTOStrategyOutput[]} childrenOutput - children outputs.
   */
  setChildrenOutput(childrenOutput: ElementToDTOStrategyOutput[]): void;
  /**
   * Transform current output and children output to DTO
   *
   * @param {VegaRTETransformOptions} [options] - Options for transformation.
   * @returns {Nullable<RTEContentBlock>} - DTO.
   */
  toDto(options?: VegaRTETransformOptions): Nullable<RTEContentBlock>;
}
