import { RTEBlockType, VegaRTECodeBlock, VegaRTETransformOptions } from '../../interface';
import { VegaRTEContent } from '../content-state';
import { RTENode } from '../nodes/node.abstract';
import { RTEBlock } from './block.abstract';
import { ModifyContentAction } from '../actions/modify-content-action.abstract';
import { AnnotationAction } from '../actions/annotation-action.abstract';
import { RTECodeBlockNode } from '../nodes/code-block-node';
import { RTEHtmlBlock } from './html-block';
/**
 * The code block DTO class.
 */
export declare class RTECodeBlock extends RTEBlock<VegaRTEContent | RTEHtmlBlock, RTECodeBlockNode> {
  static CODE_BLOCK_PLACEHOLDER_CLASS_NAME: string;
  static readonly dtoName: string;
  readonly dtoName: string;
  type: RTEBlockType;
  parent: VegaRTEContent | RTEHtmlBlock;
  children: RTECodeBlockNode[];
  constructor(id: string, content: string, language: VegaRTECodeBlock['language']);
  /**
   * Converts a VegaRTECodeBlock into an RTECodeBlock.
   *
   * @param {VegaRTECodeBlock} block - The block object
   * @returns {RTECodeBlock} A RTECodeBlock class
   */
  static from(block: VegaRTECodeBlock): RTECodeBlock;
  /**
   * @inheritDoc
   */
  toJSON(): VegaRTECodeBlock;
  /**
   * @inheritDoc
   */
  toHtml(options?: VegaRTETransformOptions): string;
  /**
   * @inheritDoc
   */
  clone(parent: VegaRTEContent | RTEHtmlBlock): RTECodeBlock;
  /**
   * Apply action to block
   *
   * @param {ModifyContentAction} action - modify content action.
   */
  apply(action: AnnotationAction | ModifyContentAction): void;
  /**
   * @inheritDoc
   */
  isNotEmpty(): boolean;
  /**
   * @inheritDoc
   */
  getLastNode(): RTENode;
  /**
   * The code block is selected or not.
   *
   * @returns {boolean} - The boolean result.
   */
  isSelected(): boolean;
}
