import { VegaSlimmer } from '../../../../vega-slimmer/vega-slimmer-core';
import { VegaRichTextEditor } from '../../vega-rich-text-editor';
import { VegaRTEExtension } from '../../extensions/extension.abstract';
/**
 * Inject the editor context to the extensions.
 */
export declare class RTEExtensionController extends VegaSlimmer {
  protected extensions: VegaRichTextEditor['extensions'];
  protected host: HTMLVegaRichTextEditorElement;
  protected sourceView: VegaRichTextEditor['sourceView'];
  protected valueController: VegaRichTextEditor['valueController'];
  protected selectionController: VegaRichTextEditor['selectionController'];
  /**
   * Prepares all registered extensions before the first render.
   * This method is called during `componentWillLoad` so that extensions can perform
   * host-specific setup (e.g. registering per-host toolbar button renderers) before
   * Stencil renders the component for the first time.
   */
  protected prepareExtensionsBeforeLoad(): void;
  /**
   * Initializes the extension context for all registered extensions.
   * This method is called when the component is connected and whenever the extensions property changes.
   */
  protected initialExtensionContext(): void;
  /**
   * Destroys all registered extensions.
   */
  protected destroyExtension(): void;
  /**
   * Update extension context when extensions property changes.
   *
   * @param {VegaRTEExtension[]} newValue - New extensions array.
   * @param {VegaRTEExtension[]} oldValue - Old extensions array.
   */
  protected handleExtensionsChange(newValue: VegaRTEExtension[], oldValue: VegaRTEExtension[]): void;
  /**
   * Flush the editor value to the host. Auto focus the last node if autoFocusLastNode is true.
   *
   * @param {VegaRTEContent} value - The content value to flush.
   * @param {boolean} autoFocusLastNode - Whether to auto-focus the last node after flushing.
   */
  private flushValue;
  /**
   * Check if the editor is in source edit mode.
   *
   * @returns {boolean} - Whether the editor is in source edit mode.
   */
  private isSourceEditMode;
  /**
   * Get the currently selected nodes in the editor.
   *
   * @returns {RTENode[]} - An array of currently selected RTENode objects.
   */
  private getSelectedNodes;
  /**
   * Generates the extension context for the host component.
   *
   * @returns {RTEExtensionContext} - The generated extension context.
   */
  private generateExtensionContext;
}
