import { AnnotationStyle, RTERenderContext } from '../../interface';
import { RTEBlock } from '../blocks/block.abstract';
import { RTENode } from '../nodes/node.abstract';
/**
 * Class to handle the style representation of annotations for RTE blocks and nodes.
 */
export declare class RTEAnnotationStyle<T extends RTEBlock | RTENode> {
  private dtoName;
  private annotationMap;
  constructor(dto: T);
  /**
   * Convert an AnnotationStyle object to a CSS text string.
   *
   * @param {RTERenderContext} options - Rendering context options.
   * @param {string[]} canMergeKeyList - List of style keys that can be merged by concatenation.
   * @param {Nullable<AnnotationStyle>} annotationStyle - The annotation style object, if null, get from toJSON().
   * @returns {string} A string representing the CSS text.
   */
  toCssText(options?: RTERenderContext, canMergeKeyList?: string[], annotationStyle?: AnnotationStyle): string;
  /**
   * Convert the annotation map to a JSON representation.
   *
   * @param {RTERenderContext} options - Rendering context options.
   * @param {string[]} canMergeKeyList - List of style keys that can be merged by concatenation.
   * @returns {AnnotationStyle} - The JSON representation of the annotation styles.
   */
  toJSON(options?: RTERenderContext, canMergeKeyList?: string[]): AnnotationStyle;
  /**
   * Filter annotations based on whether they are block or node annotations.
   *
   * @param {RTENodeAnnotationMapValue | RTEBlockAnnotationMapValue} annotation - The annotation to filter.
   * @returns {boolean} - True if the annotation matches the DTO type, false otherwise.
   */
  private filterAnnotation;
  /**
   * Merge an array of annotation styles into a single style object.
   * e.g.,
   * { textDecoration: 'underline', textDecoration: 'line-through' }
   * -> { textDecoration: 'underline line-through' }
   *
   * @param {AnnotationStyle[]} styles - Array of annotation style objects to merge.
   * @param {string[]} canMergeKeyList - List of style keys that can be merged by concatenation.
   * @returns {AnnotationStyle} - The merged annotation style object.
   */
  private mergeAnnotationStyles;
}
