import { AutoRunWhenReRenderTaskQueueSlimmer } from '../../../../helpers/slimmers/auto-run-when-re-render-task-queue-slimmer.abstract';
import { RTECodeBlock } from '../../dto/blocks/code-block';
import { RTECodeBlockNode } from '../../dto/nodes/code-block-node';
/**
 * The rich text internal code block selection controller.
 */
export declare class InternalCodeBlockSelectionController extends AutoRunWhenReRenderTaskQueueSlimmer {
  protected focusNodeOffset: number;
  private shouldFocusNode;
  constructor();
  /**
   * Update the internal code block selection.
   *
   * @param {RTECodeBlockNode} startNode - The internal code block node DTO.
   * @param {number} startOffset - The content offset.
   * @param {boolean} immediatelyRun - Whether to invoke the method immediately.
   */
  enqueueSelectionRangeFutureState(startNode: RTECodeBlockNode, startOffset: number, immediatelyRun?: boolean): void;
  /**
   * Check the code block is actually selected or not. Because the Code block is a shadow dom, so can't detect the content selected state.
   * We add two placeholder spans at the begin and end position, we could check the placeholder spans selected state to make sure the code block is selected or not.
   *
   *
   * @example
   * <div>
   * <span></span>
   * <vega-code-block></vega-code-block>
   * <span><span>
   * </div>
   * @param {RTECodeBlock} codeBlock - The code block DTO.
   * @param {Range} range - The range instance.
   * @returns {boolean} - The boolean result.
   */
  isCodeBlockSelected(codeBlock: RTECodeBlock, range: Range): boolean;
  /**
   * The method invoke after the component re-render.
   */
  protected doTask: () => Promise<void>;
  /**
   * Focus the code block component.
   *
   * @param {RTECodeBlockNode} node - The code block node DTO.
   */
  private focusTheCodeBlock;
}
