import { PageResizeObserverSlimmer } from '../../../../../helpers/slimmers/page-resize-observer-slimmer';
import { TabConfig } from '../../../types';
import { VegaTabGroup } from '../../../vega-tab-group';
/** The `VegaTabGroupPagesController` class is responsible for managing the tab pages and their widths in a tab group component. */
export declare class VegaTabGroupPagesController extends PageResizeObserverSlimmer {
  host: VegaTabGroup['host'];
  gap: VegaTabGroup['gap'];
  tabPages: VegaTabGroup['tabPages'];
  tabWidthArray: VegaTabGroup['tabWidthArray'];
  tabItems: VegaTabGroup['tabItems'];
  variant: VegaTabGroup['variant'];
  overflow: VegaTabGroup['overflow'];
  private sliderStateController;
  private TAB_SIDE_BUTTON_WIDTH;
  private TAB_SIDE_BUTTON_AND_CONTENT_SPACE;
  private valuePaginator;
  private initTabPagesWithDebounce;
  /**
   * initial the tab pages when component call the componentDidLoad method
   */
  componentDidLoad(): void;
  /**
   * initial the tab pages when component call the componentDidRender method
   */
  componentDidRender(): void;
  /**
   * The constructor initializes a callback function and a target element.
   */
  constructor();
  /**
   * initial the tab pages when component call the watchGapChange method
   *
   * {@link VegaTabGroup#watchGapChange}
   */
  handleGapChange(): void;
  /**
   * initial the tab pages when component call the watchTabWidthArrayChange method
   *
   * {@link VegaTabGroup#watchTabWidthArrayChange}
   */
  handleTabWidthArrayChange(): void;
  /**
   * On tab items value change, initialize tab pages
   */
  handleTabItemsChange(): void;
  /**
   * The function sets the tab items for a tab configuration.
   *
   * @param {TabConfig[]} value - The value parameter is an array of TabConfig objects.
   */
  setTabItems(value: TabConfig[]): void;
  /**
   * The function sets the tab width array to the given value.
   *
   * @param {number[]} value - The value parameter is an array of numbers.
   */
  setTabWidthArray(value: number[]): void;
  /**
   * initial the tab pages
   */
  private initTabPages;
  /**
   * 1.To calculate the visual width of the tab, you need to subtract the space occupied by the left and right buttons
   * 2.If the current page is greater than 0, show the left button
   * 3.If all tab widths of the current page and subsequent pages are larger than the visible width, display the right button.
   *
   * @param {number} startIndex start index
   * @param {values} values number array
   * @returns {number} the tab container width
   */
  private getTabContainerSpace;
  /**
   * get the gap size from token
   *
   * @param {SpacingTokenType} gap gap token string
   * @returns {string} the size number
   */
  private formatAndValidGap;
  /**
   * The `emptySourceAndHiddenDropdown` method is responsible for hiding any dropdown elements that have an empty source.
   */
  private emptySourceAndHiddenDropdown;
  /**
   * 1.record the width of tab.
   * 2.the width of every tab is zero if the tab group component embedded in modal, so need recalculate the width of tab.
   */
  private initTabsWidthArray;
}
