import { EventEmitter } from '../../stencil-public-runtime';
import { DropdownPropsForPagination, VegaPaginationItemType, VegaPaginationLayoutType, VegaPaginationPageSizeOption } from './types';
import { ChildNodesEventPreventSlimmer } from '../../helpers/event-manager/slimmers/child-nodes-event-prevent-slimmer';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { TranslationSlimmer } from '../../helpers/slimmers/translation';
import { ResponsiveType } from '../../types/ui.type';
import { BreakpointsTokenType } from '../../types/design-token.type';
import { PageResizeObserverSlimmer } from '../../helpers/slimmers/page-resize-observer-slimmer';
import { VegaPaginationPageSizeObserverController } from './slimmers/controllers/vega-pagination-page-size-observer-controller';
import { VegaPaginationCurrentPageObserverController } from './slimmers/controllers/vega-pagination-current-page-observer-controller';
import { VegaPaginationLayoutController } from './slimmers/controllers/vega-pagination-layout-controller';
/**
 * @vegaVersion 1.3.0
 */
export declare class VegaPagination {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected translationSlimmer: TranslationSlimmer<HTMLVegaPaginationElement>;
  protected childEventPrevent: ChildNodesEventPreventSlimmer;
  protected childValueChangePrevent: ChildNodesEventPreventSlimmer;
  protected vegaChangeEventEmitter: EventEmitSlimmerBase;
  protected vegaPageSizeChangeEventEmitter: EventEmitSlimmerBase;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaPaginationElement>;
  protected vegaPaginationPageSizeObserverController: VegaPaginationPageSizeObserverController;
  protected vegaPaginationCurrentPageObserverController: VegaPaginationCurrentPageObserverController;
  protected readonly breakpointPageResizeObserverSlimmer: PageResizeObserverSlimmer;
  protected vegaPaginationLayoutController: VegaPaginationLayoutController;
  private readonly vegaPaginationItemTypes;
  host: HTMLVegaPaginationElement;
  currentBreakpoint: BreakpointsTokenType;
  watchCurrentBreakpoint(): void;
  /**
   * Total number of pages.
   */
  pageCount: number;
  watchPageCount(): void;
  /** Tracks whether "All" was explicitly selected or initialized. */
  isAllActive: boolean;
  /**
   * Specifies the current page number for
   *    the pagination component.
   *
   * @vegaVersion 1.3.0
   */
  current: number;
  watchCurrent(): void;
  /**
   * Specifies the total number of data items for the pagination component.
   *
   * @vegaVersion 1.3.0
   */
  total: number;
  watchTotal(newTotal: number): void;
  /**
   * Specifies the number of data items to be displayed per page in
   *    the pagination component.
   *
   * @vegaVersion 1.3.0
   */
  pageSize: number;
  watchPageSize(): void;
  /**
   * Specifies the extensions associated with the pagination items
   *    in the pagination component.
   *
   * It refers to additional elements or components that can be added to
   *    enhance the functionality or appearance of each pagination item.
   *
   * @VegaWarning - Note: The default value is controlled by feature flag `VEGA_PAGINATION.ENABLE_EXTENSIONS_RESPONSIVE_DEFAULT_VALUE`, which is disabled by default.
   *              - To enable the new responsive default value `{
            default: [['pageSizeSelectorMobile_currentPageLabel'], ['pageSelectorMobile_goTo']],
              M: [['pageSelector']],
                  }`, please enable the feature flag.
   * @vegaVersion 1.25.0
   * @defaultValue [['pageSelector']]
   */
  extensions: ResponsiveType<VegaPaginationItemType[][]>;
  /**
   * Specifies the layout of the elements.
   *
   * It determines how the pagination elements are arranged, with options such as 'horizontal' for a horizontal layout or other defined layouts.
   *
   * @vegaVersion 2.42.0
   */
  layout: ResponsiveType<VegaPaginationLayoutType>;
  watchLayout(): void;
  /**
   * Specifies the options available for the page size selector
   *    in the pagination component.
   *
   * Each option can be a number or an object with `value` and `label`.
   * Use `{ value: -1, label: 'All' }` to show all items on a single page.
   *
   * @vegaVersion 1.25.0
   */
  pageSizeSelectorOptions: VegaPaginationPageSizeOption[];
  /**
   * Specifies the properties of the `vega-dropdown` component
   *    used to configure the dropdown for the
   *    page size selector in pagination.
   *
   * @vegaVersion 2.36.0
   */
  dropdownProps: DropdownPropsForPagination;
  /**
   * An event emitter notifying the current page change.
   *
   * @vegaVersion 1.3.0
   */
  vegaChange: EventEmitter<number>;
  /**
   * An event emitter notifying the current page change.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  change: EventEmitter<number>;
  /**
   * An event emitter notifying a change in the number of
   *    data items displayed per page.
   *
   * @vegaVersion 1.25.0
   */
  vegaPageSizeChange: EventEmitter<number>;
  /**
   * An event emitter notifying a change in the number of
   *    data items displayed per page.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  pageSizeChange: EventEmitter<number>;
  componentWillLoad(): void;
  render(): VegaPagination;
  private renderPaginationItemsWrapper;
  private renderPaginationItem;
  private handlePaginationGoToChange;
  private onPageSizeSelectorChange;
  private calculatePages;
  private onPageSelectorChange;
  private removeDuplicateItems;
  private generateWrapperKey;
  private currentValueGuard;
}
