import { EventEmitter } from '../../stencil-public-runtime';
import { VegaSegmentControlVariant, VegaSegmentProps } from './types';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { VegaSegmentControlRenderer } from './slimmers/renderers/vega-segment-control-renderer';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { VegaSegmentControlSelectedController } from './slimmers/controllers/vega-segment-control-selected-controller';
import { PageResizeObserverSlimmer } from '../../helpers/slimmers/page-resize-observer-slimmer';
import { VegaSegmentOverflowController } from './slimmers/controllers/vega-segment-overflow-controller';
import { VegaSegmentRenderer } from './slimmers/renderers/vega-segment-renderer';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
/**
 * @vegaVersion 2.3.0
 */
export declare class VegaSegmentControl {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected readonly segmentControlRenderer: VegaSegmentControlRenderer;
  protected readonly segmentOverflowController: VegaSegmentOverflowController;
  protected readonly segmentRenderer: VegaSegmentRenderer;
  protected readonly selectedController: VegaSegmentControlSelectedController;
  protected changeEventEmitter: EventEmitSlimmerBase;
  protected readonly pageResizeObserverSlimmer: PageResizeObserverSlimmer;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaSegmentControlElement>;
  private segmentControlWidth;
  host: HTMLVegaSegmentControlElement;
  isOverflowBlockSegments: boolean;
  /**
   * Specifies whether the segment control spans the
   *    full width of its parent element.
   *
   * @vegaVersion 2.3.0
   */
  block: boolean;
  /** The below method is e2e-test covered in
   *  @see{module:vega-segment-control-set-block-e2e}
   *  @see{module:vega-segment-control-set-block-resize-screen-e2e}
   */
  watchBlock(): void;
  /**
   * Specifies the size of the segment control.
   *
   * @vegaVersion 2.3.0
   */
  size: 'medium' | 'small';
  watchSize(): void;
  /**
   * Specifies the options available within the segment control.
   *    Please note that we advise against having more than four segments in a segment control.
   *
   * @vegaVersion 2.3.0
   */
  segments: VegaSegmentProps[];
  watchSegments(): void;
  /**
   * Specifies the key of the currently selected segment
   *    within the segment control.
   *
   * @vegaVersion 2.3.0
   */
  selected: string;
  watchSelected(): void;
  /**
   * Specifies the variant of the segment control.
   *
   * The following options are available for the `variant` property:
   * - `default`:
   *      The segment control is rendered with both icon and text if configured,
   * - `text-only`:
   *      The segment control is rendered with text only regardless of the configuration of icon.
   * - `icon-only`:
   *      The segment control is rendered with icon only, text will be showed as the icon's tooltip if configured.
   *
   * @vegaVersion 2.3.0
   */
  variant: VegaSegmentControlVariant;
  /**
   * An event emitter notifying changes
   *    in the selected segment.
   *
   * @vegaVersion 2.3.0
   */
  vegaChange: EventEmitter<string>;
  /**
   * A native event emitter notifying changes
   *    in the selected segment.
   * @eventSemantics namespace:native
   * @vegaVersion 2.3.0
   */
  change: EventEmitter<string>;
  componentWillLoad(): void;
  render(): VegaSegmentControl;
}
