import { GameService } from './game.service';
import { AlienClass } from '../aliens/alien/alien.class';
import { AssetClass } from '../asset/asset.class';
import { InvasionSetupModel } from '../model/invasion-setup.model';
/**
 * The invasion service
 */
export declare class InvasionService extends AssetClass {
    /**
     * The alien bases
     */
    private bases;
    /**
     * Aliens at each base
     */
    private baseAliens;
    /**
     * Aliens drop ships
     */
    private alienDropships;
    /**
     * The alien Release Counter
     */
    private alienReleaseCounter;
    /**
     * The wave counter
     */
    private waveCounter;
    /**
     * The total waves
     */
    private waveTotal;
    /**
     * The aliens Per Wave
     */
    private aliensPerWave;
    /**
     * The dropship counter
     */
    private dropshipCounter;
    /**
     * The Wave
     */
    private waves;
    /**
     * The Alien Speed
     */
    private alienSpeed;
    /**
     * The Total Aliens
     */
    private totalAliens;
    /**
     * The Base Positions
     */
    private basePositions;
    /**
     * The path service
     */
    private pathService;
    /**
     * The constructor
     */
    constructor(gameService: GameService, ctx: CanvasRenderingContext2D);
    /**
     * Initialize the board
     */
    private setup;
    /**
     * Build the creep
     */
    private buildCreep;
    /**
     * Shuffle the waves
     */
    private shuffle;
    /**
     * Configure the Alien drop ship
     * @param index the index of the dropship
     * @param position the position of the base
     */
    private configureAlienDropship;
    /**
     * position the aliens at the starting point
     */
    private positionAliens;
    /**
     * Determine if the level is completed
     */
    private isLevelCompleted;
    /**
     * Animate the bases
     */
    private animateBases;
    /**
     * Start the animations
     *
     * @param invasionSetup Set up the invasion
     */
    initInvasion(invasionSetup: InvasionSetupModel): void;
    /**
     * Start Alien Creep
     */
    private startAlienCreep;
    /**
     * Get All Active Aliens
     */
    getActiveAliens(): AlienClass[];
    /**
     * Animate
     * @param now the current time
     */
    animate(now?: number): void;
    /**
     * Launch the next drop ship
     * @param index The index of the drop ship
     */
    private launchNextAlienDropship;
    /**
     * Animate
     *
     * @param now The current animation time
     */
    animateDropships(now?: number): void;
}
