import { VegaSlimmer } from '../../../../../../../vega-slimmer/vega-slimmer-core';
import { SelectSourceItem } from '../../../../../../vega-input-select/types';
import { VegaRichTextTableProperties } from '../../vega-rich-text-table-properties';
import { RTETablePropertiesType } from '../../../../../interface';
import { FormFieldValidationRule } from '../../../../../../../helpers/validator/rules/form-field-validation-rule';
export declare abstract class VegaRichTextTablePropertiesBaseFormFieldRenderer extends VegaSlimmer {
  static TABLE_BORDER_STYLES: SelectSourceItem[];
  protected controller: VegaRichTextTableProperties['controller'];
  protected defaultValue: VegaRichTextTableProperties['defaultValue'];
  protected renderer: VegaRichTextTableProperties['renderer'];
  protected styleMap: VegaRichTextTableProperties['styleMap'];
  protected vegaChange: VegaRichTextTableProperties['vegaChange'];
  protected vegaCancel: VegaRichTextTableProperties['vegaCancel'];
  protected vegaSave: VegaRichTextTableProperties['vegaSave'];
  protected dimensionFieldValidationRule: FormFieldValidationRule<string>[];
  private colorPickerPopoverRef;
  private borderColorPickerRef;
  get formRef(): HTMLVegaFormElement;
  /**
   * Render style border fields.
   *
   * @returns { HTMLElement } The border fields element.
   */
  protected renderBorderFields(): HTMLElement;
  /**
   * Render background color picker.
   *
   * @returns {HTMLElement} The background color picker element.
   */
  protected renderBackgroundColorPicker(): HTMLElement;
  /**
   * Render style dimension fields.
   *
   * @returns { HTMLElement } The dimension fields element.
   */
  protected renderDimensionFields(withPadding?: boolean): HTMLElement;
  protected renderAlignmentField(alignmentList: string[], iconPrefix: string, formFieldName: string): HTMLElement;
  /**
   * Render save and cancel action buttons.
   *
   * @returns {HTMLElement} The action buttons element.
   */
  protected renderActionButtons(): HTMLElement;
  /**
   * Emit a change event on each form field value change.
   *
   * @param {HTMLElement} el - The form field element.
   */
  protected handleFormChange: (el: HTMLElement) => void;
  /**
   * Emit a change event on each form field value change.
   *
   * @param {string} fieldName - The name of the changed field.
   * @param {RTETablePropertiesType} formData - The current form data.
   */
  protected emitFormDataChange: (_fieldName: string, formData: RTETablePropertiesType) => void;
  /**
   * Handle text alignment button click event.
   *
   * @param {MouseEvent} e - The click event.
   */
  private handleAlignmentButtonClick;
  /**
   * Render border color field color picker.
   *
   * @returns {HTMLElement} The border color picker element.
   */
  private renderBorderColorPicker;
  /**
   * Clear border color value and hide the color picker popover.
   *
   * @param {HTMLElement} btn - The clear button element.
   */
  private clearBorderColor;
  /**
   * Apply border color value and hide the color picker popover.
   *
   * @param {HTMLElement} btn - The apply button element.
   */
  private applyBorderColor;
  /**
   * Update the color display span background color when border color changes.
   *
   * @param {HTMLElement} colorPickerRef - The border color field element.
   */
  private updateBorderDisplayColor;
  /**
   * Handle background color picker change event.
   *
   * @param {HTMLElement} el - The background color picker element.
   */
  private handleBackgroundColorPickerChange;
  /**
   * Update the background color display when background color changes.
   *
   * @param {HTMLElement} colorInput - The background color field element.
   */
  private updateBackgroundDisplayColor;
  /**
   * Clear background color value.
   *
   * @param {MouseEvent} event - The mouse event.
   */
  private clearBackgroundColor;
  /**
   * Mark the form as touched.
   */
  private markFormTouched;
  protected abstract handleSave(btn: HTMLVegaButtonLinkElement): void;
  protected abstract handleCancel(btn: HTMLVegaButtonLinkElement): void;
}
