export type Role = 'player' | 'gamemaster' | 'admin' export type Player = { id: string name: string isIdle?: boolean score: number } export type Players = Array export type PlayerEdit = Player & { authcode: string } export type PlayerInfo = PlayerEdit & { created: number lastLoggedIn: number isPlaying: boolean numQuotes: number numQuotesPlayed: number role: Role } export type Quote = { id: string quote: string isPlayed: boolean } export type Quotes = Array export type Source = { id: string name: string } export type Sources = Array export type Selections = { [key: string]: boolean } export type RevelationVotes = { [key: string]: Array } export type RevelationSources = { [key: string]: boolean } export type Revelation = { votes: RevelationVotes sources: RevelationSources } export type Round = { quote: string sources: Sources selections: Selections revelation: Revelation } export type Lang = 'de' | 'en' export type State = 'idle' | 'collect' | 'ready-set' | 'play' | 'finish' | 'disabled' export type GameInfo = { id: string name: string lang: Lang created: number state: State players: Array numQuotesLeft: number numQuotesTotal: number } export type GameInfos = Array export type CreateGameStatus = { status: string authcode: string }