import { VegaSlimmer } from '../../../../vega-slimmer/vega-slimmer-core';
import { VegaTable } from '../../vega-table';
import { ColumnRenderInputModel } from './dto/column-render-input-model';
/**
 * VegaTableRenderInputController
 *
 * Central controller that computes and provides render input data for table header rows,
 * header cells and body cells. Responsibilities:
 * - Build and cache shared header layout context (depth, width, pinned indices).
 * - Generate per-head-row and per-body-row render inputs used by head/row renderers.
 * - Expose render inputs to shadow DOM cells via Remote Invocation Call (RIC) registry.
 */
export declare class VegaTableRenderInputController extends VegaSlimmer {
  host: VegaTable['host'];
  columnStructureModel: VegaTable['columnStructureModel'];
  vegaTableColGroupRenderer: VegaTable['vegaTableColGroupRenderer'];
  private columnRenderInputModels;
  private leavesRenderInputModels;
  private headRowRenderInputMap;
  private headCellRenderInputMap;
  private pinnedColumnBodyCellRenderInputMap;
  private cellRenderInputChangeTaskQueue;
  /**
   * Register remote invocation observers when controller is connected.
   * Called via component lifecycle mapping.
   */
  connectedCallback(): void;
  /**
   * Unregister remote invocation observers when controller is disconnected.
   * Called via component lifecycle mapping.
   */
  disconnectedCallback(): void;
  /**
   * Initialize head context before component load.
   * Called via component lifecycle mapping.
   */
  componentWillLoad(): void;
  /**
   * Notify body cells about render input changes after the table has re-rendered.
   * This ensures ref callbacks have fired and the pinnedColumnBodyCellRenderInputMap is up-to-date.
   * Called via component lifecycle mapping.
   */
  componentDidRender(): Promise<void>;
  /**
   * Recompute head context when the column structure model changes.
   * Called via watch mapping.
   */
  watchColumnStructureModel(): Promise<void>;
  /**
   * Return render input models for table body (flattened leaves).
   *
   * @returns {ColumnRenderInputModel[]} Flattened array of leaf render input models.
   */
  getLeafRenderInputs(): ColumnRenderInputModel[];
  /**
   * Return render input models for table head (root-level forest).
   *
   * @returns {ColumnRenderInputModel[]} Root-level column render input models.
   */
  getHeadRenderInputs(): ColumnRenderInputModel[];
  /**
   * Store head row render input mapping for remote invocation.
   *
   * @param {HTMLElement} headRow - The head row element.
   * @param {ColumnRenderInputModel[]} renderInputs - Associated render input models.
   */
  addHeadRowRenderInputMap(headRow: HTMLVegaTableHeadRowElement, renderInputs: ColumnRenderInputModel[]): void;
  /**
   * Store head cell render input mapping for remote invocation.
   *
   * @param {HTMLElement} headCell - The head cell element.
   * @param {ColumnRenderInputModel} renderInput - Associated render input model.
   */
  addHeadCellRenderInputMap(headCell: HTMLVegaTableHeadCellElement, renderInput: ColumnRenderInputModel): void;
  /**
   * Store body cell render input mapping for pinned cells (used to update sticky positions).
   *
   * Only stores cells that require sticky positioning (left/right or no-pinned-end).
   *
   * @param {HTMLElement} cell - The body cell element.
   * @param {ColumnRenderInputModel} renderInput - Associated render input model.
   */
  addCellRenderInputMap(cell: HTMLVegaTableCellElement, renderInput: ColumnRenderInputModel): void;
  /**
   * Expose the internal head-cell -> render-input mapping.
   *
   * @typedef {import('../../../../types/components').HTMLVegaTableHeadCellElement} HTMLVegaTableHeadCellElement
   * @returns {Map<HTMLVegaTableHeadCellElement, ColumnRenderInputModel>} Map of head cell elements to render input.
   */
  getHeadCellRenderInputMap(): Map<HTMLVegaTableHeadCellElement, ColumnRenderInputModel>;
  /**
   * Expose the internal map of pinned body cells to their render inputs.
   *
   * @typedef {import('../../../../types/components').HTMLVegaTableCellElement} HTMLVegaTableCellElement
   * @returns {Map<HTMLVegaTableCellElement, ColumnRenderInputModel>} Map of body cell hosts requiring sticky positioning.
   */
  getPinnedColumnBodyCellRenderInputMap(): Map<HTMLVegaTableCellElement, ColumnRenderInputModel>;
  /**
   * Register remote invocation callbacks to allow DOM nodes to request render inputs.
   */
  private registerRenderInputRICObserver;
  /**
   * Unregister remote invocation callbacks previously registered.
   */
  private unRegisterRenderInputRICObserver;
  /**
   * Build the ColumnRenderInputModel forest from the current ColumnStructureModel.
   */
  private setRenderInputModel;
}
