/**
 * Структура данных, выполняющая функции массива и соверщающая дополнительные оптимизации.
 * @template {Object}T тип хранимых объектов
 */
export declare class List<T extends Object> {
  /** Массив внутренних элементов, которые доступны только наследникам */
  protected _elements: Array<T | undefined>
  /**
   * Специальное значение, которое используется для определения свободных мест внутри массива
   * в случае, если будет указан настраеваемый undefined, движок V8 сможет сделать дополнительные оптимизации
   */
  protected _undefined: undefined | T
  /**
   * Задает массиву начальный размер и запаолняет его {@link List._undefined | 'List._undefined'}
   */
  constructor(undefinedValue?: T)
  /** Генератор значений элементов. Возвращает любые значения, которые не равны {@link List._undefined | 'List._undefined'} */
  values(): Generator<T | undefined, void, unknown>
  /**
   * Добавляет набор новых элементов типа T.
   * @return false, если один из элементов оказался {@link List._undefined} и добавляет остальные элементы. true в остальных случаях
   */
  add(...elements: Array<T>): boolean
  /**
   * Добавляет элеммент типа T.
   * @return -1, если один из элементов оказался {@link List._undefined} или index вставленного объекта в случае успеха.
   */
  addOne(element: T): number
  /**
   * Удаляет набор элемментов типа T.
   * @returns false, если один из элементов оказался {@link List._undefined} или он не был найден в {@link List._elements} и удаляет остальные элементы. true в остальных случаях
   */
  delete(...elements: Array<T>): boolean
  indexOf(element: T): number
  valueOf(index: number): T | undefined
  isUndefined(index: number): boolean
  /**
   * @returns индекс свободной позиции внутри массива.
   */
  get freeSpace(): number
  /**
   * @returns true, если внутри {@link List._elements} есть хотя бы один элемент вида {@link List._undefined}
   */
  protected get _hasFreeSpace(): number
  /**
   *
   * @param объект, который нужно найти
   * @returns индекс найденного объекта или -1
   */
  protected _getElement(element: T): number
}
//# sourceMappingURL=List.d.ts.map
