import { AnnotationStyle, RTERenderContext } from '../../interface';
import { Annotation } from './annotation.abstract';
import { Nullable } from '../../../../types/general';
export declare enum BlockAnnotationTypeEnum {
  ALIGNMENT = "ALIGNMENT",
  TEXT_STYLE = "TEXT_STYLE",
  INDENT = "INDENT",
  LIST = "LIST",
  INTERNAL_WRAPPER = "INTERNAL_WRAPPER"
}
/**
 * BlockAnnotation is an abstract class that represents a block annotation.
 */
export declare abstract class BlockAnnotation<T = BlockAnnotationTypeEnum> extends Annotation<T> {
  abstract readonly type: T;
  /**
   * Generate the style for the annotation.
   *
   * @param {RTERenderContext} [options] - Options for rendering the annotation style.
   * @returns {Nullable<AnnotationStyle>} - Style for the annotation.
   */
  abstract renderStyle(options?: RTERenderContext): Nullable<AnnotationStyle>;
  /**
   * Generate the class for the annotation.
   *
   * @param {RTERenderContext} [options] - Options for rendering the annotation class.
   * @returns {Nullable<string>} - Class for the annotation.
   */
  abstract renderClass(options?: RTERenderContext): Nullable<string>;
  /**
   * Generate the JSON item of the annotation
   *
   * @returns {Nullable<Record<string, unknown>>} JSON item of the annotation
   */
  abstract toJSON(): Nullable<Record<string, unknown>>;
  abstract clone(): BlockAnnotation<T>;
}
