import { RTEContentBlock, VegaRTEContentBlock, ListType, VegaRTETransformOptions, VegaRTEGenerateStyleOptions } from '../interface';
import { RTEListBlock } from './blocks/list-block';
import type { RTETextBlock } from './blocks/text-block';
import { ModifyContentAction } from './actions/modify-content-action.abstract';
import { RTEListItemBlock } from './blocks/list-item-block';
import { RTENode } from './nodes/node.abstract';
import { Nullable } from '../../../types/general';
import './setup';
/**
 * Class representing the content state of the rich text editor.
 */
export declare class VegaRTEContent {
  /** Minimize-safe type discriminator for VegaRTEContent. */
  static readonly dtoName: string;
  readonly dtoName: string;
  children: RTEContentBlock[];
  constructor(blocks: RTEContentBlock[]);
  /**
   * Converts a JSON array of blocks to a class array of RTEContentBlock.
   *
   * @param {VegaRTEContentBlock[]} value The JSON array of blocks to convert.
   * @param {VegaRTETransformOptions} options - Optional transformation options.
   * @returns {VegaRTEContent} The converted array of RTEContentBlock.
   */
  static fromJSON(value: VegaRTEContentBlock[], options?: VegaRTETransformOptions): VegaRTEContent;
  /**
   * Create an empty content state
   *
   * @param {VegaRTETransformOptions} options - Optional transformation options.
   * @returns {VegaRTEContent} An empty content state
   */
  static createEmptyContent(options?: VegaRTETransformOptions): VegaRTEContent;
  /**
   * Converts HTML content to a VegaRTEContent instance.
   *
   * @param {string} html - The HTML string to convert.
   * @param {VegaRTETransformOptions} options - Optional transformation options.
   * @returns {VegaRTEContent} The converted content state.
   */
  static fromHtml(html: string, options?: VegaRTETransformOptions): VegaRTEContent;
  /**
   * Generates the content style file for the rich text editor based on the registered filter styles strategies.
   *
   * @param {VegaRTEGenerateStyleOptions} options - Options for generating the content style file.
   * @returns {string} The html template style text.
   */
  static generateContentStyles(options?: VegaRTEGenerateStyleOptions): string;
  /**
   * Clones the content state.
   *
   * @param {boolean} deep - If true, performs a deep clone of the content state.
   * @returns {VegaRTEContent} The cloned content state.
   */
  clone(deep?: boolean): VegaRTEContent;
  /**
   * Converts the content state to a JSON array of blocks.
   *
   * @returns {VegaRTEContentBlock[]} The JSON array of blocks.
   */
  toJSON(): VegaRTEContentBlock[];
  /**
   * Converts the content state to HTML.
   *
   * @param {VegaRTETransformOptions} [options] - The conversion options.
   * @returns {string} The HTML representation of the content state.
   */
  toHtml(options?: VegaRTETransformOptions): string;
  /**
   * Checks if the content state is empty.
   *
   * @returns {boolean} True if the content state is empty, false otherwise.
   */
  isEmpty(): boolean;
  /**
   * Internal method to add the block item, remove the block item
   *
   * @param {ModifyContentAction} action - Modify content action
   */
  apply(action: ModifyContentAction): void;
  /**
   * Get the last node in the content.
   *
   * @returns {Nullable<RTENode>} The last node in the content or null if there are no nodes.
   */
  getLastNode(): Nullable<RTENode>;
  /**
   * Convert text to list.
   *
   * @param {RTETextBlock} block - block
   * @returns {RTEListItemBlock} list item block dto.
   */
  toListItem(block: RTETextBlock): RTEListItemBlock;
  /**
   * create list.
   *
   * @param {ListType} type - type
   * @returns {RTEListBlock} list block dto.
   */
  createList(type: ListType): RTEListBlock;
  /**
   * Finds a node by its ID in the content.
   *
   * @param {string} id - The ID of the node to find.
   * @returns {Nullable<RTENode>} The found node or null if not found.
   */
  findNodeById(id: string): Nullable<RTENode>;
  /**
   * Recursively searches for a node by its ID in the given blocks.
   *
   * @param {string} id - The ID of the node to find.
   * @param {RTEContentBlock[]} blocks - The blocks to search within.
   * @returns {Nullable<RTENode>} The found node or null if not found.
   */
  private findNodeInBlocksById;
}
