import { EventEmitter } from '../../../stencil-public-runtime';
import { VegaTableColumnBreakpoint, VegaTableDensityType, VegaTableHeadCellClickEvent, VegaTablePinnedType, VegaTableSortConfig, VegaTableSorterConfig, VegaTableSortOrderType } from '../interface';
import { Nullable } from '../../../types/general';
import { EventEmitSlimmerBase } from '../../../helpers/event-manager/slimmers/event-emit-slimmer';
import { GlobalSlimmers } from '../../../vega-slimmer/vega-slimmer-core';
import { ResponsiveType } from '../../../types/ui.type';
import { VegaTableHeadCellStateController } from './slimmers/controllers/vega-table-head-cell-state-controller';
import { BreakpointsTokenType } from '../../../types/design-token.type';
import { PageResizeObserverSlimmer } from '../../../helpers/slimmers/page-resize-observer-slimmer';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../../helpers/slimmers/component-usage-runtime-metrics';
import { SortIconRenderer } from './slimmers/renderers/sort-icon-renderer';
import { VegaTableHeadCellSortConfigController } from './slimmers/controllers/vega-table-head-cell-sort-config-controller';
import { ColumnRenderInputModel } from '../slimmers/controllers/dto/column-render-input-model';
import { VegaTableChildRenderInputConsumerSlimmer } from '../../../helpers/slimmers/vega-table-child-render-input-consumer-slimmer';
/**
 * @vegaVersion 1.44.0
 */
export declare class VegaTableHeadCell {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected clickEventEmitter: EventEmitSlimmerBase;
  protected readonly vegaTableHeadCellStateController: VegaTableHeadCellStateController;
  protected readonly pageResizeObserverSlimmer: PageResizeObserverSlimmer;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaTableHeadCellElement>;
  protected sortIconRenderer: SortIconRenderer;
  protected readonly vegaTableHeadCellSortConfigController: VegaTableHeadCellSortConfigController;
  protected readonly vegaTableRenderInputConsumerSlimmer: VegaTableChildRenderInputConsumerSlimmer;
  host: HTMLVegaTableHeadCellElement;
  currentBreakpoint: BreakpointsTokenType;
  /**
   * Sync from {@link VegaTable.density}
   */
  density?: ResponsiveType<VegaTableDensityType>;
  columnDivider?: boolean;
  renderInput: Nullable<ColumnRenderInputModel>;
  /**
   * Defines the screen width at which the column becomes hidden.
   *    If not set, the column remains visible at all times.
   *
   * @vegaVersion 1.44.0
   */
  breakpoint?: VegaTableColumnBreakpoint;
  /**
   * Defines the column's sorting configuration.
   *
   * @vegaVersion 1.44.0
   */
  sorter?: VegaTableSorterConfig;
  /**
   * Defines the column's sorting order.
   *
   * @vegaVersion 2.8.0
   */
  sortOrder?: VegaTableSortOrderType;
  /**
   * Determines the alignment of text within the head cell.
   *
   * @vegaVersion 1.44.0
   */
  textAlign?: 'left' | 'right' | 'center';
  /**
   * Specifies the width of the head cell.
   *
   * @vegaVersion 1.44.0
   */
  width?: string;
  /**
   * Specifies the sorting configuration for the table header cell.
   *
   * @vegaVersion 2.42.0
   */
  sortConfig?: VegaTableSortConfig;
  /**
   * Specifies the pinned type of the head cell.
   *
   * @vegaVersion 2.57.0
   */
  pinned?: VegaTablePinnedType;
  /**
   * An event emitter notifying that the head cell has been clicked.
   *
   * @vegaVersion 1.44.0
   */
  vegaClick: EventEmitter<VegaTableHeadCellClickEvent>;
  /**
   * An event emitter notifying that the head cell has been clicked.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  click: EventEmitter<VegaTableHeadCellClickEvent>;
  render(): VegaTableHeadCell;
  private handleSort;
  /**
   * Get the next sorter order
   *
   * @param {string} sortOrder - The prop name of which sorter is sorted by
   * @returns {Nullable<'desc' | 'asc'>} Return the next sorter order
   */
  private getNextSortOrder;
}
