import { VegaSlimmer } from '../../../../vega-slimmer/vega-slimmer-core';
import { VegaVirtualScroll } from '../../vega-virtual-scroll';
/**
 * The `VegaVirtualScrollScrollableController` class in TypeScript manages virtual scrolling behavior
 * by handling scroll events and scrolling to specific indexes within a container element.
 */
export declare class VegaVirtualScrollScrollableController extends VegaSlimmer {
  sourceItemIdentifier: VegaVirtualScroll['sourceItemIdentifier'];
  source: VegaVirtualScroll['source'];
  host: VegaVirtualScroll['host'];
  viewportMaxHeight: VegaVirtualScroll['viewportMaxHeight'];
  approxItemHeight: VegaVirtualScroll['approxItemHeight'];
  scrollTop: VegaVirtualScroll['scrollTop'];
  positionConfig: VegaVirtualScroll['positionConfig'];
  isLoading: VegaVirtualScroll['isLoading'];
  renderer: VegaVirtualScroll['renderer'];
  positionController: VegaVirtualScroll['positionController'];
  modeController: VegaVirtualScroll['modeController'];
  /**
   * The `componentDidLoad` function in TypeScript listens for scroll events on a container.
   */
  componentDidLoad(): void;
  /**
   * The `componentDidRender` function sets the scroll position of a container element to a specified value.
   * While dropdown select a item and hide dropdown and show dropdown again, the virtual scroll will be re-render
   * and dropdown will call scrollToIndex with same index param.
   * In this time, the value of scrollTop not change, but container scrollTop is become 0 by the re-render of virtual scroll,
   * so we should update container scrollTop to avoid inconsistencies between view and component.
   */
  componentDidRender(): void;
  /**
   * The function `watchScrollTop` in TypeScript calls the `handleScroll` method.
   */
  watchScrollTop(): void;
  /**
   * watchSourceChange
   */
  watchSourceChange(): void;
  /**
   * watchApproxItemHeight
   */
  watchApproxItemHeight(): void;
  /**
   * watchViewportMaxHeight
   */
  watchViewportMaxHeight(): void;
  /**
   * The scrollToIndex function scrolls to a specific index within a container element either by
   * directly scrolling to the item or by setting the scrollTop property based on the index and item
   * height.
   *
   * @param {number} index - The `index` parameter is a number that represents the position of the item
   * you want to scroll to within a list or container. It is used to determine which item should be
   * scrolled into view.
   */
  scrollToIndex(index: number): void;
  /**
   * The function `resetScrollTop` sets the `scrollTop` property to 0.
   */
  resetScrollTop(): void;
  /**
   * The function `listenScrollContainer` listens for scroll events on a container element and updates
   * the `scrollTop` property accordingly.
   */
  private listenScrollContainer;
  /**
   * The handleScroll function sets the scrollTop property of a container element and updates the
   * position based on the scroll top value.
   */
  private handleScroll;
  /**
   * The function adjusts the scroll top position based on certain properties to ensure it stays within
   * valid bounds.
   */
  private adjustScrollTopInVirtualMode;
  /**
   * Checks if the page is at the bottom of the page and if so notifies the change manager
   */
  private checkIsScrollToBottom;
  /**
   * The function `isScrollToBottomInVirtualMode` checks if the `startIndex` is equal to `maxStartIndex`.
   *
   * @returns {boolean} The method `isScrollToBottomInVirtualMode()` is returning a boolean value based on the comparison of
   * `this.startIndex` and `this.maxStartIndex`. If they are equal, it will return `true`, otherwise
   * `false`.
   */
  private isScrollToBottomInVirtualMode;
  /**
   * The function `isScrollToBottomInNormalMode` checks if the virtual scroll container is scrolled to the bottom based
   * on its scroll height, scroll top, and viewport max height.
   *
   * @returns {boolean} The function `isScrollToBottomInNormalMode()` is returning a boolean value based on the comparison of the
   * sum of `this.virtualScrollContainerRef.scrollHeight` and `this.virtualScrollContainerRef.scrollTop`
   * being equal to `this.viewportMaxHeight`.
   */
  private isScrollToBottomInNormalMode;
}
