import type { MeetingRole } from "./token"; export type ParticipantSummary = { participantId: string; name: string; role: MeetingRole; }; export type ClientToServerMessage = | { type: "offer"; to: string; payload: RTCSessionDescriptionInit } | { type: "answer"; to: string; payload: RTCSessionDescriptionInit } | { type: "ice-candidate"; to: string; payload: RTCIceCandidateInit } | { type: "kick"; targetParticipantId: string }; export type ServerToClientMessage = | { type: "welcome"; participantId: string; role: MeetingRole; participants: ParticipantSummary[] } | ({ type: "peer-joined" } & ParticipantSummary) | { type: "peer-left"; participantId: string } | { type: "offer"; from: string; payload: RTCSessionDescriptionInit } | { type: "answer"; from: string; payload: RTCSessionDescriptionInit } | { type: "ice-candidate"; from: string; payload: RTCIceCandidateInit } | { type: "kicked" };