import { RTERenderContext, VegaRTEColorSchema, VegaRTECreateElementFunction, VegaRTERenderResult } from '../../../interface';
import { Nullable } from '../../../../../types/general';
import { RTETableBlock } from '../dto/table-block';
import { TablePopoverBaseRenderer } from './table-popover-base-renderer';
/**
 * Renderer for a generic, dynamically positioned popover used within table-related extensions.
 *
 * - The popover target is based on the current cursor/selection position.
 * - The popover content is rendered dynamic content.
 */
export declare class TableDynamicPopoverRenderer extends TablePopoverBaseRenderer {
  private popoverRef;
  private getTableRef;
  private selectionAnchorRef;
  private tableColorSchema;
  private currentTableBlock;
  private currentFocusNode;
  private tablePropertiesFormRef;
  private cellPropertiesFormRef;
  private popoverCloseType;
  private tablePropertiesHandlerMap;
  private cellPropertiesHandlerMap;
  constructor(colors: VegaRTEColorSchema[], renderContext: RTERenderContext);
  /**
   * removes the multi-cell selection anchor element from the DOM, if present,
   * and clears the internal reference.
   */
  destroy(): void;
  /**
   * Shows the popover. Before showing, it will refresh the target so
   * that the popover is positioned relative to the latest cursor position.
   *
   * @param {string} type - The table setting type determining which
   *  content variant to display (for example, table properties or cell properties).
   */
  show(type: string): Promise<void>;
  /**
   * hide the popover.
   */
  hide(): Promise<void>;
  /**
   * Renders a vega-popover whose target and content are provided dynamically by callers.
   *
   * @param {VegaRTECreateElementFunction} h - The create element function.
   * @param {() => HTMLElement} getTableRef - Current table DOM reference
   * @param {RTETableBlock} renderData - Current table block being rendered.
   * @returns {VegaRTERenderResult} The rendered popover host.
   */
  render(h: VegaRTECreateElementFunction, getTableRef: () => Nullable<HTMLElement>, renderData: RTETableBlock): VegaRTERenderResult;
  /**
   * Updates the visibility of the pre-rendered content blocks based on type.
   *
   * @param {string} type - The table setting type determining which content variant should be visible.
   */
  private updateContent;
  /**
   * Updates the table properties based on the emitted event.
   *
   * @param {CustomEvent} e - The custom event containing the update details.
   */
  private handleTablePropertiesUpdate;
  /**
   * Stores the current focus node before properties update action.
   */
  private storeCurrentFocusNode;
  /**
   * Create and position an invisible anchor element whose position and size are identical to the geometry of the current multi-cell selection.
   * This anchor element will then be used as the target of the popup, so that the popup appears near the entire selection area.
   *
   * @param {RTETableCellBlock[]} cells - The currently selected table cells.
   * @param {Nullable<HTMLElement>} tableRef - The container table element.
   * @returns {Nullable<HTMLElement>} The positioned anchor element.
   */
  private getOrCreateSelectionAnchor;
  /**
   * Updates the cell properties based on the emitted event.
   *
   * @param {CustomEvent} e - The custom event containing the update details.
   */
  private handleCellPropertiesUpdate;
}
