import { EventEmitter } from '../../stencil-public-runtime';
import { SpacingTokenType } from '../../types/design-token.type';
import { VegaTabGroupRenderer } from './slimmers/vega-tab-group/renderers/vega-tab-group-renderer';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { TabConfig, TabGroupOverflowType, TabGroupVariant } from './types';
import { VegaTabGroupSelectedTargetController } from './slimmers/vega-tab-group/controllers/vega-tab-group-selected-target-controller';
import { VegaTabGroupPagesController } from './slimmers/vega-tab-group/controllers/vega-tab-group-pages-controller';
import { VegaTabGroupPageIndexController } from './slimmers/vega-tab-group/controllers/vega-tab-group-page-index-controller';
import { VegaTabGroupCloseButtonRenderer } from './slimmers/vega-tab-group/renderers/vega-tab-group-close-button-renderer';
import { VegaTabGroupSwitchPageButtonRenderer } from './slimmers/vega-tab-group/renderers/vega-tab-group-direction-button-renderer';
import { VegaTabGroupPanelController } from './slimmers/vega-tab-group/controllers/vega-tab-group-panel-controller';
import { VegaTabGroupVoiceOverFocusController } from './slimmers/vega-tab-group/controllers/vega-tab-group-voice-over-focus-controller';
import { VegaTabGroupTabListRenderer } from './slimmers/vega-tab-group/renderers/vega-tab-group-tab-list-renderer';
import { VegaTabGroupContentRenderer } from './slimmers/vega-tab-group/renderers/vega-tab-group-content-renderer';
import { VegaTabGroupSliderStateController } from './slimmers/vega-tab-group/controllers/vega-tab-group-slider-state-controller';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
/**
 * @vegaVersion 1.0.6
 */
export declare class VegaTabGroup {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected readonly vegaTabGroupRenderer: VegaTabGroupRenderer;
  protected readonly vegaTabGroupDirectionButtonRenderer: VegaTabGroupSwitchPageButtonRenderer;
  protected readonly vegaTabGroupTabListRenderer: VegaTabGroupTabListRenderer;
  protected readonly vegaTabGroupCloseButtonRenderer: VegaTabGroupCloseButtonRenderer;
  protected readonly vegaTabGroupPagesController: VegaTabGroupPagesController;
  protected readonly vegaTabGroupSelectedTargetController: VegaTabGroupSelectedTargetController;
  protected readonly vegaTabGroupPageIndexController: VegaTabGroupPageIndexController;
  protected readonly vegaTabGroupPanelController: VegaTabGroupPanelController;
  protected readonly vegaTabGroupVoiceOverFocusController: VegaTabGroupVoiceOverFocusController;
  protected readonly vegaTabGroupContentRenderer: VegaTabGroupContentRenderer;
  protected readonly vegaTabGroupSliderStateController: VegaTabGroupSliderStateController;
  protected clickEventEmitter: EventEmitSlimmerBase;
  protected dropdownEventPrevent: ChildNodesEventPreventSlimmer;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaTabGroupElement>;
  host: HTMLVegaTabGroupElement;
  tabPages: TabConfig[][];
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-tab-group-with-tabPages-change}
   */
  watchTabPagesChange(): void;
  tabWidthArray: number[];
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-tab-group-with-right-button}
   * @see{module:vega-tab-group-close-tab-with-more-tab}
   */
  watchTabWidthArrayChange(): void;
  currentPageIndex: number;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-tab-group-with-right-button}
   */
  watchCurrentPageIndexChange(newIndex: number): Promise<void>;
  /**
   * Defines the data target for the selected tab
   *    within the tab group.
   *
   * @vegaVersion 1.3.0
   */
  selectedTabDataTarget: string;
  watchSelectedTabDataTargetChange(): void;
  /**
   * Defines the spacing between the tabs in
   *    the tab group.
   *
   * @vegaVersion 1.3.0
   */
  gap: SpacingTokenType;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-tab-group-with-gap-change}
   */
  watchGapChange(): void;
  /**
   * Specifies whether the tabs in the tab group include
   *    a close button for closing the tab.
   *
   * @vegaVersion 1.3.0
   */
  showCloseButton: boolean;
  /**
   * Defines the tab items that appear within the tab group.
   *
   * The `tabItems` property can only be set once during
   *    initialization and cannot be overridden or
   *    modified dynamically.
   *
   * @vegaVersion 1.3.0
   */
  tabItems: TabConfig[];
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-tab-group-watch-tab-items-on-change}
   */
  watchTabItemsChange(): void;
  /**
   * Defines the selector of the element that will contain
   *    the tab group popup.
   *
   * - If provided,
   *      the popup will be positioned relative to this element.
   * - If not provided,
   *      the popup will be appended to the body element by default.
   *
   * @VegaWarning The value of this property should be an element that is
   * 		the parent of this component or an ancestor of the parent element.
   *      Using any other element may lead to unexpected behavior.
   * @vegaVersion 1.3.0
   */
  positionRelativeTo: string;
  /**
   * Specifies the visual style and prominence of the tab group.
   *
   * @vegaVersion 1.39.0
   */
  variant: TabGroupVariant;
  /**
   * Specifies the overflow navigation for many tab items within the tab group.
   *
   * @vegaVersion 2.49.0
   */
  overflow: TabGroupOverflowType;
  /**
   * An event emitter notifying the click event of a tab
   *    in the tab group.
   *
   * @vegaVersion 1.1.0
   */
  vegaClick: EventEmitter<string>;
  /**
   * An event emitter notifying the click event of a tab
   *    in the tab group.
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  click: EventEmitter<string>;
  /**
   * Call the pager to return a two-dimensional array of page numbers.
   */
  componentDidLoad(): void;
  componentDidRender(): void;
  render(): VegaTabGroup;
}
