import { RTEBlock } from '../../../dto/blocks/block.abstract';
import { VegaRTEContent } from '../../../dto/content-state';
import { RTENode } from '../../../dto/nodes/node.abstract';
import { RTEHtmlBlock } from '../../../dto/blocks/html-block';
import { VegaRTEBlockAnnotations, VegaRTEBlockBase, VegaRTETransformOptions } from '../../../interface';
import { RTETableBodyBlock, VegaRTETableBodyBlock } from './table-body-block';
import { RTETableHeadBlock, VegaRTETableHeadBlock } from './table-head-block';
import { VegaRTETableAnnotation } from '../annotations/table-annotation';
import { RTETableCaptionBlock, VegaRTETableCaptionBlock } from './table-caption-block';
import { Nullable } from '../../../../../types/general';
export declare type VegaRTETableBlock = VegaRTEBlockBase & {
  type: string;
  /**
   * Children of the table block. May include an optional `table-caption` block
   * alongside structural blocks like `table-head` and `table-body`.
   */
  children: (VegaRTETableHeadBlock | VegaRTETableBodyBlock | VegaRTETableCaptionBlock)[];
  annotations?: VegaRTEBlockAnnotations & {
    table?: VegaRTETableAnnotation;
  };
};
export declare type VegaRTETableChildType = RTETableHeadBlock | RTETableBodyBlock | RTETableCaptionBlock;
/**
 * Class representing a table block in the rich text editor.
 */
export declare class RTETableBlock extends RTEBlock<VegaRTEContent | RTEHtmlBlock, VegaRTETableChildType> {
  type: string;
  parent: VegaRTEContent | RTEHtmlBlock;
  children: VegaRTETableChildType[];
  constructor(id: string, options?: VegaRTETransformOptions);
  /**
   * @inheritDoc
   */
  static from(block: VegaRTETableBlock, options?: VegaRTETransformOptions): RTETableBlock;
  /**
   * @inheritDoc
   */
  clone(parent: VegaRTEContent | RTEHtmlBlock): RTETableBlock;
  /**
   * @inheritDoc
   */
  getLastNode(): RTENode;
  /**
   * Get the first node of the table block.
   *
   * @returns {RTENode} The first node of the table block.
   */
  getFirstNode(): RTENode;
  /**
   * @inheritDoc
   */
  isNotEmpty(): boolean;
  /**
   * @inheritDoc
   */
  toHtml(options?: VegaRTETransformOptions): string;
  /**
   * @inheritDoc
   */
  toJSON(): VegaRTETableBlock;
  /**
   * Retrieves the caption block from the children collection, if present.
   *
   * @returns {Nullable<RTETableCaptionBlock>} The caption block or `null`.
   */
  getCaption(): Nullable<RTETableCaptionBlock>;
  /**
   * Inserts, replaces, or removes the caption block within the children.
   *
   * @param {Nullable<RTETableCaptionBlock>} caption - The caption block to set, or `null` to remove.
   */
  setCaption(caption: Nullable<RTETableCaptionBlock>): void;
  /**
   * Checks whether the table currently stores a caption block reference.
   *
   * @returns {boolean} `true` when a caption DTO is attached; otherwise `false`.
   */
  hasCaption(): boolean;
}
