import { Nullable } from '../../../../../types/general';
import { RTETableExtensionAnnotationTypeEnum, VegaRTETableBorderType } from './table-annotation';
import { BlockAnnotation } from '../../../dto/annotations/block-annotation.abstract';
import { AnnotationStyle, RTERenderContext } from '../../../interface';
import { RTETableColorAnnotation } from './table-color-annotation';
export declare type VegaRTETableCellAnnotation = {
  backgroundColor?: Nullable<string>;
  padding?: Nullable<string>;
  border?: Nullable<VegaRTETableBorderType>;
  width?: Nullable<string>;
  height?: Nullable<string>;
  textAlign?: Nullable<VegaRTETableTextAlignType>;
  verticalAlign?: Nullable<VegaRTETableVerticalAlignType>;
  minWidth?: Nullable<string>;
  boxSizing?: Nullable<string>;
};
export declare type VegaRTETableTextAlignType = 'left' | 'center' | 'right' | 'justify';
export declare type VegaRTETableVerticalAlignType = 'top' | 'middle' | 'bottom';
/**
 * Class representing a table cell annotation in the rich text editor.
 */
export declare class RTETableCellAnnotation extends BlockAnnotation<RTETableExtensionAnnotationTypeEnum.CELL> {
  static readonly DEFAULT_PADDING: string;
  static readonly DEFAULT_BORDER: VegaRTETableBorderType;
  static readonly DEFAULT_BORDER_RGB_COLOR: string;
  static readonly DEFAULT_HORIZONTAL_TEXT_ALIGN: VegaRTETableTextAlignType;
  static readonly DEFAULT_VERTICAL_TEXT_ALIGN: VegaRTETableVerticalAlignType;
  static readonly DEFAULT_CELL_MIN_WIDTH: string;
  static readonly DEFAULT_BOX_SIZING: string;
  readonly type: RTETableExtensionAnnotationTypeEnum.CELL;
  padding?: Nullable<string>;
  width?: Nullable<string>;
  height?: Nullable<string>;
  textAlign?: Nullable<VegaRTETableTextAlignType>;
  verticalAlign?: Nullable<VegaRTETableVerticalAlignType>;
  backgroundColorAnnotation: RTETableColorAnnotation;
  borderColorAnnotation: RTETableColorAnnotation;
  minWidth?: Nullable<string>;
  boxSizing?: Nullable<string>;
  useInternalStyle: boolean;
  private _backgroundColor?;
  private _border?;
  constructor({ backgroundColor, padding, border, width, height, textAlign, verticalAlign, minWidth, boxSizing, }?: VegaRTETableCellAnnotation, useInternalStyle?: boolean);
  /**
   * @inheritDoc
   */
  static from(cellAnnotation: VegaRTETableCellAnnotation, useInternalStyle?: boolean): [RTETableExtensionAnnotationTypeEnum.CELL, RTETableCellAnnotation];
  /**
   * Get the default styles for the table annotation.
   *
   * @param {boolean} isHexColor - Whether to return color values as hex codes.
   * @returns {AnnotationStyle} The default styles for the table annotation.
   */
  static getDefaultStyles(isHexColor?: boolean): AnnotationStyle;
  /**
   * Generates the CSS border string from the border properties.
   *
   * @returns {Nullable<string>} The CSS border string.
   */
  get borderStr(): Nullable<string>;
  /**
   * Sets the background color using a color key.
   *
   * @param {Nullable<string>} colorKey - The key representing the background color.
   */
  set backgroundColor(colorKey: Nullable<string>);
  /**
   * Gets the background color value.
   *
   * @returns {Nullable<string>} The background color value.
   */
  get backgroundColor(): Nullable<string>;
  /**
   * Sets the border properties and updates the border color annotation accordingly.
   *
   * @param {Nullable<VegaRTETableBorderType>} border - The border properties to set.
   */
  set border(border: Nullable<VegaRTETableBorderType>);
  /**
   * Gets the border properties.
   *
   * @returns {Nullable<VegaRTETableBorderType>} The border properties.
   */
  get border(): Nullable<VegaRTETableBorderType>;
  /**
   * @inheritDoc
   */
  clone(): RTETableCellAnnotation;
  /**
   * @inheritDoc
   */
  toJSON(): Record<'tableCell', VegaRTETableCellAnnotation>;
  /**
   * @inheritDoc
   */
  renderStyle(options?: RTERenderContext): Record<string, string>;
  /**
   * @inheritDoc
   */
  renderClass(): Nullable<string>;
  /**
   * Removes default values from the style object to avoid redundancy.
   *
   * @param {Record<string, Nullable<string>>} style - The style object to clean.
   * @returns {Record<string, Nullable<string>>} The cleaned style object.
   */
  private removeDefaultValues;
}
