import { VegaSlimmer } from '../../../../vega-slimmer/vega-slimmer-core';
import { SourceItemType } from '../../types';
import { VegaVirtualScroll } from '../../vega-virtual-scroll';
/**
 * The `VegaVirtualScrollPositionController` class in TypeScript implements virtual scrolling functionality
 * by managing source data, item heights, viewport settings, and scroll positions.
 */
export declare class VegaVirtualScrollPositionController extends VegaSlimmer {
  sourceItemIdentifier: VegaVirtualScroll['sourceItemIdentifier'];
  source: VegaVirtualScroll['source'];
  approxItemHeight: VegaVirtualScroll['approxItemHeight'];
  viewportMaxHeight: VegaVirtualScroll['viewportMaxHeight'];
  positionConfig: VegaVirtualScroll['positionConfig'];
  scrollTop: VegaVirtualScroll['scrollTop'];
  scrollableController: VegaVirtualScroll['scrollableController'];
  modeController: VegaVirtualScroll['modeController'];
  private extendItemsCount;
  private totalCount;
  private viewportItemsCount;
  private maxStartIndex;
  /**
   * The componentWillLoad function is used to initialize virtual scrolling in a TypeScript component.
   */
  componentWillLoad(): void;
  /**
   * The function `watchSourceChange` initializes virtual scrolling if the source items have changed.
   *
   * @param {SourceItemType[]} newValue - newValue is an array of items of type SourceItemType that
   * represents the new source data.
   * @param {SourceItemType[]} oldValue - The `oldValue` parameter in the `watchSourceChange` function
   * represents the previous value of the source items before the change occurred. It is used to compare
   * with the new value (`newValue`) to determine if there has been a change in the source items.
   */
  watchSourceChange(newValue: SourceItemType[], oldValue: SourceItemType[]): void;
  /**
   * The function `watchApproxItemHeight` initializes virtual scrolling.
   */
  watchApproxItemHeight(): void;
  /**
   * The function `watchViewportMaxHeight` initializes virtual scrolling.
   */
  watchViewportMaxHeight(): void;
  /**
   * Get maxStartIndex
   *
   * @returns {number} - maxStartIndex
   */
  getMaxStartIndex(): number;
  /**
   * While scrollTop of container change, the startIndex, endIndex, viewPortStartIndex and transformY will be change.
   * The following is the process of change:
   *
   *---scrollTop---startIndex---viewportStartIndex---endIndex---transformY
   *---30----------0------------0--------------------18---------0
   *---40----------0------------1--------------------19---------0
   *---320---------0------------8--------------------26---------0
   *---400---------0------------10-------------------28---------0
   *---480---------2------------12-------------------30---------80
   *---800---------10-----------20-------------------38---------400
   */
  setPositionByScrollTop(): void;
  /**
   * While mode change from `normal` to `virtual`, we should init virtual scroll and set the position.
   */
  changeModeFromNormalToVirtual(): void;
  /**
   * The function `initVirtualScroll` initializes variables for a virtual scrolling feature in a
   * TypeScript component.
   */
  private initVirtualScroll;
  /**
   * Init positionConfig while componentWillLoad
   */
  private initPositionConfig;
  /**
   * The function `isSameSource` compares two arrays of objects based on a specific identifier and
   * returns true if they are the same.
   *
   * @param {SourceItemType[]} first - `first` is an array of `SourceItemType` elements.
   * @param {SourceItemType[]} second - The `second` parameter in the `isSameSource` method is an array
   * of `SourceItemType` elements.
   * @returns {boolean} The `isSameSource` method is returning a boolean value, either `true` or `false`. It checks
   * if the `first` and `second` arrays of `SourceItemType` objects have the same length and if the
   * `sourceItemIdentifier` property of each object at the same index in both arrays is equal. If all
   * conditions are met, it returns `true`, otherwise it returns `
   */
  private isSameSource;
}
