import { AnnotationGeneratorStrategyAbstract } from './annotation-generator-strategy.abstract';
import { VegaRTEAnnotations, VegaRTETextAnnotations, VegaRTETransformOptions } from '../../../../../interface';
import { RTEBlock } from '../../../../../dto/blocks/block.abstract';
import { RTENode } from '../../../../../dto/nodes/node.abstract';
import { ClassPrototype } from '../../../../../../../types/class.type';
export declare type RTEDtoClassPrototype = ClassPrototype<RTEBlock | RTENode>;
export declare type HtmlElementToAnnotationGenerateOptions = {
  parentAnnotations?: VegaRTETextAnnotations;
} & Partial<Pick<VegaRTETransformOptions, 'autoMatchFormat' | 'skipCustomAnnotations' | 'filterInlineStyles'>>;
/** Html element to annotations generator */
declare class HtmlElementToAnnotationGenerator {
  private handlers;
  /**
   * Register a custom annotation handler.
   * Custom handlers are added to the beginning of the handlers array,
   * giving them higher priority than default handlers.
   *
   * @param {AnnotationGeneratorStrategyAbstract} handler - The annotation handler to register.
   */
  registerHandler(handler: AnnotationGeneratorStrategyAbstract): void;
  /**
   * The function generates annotations for a given target DTO and HTML element based on a set of
   * strategies.
   *
   * @typedef T class name of target DTO
   * @typedef V generated annotations type
   * @param {T} targetDto - Which DTO is the generated annotations to set.
   * @param {HTMLElement} element - Current html element.
   * @param {HtmlElementToAnnotationGenerateOptions} [options] - Options
   * @returns {V} Generated annotations.
   */
  generate<T extends RTEDtoClassPrototype, V extends VegaRTEAnnotations>(targetDto: T, element: HTMLElement, options?: HtmlElementToAnnotationGenerateOptions): V;
  /**
   * Remove default text-style properties from customStyle.
   * This prevents repeated styling when switching between source edit and normal mode.
   *
   * Note: This method mutates the customStyle object inside `annotations` in place and returns the same reference.
   *
   * @param {V} annotations - The generated annotations.
   * @returns {V} The same annotations reference with customStyle cleaned up.
   */
  private removeTextStyleDefaultsFromCustomStyle;
}
declare const _default: HtmlElementToAnnotationGenerator;
export default _default;
