import type { ICard, IEffect, IGame, ILobby, IPlayer, ITeam, ITurn, IUser } from "../generic/index.js" import type { ISLobby } from "../server/index.js" export interface ICEffect extends IEffect { } export interface ICCard extends ICard { } export interface ICTurn extends ITurn { onCardLock: (card: ICard) => void } export interface ICPlayer extends IPlayer { onReadyStateChange: (ready: boolean) => void } export interface ICTeam extends ITeam { damage: (amount: number) => void join: () => void onTakeDamage: (amount: number) => void onPlayerAdd: (player: IPlayer) => void onPlayerRemove: (player: IPlayer) => void onStartTurn: () => void onEndTurn: () => void onDie: () => void } export interface ICGame extends IGame { join: () => void kick: (player: IPlayer) => void leave: () => void start: () => void request_join: () => void request_kick: (player: ICPlayer) => void request_leave: () => void request_start: () => void request_changeRules: () => void request_gameEnd: () => void onRulesChange: () => void onAddTeam: (team: ITeam) => void onRemoveTeam: (team: ITeam) => void onGameStart: () => void onGameEnd: () => void } export interface ICUser extends IUser { } export interface ICLobby extends ILobby { request_createGame: () => Promise> onAddGame: () => void onRemoveGame: () => void }