import { ChatMessage, LocalClient, PeerClient, PeerMetadata, PeerServer, RoomInfo } from "@/network"; import Peer from "peerjs"; export type ConnectionStatus = | "connecting" | "connected" | "disconnected" | "error"; export interface SharedNetworkState { chatLog: ChatMessage[]; serverID: string | null; players: string[]; } export interface NoNetworkState extends SharedNetworkState { peerType: "none"; connectionStatus: null; connectionError?: Error; peer: null; server: null; local: null; } export interface ClientNetworkState extends SharedNetworkState { peerType: "client"; connectionStatus: ConnectionStatus; connectionError?: Error; peer: PeerClient; } export interface ServerNetworkState extends SharedNetworkState { peerType: "server"; server: PeerServer; local: LocalClient; } export type NetworkState = | NoNetworkState | ClientNetworkState | ServerNetworkState; export interface StartServerOptions { roomInfo: RoomInfo; playerInfo: PeerMetadata; // Testing utils _customPeer?: Peer; } export interface ConnectOptions { serverID: string; playerInfo: PeerMetadata; // Testing utils _customPeer?: Peer; }