export type TransportName = | 'loopback' | 'webrtc-direct' | 'cloudflare-relay' | 'colyseus' | 'universal-websocket'; export interface NetDiagnostics { backend: 'compat' | 'colyseus'; role: 'host' | 'client' | 'loopback' | 'server-client'; transport: TransportName; sessionId: string; roomName: string; roomId?: string | undefined; bytesSent: number; bytesReceived: number; relayBytesSent?: number | undefined; relayBytesReceived?: number | undefined; iceFailureReason?: string | undefined; relayFallbackReason?: string | undefined; disconnectReason?: string | undefined; } export interface RelayQuota { maxPlayers: number; maxEnvelopeBytes: number; maxMessagesPerSecond: number; maxGlobalRelayBytesPerDay: number; maxGlobalRequestsPerDay: number; maxGlobalWebSocketMessagesPerDay: number; maxActiveRelaySockets: number; maxRelayBytesPerRoom: number; } export interface RelayDailyUsage { day: string; globalRequests: number; globalRelayBytes: number; globalWebSocketMessages: number; } export interface RelayProofDiagnostics { roomId: string; hostSignalId: string; clientSignalIds: string[]; offerCount: number; answerCount: number; iceCandidateCount: number; relayOpenCount: number; relayBytesIn: number; relayBytesOut: number; authoritativeStateOwned: false; quota: RelayQuota; dailyUsage?: RelayDailyUsage | undefined; }