import { Nullable } from '../../../../types/general';
import { AnnotationAction } from '../actions/annotation-action.abstract';
import { ModifyContentAction } from '../actions/modify-content-action.abstract';
import { RTEBlock } from '../blocks/block.abstract';
import { VegaRTEContent } from '../content-state';
import { RTENode } from '../nodes/node.abstract';
import { ActionHandlerInterceptor } from './action-handle-interceptor.abstract';
declare type RTEActionType = ModifyContentAction | AnnotationAction;
declare type RTEDTOClass = RTENode | RTEBlock | VegaRTEContent;
/**
 * Registry for action handler interceptors, which can register and retrieve interceptors for specific actions and targets.
 */
export declare class ActionHandlerInterceptorRegistry {
  private static readonly registry;
  /**
   * Bind a specific strategy to a special action type of the rich text node.
   *
   * @param {string} actionType - The special action type or the action class name.
   * @param {string} targetClass - The rich text node class name.
   * @param {ActionHandlerInterceptor} strategy - The action handle strategy instance.
   */
  static register<T extends RTEActionType, target extends RTEDTOClass>(actionType: string, targetClass: string, strategy: ActionHandlerInterceptor<T, target>): void;
  /**
   * Unregister the strategy for the specific action type and target class.
   *
   * @param {string} actionType - The special action type or the action class name.
   * @param {string} targetClass - The rich text node class name.
   * @param {ActionHandlerInterceptor} strategy - The action handler interceptor instance.
   */
  static unregister(actionType: string, targetClass: string, strategy: ActionHandlerInterceptor<RTEActionType, RTEDTOClass>): void;
  /**
   * Get the special interceptor strategy that before handle the action logic.
   *
   * @typedef T generic type
   * @typedef target generic type
   * @param {RTEActionType} action - The special action .
   * @param {string} targetClass - The rich text node class name.
   * @returns {Nullable<ActionHandlerInterceptor<T, target>>} - The action handler interceptor instance or null if not found.
   */
  static get<T extends RTEActionType, target extends RTEDTOClass>(action: RTEActionType, targetClass: target): Nullable<ActionHandlerInterceptor<T, target>>;
}
export {};
