import { Item } from '../item';
import { Direction } from '../../inputs/index';
declare class Positions {
  startDelta: number;
  before: number;
  relative: number;
  start: number;
  end: number;
  constructor();
  reset(): void;
}
declare class First {
  index: number;
  indexBuffer: number;
  position: number;
  constructor();
  reset(): void;
}
declare class Last {
  index: number;
  indexBuffer: number;
  constructor();
  reset(): void;
}
declare class FirstVisible {
  index: number;
  delta: number;
  constructor();
  reset(): void;
}
export declare class FetchModel {
  private readonly directionPriority;
  private _newItemsData;
  items: Item[];
  positions: Positions;
  first: First;
  last: Last;
  hasAnotherPack: boolean;
  callCount: number;
  minIndex: number;
  firstVisible: FirstVisible;
  direction: Direction | null;
  cancel: (() => void) | null;
  simulate: boolean;
  isCheck: boolean;
  doRemove: boolean;
  constructor(directionPriority: Direction);
  reset(): void;
  get newItemsData(): unknown[] | null;
  set newItemsData(items: unknown[] | null);
  get shouldFetch(): boolean;
  get hasNewItems(): boolean;
  get index(): number;
  get count(): number;
  shouldCheckPreSizeExpectation(lastBufferedIndex: number): boolean;
  startSimulate(items: Item[]): void;
  stopSimulate(): void;
  fill(items: Item[], start: number): void;
  check(items: Item[]): void;
  update(index: number, delta: number, items: Item[], itemsToRemove: Item[]): void;
}
export {};
