import type { Location } from './types';
import type { Container } from './container';
import type { FacileDanmaku } from './danmaku/facile';
export interface TrackOptions<T> {
  index: number;
  location: Location;
  container: Container;
  list: Array<FacileDanmaku<T>>;
}
export declare class Track<T> {
  private _container;
  isLock: boolean;
  index: number;
  location: Location;
  list: Array<FacileDanmaku<T>>;
  constructor({ index, list, location, container }: TrackOptions<T>);
  get width(): number;
  get height(): number;
  each(fn: (danmaku: FacileDanmaku<T>) => unknown | boolean): void;
  lock(): void;
  unlock(): void;
  clear(): void;
  /**
   * @internal
   */
  _add(dm: FacileDanmaku<T>): void;
  /**
   * @internal
   */
  _remove(dm: FacileDanmaku<T>): void;
  /**
   * @internal
   */
  _updateLocation(location: Location): void;
  /**
   * @internal
   */
  _last(li: number): FacileDanmaku<T> | null;
}
