import { VegaSlimmer } from '../../../../vega-slimmer/vega-slimmer-core';
import { VegaRichTextEditor } from '../../vega-rich-text-editor';
/** Used to monitoring the user input actions by event listener */
export declare class UserInputController extends VegaSlimmer {
  protected host: VegaRichTextEditor['host'];
  protected value: VegaRichTextEditor['value'];
  protected valueController: VegaRichTextEditor['valueController'];
  protected vegaRichTextEditorRenderer: VegaRichTextEditor['vegaRichTextEditorRenderer'];
  protected selectionController: VegaRichTextEditor['selectionController'];
  protected insertCompositionTextController: VegaRichTextEditor['insertCompositionTextController'];
  private editableElementRef;
  private insertTextHandler;
  private insertParagraphHandler;
  private insertLineBreakHandler;
  private deleteContentHandler;
  private insertPasteHandler;
  /**
   * Adds event listener to an editable HTML element to handle user input actions.
   */
  protected addActionListener(): void;
  /**
   * Removes event listener for user input actions from an editable HTML div element.
   */
  protected removeActionListener(): void;
  /**
   * When a user performs an input action within the editable element, this function is triggered.
   *
   * @param {InputEvent} e the before input event object
   */
  private handleUserInputAction;
  /**
   * The function `getEditableElementRef` returns a reference to the editable HTMLDivElement within a rich text editor.
   *
   * @returns {Nullable<HTMLDivElement>} A reference to an HTMLDivElement element that is editable.
   */
  private getEditableElementRef;
  /**
   * Prevents the default behavior of a drag event.
   *
   * @param {DragEvent} e - drop event object
   */
  private preventDropEvent;
  /**
   * Initializes the value to an empty array if it is currently empty.
   */
  private initValueIfEmpty;
  /**
   * The code block placeholder element is non-editable, so we need to check if the focus node is a code block placeholder element.
   *
   * @returns {boolean} - Returns true if the focus node is a code block placeholder element, otherwise false.
   */
  private isFocusNodeNonEditable;
}
