export class Unreachable extends Error {
constructor(x: never) {
super(`Unreachable: ${x}`);
}
}
export type JsonLiteral = string | number | boolean | null;
export interface JsonObject {
[key: string]: Json;
}
export type Json = JsonLiteral | JsonObject | Json[];
export type CloneLiteral =
| undefined
| null
| boolean
| number
| string
| bigint
| Uint8Array
| Date
| RegExp;
export type Clone = CloneLiteral | { [key: string]: Clone } | Clone[];
export enum GameKind {
Connect4 = "connect4",
Poker = "poker",
}
export enum PlayerKind {
User = "user",
Agent = "agent",
}
export interface UserPlayer {
kind: typeof PlayerKind.User;
username: string;
}
export interface AgentPlayer {
kind: typeof PlayerKind.Agent;
username: string;
agentname: string;
}
export type Player = UserPlayer | AgentPlayer;