import { AllCardsService, GameTag, Race, ReferenceCard } from '@firestone-hs/reference-data';
import { BgsPlayerEntity, BoardTrinket } from './bgs-player-entity';
import { BoardEnchantment, BoardEntity } from './board-entity';
import { BoardSecret } from './board-secret';
import { CardsData } from './cards/cards-data';
import { FullGameState, GameState, PlayerState } from './simulation/internal-game-state';
import { SharedState } from './simulation/shared-state';
export declare const buildSingleBoardEntity: (cardId: string, controllerHero: BgsPlayerEntity, friendlyBoard: BoardEntity[], allCards: AllCardsService, friendly: boolean, entityId: number, spawnReborn: boolean, cardsData: CardsData, sharedState: SharedState, entityToSpawn: BoardEntity, originalEntity?: BoardEntity, options?: {
    referenceCardToUse: ReferenceCard;
}) => BoardEntity;
export declare const buildRandomUndeadCreation: (controllerHero: BgsPlayerEntity, friendlyBoard: BoardEntity[], allCards: AllCardsService, friendly: boolean, cardsData: CardsData, sharedState: SharedState) => BoardEntity;
export declare const grantRandomAttack: (source: BoardEntity, board: BoardEntity[], hero: BgsPlayerEntity, additionalAttack: number, gameState: FullGameState, excludeSource?: boolean) => void;
export declare const grantRandomHealth: (source: BoardEntity, board: BoardEntity[], hero: BgsPlayerEntity, health: number, gameState: FullGameState, excludeSource?: boolean) => void;
export declare const grantRandomStats: (source: BoardEntity, board: BoardEntity[], hero: BgsPlayerEntity, attack: number, health: number, race: Race, excludeSource: boolean, gameState: FullGameState) => BoardEntity;
export declare const getRandomAliveMinion: (board: BoardEntity[], hero: BgsPlayerEntity, race: Race, gameState: FullGameState) => BoardEntity;
export declare const getRandomRevivableMinion: (board: BoardEntity[], hero: BgsPlayerEntity, race: Race, gameState: FullGameState) => BoardEntity;
export declare const getRandomMinionWithHighestHealth: (board: BoardEntity[]) => BoardEntity;
export declare const addStatsToBoard: (sourceEntity: BoardEntity | BgsPlayerEntity | BoardSecret, board: BoardEntity[], hero: BgsPlayerEntity, attack: number, health: number, gameState: FullGameState, tribe?: string, countsAsStatsGain?: boolean) => void;
export declare const addStatsToAliveBoard: (sourceEntity: BoardEntity | BgsPlayerEntity | BoardSecret, board: BoardEntity[], hero: BgsPlayerEntity, attack: number, health: number, gameState: FullGameState, tribe?: string) => void;
export declare const grantStatsToMinionsOfEachType: (source: BoardEntity, board: BoardEntity[], hero: BgsPlayerEntity, attack: number, health: number, gameState: FullGameState, numberOfDifferentTypes?: number, canRevive?: boolean) => void;
export declare const getMinionsOfDifferentTypes: (board: BoardEntity[], hero: BgsPlayerEntity, gameState: FullGameState, canRevive?: boolean, numberOfDifferentTypes?: number) => BoardEntity[];
export declare const hasMechanic: (card: ReferenceCard, mechanic: GameTag) => boolean;
export declare const hasEntityMechanic: (entity: BoardEntity | BoardEnchantment, mechanic: GameTag, allCards: AllCardsService) => boolean;
export declare const hasCorrectTribe: (entity: BoardEntity, playerEntity: BgsPlayerEntity, targetTribe: Race, anomalies: readonly string[], allCards: AllCardsService) => boolean;
export declare const isVolumizer: (cardId: string | number, playerEntity: BgsPlayerEntity, anomalies: readonly string[], allCards: AllCardsService) => boolean;
export declare const alreadyHasVolumizerBuff: (entity: BoardEntity, playerEntity: BgsPlayerEntity, gameState: FullGameState) => boolean;
export declare const getEffectiveTribesForEntity: (entity: BoardEntity, playerEntity: BgsPlayerEntity, anomalies: readonly string[], allCards: AllCardsService) => readonly Race[];
export declare const isCorrectTribe: (cardRaces: readonly string[], targetTribe: Race) => boolean;
export declare const getRaceEnum: (race: string) => Race;
export declare const addImpliedMechanics: (entity: BoardEntity, cardsData: CardsData) => BoardEntity;
export declare const normalizeCardIdForSkin: (cardId: string) => string;
export declare const stringifySimple: (board: readonly BoardEntity[], allCards?: AllCardsService) => string;
export declare const stringifySimpleCard: (entity: BoardEntity, allCards?: AllCardsService) => string;
export declare const isFish: (entity: BoardEntity) => boolean;
export declare const isPilotedWhirlOTron: (entity: BoardEntity) => boolean;
export declare const isGolden: (cardId: string, allCards: AllCardsService) => boolean;
export declare const isBoardEntity: (entity: BoardEntity | BoardTrinket) => entity is BoardEntity;
export declare const getPlayerState: (gameState: GameState, hero: BgsPlayerEntity) => PlayerState;
export declare const getTeammateInitialState: (gameState: GameState, hero: BgsPlayerEntity) => PlayerState;
export declare const getTeamInitialStates: (gameState: GameState, hero: BgsPlayerEntity) => PlayerState[];
export declare const copyEntity: (entity: BoardEntity) => BoardEntity;
export declare const isDead: (entity: BoardEntity) => boolean;
