import { RTEBlock } from '../../components/vega-rich-text-editor/dto/blocks/block.abstract';
import { RTENode } from '../../components/vega-rich-text-editor/dto/nodes/node.abstract';
import { VegaRTEBaseRenderer } from '../../components/vega-rich-text-editor/dto/renderers/base-renderer';
import { VegaRTEToolbarButtonRenderer } from '../../components/vega-rich-text-editor/extensions/base-toolbar-button-renderer';
import { VegaRTERenderResult } from '../../components/vega-rich-text-editor/interface';
import { Nullable } from '../../types/general';
export declare type BaseRenderer = VegaRTEBaseRenderer<RTEBlock | RTENode, VegaRTERenderResult | HTMLElement>;
/**
 * RTEDTORendererManager is a singleton class that manages the registration and retrieval of RTE DTO renderers.
 */
declare class RTEDTORendererManager {
  private RTE_DTO_RENDERER_MAP;
  private RTE_TOOLBAR_BUTTON_RENDERER_MAP;
  /**
   * Per-host toolbar button renderer map.
   * Stores a host-specific renderer map so that extensions that register during
   * {@link VegaRTEExtension#prepareBeforeLoad} can provide isolated renderer instances
   * for each {@link HTMLVegaRichTextEditorElement}.  At render time this map is checked
   * first; the global singleton map is used as a fallback.
   */
  private hostToolbarButtonRendererMap;
  /**
   * Registers a new RTE DTO renderer.
   *
   * @param {string} type - The type identifier for the RTE DTO renderer.
   * @param {VegaRTEBaseRenderer} RTEDTORenderer - The renderer instance for the RTE DTO.
   */
  registerRTEDTORenderer(type: string, RTEDTORenderer: BaseRenderer): void;
  /**
   * Registers a new RTE Toolbar Button Renderer.
   *
   * @param {string} type - The type identifier for the RTE Toolbar Button Renderer.
   * @param {VegaRTEToolbarButtonRenderer} RTEToolbarButtonRenderer - The renderer instance for the RTE Toolbar Button.
   */
  registerRTEToolbarButtonRenderer(type: string, RTEToolbarButtonRenderer: VegaRTEToolbarButtonRenderer): void;
  /**
   * Registers a host-specific toolbar button renderer.
   * The per-host renderer takes precedence over the global singleton when the host
   * element is passed to {@link getRTEToolbarButtonRenderer}.
   *
   * @typedef HTMLVegaRichTextEditorElement - The rich text editor host element type.
   * @param {HTMLVegaRichTextEditorElement} host - The rich text editor host element.
   * @param {string} type - The type identifier for the toolbar button renderer.
   * @param {VegaRTEToolbarButtonRenderer} renderer - The renderer instance to register for this host.
   */
  registerRTEToolbarButtonRendererForHost(host: HTMLVegaRichTextEditorElement, type: string, renderer: VegaRTEToolbarButtonRenderer): void;
  /**
   * Retrieves the RTE renderer for a given type.
   *
   * @param {string} type - The type identifier for the RTE block.
   * @returns {Nullable<BaseRenderer>} - The renderer instance for the RTE block, or null if not found.
   */
  getRTERenderer(type: string): Nullable<BaseRenderer>;
  /**
   * Retrieves the RTE Toolbar Button Renderer for a given type.
   * When a host element is provided the per-host map registered via
   * {@link registerRTEToolbarButtonRendererForHost} is checked first; the global
   * singleton map is used as a fallback so that extensions that do not override
   * {@link VegaRTEExtension#prepareBeforeLoad} continue to work unchanged.
   *
   * @typedef HTMLVegaRichTextEditorElement - The rich text editor host element type.
   * @param {string} type - The type identifier for the RTE Toolbar Button Renderer.
   * @param {HTMLVegaRichTextEditorElement} [host] - Optional host element for per-host lookup.
   * @returns {Nullable<VegaRTEToolbarButtonRenderer>} - The renderer instance for the RTE Toolbar Button, or null if not found.
   */
  getRTEToolbarButtonRenderer(type: string, host?: HTMLVegaRichTextEditorElement): Nullable<VegaRTEToolbarButtonRenderer>;
}
declare const _default: RTEDTORendererManager;
export default _default;
