| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 | // copy pasted from dom.lib.d.ts because it can not be referenced in the server.
type F_RTCSdpType = "answer" | "offer" | "pranswer" | "rollback";
interface F_RTCSessionDescriptionInit { sdp?: string; type: F_RTCSdpType; }
interface F_RTCIceCandidateInit { candidate?: string; sdpMLineIndex?: number | null; sdpMid?: string | null; usernameFragment?: string | null; }
export interface ClientboundPacket {
    init?: { your_id: number, version: string },
    client_join?: { id: number },
    client_leave?: { id: number },
    message?: { sender: number, message: string /* encrypted RelayMessageWrapper */ },
}
export interface ServerboundPacket {
    ping?: null,
    relay?: { recipient?: number, message: string /* encrypted RelayMessageWrapper */ },
}
export interface RelayMessageWrapper {
    sender: number, // redundant, but ensures the server didnt cheat
    inner: RelayMessage
}
export interface RelayMessage {
    chat?: ChatMessage,
    identify?: { username: string }
    offer?: F_RTCSessionDescriptionInit,
    answer?: F_RTCSessionDescriptionInit,
    ice_candidate?: F_RTCIceCandidateInit,
}
export interface ChatMessage { text?: string, image?: string }
 |