# Class diagram
```plantuml
```
### class Action
+ gameId: Number
+ player: Player
+ timestamp: Number
### class TokenAction
+ tokens: Map<Token, Number>
+ discardedTokens: Map<Token, Number>
### class BuyAction
+ card: Card
### class ReserveAction
+ card: Card
### class PassAction
### class Game
+ id: Number
+ players: Player[]
+ timer: Timer
+ deck: Map<Number, Card[]>
+ market: Map<Number, Card[]>
+ tokens: Map<Token, Number>
+ combos: Combo[]
+ state: State
+ host: Player
+ winners: Player[]
### class Player
+ id: Number
+ name: String
+ boughtCards: Card[]
+ reservedCards: Card[]
+ boughtCombos: Combo[]
+ tokens: Map<Token, Number>
+ points: Number
+ isHost: Boolean
### class Timer
+ getRemainingTime(Player): Number
### class Card
+ tier: Number
+ color: Color
+ cost: Map<Token, Number>
+ points: Number
### class Combo
+ requirements: Map<Color, Number>
+ points: Number
### class Token
+ color: Color
### enum State
+ PreInit
+ Start
+ Round
+ FinalRound
+ End
### enum Color
+ Red
+ Green
+ Blue
+ White
+ Black
+ Wildcard
```javascript=
const Color = {
RED:Symbol('Red'),
BLUE:Symbol('Blue')
//...
}