import Entity from '../../entity/Entity';
import IEntity from '../../entity/IEntity';
import Streak from '../../streak/Streak';
import BeadRoad from '../bead/BeadRoad';
import IStreakRoad from '../IStreakRoad';
import BigEntity from './BigEntity';
/**
 * The Big Road is a streak road that records the results of the game.
 */
declare class BigRoad implements IStreakRoad {
    /**
     * Form a new BigRoad from a beadRoad object (which is a collection of bead entities).
     * @param {BeadRoad} beadRoad
     * @return {BigRoad} The new BigRoad
     */
    static from(beadRoad: BeadRoad): BigRoad;
    private _length;
    private _entityIndex;
    private _firstStreak;
    private _lastStreak;
    private readonly _shoeIndex;
    private _setLastStreak;
    private _setFirstStreak;
    constructor(index: number);
    print(): string[] | string[][];
    getSize(): number;
    /**
     * Add entity to the Big Road.
     * @param {BigEntity} entity
     * @return {boolean} If the entity is added successfully, return true, otherwise return false.
     */
    addEntity(entity: BigEntity): boolean;
    getFirstStreak(): Streak | undefined;
    getLastStreak(): Streak | undefined;
    getFirstEntity(): Entity | undefined;
    getLastEntity(): IEntity | undefined;
    getShoeIndex(): number;
    /**
     * Get a generator that can iterate the Pingpong pattern in the Big Road.
     * @return {Generator<BigEntity[], void, boolean>} A generator that can iterate the Pingpong pattern in the Big Road.
     */
    getPingpongIterator(): Generator<BigEntity[], void, boolean>;
}
export default BigRoad;
