import type { BackendSocket } from './types.js'; import type { GameBackendClient } from './BackendClient.js'; export interface GameRoomMember { userId: string; role: string; state: string; metadata: Record; joinedAt: string; } export interface GameRoom { id: string; state: string; maxPlayers: number; version: number; metadata: Record; createdBy: string; members: GameRoomMember[]; createdAt: string; updatedAt: string; } export interface MediaSessionGrant { roomId: string; mediaSessionId: string; mode: 'p2p' | 'sfu'; iceServers: RTCIceServer[]; expiresAt: number; sfu?: { url: string; token: string; managedIce?: boolean; }; } export declare class GameRoomsClient { private readonly backend; constructor(backend: GameBackendClient); create(options?: { roomId?: string; maxPlayers?: number; metadata?: Record; }): Promise; get(roomId: string): Promise; join(roomId: string, metadata?: Record): Promise; leave(roomId: string): Promise; mediaSession(roomId: string, input: { channel?: string; media: 'audio' | 'video'; mode?: 'auto' | 'p2p' | 'sfu'; }, options?: { signal?: AbortSignal; }): Promise; connectSignal(roomId: string, options?: { protocols?: string[]; signal?: AbortSignal; }): Promise; }