/** * All available commands that can be sent to the WebComponent. */ export enum WebComponentCommand { /** * Initializes the WebComponent with the given configuration. * @private */ INITIALIZE = 'INITIALIZE', /** * Ends the current meeting for all participants. * This command is only available for the moderator. */ END_MEETING = 'END_MEETING', /** * Disconnects the local participant from the current room. */ LEAVE_ROOM = 'LEAVE_ROOM' // TOGGLE_CHAT = 'TOGGLE_CHAT' } /** * Type definitions for command payloads. * Each property corresponds to a command in {@link WebComponentCommand}. * @category Communication */ export interface CommandPayloads { /** * Payload for the INITIALIZE command. * @private */ [WebComponentCommand.INITIALIZE]: { domain: string; }; [WebComponentCommand.END_MEETING]: void; [WebComponentCommand.LEAVE_ROOM]: void; // [WebComponentCommand.TOGGLE_CHAT]: void; } /** * Gets the type-safe payload for a specific command. * This type allows TypeScript to infer the correct payload type based on the command. * @category Type Helpers * @private */ export type CommandPayloadFor = T extends keyof CommandPayloads ? CommandPayloads[T] : never;