/** Internal contract: games continue to use room.voice()/room.video(). */ export interface MediaSessionConfig { mode: 'p2p' | 'sfu'; iceServers: RTCIceServer[]; expiresAt?: number; sfu?: { url: string; token: string; managedIce?: boolean; }; } export type MediaSessionProvider = (request: { channel: string; media: 'audio' | 'video'; }, signal: AbortSignal) => Promise;