import { EventEmitter } from '../../stencil-public-runtime';
import { SpacingTokenType } from '../../types/design-token.type';
import { ResponsiveType } from '../../types/ui.type';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { PageResizeObserverSlimmer } from '../../helpers/slimmers/page-resize-observer-slimmer';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { DeprecatedPropertySlimmerBase } from '../../helpers/slimmers/deprecated-property-slimmer';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
/**
 * @vegaVersion 1.0.2
 */
export declare class VegaCarousel {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaCarouselElement>;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-carousel-with-screen-size-change}
   */
  protected readonly pageResizeObserverSlimmer: PageResizeObserverSlimmer;
  protected pageUpdateEventEmitter: EventEmitSlimmerBase;
  protected readonly deprecatedPropertySlimmer: DeprecatedPropertySlimmerBase<ResponsiveType<number>>;
  private carouselContentElements;
  private mutationObserver;
  private listContainer;
  private slideTaskQueue;
  private currentItemsPerPage;
  private touchListener;
  host: HTMLVegaCarouselElement;
  page: number;
  watchPage(): void;
  totalPages: number;
  /**
   * Specifies the number of elements displayed per page in the carousel.
   * @deprecated This property will be removed soon and replaced by prop itemsPerPage
   *
   * @vegaVersion 1.0.2
   */
  perPage: ResponsiveType<number>;
  watchPerPage(): void;
  /**
   * Specifies the number of items displayed per page in the carousel.
   *
   * @vegaVersion 2.1.0
   */
  itemsPerPage: ResponsiveType<number>;
  watchItemsPerPage(): void;
  /**
   * Specifies whether to show the navigational buttons
   *    at the bottom of the carousel.
   *
   * @vegaVersion 1.0.2
   */
  showSlider: boolean;
  /**
   * Controls the amount of space between the elements in the carousel
   *    when more than one element is displayed on each page
   *    using the `itemsPerPage` property.
   *
   * @vegaVersion 1.0.2
   */
  spacing: SpacingTokenType;
  onSpacingPropsChange(): void;
  /**
   * Indicates whether the carousel can be swiped
   *    to navigate between pages on a mobile device.
   *
   * @vegaVersion 1.18.0
   */
  canSwipe: boolean;
  /**
   * An event emitter notifying the transition of the carousel to another page,
   *    whether triggered programmatically or through user interaction.
   *
   * @vegaVersion 1.3.0
   */
  vegaPageUpdate: EventEmitter<number>;
  /**
   * An event emitter notifying the transition of the carousel to another page,
   *    whether triggered programmatically or through user interaction.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  pageUpdate: EventEmitter<number>;
  disconnectedCallback(): void;
  componentDidLoad(): void;
  /**
   * Invoke this method to transition the carousel to the next available page,
   *    if it exists.
   *
   * @vegaVersion 1.0.2
   */
  nextPage(): Promise<void>;
  /**
   * Invoke this method to transition the carousel to the previous page,
   *    if it exists.
   *
   * @vegaVersion 1.0.2
   */
  prevPage(): Promise<void>;
  /**
   * Invoke this method to navigate the carousel to the specified page number.
   *
   * @param nextPage
   * @returns {Promise<void>}
   * @vegaVersion 1.0.6
   */
  goToPage(nextPage: number): Promise<void>;
  render(): VegaCarousel;
  /**
   * The function `goToPageInternal` is used to navigate to a specific page in a slideshow, with an optional animation.
   *
   * @param {number} nextPage - The `nextPage` parameter is the page number that you want to navigate to. It should be a number between 1 and the total number of pages (`this.totalPages`).
   * @param {boolean} [needsAnimation=true] - The `needsAnimation` parameter is a boolean value that
   * indicates whether or not the slide animation should be performed when navigating to the next page.
   * If `needsAnimation` is `true`, the slide animation will be performed. If `needsAnimation` is
   * `false`, the slide animation will be disabled
   */
  private goToPageInternal;
  private renderIndicatorDom;
  private onClickIndicators;
  /**
   * Get the total page that will be shown in carousel.
   */
  private getTotalPage;
  private updatePageLayout;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-carousel-call-observe-method}
   */
  private initMutationObserver;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-carousel-call-observe-method}
   */
  private updateContentByObserverSlotChange;
  private wrapChildContentAsCarouselItem;
  /**
   * 1.make targetItem from translateX(-/+100%) to translateX(0).
   * 2.make activeItem from translateX(0) to translateX(-/+100%).
   * 3.clear up the added class and mark the current visible item as active.
   * The below method is e2e-test covered in
   * @see{module:vega-carousel-do-slide}
   * @see{module:vega-carousel-do-slide-in-order}
   */
  private doSlide;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-carousel-with-touch-event}
   */
  private initTouchEvent;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-carousel-with-screen-switch-mobile}
   */
  private getCarouselItemsPerPage;
}
