import { VegaRTECreateElementFunction, VegaRTERenderResult } from '../../../interface';
import { RTETableBlock } from '../dto/table-block';
import { TableDynamicPopoverRenderer } from './table-dynamic-popover-renderer';
import { TablePopoverBaseRenderer } from './table-popover-base-renderer';
/**
 * Centralizes the popover rendering and interaction logic for table settings.
 */
export declare class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
  private popoverRef;
  private tableSettingRef;
  private tableData;
  private tableDynamicPopover;
  private popoverShow;
  private settingHandlers;
  /**
   * Show table setting popover when table is clicked.
   * Only the popover belonging to the nearest table will be shown,
   * which avoids outer tables showing their popover when an inner (nested) table is clicked.
   *
   * @param {MouseEvent} event - The MouseEvent that triggered the table action
   * @param {HTMLElement} trigger - The element that can triggered the popover open.
   */
  handleTableClick: (event: MouseEvent, trigger: HTMLElement) => void;
  /**
   * Sync the selected cells from the table selection to the table setting component.
   */
  syncSelectedCells: () => void;
  /**
   * Render the popover host and inject the table-setting component with refs wired up.
   *
   * @param {VegaRTECreateElementFunction} h - The create element function.
   * @param {RTETableBlock} renderData - The table block to render.
   * @param {() => HTMLElement} getTableRef - Current table DOM reference
   * @param {TableDynamicPopoverRenderer} tableDynamicPopover - Renderer used to show
   *  the secondary table popover (for example, table-properties-specific settings).
   * @returns {VegaRTERenderResult} The rendered popover structure.
   */
  render(h: VegaRTECreateElementFunction, renderData: RTETableBlock, getTableRef: () => HTMLElement, tableDynamicPopover: TableDynamicPopoverRenderer): VegaRTERenderResult;
  /**
   * Updates the table setting component caption state to match the given table data.
   */
  private updateTableSettingCaption;
  /**
   * Receive setting menu click events.
   *
   * @param {CustomEvent<Array<string>>} event - The custom event emitted from the setting menu.
   */
  private handleSettingMenuClick;
  /**
   * Handles the popover show event to sync the selected table cells to the table setting component.
   */
  private handleTableSettingPopoverShow;
  /**
   * Collects and returns the currently selected table cells.
   *
   * @returns {RTETableCellBlock[]} The array of currently selected table cell blocks.
   */
  private getTableSelectedCells;
}
