import { RTEFilterInlineStylesResult } from '../../interface';
import { RTEBlock } from '../blocks/block.abstract';
import { RTENode } from '../nodes/node.abstract';
import { RTEFilterStyles, RTEFilterStylesStrategy } from './filter-styles-strategy.abstract';
/**
 * Registry for managing filter styles strategies keyed by DTO class name.
 *
 * Provides common `register` / `getStrategies` primitives that both output-
 * filtering strategies (DTO → HTML) and annotation-parsing strategies
 * (HTML → DTO) build upon.
 *
 * TODO: Currently, the filter styles strategies are applied for all rich text editors. We need to apply the strategies with a specific rich text editor instance when we have multiple rich text editors in the future.
 */
export declare class RTEFilterStylesStrategyRegistry {
  protected static readonly registry: Map<string, Set<RTEFilterStylesStrategy>>;
  /**
   * Registers a filter styles strategy for a specific DTO class name.
   * Duplicate strategy instances are ignored.
   *
   * @param {string} dtoClassName - The DTO class name (e.g. `RTEListBlock.name`).
   * @param {RTEFilterStylesStrategy} strategy - The strategy instance to register.
   */
  static register(dtoClassName: string, strategy: RTEFilterStylesStrategy): void;
  /**
   * Retrieves all strategies registered for a given DTO class name.
   *
   * @param {string} dtoClassName - The DTO class name to look up.
   * @returns {RTEFilterStylesStrategy[]} Registered strategies (empty array if none).
   */
  static getStrategies(dtoClassName: string): RTEFilterStylesStrategy[];
  /**
   * Executes the appropriate filter styles strategy for a given block or node instance.
   *
   * @param {RTEBlock | RTENode} blockOrNodeInstance - The block or node instance to filter styles for.
   * @param {RTEFilterStyles} styles - The full set of styles to filter.
   * @param {string[]} classNames - The class names to consider.
   * @returns {RTEFilterInlineStylesResult} The result of filtering, including the remaining styles and class names.
   */
  static executeTheStrategyFilterAction(blockOrNodeInstance: RTEBlock | RTENode, styles: RTEFilterStyles, classNames: string[]): RTEFilterInlineStylesResult;
  /**
   * Executes the appropriate filter styles strategy for refilling styles on a given element.
   *
   * @param {string} dtoClassName The class name of the DTO.
   * @param {HTMLElement} element The HTML element to refill styles on.
   */
  static executeTheStrategyRefillAction(dtoClassName: string, element: HTMLElement): void;
  /**
   * Based on the registered strategies, generates the CSS text for all strategies in the registry. The generated CSS text is grouped by DTO class names for better organization.
   *
   * @param {boolean} enableFontFaceImports - A flag indicating whether to include font-face declarations for typography styles.
   * @returns {string} The content of style file.
   */
  static generateAllStylesContent(enableFontFaceImports?: boolean): string;
}
