/**
 * Command args for toggling position in shell
 */ export interface IChatArgs { area ? : 'left' | 'right' | 'main' ; displayName ? : string ; } /**
 * A model of a room
 */ export type Room = { /** The human-readable name of the room */ displayName : string ; /** A machine-friendly mangled version of the name */ id ? : string ; /** Human-readable description of the room */ description ? : string ; } ; /**
 * Configuration for a video chat
 */ export type VideoChatConfig = { jitsiServer : string ; } ; /** Need to figure out how to use these */ export type TCommandId = string ; see https export type TEvent = 'cameraError' | 'avatarChanged' | 'audioAvailabilityChanged' | 'audioMuteStatusChanged' | 'contentSharingParticipantsChanged' | 'endpointTextMessageReceived' | 'largeVideoChanged' | 'log' | 'micError' | 'screenSharingStatusChanged' | 'dominantSpeakerChanged' | 'raiseHandUpdated' | 'tileViewChanged' | 'incomingMessage' | 'outgoingMessage' | 'displayNameChange' | 'deviceListChanged' | 'emailChange' | 'feedbackSubmitted' | 'filmstripDisplayChanged' | 'participantJoined' | 'participantKickedOut' | 'participantLeft' | 'participantRoleChanged' | 'passwordRequired' | 'videoConferenceJoined' | 'videoConferenceLeft' | 'videoAvailabilityChanged' | 'videoMuteStatusChanged' | 'videoQualityChanged' | 'readyToClose' | 'subjectChange' | 'suspendDetected' ; /** Would be nice to be able to use existing libs, sigh */ export interface IEventListener { ( evt , ... args ) : void ; } export interface IEventListenerMap { [ key ] : IEventListener ; } export interface ICommandMap { [ key ] : any ; } see https export interface IMeetConstructor { new ( domain , options ) : IMeet ; } /**
 * Options to initialize a jitsi meeting
 */ export interface IMeetOptions { /** name of the room to join. */ roomName ? : string ; /** width for the iframe which will be created. If a number is specified
     * it's treated as pixel units. If a string is specified the format is
     * number followed by 'px', 'em', 'pt' or '%'. */ width ? : string | number ; /** height for the iframe which will be created. If a number is specified
     * it's treated as pixel units. If a string is specified the format is
     * number followed by 'px', 'em', 'pt' or '%'. */ height ? : string | number ; /** HTML DOM Element where the iframe will be added as a child. */ parentNode ? : HTMLElement ; /** JS object with overrides for options defined in config.js. */ configOverwrite ? : IConfig ; /** JS object with overrides for options defined in interface_config.js. */ interfaceConfigOverwrite ? : IInterfaceConfig ; /** Boolean indicating if the server should be contacted using HTTP or HTTPS. */ noSSL ? : boolean ; /** JWT token. */ jwt ? : any ; /** handler for the iframe onload event. */ onload ? : ( event : Event ) => void ; /** Array of objects containing information about new participants that
     * will be invited in the call. */ invitees ? : IInvitee [ ] ; /** A map containing information about the initial devices that will be
     * used in the call. */ devices ? : IDeviceMap ; /** JS object containing information about the participant opening the
     * meeting, such as email. */ userInfo ? : IUserInfo ; } export interface IJitsiFactory { ( ) : IMeetConstructor ; } /** TODO: fill these in more */ export interface IUserInfo { displayName ? : string ; email ? : string ; } export interface IConfig { } export interface IInterfaceConfig { } export interface IInvitee { } export interface IDevice { } export interface IDeviceMap { [ key ] : IDevice ; } see https export type TCommand = 'displayName' | 'password' | 'toggleLobby' | 'sendTones' | 'subject' | 'toggleAudio' | 'toggleVideo' | 'toggleFilmStrip' | 'toggleChat' | 'toggleShareScreen' | 'toggleTileView' | 'hangup' | 'email' | 'avatarUrl' | 'sendEndpointTextMessage' | 'setLargeVideoParticipant' | 'setVideoQuality' | 'muteEveryone' | 'startRecording' | 'stopRecording' | 'intiatePrivateChat' | 'cancelPrivateChat' | 'getContentSharingParticipants' ; /**
 * A Jitsi Meeting
 */ export interface IMeet { dispose ( ) : void ; executeCommand ( command , ... options ) : void ; executeCommands ( commands ) : void ; on ( event , listener ) : void ; addEventListener ( event , listener ) : void ; addEventListeners ( events ) : void ; removeEventListener ( listener ) : void ; removeEventListeners ( listeners ) : void ; getAvatarURL ( ) : string ; getDisplayName ( ) : string ; getEmail ( ) : string ; getIFrame ( ) : HTMLIFrameElement ; getNumberOfParticipants ( ) : number ; isAudioAvailable ( ) : Promise < boolean > ; isVideoAvailable ( ) : Promise < boolean > ; isAudioMuted ( ) : Promise < boolean > ; isVideoMuted ( ) : Promise < boolean > ; isDeviceChangeAvailable ( ) : Promise < boolean > ; isDeviceListAvailable ( ) : Promise < boolean > ; isMultipleAudioInputSupported ( ) : Promise < boolean > ; getCurrentDevices ( ) : Promise < any > ; getAvailableDevices ( ) : Promise < any > ; } /** Expected response types from the serverextension routes */ export interface IServerResponses { config : VideoChatConfig ; rooms : Room [ ] ; 'generate-room' : Room ; }