---
# System prepended metadata

title: Class diagram

---

# 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')
    //...
}