import { VegaCodeBlock } from '../../vega-code-block';
import { CodeInputPaste } from './code-input-paste.abstract';
/**
 * The class used to control the code block modify content action.
 */
export declare class CodeBlockInputController extends CodeInputPaste {
  protected selectionController: VegaCodeBlock['selectionController'];
  protected contentRenderer: VegaCodeBlock['contentRenderer'];
  protected valueController: VegaCodeBlock['valueController'];
  protected contentParseController: VegaCodeBlock['contentParseController'];
  protected insertCompositionTextController: VegaCodeBlock['insertCompositionTextController'];
  protected value: VegaCodeBlock['value'];
  /**
   * Stop `beforeinput` and `input` event bubbles to parent element.
   */
  registerInputEvent(): void;
  /**
   * Remove the event listener.
   */
  unregisterEventListener(): void;
  /**
   * Stop the input event bubbles and update the code value.
   *
   * @param {InputEvent} e - The input event object.
   */
  private handleInputEvent;
  /**
   * Prevent paste the file into code block. Prevent to delete the last space.
   *
   * @param {InputEvent} e - The input event object.
   */
  private handleBeforeInput;
  /**
   * Modify the component code content when user press delete key.
   *
   * @param {InputEvent} e - The input event object.
   */
  private handleDeleteAction;
  /**
   * Update the code block range base on input data.
   *
   * @param {InputEvent} e - The input event object.
   */
  private updateCodeBlockRange;
  /**
   * Calculates the length of the inserted data based on the input event type.
   *
   * @param {InputEvent} e - The input event object.
   * @returns {number} - The length of the inserted data.
   */
  private getInsertDataLength;
  /**
   * Update the code content after user modify action.
   */
  private updateCodeContent;
  /**
   * Check if the new content update by insert line break in low version Firefox.
   *
   * @param {string} newText - The new text content.
   * @returns {boolean} - Boolean value.
   */
  private isInsertLineBreakInLowVersionFirefox;
}
