import { BgsGameState } from '../../bgs-battle-info';
import { BgsPlayerEntity, BoardTrinket } from '../../bgs-player-entity';
import { BoardEntity } from '../../board-entity';
import { BoardSecret } from '../../board-secret';
import { GameSample } from './game-sample';
export declare class Spectator {
    private readonly enabled;
    private actionsForCurrentBattle;
    private wonBattles;
    private tiedBattles;
    private lostBattles;
    constructor(enabled: boolean);
    prune(): void;
    buildOutcomeSamples(gameState: BgsGameState): {
        won: readonly GameSample[];
        lost: readonly GameSample[];
        tied: readonly GameSample[];
    };
    private cleanUpActions;
    commitBattleResult(result: 'won' | 'lost' | 'tied'): void;
    registerAttack(attackingEntity: BoardEntity, defendingEntity: BoardEntity, attackingBoard: readonly BoardEntity[], defendingBoard: readonly BoardEntity[], attackingBoardHero: BgsPlayerEntity, defendingBoardHero: BgsPlayerEntity): void;
    registerStartOfCombat(friendlyBoard: readonly BoardEntity[], opponentBoard: readonly BoardEntity[], friendlyHero: BgsPlayerEntity, opponentHero: BgsPlayerEntity): void;
    registerPlayerAttack(friendlyBoard: readonly BoardEntity[], opponentBoard: readonly BoardEntity[], damage: number): void;
    registerOpponentAttack(friendlyBoard: readonly BoardEntity[], opponentBoard: readonly BoardEntity[], damage: number): void;
    registerDamageDealt(damagingEntity: BoardEntity, damagedEntity: BoardEntity, damageTaken: number, damagedEntityBoard: BoardEntity[]): void;
    registerPowerTarget(sourceEntity: BoardEntity | BgsPlayerEntity | BoardSecret | BoardTrinket, targetEntity: BoardEntity | BgsPlayerEntity, targetBoard: BoardEntity[], hero1: BgsPlayerEntity, hero2: BgsPlayerEntity): void;
    registerMinionsSpawn(sourceEntity: BoardEntity | BgsPlayerEntity | BoardTrinket, boardOnWhichToSpawn: BoardEntity[], spawnedEntities: readonly BoardEntity[]): void;
    registerDeadEntities(deadMinionIndexes1: number[], deadEntities1: BoardEntity[], board1: BoardEntity[], deadMinionIndexes2: number[], deadEntities2: BoardEntity[], board2: BoardEntity[]): void;
    private addAction;
    private collapseActions;
    private sanitize;
    private sanitizeTrinkets;
}
