import { RTEDropdownListGroup, RTEDropdownListItem, RTEExtensionContext, RTELanguageExtensionState } from '../../interface';
import { VegaRTEExtension } from '../extension.abstract';
/**
 * Language extension for Vega Rich Text Editor.
 * This extension allows users to switch between different languages and maintain separate content for each language.
 */
export declare class VegaRTELanguageExtension extends VegaRTEExtension {
  private languageToolbarButtonRenderer;
  private readonly languageList;
  private languageState;
  constructor(languageList: (RTEDropdownListItem | RTEDropdownListGroup)[], languagesState?: RTELanguageExtensionState);
  /**
   * Called by the rich text editor during `componentWillLoad` (before the first render).
   * Creates a fresh {@link RTELanguageToolbarButtonRenderer} instance dedicated to this
   * host element and registers it in the per-host map inside {@link RTEDTORendererManager}.
   * This ensures that each editor on the page has its own isolated renderer — no shared
   * singleton state, no WeakMap indirection.
   *
   * @typedef HTMLVegaRichTextEditorElement - The type of the host rich text editor element.
   * @param {HTMLVegaRichTextEditorElement} host - The host rich text editor element.
   */
  prepareBeforeLoad(host: HTMLVegaRichTextEditorElement): void;
  /**
   * Initializes the language extension.
   *
   * @param {RTEExtensionContext} context The extension context.
   */
  initialExtensionAfterLoad(context: RTEExtensionContext): void;
  /**
   * Invoked to set the language extension state. The method used if the state can not be provide when the editor is initialized.
   *
   * @param {RTELanguageExtensionState} state The language extension state to set.
   */
  setState(state: RTELanguageExtensionState): void;
  /**
   * Invoked to get the language extension state.
   *
   * @returns {RTELanguageExtensionState} The current language extension state.
   */
  getState(): RTELanguageExtensionState;
  /**
   * Listener for language change events from the toolbar button renderer.
   *
   * @param {string} selectedLanguage - The newly selected language.
   */
  private languageChangeCallBack;
  /**
   * Applies the content for the selected language.
   *
   * @param {string} selectedLanguage - The newly selected language.
   * @param {RTELanguageExtensionState['contentMap']} contentMap - The content map for all languages.
   */
  private applyLanguageContent;
  /**
   * Get the RTE latest value. The value is from the code block when in source edit mode; otherwise, it's from the host value.
   *
   * @param {HTMLElement} host - The host element of the rich text editor.
   * @returns {VegaRTEContent} - The content.
   */
  private getRTELatestValue;
}
