    'use strict';

    /** @namespace */
    /**
     * Values for Game state.
     *
     * @typedef {'0_INIT' | '1_SELECT_DRAFT' | '1_SELECT_FACTION' | '1_SELECT_TOURNAMENT' | '2_CHANGE_UP_TO_3_CARDS'} TH_GameStateEnum
     */
    /**
     * Values For Deck Mode.
     *
     * @typedef {'faction' | 'draft' | 'tournament'} TH_DeckMode
     */
    /**
     * Faction of a hero
     *
     * @typedef {'orcs' | 'humans' | 'elves' | 'meca' | 'none'} TH_Faction
     */
    /**
     * popularity attribute of a hero
     *
     * @typedef {'with' | 'without' | 'any'} TH_Popularity
     */
    /**
     * player colors
     *
     * @typedef {'blue' | 'red'} TH_Color
     */
    /**
     * Possible advanced rules
     *
     * @typedef {'popularity' | 'discard'} TH_AdvRule
     */
    /**
     * Possible action for a hero
     *
     * @typedef {'recruit' | 'deploy' | 'move' | 'ability' | 'dismiss' | 'discard' | 'replace'} TH_HeroAction
     */
    /**
     * Possible position for a hero
     *
     * @typedef {'pile' | 'hand' | 'discard' | 'camp' | 'battle_left' | 'battle_center' | 'battle_right'} TH_HeroPosition
     */
    /**
     * Ability Hook
     *
     * @typedef {'AfterDeploy' | 'AfterDiscard' | 'AfterRecruit' | 'BeforeControl' | 'BeforeMaintenance' | 'BeforeMilitary'} TH_AbilityHook
     */
    /**
     * Ability of an Hero
     *
     * @typedef {object} TH_Ability
     * @property {string} name - name of the ability
     * @property {TH_AbilityHook} hook - when ability has an effect
     * @property {boolean} isOptionnal - If true, player will have choice wether to activate ability or not
     * @property {string} desc - Description of the ability effect
     */
    /**
     * Hero card
     *
     * @typedef {object} TH_HeroCard
     * @property {number} id - unique ID of hero
     * @property {string} name - name of hero
     * @property {number} cost - cost of hero
     * @property {number} power - power of hero
     * @property {TH_Faction} faction - faction of hero
     * @property {TH_Popularity} popularity - popularity attribute of hero
     * @property {boolean} isDraftable - Is hero available in Draft mode
     * @property {TH_Ability} ability - Ability of a hero
     *
     */
    /**
     * Battle Tile object
     *
     * @typedef {object} TH_BattleTile
     * @property {number} id - unique ID of tile
     * @property {string} name - name of tile
     * @property {number} victoryPoints - Number of victory points
     * @property {number} victories/blue - Number of red player victories
     * @property {number} victories/red - Number of blue player victories
     *
     */
    /**
     * One game global state
     *
     * @typedef {object} TH_GameGlobalState
     * @property {TH_GameStateEnum} gameState - Current status of the game
     * @property {Array<TH_HeroCard>} allHeroes - Array containing all heroes
     * @property {TH_DeckMode} deckMode - Deck mode of the game
     * @property {Array<TH_AdvRule>} advRules - Array describing the active advandced rules, if any
     * @property {boolean} waitingFor/blue - If true, we are waiting for blue to play
     * @property {boolean} waitingFor/red - If true, we are waiting for red to play
     * @property {TH_Color | 'both'} currentPlayer - Who is current player, can be 'both'
     * @property {Array<TH_BattleTile>} battleTiles/left/ofBlue - Battle tiles on left side of blue player
     * @property {Array<TH_BattleTile>} battleTiles/center/ofBlue - Battle tiles on center of blue player
     * @property {Array<TH_BattleTile>} battleTiles/right/ofBlue - Battle tiles on right side of blue player
     * @property {number} totalFood - Total food available for players to take
     * @property {string} allHeroesJson - All heroes in JSON format (read from a JSON file)
     */
    /**
     * Hero in game
     *
     * @typedef {object} TH_HeroInGame
     * @property {number} id - unique ID of hero
     * @property {TH_HeroPosition} position - position of hero in game
     * @property {Array<TH_HeroAction>} possibleActions - Actions possible on hero
     *
     */
    /**
     * Possible action for a player
     *
     * @typedef {'supply' | 'pass'} TH_PlayerAction
     */
    /**
     * Game state for one player
     *
     * @typedef {object} TH_PlayerGameState
     * @property {string} name - username of this player
     * @property {TH_Color} color - color of the player
     * @property {TH_Faction|''} faction - Chosen faction (empty if not playing faction mode)
     * @property {Array<number>} draftHeroesIds - Will contain the IDs of the heroes selectable for draft mode
     * @property {Array<TH_HeroInGame>} twelveHeroes - The 12 Heroes used by player
     * @property {number} foodInCamp - Number of food in camp
     * @property {number} foodInBattle/left - Food on left battle field
     * @property {number} foodInBattle/center - Food on center battle field
     * @property {number} foodInBattle/right - Food on right battle field
     * @property {Array<object>} actionsPerformed - During military phase it will contain actions made by player to be replayed by other
     * @property {Array<TH_PlayerAction>} - Actions avalaible for the player
     *
     */
    /**
     * Game Data Store
     *
     * @typedef {object} TH_GameDataStore
     * @property {TH_GameGlobalState} game - The game global state in store
     * @property {TH_PlayerGameState} bluePlayer - The game state for blue player
     * @property {TH_PlayerGameState} redPlayer - The game state for red player
     */

    exports.unused = {};