@cloudflare/realtimekit 1.2.0-staging.9 → 1.2.1-staging.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import * as _dyteinternals_utils from '@dyteinternals/utils';
3
- import { MediaVideoQualityType, ViewType, LivestreamViewerMediaQualityType, MediaProductionPermissionType, WaitingRoomTypes, createNewFlagsmithInstance, PresetTypeV2, MediaScreenShareQualityType, PluginAccessControls, RecorderType as RecorderType$1, BorderRadius, BorderWidth, Theme } from '@dyteinternals/utils';
3
+ import { PresetTypeV2, MediaVideoQualityType, ViewType, MediaScreenShareQualityType, LivestreamViewerMediaQualityType, PluginAccessControls, WaitingRoomTypes, MediaProductionPermissionType, RecorderType as RecorderType$1, BorderRadius, BorderWidth, Theme, createNewFlagsmithInstance } from '@dyteinternals/utils';
4
4
  import { MessageType as MessageType$1 } from '@protobuf-ts/runtime';
5
5
  import EventEmitter, { EventEmitter as EventEmitter$1 } from 'events';
6
6
  import * as WorkerTimers from 'worker-timers';
@@ -2237,7 +2237,7 @@ interface InhouseCallStatsInitializeParams {
2237
2237
  iceServers: any[];
2238
2238
  apiBase?: string;
2239
2239
  flags: Record<string, Record<'enabled' | 'value', any>>;
2240
- logger?: RTKLogger$2;
2240
+ logger?: DyteLogger;
2241
2241
  apiHostnames: ApiHostnames;
2242
2242
  skipConnectivityChecks: boolean;
2243
2243
  }
@@ -2248,7 +2248,7 @@ interface InhouseCallStatsInitializeParams {
2248
2248
  declare type LogData$3 = {
2249
2249
  [key: string]: string | number | boolean | null | undefined | LogData$3;
2250
2250
  };
2251
- declare interface RTKLogger$2 {
2251
+ declare interface DyteLogger {
2252
2252
  info(humanReadableLogIdentifier: string, logData?: LogData$3, isCrucial?: boolean): void;
2253
2253
  error(humanReadableLogIdentifier: string, logData?: LogData$3, isCrucial?: boolean): void;
2254
2254
  debug(humanReadableLogIdentifier: string, logData?: LogData$3, isCrucial?: boolean): void;
@@ -2551,11 +2551,16 @@ interface IVSPlayerLiveLatencyEntry extends EventEntryBase {
2551
2551
  type EventEntry = CallJoinBeginEntry | NetworkQualityTestBeginEntry | NetworkQualityTestEndEntry | BrowserForegroundedEntry | PingStatsEntry | PreCallTestBeginEntry | PreCallTestCompletedEntry | WebSocketConnectedEntry | TransportConnectedEntry | AudioToggleEntry | VideoToggleEntry | ScreenShareToggleEntry | DisconnectEntry | ReconnectEntry | ParticipantRoleToggleEntry | DominantSpeakerEntry | DevicesEntry | SelectedDeviceEntry | MediaPermissionEntry | MediaPlaybackFailureEntry | MediaTrackFailureEntry | ScreenShareRequestedEntry | ExpectedVideoResolutionEntry | ExpectedScreenshareResolutionEntry | TabChangeEntry | BrowserBackgroundedEntry | LegacySwitchEntry | IVSPlayerRebufferingEntry | IVSPlayerAudioBlockedEntry | IVSPlayerPlaybackBlockedEntry | IVSPlayerNetworkUnavailableEntry | IVSPlayerInitializedEntry | IVSPlayerErrorEntry | IVSPlayerRecoverableErrorEntry | IVSPlayerAnalyticsEventEntry | IVSPlayerLiveLatencyEntry | IVSPlayerPlaybackRateChangedEntry | IVSPlayerQualityChangedEntry | IVSPlayerWorkerErrorEntry;
2552
2552
 
2553
2553
  declare class EventHandler extends EventEmitter {
2554
+ private logger;
2555
+ private peerId;
2556
+ private eventStore;
2557
+ private apiEndpoint;
2554
2558
  constructor({ logger, peerId, apiHostnames, }: {
2555
- logger: RTKLogger$2;
2559
+ logger: DyteLogger;
2556
2560
  peerId: string;
2557
2561
  apiHostnames: ApiHostnames;
2558
2562
  });
2563
+ private sendEventsChunkToServer;
2559
2564
  callEvent(entry: EventEntry): void;
2560
2565
  flush(): Promise<boolean>;
2561
2566
  }
@@ -2657,11 +2662,19 @@ declare abstract class Measurements extends EventEmitter {
2657
2662
  generateConsumerStreamMap(consumer: any, parse?: boolean): Promise<ConsumerStatistics>;
2658
2663
  deregisterProducer(producer: any): void;
2659
2664
  deregisterConsumer(consumer: any): void;
2665
+ protected getIceCandidateStats(stats: any): IceCandidateStats;
2660
2666
  getWorkingSimulcastVideoStats(videoStatsList: OutboundVideoStreamStats[]): OutboundVideoStreamStats;
2667
+ protected parseRTCReport(report: RTCStatsReport, filters?: string[], onceOnly?: boolean, ownerId?: string, transportInfo?: {
2668
+ id: string;
2669
+ producing: boolean;
2670
+ consuming: boolean;
2671
+ }): ParsedRTCStats;
2661
2672
  getProducersReport(producers: any[]): Promise<ProducerStatistics[]>;
2662
2673
  getConsumersReport(consumers: any[]): Promise<ConsumerStatistics[]>;
2663
2674
  getTransportReport(transport: any): Promise<any>;
2664
2675
  getProcessedStats(transport: any, consuming: boolean, producing: boolean): Promise<ProcessedStatsReport>;
2676
+ protected getProducerStatsFromReport(report: ParsedRTCStats): ProducerStatistics[];
2677
+ protected getConsumerStatsFromReport(report: ParsedRTCStats): ConsumerStatistics[];
2665
2678
  getUserLocation(): Promise<GeoLocation>;
2666
2679
  getConnectivity(iceServers: IceServerInfo[]): Promise<{
2667
2680
  host: boolean;
@@ -2677,8 +2690,15 @@ declare abstract class Measurements extends EventEmitter {
2677
2690
  declare class CallStats extends EventEmitter {
2678
2691
  observer: EventEmitter;
2679
2692
  eventHandler: EventHandler;
2693
+ protected measurements: Measurements;
2694
+ protected producingTransport: any;
2695
+ protected consumingTransport: any;
2680
2696
  producers: Map<string, any>;
2681
- logger: RTKLogger$2;
2697
+ protected consumers: Map<string, any>;
2698
+ protected iceServers: IceServerInfo[];
2699
+ protected connectionInfoPromise: Promise<NetworkInformation | NetworkInformationWithoutConnectivityData>;
2700
+ protected pingStatsTimeout: NodeJS.Timeout;
2701
+ logger: DyteLogger;
2682
2702
  env: ClientEnvTypeAll;
2683
2703
  apiHostnames: ApiHostnames;
2684
2704
  peerId: string;
@@ -2692,8 +2712,10 @@ declare class CallStats extends EventEmitter {
2692
2712
  video?: boolean;
2693
2713
  screen?: boolean;
2694
2714
  };
2695
- constructor(backendUrl: string, engineName: string, env: ClientEnvTypeAll, flags: InhouseCallStatsInitializeParams['flags'], logger: RTKLogger$2, peerId: string, apiHostnames: ApiHostnames);
2715
+ constructor(backendUrl: string, engineName: string, env: ClientEnvTypeAll, flags: InhouseCallStatsInitializeParams['flags'], logger: DyteLogger, peerId: string, apiHostnames: ApiHostnames);
2696
2716
  registerIceServers(servers: IceServerInfo[]): void;
2717
+ protected registerConsumer(consumer: any): void;
2718
+ protected registerProducer(producer: any): void;
2697
2719
  sendConsumerSharedMediaStateEvent(consumerId: string, statusObj: {
2698
2720
  audio?: boolean;
2699
2721
  video?: boolean;
@@ -2701,8 +2723,11 @@ declare class CallStats extends EventEmitter {
2701
2723
  }): void;
2702
2724
  registerProducingTransport(transport: any): void;
2703
2725
  registerConsumingTransport(transport: any): void;
2726
+ protected deRegisterConsumer(consumer: any): void;
2727
+ protected deRegisterProducer(producer: any): void;
2704
2728
  disconnectConsumingTransport(): void;
2705
2729
  disconnectProducingTransport(): void;
2730
+ protected callEvent(entry: EventEntry): void;
2706
2731
  sendPreCallTestBeginEvent(skipConnectivityChecks: boolean, timestamp: Date): void;
2707
2732
  sendScreenShareToggleEvent(on: boolean, ssrc: number, timestamp: Date): void;
2708
2733
  sendScreenShareRequestedEvent(timestamp: Date): void;
@@ -2753,7 +2778,7 @@ declare class InhouseCallStats extends EventEmitter {
2753
2778
  initialized: boolean;
2754
2779
  stalled: boolean;
2755
2780
  ipInformation: Object;
2756
- logger: RTKLogger$2;
2781
+ logger: DyteLogger;
2757
2782
  initialize({ peerId, engineName, env, iceServers, apiBase, flags, logger, apiHostnames, skipConnectivityChecks, }: InhouseCallStatsInitializeParams): Promise<void>;
2758
2783
  configureSendTransport(sendTransport: any): void;
2759
2784
  configureRecvTransport(recvTransport: any): void;
@@ -2792,6 +2817,7 @@ declare class InhouseCallStats extends EventEmitter {
2792
2817
  onReceivingConsumingTransportStatus(fx: any): void;
2793
2818
  onProducerScore(fx: any): void;
2794
2819
  onConsumerScore(fx: any): void;
2820
+ private onSafeInitialization;
2795
2821
  removeInitializationListener(fx: Function): void;
2796
2822
  stallCallStats(): void;
2797
2823
  ivsPlayerEvent(type: String, payload: any): void;
@@ -2800,6 +2826,64 @@ declare class InhouseCallStats extends EventEmitter {
2800
2826
  expectedScreenshareResolution(frameWidth: number, frameHeight: number): void;
2801
2827
  }
2802
2828
 
2829
+ type SocketServiceCapability = keyof typeof Capabilities;
2830
+ type SocketStateEvent = 'connected' | 'disconnected' | 'reconnected' | 'errored' | 'reconnecting' | 'reconnectAttempt' | 'reconnectFailure' | 'failed';
2831
+ type SocketServiceCapabilities = SocketServiceCapability[];
2832
+ interface SocketConnectionState {
2833
+ state: Extract<SocketStateEvent, 'connected' | 'disconnected' | 'reconnecting' | 'failed'>;
2834
+ reconnected: boolean;
2835
+ reconnectionAttempt: number;
2836
+ }
2837
+ declare class SocketService {
2838
+ readonly roomName: string;
2839
+ readonly authToken: string;
2840
+ readonly capabilities: SocketServiceCapabilities;
2841
+ get joinAttempted(): boolean;
2842
+ set joinAttempted(value: boolean);
2843
+ get telemetry(): Telemetry;
2844
+ get logger(): Logger;
2845
+ get peerId(): string;
2846
+ constructor(context: Context<ContextState>, { peerId, meetingId, authToken, capabilities, }: {
2847
+ peerId: string;
2848
+ meetingId: string;
2849
+ authToken: string;
2850
+ capabilities: SocketServiceCapabilities;
2851
+ });
2852
+ updateURL(peerID: string): void;
2853
+ private static getSocketEdgeDomain;
2854
+ get url(): string;
2855
+ connect(): Promise<void>;
2856
+ disconnect(): void;
2857
+ get isConnected(): boolean;
2858
+ sendMessage(event: number, protobuf?: Uint8Array, messageId?: string): boolean;
2859
+ sendMessagePromise(event: number, protobuf?: Uint8Array, messageId?: string, resp?: number): Promise<{
2860
+ id: string;
2861
+ payload: Uint8Array;
2862
+ }>;
2863
+ sendMessagePromiseWithTimeout({ event, timeout, protobuf, messageId, resp, }: {
2864
+ timeout: number;
2865
+ event: number;
2866
+ protobuf?: Uint8Array;
2867
+ messageId?: string;
2868
+ resp?: number;
2869
+ }): Promise<{
2870
+ id: string;
2871
+ payload: Uint8Array;
2872
+ }>;
2873
+ on(event: number, listener: (message: {
2874
+ id?: string;
2875
+ payload?: Uint8Array;
2876
+ }) => void): void;
2877
+ onStateEvent(event: SocketStateEvent, listener: (...args: any) => void): void;
2878
+ removeListener(event: number, listener: (message: {
2879
+ id?: string;
2880
+ payload?: Uint8Array;
2881
+ }) => void): void;
2882
+ removeListeners(event: number): void;
2883
+ flush(): any;
2884
+ handleSocketConnectionEvents(): void;
2885
+ }
2886
+
2803
2887
  declare global {
2804
2888
  interface SymbolConstructor {
2805
2889
  readonly observable: symbol;
@@ -2832,9 +2916,9 @@ type StringKeysOfFoo = StringKeyOf<Foo>;
2832
2916
  */
2833
2917
  type StringKeyOf<BaseType> = `${Extract<keyof BaseType, string | number>}`;
2834
2918
 
2835
- declare class RTKEventEmitter<T extends string | symbol> extends EventEmitter$1 {
2836
- logger: RTKLogger$1 | undefined;
2837
- constructor(logger: RTKLogger$1);
2919
+ declare class CustomEventEmitter<T extends string | symbol> extends EventEmitter$1 {
2920
+ logger: Logger | undefined;
2921
+ constructor(logger: Logger);
2838
2922
  emit(event: T, ...args: any[]): boolean;
2839
2923
  on(event: T, callback: (...args: any[]) => void): this;
2840
2924
  addListener(event: T, callback: (...args: any[]) => any): this;
@@ -2853,9 +2937,9 @@ type EventMap$1 = {
2853
2937
  type WildCardEvent<T> = {
2854
2938
  ['*']: (event: StringKeyOf<T>, ...args: any) => void;
2855
2939
  };
2856
- declare class RTKTypedEventEmitter<Events extends EventMap$1 & WildCardEvent<Events>> extends EventEmitter$1 {
2857
- logger: RTKLogger$1 | undefined;
2858
- constructor(logger: RTKLogger$1);
2940
+ declare class TypedEventEmitter$1<Events extends EventMap$1 & WildCardEvent<Events>> extends EventEmitter$1 {
2941
+ logger: Logger | undefined;
2942
+ constructor(logger: Logger);
2859
2943
  emit<E extends StringKeyOf<Events>>(event: E, ...args: Parameters<Events[E]>): boolean;
2860
2944
  on<E extends StringKeyOf<Events>>(event: E, callback: Events[E]): this;
2861
2945
  addListener<E extends StringKeyOf<Events>>(event: E, callback: Events[E]): this;
@@ -2869,79 +2953,151 @@ declare class RTKTypedEventEmitter<Events extends EventMap$1 & WildCardEvent<Eve
2869
2953
  listenerCount<T extends StringKeyOf<Events>>(event: T): number;
2870
2954
  }
2871
2955
 
2872
- type StageSocketMessage = GetStageRequestsResponse | GetStagePeersResponse | DenyStageAccessRequest | PeerStatusUpdate;
2873
- declare class StageSocketHandler {
2874
- constructor(socketService: SocketService);
2875
- getStageRequests(): Promise<GetStageRequestsResponse>;
2876
- requestAccess(): void;
2877
- cancelRequestAccess(): void;
2878
- grantAccess(userIds: string[]): Promise<void>;
2879
- denyAccess(userIds: string[]): Promise<void>;
2880
- joinStage(): Promise<{
2881
- id: string;
2882
- payload: Uint8Array;
2883
- }>;
2884
- leaveStage(userId: string): Promise<{
2885
- id: string;
2886
- payload: Uint8Array;
2887
- }>;
2888
- kick(userIds: string[]): Promise<{
2889
- id: string;
2890
- payload: Uint8Array;
2891
- }>;
2892
- on(event: number, handler: (socketMessage: StageSocketMessage, messageId?: string) => void): void;
2893
- getPeerInfo(peerId: string): Promise<PeerInfoResponse>;
2956
+ interface BasicParticipant {
2957
+ userId: string;
2958
+ name?: string;
2959
+ picture?: string;
2960
+ customParticipantId: string;
2961
+ }
2962
+ declare class BasicParticipantsMap extends CustomEventEmitter<'participantsUpdate'> {
2963
+ constructor(logger: Logger);
2964
+ __set(objId: string, obj: BasicParticipant): Map<string, BasicParticipant>;
2965
+ __clear(): void;
2966
+ get(objId: string): BasicParticipant;
2967
+ toArray(): BasicParticipant[];
2894
2968
  }
2895
2969
 
2896
- type StageStatus = 'OFF_STAGE' | 'REQUESTED_TO_JOIN_STAGE' | 'ACCEPTED_TO_JOIN_STAGE' | 'ON_STAGE';
2897
- interface StageRequestPayload {
2970
+ type ChatChannelSocketMessage = GetChatChannelResponse;
2971
+ interface ChatChannel {
2972
+ id: string;
2898
2973
  displayName: string;
2899
- userId: string;
2900
- peerId: string;
2974
+ memberIds: string[];
2975
+ displayPictureUrl?: string;
2976
+ visibility?: string;
2977
+ isDirectMessage?: boolean;
2978
+ latestMessage?: Message;
2979
+ unreadCount: number;
2901
2980
  }
2902
- type StageEvents = {
2903
- ['stageAccessRequestUpdate']: (requests?: StageRequestPayload[]) => void;
2904
- ['stageStatusUpdate']: (status: StageStatus) => void;
2905
- ['newStageRequest']: (payload: {
2906
- count: number;
2907
- }) => void;
2908
- ['stageRequestApproved']: () => void;
2909
- ['stageRequestRejected']: () => void;
2910
- ['*']: (eventName: string, ...args: any[]) => void;
2911
- };
2912
- declare class RTKStage extends RTKTypedEventEmitter<StageEvents> {
2913
- get telemetry(): RTKTelemetry;
2914
- constructor(context: Context<RTKContextState>, self: RTKSelf$1, participants: RTKParticipants, stageSocketHandler: StageSocketHandler, roomSocketHandler: RoomSocketHandler);
2915
- get status(): StageStatus;
2916
- getAccessRequests(): {
2917
- stageRequests: StageRequestPayload[];
2918
- };
2919
- requestAccess(): Promise<void>;
2920
- cancelRequestAccess(): Promise<void>;
2921
- grantAccess(userIds: string[]): Promise<void>;
2922
- denyAccess(userIds: string[]): Promise<void>;
2923
- get peerId(): string;
2924
- join(): Promise<void>;
2925
- leave(): Promise<void>;
2926
- kick(userIds: string[]): Promise<{
2981
+ interface UpdateChannelRequestPayload {
2982
+ memberIds?: string[];
2983
+ displayName?: string;
2984
+ displayPictureUrl?: string;
2985
+ visibility?: string;
2986
+ }
2987
+ declare class ChatChannelSocketHandler {
2988
+ get telemetry(): Telemetry;
2989
+ get logger(): Logger;
2990
+ constructor(context: Context<ContextState>, socketService: SocketService);
2991
+ createChannel(displayName: string, memberIds: string[], displayPictureUrl?: string, visibility?: string, isDirectMessage?: boolean): Promise<ChatChannel>;
2992
+ updateChannel(channelId: string, payload: UpdateChannelRequestPayload): Promise<ChatChannel>;
2993
+ static formatChannel(socketChannel: ChatChannel$1): ChatChannel;
2994
+ getChannelMembers(channelId: string): Promise<BasicParticipant[]>;
2995
+ on(event: number, handler: (socketMessage: ChatChannelSocketMessage) => void): void;
2996
+ }
2997
+
2998
+ declare enum ChatMessageType {
2999
+ TEXT = 0,
3000
+ IMAGE = 1,
3001
+ FILE = 2,
3002
+ CUSTOM = 3
3003
+ }
3004
+ type ChatSocketMessage = SendChatMessageToRoomResponse | SendChatMessageToPeersResponse | EditChatMessageResponse | DeleteChatMessageResponse;
3005
+ interface SearchFilters {
3006
+ channelId?: string;
3007
+ timestamp?: number;
3008
+ size?: number;
3009
+ reversed?: boolean;
3010
+ }
3011
+ declare class ChatSocketHandler {
3012
+ get telemetry(): Telemetry;
3013
+ get logger(): Logger;
3014
+ constructor(context: Context<ContextState>, socketService: SocketService);
3015
+ getChatMessages(): Promise<{
2927
3016
  id: string;
2928
3017
  payload: Uint8Array;
2929
3018
  }>;
3019
+ getChatMessagesPaginated(timeStamp: number, size: number, reversed: boolean, offset?: number, channelId?: string): Promise<GetPaginatedChatMessageRoomResponse>;
3020
+ sendMessageToRoom(message: string, messageType: ChatMessageType): void;
3021
+ sendMessageToPeers(message: string, messageType: ChatMessageType, peerIds: string[]): void;
3022
+ sendMessageToChannel(message: string, messageType: ChatMessageType, channelId: string): void;
3023
+ sendMessage(message: string, messageType: ChatMessageType, peerIds?: string[], channelId?: string): void;
3024
+ editMessage(chatId: string, message: string, payloadType: ChatMessageType, channelId?: string, pinned?: boolean): Promise<ChatMessage>;
3025
+ deleteMessage(chatId: string, channelId?: string): Promise<{
3026
+ channelId?: string;
3027
+ id: string;
3028
+ }>;
3029
+ searchMessages(query: string, filters: SearchFilters): Promise<ChatMessage[]>;
3030
+ getAllChannels(): Promise<ChatChannel[]>;
3031
+ markLastReadMessage(channelId: string, message: Message): Promise<string>;
3032
+ setPinState(message: Message, pin: boolean): Promise<PinChatMessageResponse>;
3033
+ on(event: number, handler: (socketMessage: ChatSocketMessage) => void): void;
2930
3034
  }
2931
3035
 
2932
- interface ResponseStatus {
2933
- success: boolean;
2934
- message: string;
3036
+ declare class SelectedPeers {
3037
+ private readonly _activeSpeakerPeers;
3038
+ private readonly _compulsoryPeers;
3039
+ constructor();
3040
+ add(peerId: string, priority: number, context: Context<ContextState>): number;
3041
+ delete(peerId: string, context: Context<ContextState>): void;
3042
+ index(peerId: string): number;
3043
+ get peers(): string[];
3044
+ get compulsoryPeers(): string[];
3045
+ get activeSpeakerPeers(): string[];
3046
+ private _removeFromCompulsoryPeer;
2935
3047
  }
2936
3048
 
2937
- type MediaPermission$1 = 'NOT_REQUESTED' | 'ACCEPTED' | 'DENIED' | 'SYSTEM_DENIED' | 'COULD_NOT_START' | 'NO_DEVICES_AVAILABLE' | 'CANCELED';
2938
-
2939
- declare class EnhancedEventEmitter<TransportPromiseEvents> extends EventEmitter$1 {
2940
- get logger(): RTKLogger$1;
2941
- constructor(context: Context<RTKContextState>);
2942
- safeEmit(event: string, ...args: any[]): boolean;
2943
- safeEmitAsPromise<T extends keyof TransportPromiseEvents>(event: T, ...args: any[]): Promise<TransportPromiseEvents[T]>;
2944
- safeEmitAsPromiseWithTimeout<T extends keyof TransportPromiseEvents>(event: T, timeout: number, ...args: any[]): Promise<TransportPromiseEvents[T]>;
3049
+ type PipEvents = {
3050
+ ['cameraToggled']: () => void;
3051
+ ['micToggled']: () => void;
3052
+ ['hangup']: () => void;
3053
+ ['pipStarted']: () => void;
3054
+ ['pipEnded']: () => void;
3055
+ ['*']: (eventName: string, ...args: any[]) => void;
3056
+ };
3057
+ declare class Pip extends TypedEventEmitter$1<PipEvents> {
3058
+ private constructor();
3059
+ static _init(context: Context<ContextState>, self: Self): Promise<Pip>;
3060
+ private setupIcon;
3061
+ overrideIcon(icon: 'handRaise' | 'pin', value: string): Promise<void>;
3062
+ private constructImage;
3063
+ private createVideoContainer;
3064
+ private setupEventListeners;
3065
+ private cleanupEventListeners;
3066
+ private enablePipMediaControls;
3067
+ private onSelfVideoUpdateListener;
3068
+ private onSelfAudioUpdateListener;
3069
+ private handlePipMediaControls;
3070
+ private createCanvas;
3071
+ private eventCallback;
3072
+ private setupMediaSessionEvents;
3073
+ private mountAudioEvents;
3074
+ private mountVideoEvents;
3075
+ private unmountEvents;
3076
+ private getSources;
3077
+ private drawEmptyTile;
3078
+ private drawIcons;
3079
+ private drawTile;
3080
+ private calcGridElemSize;
3081
+ private paintCanvas;
3082
+ private animate;
3083
+ isSupported(): boolean;
3084
+ get isActive(): boolean;
3085
+ private cleanup;
3086
+ init({ height, width }?: {
3087
+ height?: number;
3088
+ width?: number;
3089
+ }): void;
3090
+ private updateMediaSession;
3091
+ enableSource(source: string): void;
3092
+ disableSource(source: string): void;
3093
+ private generateAvatar;
3094
+ addSource(id: string, element: HTMLVideoElement, enabled: boolean, pinned?: boolean, displayText?: string, imageUrl?: string, handRaised?: boolean): void;
3095
+ updateSource(id: string, source: any): void;
3096
+ removeSource(id: string): void;
3097
+ removePinnedSource(): void;
3098
+ removeAllSources(): void;
3099
+ enable(): void;
3100
+ disable: (partial?: boolean) => void;
2945
3101
  }
2946
3102
 
2947
3103
  declare enum TransportState {
@@ -2953,11 +3109,6 @@ declare enum TransportState {
2953
3109
  FAILED = "failed",
2954
3110
  CLOSED = "closed"
2955
3111
  }
2956
- declare enum MediaNodeType {
2957
- HIVE = 1,
2958
- ROOM_NODE = 2,
2959
- CF = 3
2960
- }
2961
3112
  type MediaConnectionState = {
2962
3113
  recv: {
2963
3114
  state: `${TransportState}`;
@@ -2967,20 +3118,193 @@ type MediaConnectionState = {
2967
3118
  };
2968
3119
  };
2969
3120
 
2970
- interface GenericHandlerResult {
2971
- offerSdp: RTCSessionDescriptionInit;
2972
- callback: (answer: RTCSessionDescriptionInit) => Promise<any>;
2973
- sender?: RTCRtpSender;
3121
+ type EventHandlerTypes = PeerInfoResponse | GetWaitingRoomRequests | RecordingEvent | UpdatePeersPresetResponse | PeerJoinBroadcastResponse | PeerJoinCompleteResponse | GlobalPeerPinningBroadcastResponse | PeerLeaveResponse | SelectedPeersResponse | SelectedPeersDiffResponse;
3122
+ declare class RoomSocketHandler {
3123
+ socket: SocketService;
3124
+ get telemetry(): Telemetry;
3125
+ get logger(): Logger;
3126
+ cleanup(): void;
3127
+ constructor(context: Context<ContextState>, socketService: SocketService);
3128
+ joinRoom(opts: {
3129
+ name: string;
3130
+ id: string;
3131
+ userId: string;
3132
+ customParticipantId: string;
3133
+ picture?: string;
3134
+ }): Promise<{
3135
+ peer: Peer;
3136
+ }>;
3137
+ getAllAddedParticipants(): Promise<BasicParticipant[]>;
3138
+ getRoomPeers(searchQuery: string, limit: number, offset: number): Promise<RoomPeersInfoResponse>;
3139
+ getRoomPeersNonPaginated(): Promise<RoomPeersInfoResponse>;
3140
+ getStagePeers(): Promise<RoomPeersInfoResponse>;
3141
+ getPeerInfo(peerId: string): Promise<PeerInfoResponse>;
3142
+ getRoomState(): Promise<RoomInfoResponse>;
3143
+ getRoomStageState(): Promise<GetRoomStageStateResponse>;
3144
+ broadcastMessage(type: string, payload: BroadcastMessagePayload): Promise<{
3145
+ id: string;
3146
+ payload: Uint8Array;
3147
+ }>;
3148
+ broadcastToMeetings(type: string, meetingIds: string[], payload: BroadcastMessagePayload): Promise<{
3149
+ id: string;
3150
+ payload: Uint8Array;
3151
+ }>;
3152
+ broadcastToPeers(type: string, peerIds: string[], payload: BroadcastMessagePayload): Promise<boolean>;
3153
+ leaveRoom(): Promise<void>;
3154
+ kick(peerId: string): Promise<void>;
3155
+ kickAll(propagateKickAll?: boolean): Promise<void>;
3156
+ getWaitingRoomRequests(): void;
3157
+ acceptWaitingRoomRequest(userIds: string[]): void;
3158
+ rejectWaitingRoomRequest(userIds: string[]): void;
3159
+ updatePermissions(userIds: string[], patch: PresetUpdates): Promise<{
3160
+ id: string;
3161
+ payload: Uint8Array;
3162
+ }>;
3163
+ private handleSocketEvents;
3164
+ on(event: number, handler: (message: EventHandlerTypes) => void): void;
3165
+ getUserPermissions(userId: string): Promise<Pick<PresetTypeV2['permissions'], 'chat' | 'polls' | 'plugins'>>;
2974
3166
  }
2975
- type HandlerRunOptions = {
2976
- direction: 'send' | 'recv';
2977
- iceServers?: RTCIceServer[];
2978
- iceTransportPolicy?: RTCIceTransportPolicy;
2979
- additionalSettings?: any;
2980
- proprietaryConstraints?: any;
2981
- onTrackHandler?: (event: RTCTrackEvent) => void;
2982
- };
2983
- type CodecOption = {
3167
+
3168
+ type TranscriptionData = {
3169
+ id: string;
3170
+ name: string;
3171
+ peerId: string;
3172
+ userId: string;
3173
+ customParticipantId: string;
3174
+ transcript: string;
3175
+ isPartialTranscript: boolean;
3176
+ date: Date;
3177
+ };
3178
+ type AiEvents = {
3179
+ ['transcript']: (t: TranscriptionData) => void;
3180
+ ['*']: (event: string, ...args: any[]) => void;
3181
+ };
3182
+ declare class Ai extends TypedEventEmitter$1<AiEvents> {
3183
+ transcripts: TranscriptionData[];
3184
+ get telemetry(): Telemetry;
3185
+ constructor(context: Context<ContextState>);
3186
+ static init(context: Context<ContextState>, transcriptionEnabled: boolean): Promise<Ai>;
3187
+ static parseTranscript(transcriptData: string, isPartialTranscript?: boolean): TranscriptionData | undefined;
3188
+ static parseTranscripts(transcriptData: string): TranscriptionData[];
3189
+ getActiveTranscript(): Promise<void>;
3190
+ onTranscript(transcript: TranscriptionData): Promise<void>;
3191
+ }
3192
+
3193
+ type ActiveTabType = 'screenshare' | 'plugin';
3194
+ interface ActiveTab {
3195
+ type: ActiveTabType;
3196
+ id: string;
3197
+ }
3198
+ declare enum TabChangeSource {
3199
+ User = 0,
3200
+ Meeting = 1
3201
+ }
3202
+ interface MediaConnectionUpdate {
3203
+ transport: 'consuming' | 'producing';
3204
+ state: `${TransportState}`;
3205
+ reconnected: boolean;
3206
+ }
3207
+ type MetaEvents = {
3208
+ ['mediaConnectionUpdate']: (payload: MediaConnectionUpdate) => void;
3209
+ ['socketConnectionUpdate']: (state: SocketConnectionState) => void;
3210
+ ['poorConnection']: (payload: {
3211
+ score: number;
3212
+ }) => void;
3213
+ ['meetingStartTimeUpdate']: (payload: {
3214
+ meetingStartedTimestamp: Date;
3215
+ }) => void;
3216
+ ['transcript']: (t: TranscriptionData) => void;
3217
+ ['activeTabUpdate']: (tab: ActiveTab) => void;
3218
+ ['selfTabUpdate']: (tab: ActiveTab) => void;
3219
+ ['broadcastTabChangesUpdate']: (broadcastTabChanges: boolean) => void;
3220
+ ['*']: (event: string, ...args: any[]) => void;
3221
+ };
3222
+ declare class Meta extends TypedEventEmitter$1<MetaEvents> {
3223
+ selfActiveTab: ActiveTab | undefined;
3224
+ get socketState(): SocketConnectionState;
3225
+ get mediaState(): MediaConnectionState;
3226
+ broadcastTabChanges: boolean;
3227
+ viewType: string;
3228
+ meetingStartedTimestamp: Date;
3229
+ meetingTitle: string;
3230
+ sessionId: string;
3231
+ constructor(context: Context<ContextState>, self: Self, viewType: string, roomSocketHandler: RoomSocketHandler, meetingTitle: string);
3232
+ get meetingId(): string;
3233
+ setBroadcastTabChanges(broadcastTabChanges: boolean): void;
3234
+ setSelfActiveTab(spotlightTab: ActiveTab, tabChangeSource: TabChangeSource): void;
3235
+ private assertActiveTabToRoom;
3236
+ }
3237
+
3238
+ interface MapEvents<T extends EventMap$1> {
3239
+ onAddEvent?: keyof T;
3240
+ onDeleteEvent?: keyof T;
3241
+ onClearEvent?: keyof T;
3242
+ }
3243
+ type ModifyPrependObject<T extends EventMap$1, U> = {
3244
+ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>;
3245
+ } & {
3246
+ ['*']: (event: String, ...args: any[]) => void;
3247
+ };
3248
+ declare class ClientMap<T extends (EventMap$1 & WildCardEvent<T>), U extends {
3249
+ id: string;
3250
+ } & TypedEventEmitter$1<T>, V extends EventMap$1> extends Map<string, U> {
3251
+ readonly onAddEvent: keyof V;
3252
+ readonly onDeleteEvent: keyof V;
3253
+ readonly onClearEvent: keyof V;
3254
+ constructor(options: MapEvents<V>, logger?: Logger);
3255
+ emit<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, ...args: Parameters<(V | ModifyPrependObject<T, U>)[E]>): boolean;
3256
+ on<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, callback: (ModifyPrependObject<T, U> & V)[E]): TypedEventEmitter$1<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3257
+ "*": (event: String, ...args: any[]) => void;
3258
+ } & V>;
3259
+ addListener<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, callback: (ModifyPrependObject<T, U> & V)[E]): TypedEventEmitter$1<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3260
+ "*": (event: String, ...args: any[]) => void;
3261
+ } & V>;
3262
+ off<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, callback: (ModifyPrependObject<T, U> & V)[E]): TypedEventEmitter$1<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3263
+ "*": (event: String, ...args: any[]) => void;
3264
+ } & V>;
3265
+ once<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, callback: (ModifyPrependObject<T, U> & V)[E]): TypedEventEmitter$1<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3266
+ "*": (event: String, ...args: any[]) => void;
3267
+ } & V>;
3268
+ prependListener<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, callback: (ModifyPrependObject<T, U> & V)[E]): TypedEventEmitter$1<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3269
+ "*": (event: String, ...args: any[]) => void;
3270
+ } & V>;
3271
+ prependOnceListener<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, callback: (ModifyPrependObject<T, U> & V)[E]): TypedEventEmitter$1<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3272
+ "*": (event: String, ...args: any[]) => void;
3273
+ } & V>;
3274
+ removeListener<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, callback: (ModifyPrependObject<T, U> & V)[E]): TypedEventEmitter$1<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3275
+ "*": (event: String, ...args: any[]) => void;
3276
+ } & V>;
3277
+ removeAllListeners<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event?: E): TypedEventEmitter$1<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3278
+ "*": (event: String, ...args: any[]) => void;
3279
+ } & V>;
3280
+ listeners<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E): Function[];
3281
+ listenerCount<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E): number;
3282
+ getMaxListeners(): number;
3283
+ setMaxListeners(n: number): TypedEventEmitter$1<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3284
+ "*": (event: String, ...args: any[]) => void;
3285
+ } & V>;
3286
+ eventNames(): (string | symbol)[];
3287
+ add(obj: U, emitEvent?: boolean): this;
3288
+ set(objId: string, obj: U, emitEvent?: boolean): this;
3289
+ delete(objId: string, emitEvent?: boolean, removeListeners?: boolean): boolean;
3290
+ clear(emitEvent?: boolean, removeListeners?: boolean): void;
3291
+ toArray(): U[];
3292
+ }
3293
+
3294
+ interface GenericHandlerResult {
3295
+ offerSdp: RTCSessionDescriptionInit;
3296
+ callback: (answer: RTCSessionDescriptionInit) => Promise<any>;
3297
+ sender?: RTCRtpSender;
3298
+ }
3299
+ type HandlerRunOptions = {
3300
+ direction: 'send' | 'recv';
3301
+ iceServers?: RTCIceServer[];
3302
+ iceTransportPolicy?: RTCIceTransportPolicy;
3303
+ additionalSettings?: any;
3304
+ proprietaryConstraints?: any;
3305
+ onTrackHandler?: (event: RTCTrackEvent) => void;
3306
+ };
3307
+ type CodecOption = {
2984
3308
  name: string;
2985
3309
  parameters?: string[];
2986
3310
  };
@@ -2995,11 +3319,15 @@ interface HandlerSendResult extends GenericHandlerResult {
2995
3319
  mid: string;
2996
3320
  }
2997
3321
  declare abstract class HandlerInterface<TransportPromiseEvents> extends EnhancedEventEmitter<TransportPromiseEvents> {
3322
+ protected _sendWebStream: MediaStream;
3323
+ protected _sendScreenShareStream: MediaStream;
3324
+ protected _direction?: 'send' | 'recv';
2998
3325
  pc: RTCPeerConnection;
3326
+ protected _transportReady: boolean;
3327
+ private readonly _mapMidTransceiver;
2999
3328
  enableHighBitrate: boolean;
3000
3329
  enableStereo: boolean;
3001
3330
  enableDtx: boolean;
3002
- sfu: MediaNodeType;
3003
3331
  get midTransceiverMap(): Map<string, RTCRtpTransceiver>;
3004
3332
  abstract get name(): string;
3005
3333
  close(): void;
@@ -3007,6 +3335,8 @@ declare abstract class HandlerInterface<TransportPromiseEvents> extends Enhanced
3007
3335
  init({ direction, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, onTrackHandler, }: HandlerRunOptions): void;
3008
3336
  connect(): Promise<GenericHandlerResult>;
3009
3337
  getTransportStats(): Promise<RTCStatsReport>;
3338
+ protected _assertSendDirection(): void;
3339
+ protected _assertRecvDirection(): void;
3010
3340
  getReceiverStats(localId: string): Promise<RTCStatsReport>;
3011
3341
  stopSending(localId: string): Promise<GenericHandlerResult>;
3012
3342
  abstract send(options: HandlerSendOptions): Promise<HandlerSendResult>;
@@ -3018,8 +3348,6 @@ declare abstract class HandlerInterface<TransportPromiseEvents> extends Enhanced
3018
3348
  addCustomEventListeners(): void;
3019
3349
  }
3020
3350
 
3021
- type MediaKind$1 = 'audio' | 'video';
3022
-
3023
3351
  type DCMessage = {
3024
3352
  type: string;
3025
3353
  payload: Record<string, unknown>;
@@ -3050,7 +3378,7 @@ type ConsumerOptions = {
3050
3378
  transceiver: RTCRtpTransceiver;
3051
3379
  closeTranscieverOnClose?: boolean;
3052
3380
  };
3053
- type MediaKind = 'audio' | 'video';
3381
+ type MediaKind$1 = 'audio' | 'video';
3054
3382
  declare class Consumer extends EnhancedEventEmitter<TransportPromiseEvents> {
3055
3383
  readonly rtpReceiver: RTCRtpReceiver;
3056
3384
  readonly id: string;
@@ -3062,9 +3390,9 @@ declare class Consumer extends EnhancedEventEmitter<TransportPromiseEvents> {
3062
3390
  readonly peerId: string;
3063
3391
  readonly appData: Record<string, unknown>;
3064
3392
  readonly transceiver: RTCRtpTransceiver;
3065
- constructor(context: Context<RTKContextState>, opts: ConsumerOptions);
3393
+ constructor(context: Context<ContextState>, opts: ConsumerOptions);
3066
3394
  get closed(): boolean;
3067
- get kind(): MediaKind;
3395
+ get kind(): MediaKind$1;
3068
3396
  get paused(): boolean;
3069
3397
  close(reason?: string, closeTranscieverOnClose?: boolean): void;
3070
3398
  getStats(): Promise<RTCStatsReport>;
@@ -3090,15 +3418,15 @@ type ParticipantEvents = {
3090
3418
  video: MediaStreamTrack;
3091
3419
  };
3092
3420
  }) => void;
3093
- ['pinned']: (payload: RTKParticipant) => void;
3094
- ['unpinned']: (payload: RTKParticipant) => void;
3421
+ ['pinned']: (payload: Participant) => void;
3422
+ ['unpinned']: (payload: Participant) => void;
3095
3423
  ['poorConnection']: (payload: {
3096
3424
  score: number;
3097
3425
  kind: string;
3098
3426
  }) => void;
3099
- ['stageStatusUpdate']: (payload: RTKParticipant) => void;
3427
+ ['stageStatusUpdate']: (payload: Participant) => void;
3100
3428
  ['mediaScoreUpdate']: (payload: {
3101
- kind: MediaKind;
3429
+ kind: MediaKind$1;
3102
3430
  isScreenshare: boolean;
3103
3431
  score: number;
3104
3432
  participantId: string;
@@ -3134,8 +3462,8 @@ type SelfEvents = {
3134
3462
  removed: MediaDeviceInfo[];
3135
3463
  devices: MediaDeviceInfo[];
3136
3464
  }) => void;
3137
- ['pinned']: (payload: RTKSelf) => void;
3138
- ['unpinned']: (payload: RTKSelf) => void;
3465
+ ['pinned']: (payload: Self) => void;
3466
+ ['unpinned']: (payload: Self) => void;
3139
3467
  ['mediaPermissionUpdate']: (payload: {
3140
3468
  message: keyof typeof MediaPermission;
3141
3469
  kind: 'audio' | 'video' | 'screenshare';
@@ -3146,7 +3474,7 @@ type SelfEvents = {
3146
3474
  kind: 'audio' | 'video' | 'screenshare';
3147
3475
  }) => void;
3148
3476
  ['mediaScoreUpdate']: (payload: {
3149
- kind: MediaKind;
3477
+ kind: MediaKind$1;
3150
3478
  isScreenshare: boolean;
3151
3479
  score: number;
3152
3480
  participantId: string;
@@ -3163,223 +3491,500 @@ type SelfEvents = {
3163
3491
  ['*']: (event: string, ...args: any[]) => void;
3164
3492
  };
3165
3493
 
3166
- declare class LocalMediaHandler extends RTKEventEmitter<LocalMediaEvents> {
3167
- get telemetry(): RTKTelemetry;
3168
- audioUpdateInProgress: boolean;
3169
- videoUpdateInProgress: boolean;
3170
- constructor(context: Context<RTKContextState>, mediaConstraints: MediaConstraints, isNonPreferredDevice?: (media: MediaDeviceInfo) => boolean, autoSwitchDevice?: boolean);
3171
- set context(context: Context<RTKContextState>);
3172
- repopulateAvailableDevices(): Promise<boolean>;
3173
- setupStreams({ audio, video, }: {
3174
- audio: boolean;
3175
- video: boolean;
3176
- }): Promise<void>;
3177
- getCurrentDevices(): {
3178
- audio: MediaDeviceInfo;
3179
- video: MediaDeviceInfo;
3180
- speaker: MediaDeviceInfo;
3181
- };
3182
- get permissions(): {
3183
- audio?: MediaPermission$1;
3184
- video?: MediaPermission$1;
3185
- screenshare?: MediaPermission$1;
3186
- };
3187
- getAllDevices(): Promise<InputDeviceInfo[]>;
3188
- getDeviceById(deviceId: string, kind?: 'audioinput' | 'audiooutput' | 'videoinput'): Promise<MediaDeviceInfo>;
3189
- get rawAudioTrack(): MediaStreamTrack;
3190
- get audioTrack(): MediaStreamTrack;
3191
- get audioEnabled(): boolean;
3192
- enableAudio(customTrack?: MediaStreamTrack): Promise<void>;
3193
- disableAudio(): void;
3194
- getAudioDevices(devices?: MediaDeviceInfo[]): Promise<MediaDeviceInfo[]>;
3195
- setAudioDevice(device: MediaDeviceInfo): Promise<void>;
3196
- setupSpeaker(): Promise<void>;
3197
- setSpeakerDevice(device: MediaDeviceInfo): Promise<void>;
3198
- get rawVideoTrack(): MediaStreamTrack;
3199
- get videoTrack(): MediaStreamTrack;
3200
- get videoEnabled(): boolean;
3201
- enableVideo(customTrack?: MediaStreamTrack): Promise<void>;
3202
- disableVideo(): void;
3203
- getVideoDevices(devices?: MediaDeviceInfo[]): Promise<MediaDeviceInfo[]>;
3204
- setVideoDevice(device: MediaDeviceInfo): Promise<void>;
3205
- updateVideoConstraints(resolution: VideoQualityConstraints): Promise<void>;
3206
- get screenShareTracks(): {
3207
- audio: MediaStreamTrack;
3208
- video: MediaStreamTrack;
3209
- };
3210
- get screenShareEnabled(): boolean;
3211
- enableScreenShare(): Promise<void>;
3212
- disableScreenShare(): Promise<void>;
3213
- updateScreenshareConstraints(resolution: VideoQualityConstraints): Promise<void>;
3214
- getSpeakerDevices(devices?: MediaDeviceInfo[]): Promise<MediaDeviceInfo[]>;
3215
- addAudioMiddleware(audioMiddleware: AudioMiddleware): Promise<ResponseStatus>;
3216
- removeAudioMiddleware(audioMiddleware: AudioMiddleware): Promise<ResponseStatus>;
3217
- removeAllAudioMiddlewares(): Promise<ResponseStatus>;
3218
- addVideoMiddleware(videoMiddleware: VideoMiddleware): Promise<ResponseStatus>;
3219
- removeVideoMiddleware(videoMiddleware: VideoMiddleware): Promise<ResponseStatus>;
3220
- removeAllVideoMiddlewares(): Promise<ResponseStatus>;
3221
- setVideoMiddlewareGlobalConfig(config: VideoMiddlewareGlobalConfig): Promise<void>;
3222
- destruct(): void;
3223
- onDeviceChange(changedDevices: {
3224
- added: MediaDeviceInfo[];
3225
- removed: MediaDeviceInfo[];
3226
- devices: MediaDeviceInfo[];
3227
- }, skipDeviceChange: boolean): Promise<void>;
3228
- removeAllTracks(): void;
3229
- removeAudioTrack(): void;
3230
- removeVideoTrack(): void;
3231
- removeDocumentEventListeners(): Promise<void>;
3494
+ type ParticipantMapEvents = {
3495
+ ['participantJoined']: (payload: Participant) => void;
3496
+ ['participantLeft']: (payload: Participant) => void;
3497
+ ['participantsCleared']: () => void;
3498
+ ['participantsUpdate']: () => void;
3499
+ ['kicked']: (payload: {
3500
+ id: string;
3501
+ }) => void;
3502
+ };
3503
+ declare class ParticipantMap<T extends Pick<Participant, 'id' | keyof TypedEventEmitter$1<ParticipantEvents>> = Participant> extends ClientMap<ParticipantEvents, T, ParticipantMapEvents> {
3504
+ constructor(logger: Logger, options?: MapEvents<ParticipantMapEvents>);
3505
+ add(participant: T, emitEvent?: boolean): this;
3506
+ clear(emitEvent?: boolean, removeListeners?: boolean): void;
3507
+ delete(participantId: string, emitEvent?: boolean, removeListeners?: boolean): boolean;
3232
3508
  }
3233
3509
 
3234
- declare enum MediaPermission {
3235
- NOT_REQUESTED = 0,
3236
- ACCEPTED = 1,
3237
- DENIED = 2,
3238
- CANCELED = 3,
3239
- SYSTEM_DENIED = 4,
3240
- COULD_NOT_START = 5,
3241
- NO_DEVICES_AVAILABLE = 6
3510
+ type StageSocketMessage = GetStageRequestsResponse | GetStagePeersResponse | DenyStageAccessRequest | PeerStatusUpdate;
3511
+ declare class StageSocketHandler {
3512
+ constructor(socketService: SocketService);
3513
+ getStageRequests(): Promise<GetStageRequestsResponse>;
3514
+ requestAccess(): void;
3515
+ cancelRequestAccess(): void;
3516
+ grantAccess(userIds: string[]): Promise<void>;
3517
+ denyAccess(userIds: string[]): Promise<void>;
3518
+ joinStage(): Promise<{
3519
+ id: string;
3520
+ payload: Uint8Array;
3521
+ }>;
3522
+ leaveStage(userId: string): Promise<{
3523
+ id: string;
3524
+ payload: Uint8Array;
3525
+ }>;
3526
+ kick(userIds: string[]): Promise<{
3527
+ id: string;
3528
+ payload: Uint8Array;
3529
+ }>;
3530
+ on(event: number, handler: (socketMessage: StageSocketMessage, messageId?: string) => void): void;
3531
+ getPeerInfo(peerId: string): Promise<PeerInfoResponse>;
3242
3532
  }
3243
3533
 
3244
- type AudioMiddleware = (audioContext: AudioContext) => Promise<ScriptProcessorNode | AudioWorkletNode>;
3245
-
3246
- type VideoMiddleware = (() => Promise<(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D) => Promise<void>>) | ((helpers: {
3247
- canvas: HTMLCanvasElement;
3248
- WorkerTimers: typeof WorkerTimers;
3249
- }) => Promise<void>);
3250
- type VideoMiddlewareGlobalConfig = {
3251
- disablePerFrameCanvasRendering: boolean;
3252
- };
3253
-
3254
- type PresetMediaConstraints = PresetV2CamelCased['config']['media'];
3255
- type AudioQualityConstraints = {
3256
- echoCancellation?: boolean;
3257
- noiseSupression?: boolean;
3258
- autoGainControl?: boolean;
3259
- enableStereo?: boolean;
3260
- enableHighBitrate?: boolean;
3261
- };
3262
- type VideoQualityConstraints = {
3263
- width: {
3264
- ideal: number;
3265
- };
3266
- height: {
3267
- ideal: number;
3268
- };
3269
- frameRate?: {
3270
- ideal: number;
3271
- };
3534
+ type StageStatus = 'OFF_STAGE' | 'REQUESTED_TO_JOIN_STAGE' | 'ACCEPTED_TO_JOIN_STAGE' | 'ON_STAGE';
3535
+ interface StageRequestPayload {
3536
+ displayName: string;
3537
+ userId: string;
3538
+ peerId: string;
3539
+ }
3540
+ type StageEvents = {
3541
+ ['stageAccessRequestUpdate']: (requests?: StageRequestPayload[]) => void;
3542
+ ['stageStatusUpdate']: (status: StageStatus) => void;
3543
+ ['newStageRequest']: (payload: {
3544
+ count: number;
3545
+ }) => void;
3546
+ ['stageRequestApproved']: () => void;
3547
+ ['stageRequestRejected']: () => void;
3548
+ ['*']: (eventName: string, ...args: any[]) => void;
3272
3549
  };
3273
- type ScreenshareQualityConstraints = {
3274
- width?: {
3275
- max: number;
3550
+ declare class Stage extends TypedEventEmitter$1<StageEvents> {
3551
+ get telemetry(): Telemetry;
3552
+ constructor(context: Context<ContextState>, self: Self, participants: Participants, stageSocketHandler: StageSocketHandler, roomSocketHandler: RoomSocketHandler);
3553
+ get status(): StageStatus;
3554
+ private setupEvents;
3555
+ getAccessRequests(): {
3556
+ stageRequests: StageRequestPayload[];
3276
3557
  };
3277
- height?: {
3278
- max: number;
3558
+ requestAccess(): Promise<void>;
3559
+ cancelRequestAccess(): Promise<void>;
3560
+ grantAccess(userIds: string[]): Promise<void>;
3561
+ denyAccess(userIds: string[]): Promise<void>;
3562
+ get peerId(): string;
3563
+ join(): Promise<void>;
3564
+ leave(): Promise<void>;
3565
+ kick(userIds: string[]): Promise<{
3566
+ id: string;
3567
+ payload: Uint8Array;
3568
+ }>;
3569
+ }
3570
+
3571
+ declare const modes: readonly ["ACTIVE_GRID", "PAGINATED", "MANUAL"];
3572
+ type ViewMode = (typeof modes)[number];
3573
+ interface BroadcastMessagePayload {
3574
+ [key: string]: boolean | number | string | Date | ActiveTab;
3575
+ }
3576
+ interface PeerProducerConfig {
3577
+ audio: boolean;
3578
+ video: boolean;
3579
+ screenshareAudio: boolean;
3580
+ screenshareVideo: boolean;
3581
+ }
3582
+ type BroadcastMessageTarget = {
3583
+ participantIds: string[];
3584
+ } | {
3585
+ presetNames: string[];
3586
+ } | {
3587
+ meetingIds: string[];
3588
+ };
3589
+ type JoinedPeer = {
3590
+ id: string;
3591
+ userId: string;
3592
+ name: string;
3593
+ stageType?: StageStatus;
3594
+ customParticipantId?: string;
3595
+ presetId?: string;
3596
+ picture?: string;
3597
+ waitlisted: boolean;
3598
+ recorderType?: string;
3599
+ stageStatus?: StageStatus;
3600
+ metadata?: {
3601
+ preset_name?: string;
3279
3602
  };
3280
- frameRate?: {
3281
- ideal: number;
3282
- max: number;
3603
+ flags?: {
3604
+ hiddenParticipant?: boolean;
3605
+ recorder?: boolean;
3283
3606
  };
3284
- displaySurface?: 'window' | 'monitor' | 'browser';
3285
- selfBrowserSurface?: 'include' | 'exclude';
3286
3607
  };
3287
- interface RTKMediaTrackConstraints extends MediaTrackConstraints {
3288
- optional?: Array<object>;
3289
- }
3290
- interface RTKMediaStreamConstraints extends MediaStreamConstraints {
3291
- audio?: boolean | RTKMediaTrackConstraints;
3292
- }
3293
- type MediaConstraints = {
3294
- audio?: AudioQualityConstraints;
3295
- video?: MediaVideoQualityType | VideoQualityConstraints;
3296
- screenshare?: ScreenshareQualityConstraints;
3608
+ type ParticipantsEvents = {
3609
+ ['viewModeChanged']: (payload: {
3610
+ viewMode: string;
3611
+ currentPage: number;
3612
+ pageCount: number;
3613
+ }) => void;
3614
+ ['activeSpeaker']: (payload: {
3615
+ peerId: string;
3616
+ volume: number;
3617
+ }) => void;
3618
+ ['broadcastedMessage']: (payload: {
3619
+ type: string;
3620
+ payload: BroadcastMessagePayload;
3621
+ timestamp: number;
3622
+ }) => void;
3623
+ ['poorConnection']: (payload: {
3624
+ participantId: string;
3625
+ score: number;
3626
+ kind: string;
3627
+ }) => void;
3628
+ ['pageChanged']: (payload: {
3629
+ viewMode: string;
3630
+ currentPage: number;
3631
+ pageCount: number;
3632
+ }) => void;
3633
+ ['mediaScoreUpdate']: (payload: {
3634
+ kind: string;
3635
+ isScreenshare: boolean;
3636
+ score: number;
3637
+ participantId: string;
3638
+ scoreStats: ConsumerScoreStats;
3639
+ }) => void;
3640
+ ['media_decode_error']: (payload: {
3641
+ reason: string;
3642
+ code: '1702' | '1703';
3643
+ }) => void;
3644
+ ['*']: (event: string, ...args: any[]) => void;
3297
3645
  };
3298
-
3299
- type PresetV2CamelCased = {
3300
- config: {
3301
- viewType: ViewType;
3302
- media: {
3303
- audio: {
3304
- enableStereo: boolean;
3305
- enableHighBitrate: boolean;
3306
- };
3307
- video: {
3308
- quality: MediaVideoQualityType;
3309
- frameRate: number;
3310
- };
3311
- screenshare: {
3312
- quality: MediaScreenShareQualityType;
3313
- frameRate: number;
3314
- };
3315
- };
3316
- livestreamViewerQualities: LivestreamViewerMediaQualityType[];
3317
- maxVideoStreams: {
3318
- mobile: number;
3319
- desktop: number;
3320
- };
3321
- maxScreenshareCount: number;
3646
+ declare class Participants extends TypedEventEmitter$1<ParticipantsEvents> {
3647
+ readonly waitlisted: Readonly<ParticipantMap<Omit<Participant, 'audioTrack' | 'videoTrack' | 'screenShareTracks'>>>;
3648
+ readonly joined: Readonly<ParticipantMap>;
3649
+ readonly active: Readonly<ParticipantMap>;
3650
+ readonly videoSubscribed: Readonly<ParticipantMap>;
3651
+ readonly audioSubscribed: Readonly<ParticipantMap>;
3652
+ readonly pinned: Readonly<ParticipantMap>;
3653
+ readonly all: Readonly<BasicParticipantsMap>;
3654
+ get pip(): Pip;
3655
+ rateLimitConfig: {
3656
+ maxInvocations: number;
3657
+ period: number;
3322
3658
  };
3323
- permissions: {
3324
- acceptWaitingRequests: boolean;
3325
- canAcceptProductionRequests: boolean;
3326
- canEditDisplayName: boolean;
3327
- canRecord: boolean;
3328
- canLivestream: boolean;
3329
- canSpotlight?: boolean;
3330
- disableParticipantAudio: boolean;
3331
- disableParticipantScreensharing: boolean;
3332
- disableParticipantVideo: boolean;
3333
- kickParticipant: boolean;
3334
- pinParticipant: boolean;
3335
- plugins: {
3336
- canClose: boolean;
3337
- canStart: boolean;
3338
- canEditConfig?: boolean;
3339
- config: {
3340
- [pluginId: string]: Partial<{
3341
- accessControl: PluginAccessControls.FULL_ACCESS | PluginAccessControls.VIEW_ONLY;
3342
- disabled: boolean;
3343
- handlesViewOnly: boolean;
3344
- }>;
3345
- };
3659
+ get rateLimits(): {
3660
+ maxInvocations: number;
3661
+ period: number;
3662
+ };
3663
+ updateRateLimits(num: number, period: number): void;
3664
+ get telemetry(): Telemetry;
3665
+ viewMode: ViewMode;
3666
+ currentPage: number;
3667
+ lastActiveSpeaker: string;
3668
+ selectedPeers: SelectedPeers;
3669
+ constructor(context: Context<ContextState>, self: Self, roomSocketHandler: RoomSocketHandler);
3670
+ setupEvents(): void;
3671
+ get count(): number;
3672
+ get maxActiveParticipantsCount(): number;
3673
+ setMaxActiveParticipantsCount(limit: number): void;
3674
+ get pageCount(): number;
3675
+ acceptWaitingRoomRequest(id: string): void;
3676
+ acceptAllWaitingRoomRequest(userIds: string[]): Promise<void>;
3677
+ rejectWaitingRoomRequest(id: string): Promise<void>;
3678
+ setViewMode(viewMode: ViewMode): Promise<void>;
3679
+ subscribe(peerIds: string[], kinds?: ('audio' | 'video' | 'screenshareAudio' | 'screenshareVideo')[]): Promise<void>;
3680
+ unsubscribe(peerIds: string[], kinds?: ('audio' | 'video' | 'screenshareAudio' | 'screenshareVideo')[]): Promise<void>;
3681
+ getPeerIdsForCurrentPage(): string[];
3682
+ setPage(page: number): Promise<void>;
3683
+ disableAllAudio(allowUnmute: boolean): Promise<void>;
3684
+ disableAllVideo(): Promise<void>;
3685
+ disableAudio(participantId: string): Promise<void>;
3686
+ disableVideo(participantId: string): Promise<void>;
3687
+ kick(participantId: string): Promise<void>;
3688
+ kickAll(): Promise<void>;
3689
+ broadcastMessage(type: Exclude<string, 'spotlight'>, payload: BroadcastMessagePayload, target?: BroadcastMessageTarget): Promise<void>;
3690
+ getAllJoinedPeers(searchQuery: string, limit: number, offset: number): Promise<{
3691
+ id: string;
3692
+ userId: string;
3693
+ name: string;
3694
+ displayName: string;
3695
+ stageType: StageStatus;
3696
+ customParticipantId: string;
3697
+ presetId: string;
3698
+ picture: string;
3699
+ waitlisted: boolean;
3700
+ stageStatus: StageStatus;
3701
+ metadata: {
3702
+ preset_name: string;
3346
3703
  };
3347
- waitingRoomType: WaitingRoomTypes;
3348
- polls: {
3349
- canCreate: boolean;
3350
- canVote: boolean;
3351
- canView: boolean;
3704
+ recorderType: string;
3705
+ flags: {
3706
+ hiddenParticipant: boolean;
3707
+ hidden_participant: boolean;
3708
+ recorder: boolean;
3352
3709
  };
3353
- media: {
3354
- video: {
3355
- canProduce: MediaProductionPermissionType;
3356
- };
3357
- audio: {
3358
- canProduce: MediaProductionPermissionType;
3359
- };
3360
- screenshare: {
3361
- canProduce: MediaProductionPermissionType;
3362
- };
3710
+ }[]>;
3711
+ updatePermissions(participantIds: string[], permissions: PresetUpdates): Promise<void>;
3712
+ getParticipantsInMeetingPreJoin(): Promise<RoomPeersInfoResponse>;
3713
+ }
3714
+
3715
+ interface FetchRequestConfig {
3716
+ baseURL?: string;
3717
+ url?: string;
3718
+ method?: string;
3719
+ headers?: Record<string, string>;
3720
+ timeout?: number;
3721
+ retry?: number;
3722
+ retryDelay?: number;
3723
+ responseType?: string;
3724
+ data?: any;
3725
+ params?: Record<string, string>;
3726
+ }
3727
+ interface FetchResponse<T = any> {
3728
+ data: T;
3729
+ status: number;
3730
+ statusText: string;
3731
+ headers: Record<string, string>;
3732
+ config: FetchRequestConfig;
3733
+ }
3734
+ declare class FetchClient {
3735
+ defaults: {
3736
+ baseURL: string;
3737
+ headers: {
3738
+ common: Record<string, string>;
3363
3739
  };
3364
- chat: {
3365
- public: {
3366
- canSend: boolean;
3367
- text: boolean;
3368
- files: boolean;
3369
- };
3370
- private?: {
3371
- canSend: boolean;
3372
- canReceive: boolean;
3373
- text: boolean;
3374
- files: boolean;
3375
- };
3376
- channel?: {
3377
- canCreate: 'NONE' | 'PRIVATE' | 'PUBLIC' | 'ALL';
3378
- canDelete: 'NONE' | 'PRIVATE' | 'PUBLIC' | 'ALL';
3379
- canUpdate: 'NONE' | 'PRIVATE' | 'PUBLIC' | 'ALL';
3380
- canReadAll: boolean;
3381
- };
3382
- message?: {
3740
+ timeout: number;
3741
+ retry: number;
3742
+ retryDelay: number;
3743
+ };
3744
+ constructor(options: {
3745
+ baseURL: string;
3746
+ timeout: number;
3747
+ retry: number;
3748
+ retryDelay: number;
3749
+ responseType?: string;
3750
+ });
3751
+ private buildURL;
3752
+ request<T = any>(config: FetchRequestConfig): Promise<FetchResponse<T>>;
3753
+ get<T = any>(url: string, config?: FetchRequestConfig): Promise<FetchResponse<T>>;
3754
+ post<T = any>(url: string, data?: any, config?: FetchRequestConfig): Promise<FetchResponse<T>>;
3755
+ put<T = any>(url: string, data?: any, config?: FetchRequestConfig): Promise<FetchResponse<T>>;
3756
+ }
3757
+
3758
+ interface ResponseStatus {
3759
+ success: boolean;
3760
+ message: string;
3761
+ }
3762
+
3763
+ type MediaPermission$1 = 'NOT_REQUESTED' | 'ACCEPTED' | 'DENIED' | 'SYSTEM_DENIED' | 'COULD_NOT_START' | 'NO_DEVICES_AVAILABLE' | 'CANCELED';
3764
+
3765
+ declare class LocalMediaHandler extends CustomEventEmitter<LocalMediaEvents> {
3766
+ get telemetry(): Telemetry;
3767
+ audioUpdateInProgress: boolean;
3768
+ videoUpdateInProgress: boolean;
3769
+ constructor(context: Context<ContextState>, mediaConstraints: MediaConstraints, isNonPreferredDevice?: (media: MediaDeviceInfo) => boolean, autoSwitchDevice?: boolean);
3770
+ set context(context: Context<ContextState>);
3771
+ private onVisibilityChange;
3772
+ repopulateAvailableDevices(): Promise<boolean>;
3773
+ setupStreams({ audio, video, }: {
3774
+ audio: boolean;
3775
+ video: boolean;
3776
+ }): Promise<void>;
3777
+ getCurrentDevices(): {
3778
+ audio: MediaDeviceInfo;
3779
+ video: MediaDeviceInfo;
3780
+ speaker: MediaDeviceInfo;
3781
+ };
3782
+ get permissions(): {
3783
+ audio?: MediaPermission$1;
3784
+ video?: MediaPermission$1;
3785
+ screenshare?: MediaPermission$1;
3786
+ };
3787
+ getAllDevices(): Promise<InputDeviceInfo[]>;
3788
+ getDeviceById(deviceId: string, kind?: 'audioinput' | 'audiooutput' | 'videoinput'): Promise<MediaDeviceInfo>;
3789
+ private onAudioTrackMuted;
3790
+ private onAudioTrackChanged;
3791
+ get rawAudioTrack(): MediaStreamTrack;
3792
+ get audioTrack(): MediaStreamTrack;
3793
+ get audioEnabled(): boolean;
3794
+ enableAudio(customTrack?: MediaStreamTrack): Promise<void>;
3795
+ disableAudio(): void;
3796
+ getAudioDevices(devices?: MediaDeviceInfo[]): Promise<MediaDeviceInfo[]>;
3797
+ setAudioDevice(device: MediaDeviceInfo): Promise<void>;
3798
+ setupSpeaker(): Promise<void>;
3799
+ setSpeakerDevice(device: MediaDeviceInfo): Promise<void>;
3800
+ private onVideoTrackChanged;
3801
+ private onVideoTrackEnded;
3802
+ get rawVideoTrack(): MediaStreamTrack;
3803
+ get videoTrack(): MediaStreamTrack;
3804
+ get videoEnabled(): boolean;
3805
+ enableVideo(customTrack?: MediaStreamTrack): Promise<void>;
3806
+ disableVideo(): void;
3807
+ getVideoDevices(devices?: MediaDeviceInfo[]): Promise<MediaDeviceInfo[]>;
3808
+ setVideoDevice(device: MediaDeviceInfo): Promise<void>;
3809
+ updateVideoConstraints(resolution: VideoQualityConstraints): Promise<void>;
3810
+ private onScreenShareEnded;
3811
+ get screenShareTracks(): {
3812
+ audio: MediaStreamTrack;
3813
+ video: MediaStreamTrack;
3814
+ };
3815
+ get screenShareEnabled(): boolean;
3816
+ enableScreenShare(): Promise<void>;
3817
+ disableScreenShare(): Promise<void>;
3818
+ updateScreenshareConstraints(resolution: VideoQualityConstraints): Promise<void>;
3819
+ getSpeakerDevices(devices?: MediaDeviceInfo[]): Promise<MediaDeviceInfo[]>;
3820
+ addAudioMiddleware(audioMiddleware: AudioMiddleware): Promise<ResponseStatus>;
3821
+ removeAudioMiddleware(audioMiddleware: AudioMiddleware): Promise<ResponseStatus>;
3822
+ removeAllAudioMiddlewares(): Promise<ResponseStatus>;
3823
+ addVideoMiddleware(videoMiddleware: VideoMiddleware): Promise<ResponseStatus>;
3824
+ removeVideoMiddleware(videoMiddleware: VideoMiddleware): Promise<ResponseStatus>;
3825
+ removeAllVideoMiddlewares(): Promise<ResponseStatus>;
3826
+ setVideoMiddlewareGlobalConfig(config: VideoMiddlewareGlobalConfig): Promise<void>;
3827
+ destruct(): void;
3828
+ onDeviceChange(changedDevices: {
3829
+ added: MediaDeviceInfo[];
3830
+ removed: MediaDeviceInfo[];
3831
+ devices: MediaDeviceInfo[];
3832
+ }, skipDeviceChange: boolean): Promise<void>;
3833
+ removeAllTracks(): void;
3834
+ removeAudioTrack(): void;
3835
+ removeVideoTrack(): void;
3836
+ removeDocumentEventListeners(): Promise<void>;
3837
+ }
3838
+
3839
+ declare enum MediaPermission {
3840
+ NOT_REQUESTED = 0,
3841
+ ACCEPTED = 1,
3842
+ DENIED = 2,
3843
+ CANCELED = 3,
3844
+ SYSTEM_DENIED = 4,
3845
+ COULD_NOT_START = 5,
3846
+ NO_DEVICES_AVAILABLE = 6
3847
+ }
3848
+
3849
+ type AudioMiddleware = (audioContext: AudioContext) => Promise<ScriptProcessorNode | AudioWorkletNode>;
3850
+
3851
+ type VideoMiddleware = (() => Promise<(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D) => Promise<void>>) | ((helpers: {
3852
+ canvas: HTMLCanvasElement;
3853
+ WorkerTimers: typeof WorkerTimers;
3854
+ }) => Promise<void>);
3855
+ type VideoMiddlewareGlobalConfig = {
3856
+ disablePerFrameCanvasRendering: boolean;
3857
+ };
3858
+
3859
+ type PresetMediaConstraints = PresetV2CamelCased['config']['media'];
3860
+ type AudioQualityConstraints = {
3861
+ echoCancellation?: boolean;
3862
+ noiseSupression?: boolean;
3863
+ autoGainControl?: boolean;
3864
+ enableStereo?: boolean;
3865
+ enableHighBitrate?: boolean;
3866
+ };
3867
+ type VideoQualityConstraints = {
3868
+ width: {
3869
+ ideal: number;
3870
+ };
3871
+ height: {
3872
+ ideal: number;
3873
+ };
3874
+ frameRate?: {
3875
+ ideal: number;
3876
+ };
3877
+ };
3878
+ type ScreenshareQualityConstraints = {
3879
+ width?: {
3880
+ max: number;
3881
+ };
3882
+ height?: {
3883
+ max: number;
3884
+ };
3885
+ frameRate?: {
3886
+ ideal: number;
3887
+ max: number;
3888
+ };
3889
+ displaySurface?: 'window' | 'monitor' | 'browser';
3890
+ selfBrowserSurface?: 'include' | 'exclude';
3891
+ };
3892
+ interface ClientMediaTrackConstraints extends MediaTrackConstraints {
3893
+ optional?: Array<object>;
3894
+ }
3895
+ interface ClientMediaStreamConstraints extends MediaStreamConstraints {
3896
+ audio?: boolean | ClientMediaTrackConstraints;
3897
+ }
3898
+ type MediaConstraints = {
3899
+ audio?: AudioQualityConstraints;
3900
+ video?: MediaVideoQualityType | VideoQualityConstraints;
3901
+ screenshare?: ScreenshareQualityConstraints;
3902
+ };
3903
+
3904
+ type PresetV2CamelCased = {
3905
+ config: {
3906
+ viewType: ViewType;
3907
+ media: {
3908
+ audio: {
3909
+ enableStereo: boolean;
3910
+ enableHighBitrate: boolean;
3911
+ };
3912
+ video: {
3913
+ quality: MediaVideoQualityType;
3914
+ frameRate: number;
3915
+ };
3916
+ screenshare: {
3917
+ quality: MediaScreenShareQualityType;
3918
+ frameRate: number;
3919
+ };
3920
+ };
3921
+ livestreamViewerQualities: LivestreamViewerMediaQualityType[];
3922
+ maxVideoStreams: {
3923
+ mobile: number;
3924
+ desktop: number;
3925
+ };
3926
+ maxScreenshareCount: number;
3927
+ };
3928
+ permissions: {
3929
+ acceptWaitingRequests: boolean;
3930
+ canAcceptProductionRequests: boolean;
3931
+ canEditDisplayName: boolean;
3932
+ canRecord: boolean;
3933
+ canLivestream: boolean;
3934
+ canSpotlight?: boolean;
3935
+ disableParticipantAudio: boolean;
3936
+ disableParticipantScreensharing: boolean;
3937
+ disableParticipantVideo: boolean;
3938
+ kickParticipant: boolean;
3939
+ pinParticipant: boolean;
3940
+ plugins: {
3941
+ canClose: boolean;
3942
+ canStart: boolean;
3943
+ canEditConfig?: boolean;
3944
+ config: {
3945
+ [pluginId: string]: Partial<{
3946
+ accessControl: PluginAccessControls.FULL_ACCESS | PluginAccessControls.VIEW_ONLY;
3947
+ disabled: boolean;
3948
+ handlesViewOnly: boolean;
3949
+ }>;
3950
+ };
3951
+ };
3952
+ waitingRoomType: WaitingRoomTypes;
3953
+ polls: {
3954
+ canCreate: boolean;
3955
+ canVote: boolean;
3956
+ canView: boolean;
3957
+ };
3958
+ media: {
3959
+ video: {
3960
+ canProduce: MediaProductionPermissionType;
3961
+ };
3962
+ audio: {
3963
+ canProduce: MediaProductionPermissionType;
3964
+ };
3965
+ screenshare: {
3966
+ canProduce: MediaProductionPermissionType;
3967
+ };
3968
+ };
3969
+ chat: {
3970
+ public: {
3971
+ canSend: boolean;
3972
+ text: boolean;
3973
+ files: boolean;
3974
+ };
3975
+ private?: {
3976
+ canSend: boolean;
3977
+ canReceive: boolean;
3978
+ text: boolean;
3979
+ files: boolean;
3980
+ };
3981
+ channel?: {
3982
+ canCreate: 'NONE' | 'PRIVATE' | 'PUBLIC' | 'ALL';
3983
+ canDelete: 'NONE' | 'PRIVATE' | 'PUBLIC' | 'ALL';
3984
+ canUpdate: 'NONE' | 'PRIVATE' | 'PUBLIC' | 'ALL';
3985
+ canReadAll: boolean;
3986
+ };
3987
+ message?: {
3383
3988
  canDelete: 'NONE' | 'SELF' | 'ALL';
3384
3989
  canEdit: 'NONE' | 'SELF' | 'ALL';
3385
3990
  deleteCutoffTimeSeconds: number;
@@ -3440,11 +4045,11 @@ type PresetV2CamelCased = {
3440
4045
  name?: string;
3441
4046
  };
3442
4047
  type MaxVideoStreams = PresetV2CamelCased['config']['maxVideoStreams'];
3443
- declare class RTKThemePreset$1 {
4048
+ declare class ThemePreset {
3444
4049
  private constructor();
3445
- static fromResponse(preset: PresetV2CamelCased): RTKThemePreset$1;
3446
- static default(): RTKThemePreset$1;
3447
- static init(preset?: PresetV2CamelCased, useDefault?: boolean): RTKThemePreset$1;
4050
+ static fromResponse(preset: PresetV2CamelCased): ThemePreset;
4051
+ static default(): ThemePreset;
4052
+ static init(preset?: PresetV2CamelCased, useDefault?: boolean): ThemePreset;
3448
4053
  get setupScreen(): Readonly<{
3449
4054
  isEnabled: boolean;
3450
4055
  }>;
@@ -3489,7 +4094,6 @@ declare class RTKThemePreset$1 {
3489
4094
  }
3490
4095
 
3491
4096
  type PresetPermissions = PresetV2CamelCased['permissions'];
3492
- type MediaRoomType = 'HIVE' | 'CF';
3493
4097
  type PermissionEvents = {
3494
4098
  ['chatUpdate']: () => void;
3495
4099
  ['pollsUpdate']: () => void;
@@ -3497,12 +4101,13 @@ type PermissionEvents = {
3497
4101
  ['permissionsUpdate']: (patch: PresetUpdates) => void;
3498
4102
  ['*']: () => void;
3499
4103
  };
3500
- declare class RTKPermissionsPreset$1 extends RTKTypedEventEmitter<PermissionEvents> {
4104
+ declare class PermissionPreset extends TypedEventEmitter$1<PermissionEvents> {
3501
4105
  private constructor();
3502
- static fromResponse(response: PresetPermissions, viewType: ViewType, context: Context<RTKContextState>): RTKPermissionsPreset$1;
3503
- static default(context: Context<RTKContextState>, viewType: ViewType): RTKPermissionsPreset$1;
3504
- static init(context: Context<RTKContextState>, viewType: ViewType, response?: PresetPermissions): RTKPermissionsPreset$1;
3505
- get mediaRoomType(): Readonly<MediaRoomType>;
4106
+ private setupEvents;
4107
+ static fromResponse(response: PresetPermissions, viewType: ViewType, context: Context<ContextState>): PermissionPreset;
4108
+ static default(context: Context<ContextState>, viewType: ViewType): PermissionPreset;
4109
+ static init(context: Context<ContextState>, viewType: ViewType, response?: PresetPermissions): PermissionPreset;
4110
+ get mediaRoomType(): string;
3506
4111
  get stageEnabled(): Readonly<boolean>;
3507
4112
  get acceptStageRequests(): Readonly<boolean>;
3508
4113
  get stageAccess(): Readonly<MediaProductionPermissionType>;
@@ -3548,603 +4153,34 @@ declare class RTKPermissionsPreset$1 extends RTKTypedEventEmitter<PermissionEven
3548
4153
  get canLivestream(): Readonly<boolean>;
3549
4154
  get transcriptionEnabled(): Readonly<boolean>;
3550
4155
  }
3551
-
3552
- interface UserDetailsResponseV2 {
3553
- participant: UserDetailsResponse;
3554
- preset: PresetV2CamelCased;
3555
- }
3556
- type LeaveRoomState = 'kicked' | 'ended' | 'left' | 'rejected' | 'connected-meeting' | 'disconnected' | 'failed' | 'stageLeft';
3557
- declare class SelfController {
3558
- readonly self: RTKSelf$1;
3559
- readonly authToken: string;
3560
- get peerId(): string;
3561
- viewType: ViewType;
3562
- get telemetry(): RTKTelemetry;
3563
- get logger(): RTKLogger$1;
3564
- get mediaJoined(): boolean;
3565
- private constructor();
3566
- static init(context: Context<RTKContextState>, roomSocketHandler: RoomSocketHandler, participant: UserDetailsResponseV2['participant'], permissions: RTKPermissionsPreset$1, theme: RTKThemePreset$1): Promise<SelfController>;
3567
- shareMediaTracks(): Promise<void>;
3568
- resetSelf(shouldAutoJoin: boolean): Promise<void>;
3569
- joinRoom(reconnected?: boolean): Promise<void>;
3570
- leaveRoom(state?: LeaveRoomState): Promise<void>;
3571
- }
3572
-
3573
- declare class RTKSelfMedia$1 extends RTKTypedEventEmitter<SelfEvents> {
3574
- get peerId(): string;
3575
- init(options?: {
3576
- video?: boolean;
3577
- audio?: boolean;
3578
- constraints?: MediaConstraints;
3579
- }, skipAwaits?: boolean, context?: Context<RTKContextState>): Promise<void>;
3580
- set context(context: Context<RTKContextState>);
3581
- get audioTrack(): MediaStreamTrack;
3582
- get rawAudioTrack(): MediaStreamTrack;
3583
- get mediaPermissions(): {
3584
- audio?: MediaPermission$1;
3585
- video?: MediaPermission$1;
3586
- screenshare?: MediaPermission$1;
3587
- };
3588
- addAudioMiddleware(audioMiddleware: AudioMiddleware): Promise<{
3589
- success: boolean;
3590
- message: string;
3591
- }>;
3592
- removeAudioMiddleware(audioMiddleware: AudioMiddleware): Promise<{
3593
- success: boolean;
3594
- message: string;
3595
- }>;
3596
- removeAllAudioMiddlewares(): Promise<{
3597
- success: boolean;
3598
- message: string;
3599
- }>;
3600
- get videoTrack(): MediaStreamTrack;
3601
- get rawVideoTrack(): MediaStreamTrack;
3602
- addVideoMiddleware(videoMiddleware: VideoMiddleware): Promise<{
3603
- success: boolean;
3604
- message: string;
3605
- }>;
3606
- setVideoMiddlewareGlobalConfig(config?: VideoMiddlewareGlobalConfig): Promise<void>;
3607
- removeVideoMiddleware(videoMiddleware: VideoMiddleware): Promise<{
3608
- success: boolean;
3609
- message: string;
3610
- }>;
3611
- removeAllVideoMiddlewares(): Promise<{
3612
- success: boolean;
3613
- message: string;
3614
- }>;
3615
- get screenShareTracks(): {
3616
- audio: MediaStreamTrack;
3617
- video: MediaStreamTrack;
3618
- };
3619
- get audioEnabled(): boolean;
3620
- get videoEnabled(): boolean;
3621
- get screenShareEnabled(): boolean;
3622
- enableAudio(): Promise<void>;
3623
- enableVideo(): Promise<void>;
3624
- disableAudio(): Promise<void>;
3625
- enableScreenShare(): Promise<void>;
3626
- disableScreenShare(): Promise<void>;
3627
- disableVideo(): Promise<void>;
3628
- getCurrentDevices(): {
3629
- audio: MediaDeviceInfo;
3630
- video: MediaDeviceInfo;
3631
- speaker: MediaDeviceInfo;
3632
- };
3633
- getAudioDevices(): Promise<MediaDeviceInfo[]>;
3634
- getVideoDevices(): Promise<MediaDeviceInfo[]>;
3635
- getSpeakerDevices(): Promise<MediaDeviceInfo[]>;
3636
- getDeviceById(deviceId: string, kind: 'audio' | 'video' | 'speaker'): Promise<MediaDeviceInfo>;
3637
- setDevice(device: MediaDeviceInfo): Promise<void>;
3638
- }
3639
-
3640
- interface UserDetailsResponse {
3641
- id: string;
3642
- name: string;
3643
- email: string;
3644
- picture?: string;
3645
- loggedIn?: boolean;
3646
- scope?: string[];
3647
- clientSpecificId?: string;
3648
- customParticipantId?: string;
3649
- organizationId?: string;
3650
- }
3651
- declare class RTKSelf$1 extends RTKSelfMedia$1 {
3652
- name: string;
3653
- picture: string;
3654
- customParticipantId: string;
3655
- waitlistStatus: 'accepted' | 'waiting' | 'rejected' | 'none';
3656
- role: any;
3657
- userId: string;
3658
- organizationId: string;
3659
- supportsRemoteControl: boolean;
3660
- device: DeviceConfig;
3661
- get telemetry(): RTKTelemetry;
3662
- hidden: boolean;
3663
- get stageStatus(): StageStatus;
3664
- get id(): string;
3665
- get peerId(): string;
3666
- presetName: string;
3667
- roomState: 'init' | 'joined' | 'waitlisted' | LeaveRoomState;
3668
- private constructor();
3669
- static __init__(context: Context<RTKContextState>, details: UserDetailsResponse, permissions: RTKPermissionsPreset$1, theme: RTKThemePreset$1, presetName: string, skipAwaits?: boolean): Promise<RTKSelf$1>;
3670
- cleanupEvents(): void;
3671
- get permissions(): RTKPermissionsPreset$1;
3672
- get config(): RTKThemePreset$1;
3673
- get roomJoined(): boolean;
3674
- setName(name: string): void;
3675
- setupTracks(options?: {
3676
- video?: boolean;
3677
- audio?: boolean;
3678
- forceReset?: boolean;
3679
- }): Promise<void>;
3680
- destructMediaHandler(): Promise<void>;
3681
- removeDocumentEventListeners(): Promise<void>;
3682
- enableAudio(customTrack?: MediaStreamTrack): Promise<void>;
3683
- enableVideo(customTrack?: MediaStreamTrack): Promise<void>;
3684
- updateVideoConstraints(resolution: VideoQualityConstraints): Promise<void>;
3685
- enableScreenShare(): Promise<void>;
3686
- updateScreenshareConstraints(resolution: VideoQualityConstraints): Promise<void>;
3687
- disableAudio(): Promise<void>;
3688
- disableVideo(): Promise<void>;
3689
- disableScreenShare(): Promise<void>;
3690
- getAllDevices(): Promise<InputDeviceInfo[]>;
3691
- setIsPinned(isPinned: boolean, emitEvent?: boolean): void;
3692
- get isPinned(): boolean;
3693
- pin(): Promise<void>;
3694
- unpin(): Promise<void>;
3695
- hide(): Promise<void>;
3696
- show(): void;
3697
- setDevice(device: MediaDeviceInfo): Promise<void>;
3698
- cleanUpTracks(): void;
3699
- playAudio(): Promise<void>;
3700
- registerVideoElement(videoElem: HTMLVideoElement, isPreview?: boolean): void;
3701
- deregisterVideoElement(videoElem?: HTMLVideoElement, isPreview?: boolean): void;
3702
- }
3703
-
3704
- interface RTKBasicParticipant {
3705
- userId: string;
3706
- name?: string;
3707
- picture?: string;
3708
- customParticipantId: string;
3709
- }
3710
- declare class RTKBasicParticipantsMap extends RTKEventEmitter<'participantsUpdate'> {
3711
- constructor(logger: RTKLogger$1);
3712
- __set(objId: string, obj: RTKBasicParticipant): Map<string, RTKBasicParticipant>;
3713
- __clear(): void;
3714
- get(objId: string): RTKBasicParticipant;
3715
- toArray(): RTKBasicParticipant[];
3716
- }
3717
-
3718
- type ChatChannelSocketMessage = GetChatChannelResponse;
3719
- interface ChatChannel {
3720
- id: string;
3721
- displayName: string;
3722
- memberIds: string[];
3723
- displayPictureUrl?: string;
3724
- visibility?: string;
3725
- isDirectMessage?: boolean;
3726
- latestMessage?: Message;
3727
- unreadCount: number;
3728
- }
3729
- interface UpdateChannelRequestPayload {
3730
- memberIds?: string[];
3731
- displayName?: string;
3732
- displayPictureUrl?: string;
3733
- visibility?: string;
3734
- }
3735
- declare class ChatChannelSocketHandler {
3736
- get telemetry(): RTKTelemetry;
3737
- get logger(): RTKLogger$1;
3738
- constructor(context: Context<RTKContextState>, socketService: SocketService);
3739
- createChannel(displayName: string, memberIds: string[], displayPictureUrl?: string, visibility?: string, isDirectMessage?: boolean): Promise<ChatChannel>;
3740
- updateChannel(channelId: string, payload: UpdateChannelRequestPayload): Promise<ChatChannel>;
3741
- static formatChannel(socketChannel: ChatChannel$1): ChatChannel;
3742
- getChannelMembers(channelId: string): Promise<RTKBasicParticipant[]>;
3743
- on(event: number, handler: (socketMessage: ChatChannelSocketMessage) => void): void;
3744
- }
3745
-
3746
- declare enum ChatMessageType {
3747
- TEXT = 0,
3748
- IMAGE = 1,
3749
- FILE = 2,
3750
- CUSTOM = 3
3751
- }
3752
- type ChatSocketMessage = SendChatMessageToRoomResponse | SendChatMessageToPeersResponse | EditChatMessageResponse | DeleteChatMessageResponse;
3753
- interface SearchFilters {
3754
- channelId?: string;
3755
- timestamp?: number;
3756
- size?: number;
3757
- reversed?: boolean;
3758
- }
3759
- declare class ChatSocketHandler {
3760
- get telemetry(): RTKTelemetry;
3761
- get logger(): RTKLogger$1;
3762
- constructor(context: Context<RTKContextState>, socketService: SocketService);
3763
- getChatMessages(): Promise<{
3764
- id: string;
3765
- payload: Uint8Array;
3766
- }>;
3767
- getChatMessagesPaginated(timeStamp: number, size: number, reversed: boolean, offset?: number, channelId?: string): Promise<GetPaginatedChatMessageRoomResponse>;
3768
- sendMessageToRoom(message: string, messageType: ChatMessageType): void;
3769
- sendMessageToPeers(message: string, messageType: ChatMessageType, peerIds: string[]): void;
3770
- sendMessageToChannel(message: string, messageType: ChatMessageType, channelId: string): void;
3771
- sendMessage(message: string, messageType: ChatMessageType, peerIds?: string[], channelId?: string): void;
3772
- editMessage(chatId: string, message: string, payloadType: ChatMessageType, channelId?: string, pinned?: boolean): Promise<ChatMessage>;
3773
- deleteMessage(chatId: string, channelId?: string): Promise<{
3774
- channelId?: string;
3775
- id: string;
3776
- }>;
3777
- searchMessages(query: string, filters: SearchFilters): Promise<ChatMessage[]>;
3778
- getAllChannels(): Promise<ChatChannel[]>;
3779
- markLastReadMessage(channelId: string, message: Message): Promise<string>;
3780
- setPinState(message: Message, pin: boolean): Promise<PinChatMessageResponse>;
3781
- on(event: number, handler: (socketMessage: ChatSocketMessage) => void): void;
3782
- }
3783
-
3784
- declare class RTKSelectedPeers {
3785
- constructor();
3786
- add(peerId: string, priority: number, context: Context<RTKContextState>): number;
3787
- delete(peerId: string, context: Context<RTKContextState>): void;
3788
- index(peerId: string): number;
3789
- get peers(): string[];
3790
- get compulsoryPeers(): string[];
3791
- get activeSpeakerPeers(): string[];
3792
- }
3793
-
3794
- type PipEvents = {
3795
- ['cameraToggled']: () => void;
3796
- ['micToggled']: () => void;
3797
- ['hangup']: () => void;
3798
- ['pipStarted']: () => void;
3799
- ['pipEnded']: () => void;
3800
- ['*']: (eventName: string, ...args: any[]) => void;
3801
- };
3802
- declare class RTKPip extends RTKTypedEventEmitter<PipEvents> {
3803
- private constructor();
3804
- static _init(context: Context<RTKContextState>, self: RTKSelf$1): Promise<RTKPip>;
3805
- overrideIcon(icon: 'handRaise' | 'pin', value: string): Promise<void>;
3806
- isSupported(): boolean;
3807
- get isActive(): boolean;
3808
- init({ height, width }?: {
3809
- height?: number;
3810
- width?: number;
3811
- }): void;
3812
- enableSource(source: string): void;
3813
- disableSource(source: string): void;
3814
- addSource(id: string, element: HTMLVideoElement, enabled: boolean, pinned?: boolean, displayText?: string, imageUrl?: string, handRaised?: boolean): void;
3815
- updateSource(id: string, source: any): void;
3816
- removeSource(id: string): void;
3817
- removePinnedSource(): void;
3818
- removeAllSources(): void;
3819
- enable(): void;
3820
- disable: (partial?: boolean) => void;
3821
- }
3822
-
3823
- type TranscriptionData = {
3824
- id: string;
3825
- name: string;
3826
- peerId: string;
3827
- userId: string;
3828
- customParticipantId: string;
3829
- transcript: string;
3830
- isPartialTranscript: boolean;
3831
- date: Date;
3832
- };
3833
- type AiEvents = {
3834
- ['transcript']: (t: TranscriptionData) => void;
3835
- ['*']: (event: string, ...args: any[]) => void;
3836
- };
3837
- declare class RTKAi extends RTKTypedEventEmitter<AiEvents> {
3838
- transcripts: TranscriptionData[];
3839
- get telemetry(): RTKTelemetry;
3840
- constructor(context: Context<RTKContextState>);
3841
- static init(context: Context<RTKContextState>, transcriptionEnabled: boolean): Promise<RTKAi>;
3842
- static parseTranscript(transcriptData: string, isPartialTranscript?: boolean): TranscriptionData | undefined;
3843
- static parseTranscripts(transcriptData: string): TranscriptionData[];
3844
- getActiveTranscript(): Promise<void>;
3845
- onTranscript(transcript: TranscriptionData): Promise<void>;
3846
- }
3847
-
3848
- type ActiveTabType = 'screenshare' | 'plugin';
3849
- interface ActiveTab {
3850
- type: ActiveTabType;
3851
- id: string;
3852
- }
3853
- declare enum TabChangeSource {
3854
- User = 0,
3855
- Meeting = 1
3856
- }
3857
- interface MediaConnectionUpdate {
3858
- transport: 'consuming' | 'producing';
3859
- state: `${TransportState}`;
3860
- reconnected: boolean;
3861
- }
3862
- type MetaEvents = {
3863
- ['mediaConnectionUpdate']: (payload: MediaConnectionUpdate) => void;
3864
- ['socketConnectionUpdate']: (state: SocketConnectionState) => void;
3865
- ['poorConnection']: (payload: {
3866
- score: number;
3867
- }) => void;
3868
- ['meetingStartTimeUpdate']: (payload: {
3869
- meetingStartedTimestamp: Date;
3870
- }) => void;
3871
- ['transcript']: (t: TranscriptionData) => void;
3872
- ['activeTabUpdate']: (tab: ActiveTab) => void;
3873
- ['selfTabUpdate']: (tab: ActiveTab) => void;
3874
- ['broadcastTabChangesUpdate']: (broadcastTabChanges: boolean) => void;
3875
- ['*']: (event: string, ...args: any[]) => void;
3876
- };
3877
- declare class RTKMeta$1 extends RTKTypedEventEmitter<MetaEvents> {
3878
- selfActiveTab: ActiveTab | undefined;
3879
- get socketState(): SocketConnectionState;
3880
- get mediaState(): MediaConnectionState;
3881
- broadcastTabChanges: boolean;
3882
- viewType: string;
3883
- meetingStartedTimestamp: Date;
3884
- meetingTitle: string;
3885
- sessionId: string;
3886
- constructor(context: Context<RTKContextState>, self: RTKSelf, viewType: string, roomSocketHandler: RoomSocketHandler, meetingTitle: string);
3887
- get meetingId(): string;
3888
- setBroadcastTabChanges(broadcastTabChanges: boolean): void;
3889
- setSelfActiveTab(spotlightTab: ActiveTab, tabChangeSource: TabChangeSource): void;
3890
- }
3891
-
3892
- interface RTKMapEvents<T extends EventMap$1> {
3893
- onAddEvent?: keyof T;
3894
- onDeleteEvent?: keyof T;
3895
- onClearEvent?: keyof T;
3896
- }
3897
- type ModifyPrependObject<T extends EventMap$1, U> = {
3898
- [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>;
3899
- } & {
3900
- ['*']: (event: String, ...args: any[]) => void;
3901
- };
3902
- declare class RTKMap<T extends (EventMap$1 & WildCardEvent<T>), U extends {
3903
- id: string;
3904
- } & RTKTypedEventEmitter<T>, V extends EventMap$1> extends Map<string, U> {
3905
- readonly onAddEvent: keyof V;
3906
- readonly onDeleteEvent: keyof V;
3907
- readonly onClearEvent: keyof V;
3908
- constructor(options: RTKMapEvents<V>, logger?: RTKLogger$1);
3909
- emit<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, ...args: Parameters<(V | ModifyPrependObject<T, U>)[E]>): boolean;
3910
- on<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, callback: (ModifyPrependObject<T, U> & V)[E]): RTKTypedEventEmitter<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3911
- "*": (event: String, ...args: any[]) => void;
3912
- } & V>;
3913
- addListener<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, callback: (ModifyPrependObject<T, U> & V)[E]): RTKTypedEventEmitter<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3914
- "*": (event: String, ...args: any[]) => void;
3915
- } & V>;
3916
- off<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, callback: (ModifyPrependObject<T, U> & V)[E]): RTKTypedEventEmitter<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3917
- "*": (event: String, ...args: any[]) => void;
3918
- } & V>;
3919
- once<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, callback: (ModifyPrependObject<T, U> & V)[E]): RTKTypedEventEmitter<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3920
- "*": (event: String, ...args: any[]) => void;
3921
- } & V>;
3922
- prependListener<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, callback: (ModifyPrependObject<T, U> & V)[E]): RTKTypedEventEmitter<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3923
- "*": (event: String, ...args: any[]) => void;
3924
- } & V>;
3925
- prependOnceListener<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, callback: (ModifyPrependObject<T, U> & V)[E]): RTKTypedEventEmitter<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3926
- "*": (event: String, ...args: any[]) => void;
3927
- } & V>;
3928
- removeListener<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E, callback: (ModifyPrependObject<T, U> & V)[E]): RTKTypedEventEmitter<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3929
- "*": (event: String, ...args: any[]) => void;
3930
- } & V>;
3931
- removeAllListeners<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event?: E): RTKTypedEventEmitter<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3932
- "*": (event: String, ...args: any[]) => void;
3933
- } & V>;
3934
- listeners<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E): Function[];
3935
- listenerCount<E extends StringKeyOf<ModifyPrependObject<T, U> & V>>(event: E): number;
3936
- getMaxListeners(): number;
3937
- setMaxListeners(n: number): RTKTypedEventEmitter<{ [K in keyof T]: (obj: U, ...args: Parameters<T[K]>) => ReturnType<T[K]>; } & {
3938
- "*": (event: String, ...args: any[]) => void;
3939
- } & V>;
3940
- eventNames(): (string | symbol)[];
3941
- add(obj: U, emitEvent?: boolean): this;
3942
- set(objId: string, obj: U, emitEvent?: boolean): this;
3943
- delete(objId: string, emitEvent?: boolean, removeListeners?: boolean): boolean;
3944
- clear(emitEvent?: boolean, removeListeners?: boolean): void;
3945
- toArray(): U[];
3946
- }
3947
-
3948
- type ParticipantMapEvents = {
3949
- ['participantJoined']: (payload: RTKParticipant$1) => void;
3950
- ['participantLeft']: (payload: RTKParticipant$1) => void;
3951
- ['participantsCleared']: () => void;
3952
- ['participantsUpdate']: () => void;
3953
- ['kicked']: (payload: {
3954
- id: string;
3955
- }) => void;
3956
- };
3957
- declare class RTKParticipantMap$1<T extends Pick<RTKParticipant$1, 'id' | keyof RTKTypedEventEmitter<ParticipantEvents>> = RTKParticipant$1> extends RTKMap<ParticipantEvents, T, ParticipantMapEvents> {
3958
- constructor(logger: RTKLogger, options?: RTKMapEvents<ParticipantMapEvents>);
3959
- add(participant: T, emitEvent?: boolean): this;
3960
- clear(emitEvent?: boolean, removeListeners?: boolean): void;
3961
- delete(participantId: string, emitEvent?: boolean, removeListeners?: boolean): boolean;
3962
- }
3963
-
3964
- declare const modes: readonly ["ACTIVE_GRID", "PAGINATED", "MANUAL"];
3965
- type ViewMode = (typeof modes)[number];
3966
- interface BroadcastMessagePayload {
3967
- [key: string]: boolean | number | string | Date | ActiveTab;
3968
- }
3969
- interface PeerProducerConfig {
3970
- audio: boolean;
3971
- video: boolean;
3972
- screenshareAudio: boolean;
3973
- screenshareVideo: boolean;
3974
- }
3975
- type BroadcastMessageTarget = {
3976
- participantIds: string[];
3977
- } | {
3978
- presetNames: string[];
3979
- } | {
3980
- meetingIds: string[];
3981
- };
3982
- type JoinedPeer = {
3983
- id: string;
3984
- userId: string;
3985
- name: string;
3986
- stageType?: StageStatus;
3987
- customParticipantId?: string;
3988
- presetId?: string;
3989
- picture?: string;
3990
- waitlisted: boolean;
3991
- recorderType?: string;
3992
- stageStatus?: StageStatus;
3993
- metadata?: {
3994
- preset_name?: string;
3995
- };
3996
- flags?: {
3997
- hiddenParticipant?: boolean;
3998
- recorder?: boolean;
3999
- };
4000
- };
4001
- type ParticipantsEvents = {
4002
- ['viewModeChanged']: (payload: {
4003
- viewMode: string;
4004
- currentPage: number;
4005
- pageCount: number;
4006
- }) => void;
4007
- ['activeSpeaker']: (payload: {
4008
- peerId: string;
4009
- volume: number;
4010
- }) => void;
4011
- ['broadcastedMessage']: (payload: {
4012
- type: string;
4013
- payload: BroadcastMessagePayload;
4014
- timestamp: number;
4015
- }) => void;
4016
- ['poorConnection']: (payload: {
4017
- participantId: string;
4018
- score: number;
4019
- kind: string;
4020
- }) => void;
4021
- ['pageChanged']: (payload: {
4022
- viewMode: string;
4023
- currentPage: number;
4024
- pageCount: number;
4025
- }) => void;
4026
- ['mediaScoreUpdate']: (payload: {
4027
- kind: string;
4028
- isScreenshare: boolean;
4029
- score: number;
4030
- participantId: string;
4031
- scoreStats: ConsumerScoreStats;
4032
- }) => void;
4033
- ['media_decode_error']: (payload: {
4034
- reason: string;
4035
- code: '1702' | '1703';
4036
- }) => void;
4037
- ['*']: (event: string, ...args: any[]) => void;
4038
- };
4039
- declare class RTKParticipants$1 extends RTKTypedEventEmitter<ParticipantsEvents> {
4040
- readonly waitlisted: Readonly<RTKParticipantMap$1<Omit<RTKParticipant$1, 'audioTrack' | 'videoTrack' | 'screenShareTracks'>>>;
4041
- readonly joined: Readonly<RTKParticipantMap$1>;
4042
- readonly active: Readonly<RTKParticipantMap$1>;
4043
- readonly videoSubscribed: Readonly<RTKParticipantMap$1>;
4044
- readonly audioSubscribed: Readonly<RTKParticipantMap$1>;
4045
- readonly pinned: Readonly<RTKParticipantMap$1>;
4046
- readonly all: Readonly<RTKBasicParticipantsMap>;
4047
- get pip(): RTKPip;
4048
- rateLimitConfig: {
4049
- maxInvocations: number;
4050
- period: number;
4051
- };
4052
- get rateLimits(): {
4053
- maxInvocations: number;
4054
- period: number;
4055
- };
4056
- updateRateLimits(num: number, period: number): void;
4057
- get telemetry(): RTKTelemetry;
4058
- viewMode: ViewMode;
4059
- currentPage: number;
4060
- lastActiveSpeaker: string;
4061
- selectedPeers: RTKSelectedPeers;
4062
- constructor(context: Context<RTKContextState>, self: RTKSelf$1, roomSocketHandler: RoomSocketHandler);
4063
- setupEvents(): void;
4064
- get count(): number;
4065
- get maxActiveParticipantsCount(): number;
4066
- setMaxActiveParticipantsCount(limit: number): void;
4067
- get pageCount(): number;
4068
- acceptWaitingRoomRequest(id: string): void;
4069
- acceptAllWaitingRoomRequest(userIds: string[]): Promise<void>;
4070
- rejectWaitingRoomRequest(id: string): Promise<void>;
4071
- setViewMode(viewMode: ViewMode): Promise<void>;
4072
- subscribe(peerIds: string[], kinds?: ('audio' | 'video' | 'screenshareAudio' | 'screenshareVideo')[]): Promise<void>;
4073
- unsubscribe(peerIds: string[], kinds?: ('audio' | 'video' | 'screenshareAudio' | 'screenshareVideo')[]): Promise<void>;
4074
- getPeerIdsForCurrentPage(): string[];
4075
- setPage(page: number): Promise<void>;
4076
- disableAllAudio(allowUnmute: boolean): Promise<void>;
4077
- disableAllVideo(): Promise<void>;
4078
- disableAudio(participantId: string): Promise<void>;
4079
- disableVideo(participantId: string): Promise<void>;
4080
- kick(participantId: string): Promise<void>;
4081
- kickAll(): Promise<void>;
4082
- broadcastMessage(type: Exclude<string, 'spotlight'>, payload: BroadcastMessagePayload, target?: BroadcastMessageTarget): Promise<void>;
4083
- getAllJoinedPeers(searchQuery: string, limit: number, offset: number): Promise<{
4084
- id: string;
4085
- userId: string;
4086
- name: string;
4087
- displayName: string;
4088
- stageType: StageStatus;
4089
- customParticipantId: string;
4090
- presetId: string;
4091
- picture: string;
4092
- waitlisted: boolean;
4093
- stageStatus: StageStatus;
4094
- metadata: {
4095
- preset_name: string;
4096
- };
4097
- recorderType: string;
4098
- flags: {
4099
- hiddenParticipant: boolean;
4100
- hidden_participant: boolean;
4101
- recorder: boolean;
4102
- };
4103
- }[]>;
4104
- updatePermissions(participantIds: string[], permissions: PresetUpdates): Promise<void>;
4105
- getParticipantsInMeetingPreJoin(): Promise<RoomPeersInfoResponse>;
4106
- }
4107
-
4108
- interface FetchRequestConfig {
4109
- baseURL?: string;
4110
- url?: string;
4111
- method?: string;
4112
- headers?: Record<string, string>;
4113
- timeout?: number;
4114
- retry?: number;
4115
- retryDelay?: number;
4116
- responseType?: string;
4117
- data?: any;
4118
- params?: Record<string, string>;
4119
- }
4120
- interface FetchResponse<T = any> {
4121
- data: T;
4122
- status: number;
4123
- statusText: string;
4124
- headers: Record<string, string>;
4125
- config: FetchRequestConfig;
4126
- }
4127
- declare class FetchClient {
4128
- defaults: {
4129
- baseURL: string;
4130
- headers: {
4131
- common: Record<string, string>;
4132
- };
4133
- timeout: number;
4134
- retry: number;
4135
- retryDelay: number;
4136
- };
4137
- constructor(options: {
4138
- baseURL: string;
4139
- timeout: number;
4140
- retry: number;
4141
- retryDelay: number;
4142
- responseType?: string;
4143
- });
4144
- request<T = any>(config: FetchRequestConfig): Promise<FetchResponse<T>>;
4145
- get<T = any>(url: string, config?: FetchRequestConfig): Promise<FetchResponse<T>>;
4146
- post<T = any>(url: string, data?: any, config?: FetchRequestConfig): Promise<FetchResponse<T>>;
4147
- put<T = any>(url: string, data?: any, config?: FetchRequestConfig): Promise<FetchResponse<T>>;
4156
+
4157
+ interface UserDetailsResponseV2 {
4158
+ participant: UserDetailsResponse;
4159
+ preset: PresetV2CamelCased;
4160
+ }
4161
+ type LeaveRoomState = 'kicked' | 'ended' | 'left' | 'rejected' | 'connected-meeting' | 'disconnected' | 'failed' | 'stageLeft';
4162
+ declare class SelfController {
4163
+ readonly self: Self;
4164
+ readonly authToken: string;
4165
+ get peerId(): string;
4166
+ viewType: ViewType;
4167
+ get telemetry(): Telemetry;
4168
+ get logger(): Logger;
4169
+ get mediaJoined(): boolean;
4170
+ private constructor();
4171
+ static init(context: Context<ContextState>, roomSocketHandler: RoomSocketHandler, participant: UserDetailsResponseV2['participant'], permissions: PermissionPreset, theme: ThemePreset): Promise<SelfController>;
4172
+ shareMediaTracks(): Promise<void>;
4173
+ private kickHandler;
4174
+ private waitlistedHandler;
4175
+ private waitlistAcceptHandler;
4176
+ private waitlistRejectedHandler;
4177
+ resetSelf(shouldAutoJoin: boolean): Promise<void>;
4178
+ private setupEvents;
4179
+ joinRoom(reconnected?: boolean): Promise<void>;
4180
+ leaveRoom(state?: LeaveRoomState): Promise<void>;
4181
+ private joinMediaRoom;
4182
+ private leaveMediaRoom;
4183
+ private cleanupSelf;
4148
4184
  }
4149
4185
 
4150
4186
  type LivestreamState = 'IDLE' | 'STARTING' | 'WAITING_ON_MANUAL_INGESTION' | 'LIVESTREAMING' | 'STOPPING';
@@ -4166,22 +4202,23 @@ type LivestreamResponse = {
4166
4202
  manualIngest: boolean;
4167
4203
  ingestionCredentials?: LivestreamIngestionCredentials;
4168
4204
  };
4169
- declare class RTKLivestream$1 extends RTKTypedEventEmitter<LivestreamEvents> {
4205
+ declare class Livestream extends TypedEventEmitter$1<LivestreamEvents> {
4170
4206
  state: LivestreamState;
4171
4207
  playbackUrl: string | undefined;
4172
4208
  ingestionCredentials: LivestreamIngestionCredentials;
4173
4209
  viewerCount: number;
4174
- get telemetry(): RTKTelemetry;
4175
- constructor(context: Context<RTKContextState>, self: RTKSelf);
4210
+ get telemetry(): Telemetry;
4211
+ constructor(context: Context<ContextState>, self: Self);
4176
4212
  setLivestreamState(livestreamState: LivestreamState): void;
4213
+ private emitCurrentLivestreamState;
4177
4214
  start(livestreamConfig?: StartLivestreamConfig): Promise<void>;
4178
4215
  stop(): Promise<void>;
4179
4216
  }
4180
4217
 
4181
4218
  type PluginSocketMessage = DisablePluginResponse | EnablePluginResponse | PluginEventResponse | PluginStoreResponse | SendChatMessageToPeersResponse | SendChatMessageToRoomResponse;
4182
4219
  declare class PluginSocketHandler {
4183
- constructor(context: Context<RTKContextState>, socketService: SocketService);
4184
- get logger(): RTKLogger$1;
4220
+ constructor(context: Context<ContextState>, socketService: SocketService);
4221
+ get logger(): Logger;
4185
4222
  addPlugin(pluginId: string, staggered: boolean): void;
4186
4223
  removePlugin(pluginId: string): void;
4187
4224
  getActivePlugins(): Promise<EnablePluginsResponse>;
@@ -4207,7 +4244,7 @@ declare class PluginSocketHandler {
4207
4244
  on(event: number, handler: (socketMessage: PluginSocketMessage, messageId?: string) => void): void;
4208
4245
  }
4209
4246
 
4210
- interface RTKPluginResponse {
4247
+ interface PluginResponse {
4211
4248
  baseURL: string;
4212
4249
  createdAt: string;
4213
4250
  description: string;
@@ -4289,7 +4326,7 @@ type _string = string & {
4289
4326
  _?: any;
4290
4327
  };
4291
4328
  type PluginEvents$1 = keyof typeof PluginEventKeys | _string;
4292
- declare class RTKPlugin$1 extends RTKEventEmitter<PluginEvents$1> {
4329
+ declare class Plugin extends CustomEventEmitter<PluginEvents$1> {
4293
4330
  readonly baseURL: string;
4294
4331
  readonly createdAt: Date;
4295
4332
  readonly description: string;
@@ -4310,12 +4347,14 @@ declare class RTKPlugin$1 extends RTKEventEmitter<PluginEvents$1> {
4310
4347
  listener?: (message: MessageEvent) => void;
4311
4348
  }>;
4312
4349
  enabledBy: string;
4313
- get telemetry(): RTKTelemetry;
4314
- constructor(context: Context<RTKContextState>, { baseURL, createdAt, description, id, name, organizationId, picture, private: isPrivate, published, staggered, tags, type, updatedAt, }: RTKPluginResponse, pluginSocketHandler: PluginSocketHandler, self: RTKSelf$1, participants: RTKParticipants$1, chat: Readonly<RTKChat$1>, meetingTitle: string);
4350
+ get telemetry(): Telemetry;
4351
+ constructor(context: Context<ContextState>, { baseURL, createdAt, description, id, name, organizationId, picture, private: isPrivate, published, staggered, tags, type, updatedAt, }: PluginResponse, pluginSocketHandler: PluginSocketHandler, self: Self, participants: Participants, chat: Readonly<Chat>, meetingTitle: string);
4315
4352
  sendIframeEvent(message: PluginIframeMessage): void;
4353
+ private handleIframeMessage;
4316
4354
  sendData(payload: SendDataOptions): void;
4317
4355
  removePluginView(viewId?: string): void;
4318
4356
  addPluginView(iframe: HTMLIFrameElement | ReactNativeWebView, viewId?: string): void;
4357
+ private setActive;
4319
4358
  activateForSelf(): Promise<void>;
4320
4359
  deactivateForSelf(): void;
4321
4360
  enable(): Promise<void>;
@@ -4338,12 +4377,12 @@ interface ReactNativeFile {
4338
4377
  type: string;
4339
4378
  }
4340
4379
  declare class APIClient extends API {
4341
- telemetry: RTKTelemetry;
4342
- constructor(context: Context<RTKContextState>, options?: APIOptions);
4380
+ telemetry: Telemetry;
4381
+ constructor(context: Context<ContextState>, options?: APIOptions);
4343
4382
  getIPDetails(): Promise<any>;
4344
4383
  getICEServers(): Promise<any>;
4345
4384
  getPlugins(): Promise<any[]>;
4346
- getPluginDetails(pluginId: string): Promise<RTKPluginResponse>;
4385
+ getPluginDetails(pluginId: string): Promise<PluginResponse>;
4347
4386
  getPluginConfig(pluginBaseUrl: string): Promise<PluginConfig>;
4348
4387
  authorizePlugin(pluginId: string): Promise<string>;
4349
4388
  getPresignedUrls(filename: string, viewType: string): Promise<{
@@ -4463,13 +4502,17 @@ type ChatEvents = {
4463
4502
  ['channelUpdate']: (channel?: ChatChannel) => void;
4464
4503
  ['*']: (event: string, ...args: any[]) => void;
4465
4504
  };
4466
- declare class RTKChat$1 extends RTKTypedEventEmitter<ChatEvents> {
4505
+ declare class Chat extends TypedEventEmitter$1<ChatEvents> {
4467
4506
  messages: Message[];
4468
4507
  channels: ChatChannel[];
4469
4508
  maxTextLimit: number;
4470
- get telemetry(): RTKTelemetry;
4509
+ get telemetry(): Telemetry;
4471
4510
  setMaxTextLimit(limit: number): void;
4472
- constructor(context: Context<RTKContextState>, chatSocketHandler: ChatSocketHandler, chatChannelSocketHandler: ChatChannelSocketHandler, self: RTKSelf$1, participants: RTKParticipants$1);
4511
+ constructor(context: Context<ContextState>, chatSocketHandler: ChatSocketHandler, chatChannelSocketHandler: ChatChannelSocketHandler, self: Self, participants: Participants);
4512
+ private sendMessageInternal;
4513
+ private sendTextMessageInternal;
4514
+ private sendImageMessageInternal;
4515
+ private sendFileMessageInternal;
4473
4516
  get rateLimits(): {
4474
4517
  maxInvocations: number;
4475
4518
  period: number;
@@ -4502,16 +4545,16 @@ declare class RTKChat$1 extends RTKTypedEventEmitter<ChatEvents> {
4502
4545
  sendMessageToChannel(message: MessagePayload, channelId: string, options?: {
4503
4546
  replyTo?: Message;
4504
4547
  }): Promise<void>;
4505
- getChannelMembers(channelId: string): Promise<RTKBasicParticipant[]>;
4548
+ getChannelMembers(channelId: string): Promise<BasicParticipant[]>;
4506
4549
  searchMessages(query: string, filters?: SearchFilters): Promise<Message[]>;
4507
4550
  markLastReadMessage(channelId: string, message: Message): Promise<void>;
4508
4551
  get pinned(): Message[];
4509
4552
  }
4510
4553
 
4511
4554
  declare class PollSocketHandler {
4512
- get logger(): RTKLogger$1;
4513
- get telemetry(): RTKTelemetry;
4514
- constructor(context: Context<RTKContextState>, socketService: SocketService);
4555
+ get logger(): Logger;
4556
+ get telemetry(): Telemetry;
4557
+ constructor(context: Context<ContextState>, socketService: SocketService);
4515
4558
  getPolls(): Promise<{
4516
4559
  id: string;
4517
4560
  payload: Uint8Array;
@@ -4547,16 +4590,16 @@ type PollsEvents = {
4547
4590
  }) => void;
4548
4591
  ['*']: (eventName: string, ...args: any[]) => void;
4549
4592
  };
4550
- declare class RTKPolls$1 extends RTKTypedEventEmitter<PollsEvents> {
4593
+ declare class Polls extends TypedEventEmitter$1<PollsEvents> {
4551
4594
  items: Poll[];
4552
- constructor(context: Context<RTKContextState>, self: RTKSelf$1, pollSocketHandler: PollSocketHandler);
4595
+ constructor(context: Context<ContextState>, self: Self, pollSocketHandler: PollSocketHandler);
4553
4596
  create(question: string, options: string[], anonymous?: boolean, hideVotes?: boolean): Promise<void>;
4554
4597
  vote(id: string, index: number): Promise<void>;
4555
4598
  }
4556
4599
 
4557
4600
  type PluginMapEvents = {
4558
- ['pluginAdded']: (plugin: RTKPlugin$1) => void;
4559
- ['pluginDeleted']: (plugin: RTKPlugin$1) => void;
4601
+ ['pluginAdded']: (plugin: Plugin) => void;
4602
+ ['pluginDeleted']: (plugin: Plugin) => void;
4560
4603
  };
4561
4604
  type PluginEvents = {
4562
4605
  ['stateUpdate']: (payload: {
@@ -4571,16 +4614,89 @@ type PluginEvents = {
4571
4614
  ['enabled']: () => void;
4572
4615
  ['*']: (eventName: string, ...args: any[]) => void;
4573
4616
  };
4574
- declare class RTKPluginMap$1<T extends RTKPlugin$1 = RTKPlugin$1> extends RTKMap<PluginEvents, T, PluginMapEvents> {
4575
- constructor(logger: RTKLogger$1);
4617
+ declare class PluginMap<T extends Plugin = Plugin> extends ClientMap<PluginEvents, T, PluginMapEvents> {
4618
+ constructor(logger: Logger);
4576
4619
  add(plugin: T, emitEvent?: boolean): this;
4577
4620
  delete(pluginId: string, emitEvent?: boolean, removeListeners?: boolean): boolean;
4578
4621
  }
4579
4622
 
4580
- declare class RTKPlugins$1 {
4581
- readonly all: RTKPluginMap$1;
4582
- readonly active: RTKPluginMap$1;
4583
- constructor(logger: RTKLogger);
4623
+ declare class Plugins {
4624
+ readonly all: PluginMap;
4625
+ readonly active: PluginMap;
4626
+ constructor(logger: Logger);
4627
+ }
4628
+
4629
+ declare class SelfMedia extends TypedEventEmitter$1<SelfEvents> {
4630
+ protected localMediaHandler: LocalMediaHandler;
4631
+ protected updatePermission(): Promise<void>;
4632
+ protected populateMediaPermissionsInCallstats({ message, kind, }: {
4633
+ message: keyof typeof MediaPermission;
4634
+ kind: 'audio' | 'video' | 'screenshare';
4635
+ }): Promise<void>;
4636
+ get peerId(): string;
4637
+ init(options?: {
4638
+ video?: boolean;
4639
+ audio?: boolean;
4640
+ constraints?: MediaConstraints;
4641
+ }, skipAwaits?: boolean, context?: Context<ContextState>): Promise<void>;
4642
+ set context(context: Context<ContextState>);
4643
+ get audioTrack(): MediaStreamTrack;
4644
+ get rawAudioTrack(): MediaStreamTrack;
4645
+ get mediaPermissions(): {
4646
+ audio?: MediaPermission$1;
4647
+ video?: MediaPermission$1;
4648
+ screenshare?: MediaPermission$1;
4649
+ };
4650
+ addAudioMiddleware(audioMiddleware: AudioMiddleware): Promise<{
4651
+ success: boolean;
4652
+ message: string;
4653
+ }>;
4654
+ removeAudioMiddleware(audioMiddleware: AudioMiddleware): Promise<{
4655
+ success: boolean;
4656
+ message: string;
4657
+ }>;
4658
+ removeAllAudioMiddlewares(): Promise<{
4659
+ success: boolean;
4660
+ message: string;
4661
+ }>;
4662
+ get videoTrack(): MediaStreamTrack;
4663
+ get rawVideoTrack(): MediaStreamTrack;
4664
+ addVideoMiddleware(videoMiddleware: VideoMiddleware): Promise<{
4665
+ success: boolean;
4666
+ message: string;
4667
+ }>;
4668
+ setVideoMiddlewareGlobalConfig(config?: VideoMiddlewareGlobalConfig): Promise<void>;
4669
+ removeVideoMiddleware(videoMiddleware: VideoMiddleware): Promise<{
4670
+ success: boolean;
4671
+ message: string;
4672
+ }>;
4673
+ removeAllVideoMiddlewares(): Promise<{
4674
+ success: boolean;
4675
+ message: string;
4676
+ }>;
4677
+ get screenShareTracks(): {
4678
+ audio: MediaStreamTrack;
4679
+ video: MediaStreamTrack;
4680
+ };
4681
+ get audioEnabled(): boolean;
4682
+ get videoEnabled(): boolean;
4683
+ get screenShareEnabled(): boolean;
4684
+ enableAudio(): Promise<void>;
4685
+ enableVideo(): Promise<void>;
4686
+ disableAudio(): Promise<void>;
4687
+ enableScreenShare(): Promise<void>;
4688
+ disableScreenShare(): Promise<void>;
4689
+ disableVideo(): Promise<void>;
4690
+ getCurrentDevices(): {
4691
+ audio: MediaDeviceInfo;
4692
+ video: MediaDeviceInfo;
4693
+ speaker: MediaDeviceInfo;
4694
+ };
4695
+ getAudioDevices(): Promise<MediaDeviceInfo[]>;
4696
+ getVideoDevices(): Promise<MediaDeviceInfo[]>;
4697
+ getSpeakerDevices(): Promise<MediaDeviceInfo[]>;
4698
+ getDeviceById(deviceId: string, kind: 'audio' | 'video' | 'speaker'): Promise<MediaDeviceInfo>;
4699
+ setDevice(device: MediaDeviceInfo): Promise<void>;
4584
4700
  }
4585
4701
 
4586
4702
  type RecordingState = 'IDLE' | 'STARTING' | 'RECORDING' | 'PAUSED' | 'STOPPING';
@@ -4594,12 +4710,12 @@ type RecordingEvents = {
4594
4710
  ['recordingUpdate']: (state: RecordingState) => void;
4595
4711
  ['*']: (eventName: string, ...args: any[]) => void;
4596
4712
  };
4597
- declare class RTKRecording$1 extends RTKTypedEventEmitter<RecordingEvents> {
4713
+ declare class Recording extends TypedEventEmitter$1<RecordingEvents> {
4598
4714
  recordingPeerIds: string[];
4599
4715
  get recordingState(): RecordingState;
4600
4716
  recordings: RecordingInfo[];
4601
- constructor(context: Context<RTKContextState>, self: RTKSelf);
4602
- get telemetry(): RTKTelemetry;
4717
+ constructor(context: Context<ContextState>, self: Self);
4718
+ get telemetry(): Telemetry;
4603
4719
  updateRecordings(recordings: RecordingInfo[]): void;
4604
4720
  start(opts?: {
4605
4721
  allowMultiple: boolean;
@@ -4668,28 +4784,32 @@ declare class BrowserCapabilities extends BrowserDetection {
4668
4784
  isIOSMobile(): boolean;
4669
4785
  }
4670
4786
 
4671
- declare class RTKFeatures {
4672
- constructor(context: Context<RTKContextState>);
4787
+ declare class Features {
4788
+ constructor(context: Context<ContextState>);
4673
4789
  hasFeature(featureName: string): boolean;
4674
- getFeatureValue(featureName: string): _dyteinternals_utils.RTKFlagValues;
4790
+ getFeatureValue(featureName: string): _dyteinternals_utils.DyteFlagValues;
4675
4791
  getAllFeatures(): {
4676
- [x: string]: _dyteinternals_utils.RTKFlagsEntry;
4677
- };
4792
+ [x: string]: _dyteinternals_utils.DyteFlagsEntry;
4793
+ };
4678
4794
  }
4679
4795
 
4680
- declare class RTKInternals {
4681
- logger: RTKLogger$1;
4682
- features: RTKFeatures;
4796
+ declare class Internals {
4797
+ logger: Logger;
4798
+ features: Features;
4683
4799
  browserSpecs: BrowserCapabilities;
4684
4800
  callStats: InhouseCallStats;
4685
- constructor(logger: RTKLogger$1, features: RTKFeatures, callStats: InhouseCallStats);
4686
- static init(context: Context<RTKContextState>): RTKInternals;
4801
+ constructor(logger: Logger, features: Features, callStats: InhouseCallStats);
4802
+ static init(context: Context<ContextState>): Internals;
4687
4803
  }
4688
4804
 
4689
4805
  type StoreData = {
4690
4806
  [type: string]: any;
4691
4807
  };
4692
- declare class RTKStore$1 {
4808
+ type RateLimitConfig = {
4809
+ maxInvocations: number;
4810
+ period: number;
4811
+ };
4812
+ declare class Store {
4693
4813
  name: string;
4694
4814
  rateLimitConfig: {
4695
4815
  maxInvocations: number;
@@ -4699,12 +4819,14 @@ declare class RTKStore$1 {
4699
4819
  maxInvocations: number;
4700
4820
  period: number;
4701
4821
  };
4822
+ private listeners;
4702
4823
  constructor({ name, socketHandler, meetingId }: {
4703
4824
  name: string;
4704
4825
  socketHandler: PluginSocketHandler;
4705
4826
  meetingId: string;
4706
4827
  });
4707
4828
  set(key: string, value: any, sync?: boolean, emit?: boolean): Promise<void>;
4829
+ private remoteSet;
4708
4830
  bulkSet(data: {
4709
4831
  key: string;
4710
4832
  payload: any;
@@ -4731,10 +4853,10 @@ declare class RTKStore$1 {
4731
4853
  populate(data: StoreData): void;
4732
4854
  }
4733
4855
 
4734
- declare class RTKStoreManager {
4735
- stores: Map<String, RTKStore$1>;
4736
- constructor(context: Context<RTKContextState>, handler: PluginSocketHandler);
4737
- create(name: string): Promise<RTKStore$1>;
4856
+ declare class StoreManager {
4857
+ stores: Map<String, Store>;
4858
+ constructor(context: Context<ContextState>, handler: PluginSocketHandler);
4859
+ create(name: string): Promise<Store>;
4738
4860
  }
4739
4861
 
4740
4862
  declare const enum PRODUCERS_TYPE {
@@ -4757,13 +4879,13 @@ interface MediaNodeClientOptions {
4757
4879
  socket: SocketService;
4758
4880
  }
4759
4881
  declare class MediaNodeClient {
4760
- readonly context: Context<RTKContextState>;
4882
+ readonly context: Context<ContextState>;
4761
4883
  readonly authToken: string;
4762
4884
  readonly e2ee: boolean;
4763
4885
  get peerId(): string;
4764
- get telemetry(): RTKTelemetry;
4765
- get logger(): RTKLogger$1;
4766
- constructor(context: Context<RTKContextState>, nodeType: MediaNodeType, options: MediaNodeClientOptions);
4886
+ get telemetry(): Telemetry;
4887
+ get logger(): Logger;
4888
+ constructor(context: Context<ContextState>, options: MediaNodeClientOptions);
4767
4889
  get mediaJoined(): boolean;
4768
4890
  set mediaJoined(joined: boolean);
4769
4891
  reset(): void;
@@ -4772,6 +4894,7 @@ declare class MediaNodeClient {
4772
4894
  }>;
4773
4895
  initializeConnection(displayName: string, roomUuid: string, rejoining?: boolean, permissions?: MediaPermissions): Promise<void>;
4774
4896
  getConsumers(): Map<string, Consumer>;
4897
+ getProducers(): Map<string, Producer>;
4775
4898
  leaveRoom(): Promise<void>;
4776
4899
  activatePeers(producers: ProducerState[]): Promise<void>;
4777
4900
  createConsumers(producers: ProducerState[]): Promise<void>;
@@ -4795,7 +4918,6 @@ declare class MediaNodeClient {
4795
4918
  disableMic(): Promise<void>;
4796
4919
  disableScreenShare(): Promise<void>;
4797
4920
  muteSelf(): Promise<void>;
4798
- unmuteSelf(): Promise<void>;
4799
4921
  resetVideoProducers(videoTrack: MediaStreamTrack, screenShareTrack?: MediaStreamTrack): Promise<void>;
4800
4922
  changeDisplayName(displayName: string, peerId?: string): Promise<void>;
4801
4923
  kick(peerId: string): void;
@@ -4878,7 +5000,7 @@ declare class ConnectedMeetingsSocketHandler {
4878
5000
  }
4879
5001
 
4880
5002
  type ConnectedMeetingsEvents = {
4881
- ['meetingChanged']: (meeting: RealtimeKitClient) => void;
5003
+ ['meetingChanged']: (meeting: Client) => void;
4882
5004
  ['stateUpdate']: (payload: {
4883
5005
  meetings: ConnectedMeeting[];
4884
5006
  parentMeeting: ConnectedMeeting;
@@ -4886,12 +5008,13 @@ type ConnectedMeetingsEvents = {
4886
5008
  ['changingMeeting']: (meetingId: string) => void;
4887
5009
  ['*']: (eventName: string, ...args: any[]) => void;
4888
5010
  };
4889
- declare class RTKConnectedMeetings$1 extends RTKTypedEventEmitter<ConnectedMeetingsEvents> {
4890
- constructor(context: Context<RTKContextState>);
5011
+ declare class ConnectedMeetings extends TypedEventEmitter$1<ConnectedMeetingsEvents> {
5012
+ constructor(context: Context<ContextState>);
4891
5013
  meetings: ConnectedMeeting[];
4892
5014
  parentMeeting: ConnectedMeeting;
4893
5015
  get supportsConnectedMeetings(): boolean;
4894
5016
  get isActive(): boolean;
5017
+ private validateConnectedMeetingsAction;
4895
5018
  getConnectedMeetings(): Promise<{
4896
5019
  parentMeeting: ConnectedMeeting;
4897
5020
  meetings: ConnectedMeeting[];
@@ -4926,6 +5049,7 @@ declare class RTKConnectedMeetings$1 extends RTKTypedEventEmitter<ConnectedMeeti
4926
5049
  success: boolean;
4927
5050
  error: any;
4928
5051
  }>;
5052
+ private moveSuccessHandler;
4929
5053
  }
4930
5054
 
4931
5055
  interface Modules {
@@ -4962,7 +5086,7 @@ interface DefaultOptions {
4962
5086
  video?: boolean;
4963
5087
  audio?: boolean;
4964
5088
  recording?: RecordingConfig;
4965
- mediaHandler?: RTKSelfMedia$1;
5089
+ mediaHandler?: SelfMedia;
4966
5090
  autoSwitchAudioDevice?: boolean;
4967
5091
  mediaConfiguration?: {
4968
5092
  video?: VideoQualityConstraints;
@@ -4972,10 +5096,10 @@ interface DefaultOptions {
4972
5096
  isNonPreferredDevice?: (device: MediaDeviceInfo) => boolean;
4973
5097
  }
4974
5098
  interface RoomDetails {
4975
- sfu: MediaNodeType;
4976
- roomNodeUrl: string;
4977
5099
  meetingTitle: string;
4978
- useHiveMedia: boolean;
5100
+ }
5101
+ interface ControllerOptions {
5102
+ peerId?: string;
4979
5103
  }
4980
5104
 
4981
5105
  declare class ConnectionHandler {
@@ -4987,7 +5111,7 @@ declare class ConnectionHandler {
4987
5111
  mediaState: MediaConnectionState;
4988
5112
  get joinAttempted(): boolean;
4989
5113
  get roomJoined(): boolean;
4990
- constructor(context: Context<RTKContextState>);
5114
+ constructor(context: Context<ContextState>);
4991
5115
  updateSocketConnectionState(state: SocketStateEvent, attempt?: number): void;
4992
5116
  }
4993
5117
 
@@ -5080,9 +5204,9 @@ declare const ERROR_CODES: {
5080
5204
  '2006': string;
5081
5205
  '9900': string;
5082
5206
  };
5083
- declare class RTKError extends Error {
5207
+ declare class ClientError extends Error {
5084
5208
  code: keyof typeof ERROR_CODES;
5085
- constructor(message: string, code?: keyof typeof ERROR_CODES, logger?: RTKLogger$1 | undefined, log?: boolean);
5209
+ constructor(message: string, code?: keyof typeof ERROR_CODES, logger?: Logger | undefined, log?: boolean);
5086
5210
  }
5087
5211
 
5088
5212
  type EventMap = {
@@ -5111,7 +5235,6 @@ interface TypedEventEmitter<Events extends EventMap> {
5111
5235
 
5112
5236
  declare enum SessionEvents {
5113
5237
  NEW_PRODUCER = "NEW_PRODUCER",
5114
- PRODUCER_TRACK_ENDED = "PRODUCER_TRACK_ENDED",
5115
5238
  ROOM_NODE_CONNECTION_ERROR = "ROOM_NODE_CONNECTION_ERROR",
5116
5239
  SOCKET_SERVICE_ROOM_JOINED = "SOCKET_SERVICE_ROOM_JOINED",
5117
5240
  SOCKET_SERVICE_RECONNECTED = "SOCKET_SERVICE_RECONNECTED",
@@ -5126,11 +5249,9 @@ declare enum SessionEvents {
5126
5249
  CONSUMER_SCORE_UPDATE = "CONSUMER_SCORE_UPDATE",
5127
5250
  PRODUCER_STATUS_UPDATE = "PRODUCER_STATUS_UPDATE",
5128
5251
  CONSUMER_STATUS_UPDATE = "CONSUMER_STATUS_UPDATE",
5129
- LOW_PRODUCER_SCORE = "LOW_PRODUCER_SCORE",
5130
5252
  LOW_CONSUMER_SCORE = "LOW_CONSUMER_SCORE",
5131
5253
  MEDIA_PERMISSION_ERROR = "MEDIA_PERMISSION_ERROR",
5132
5254
  MEDIA_PERMISSION_UPDATE = "MEDIA_PERMISSION_UPDATE",
5133
- WAITLISTED = "WAIT_LISTED",
5134
5255
  MESSAGE = "websocket/message",
5135
5256
  ROOM_MESSAGE = "websocket/room-message",
5136
5257
  PEER_JOINED_INTERNAL = "peer/joined-internal",
@@ -5142,18 +5263,10 @@ declare enum SessionEvents {
5142
5263
  NEW_CONSUMER = "websocket/new-consumer",
5143
5264
  PRODUCER_SCORE = "websocket/producer-score",
5144
5265
  CONSUMER_SCORE = "websocket/consumer-score",
5145
- PRODUCER_TOGGLE = "hive/producer-toggle",
5146
- CONSUMER_TOGGLE = "hive/consumer-toggle",
5147
- SELECTED_PEERS_DIFF = "hive/selected-peers-diff",
5266
+ PRODUCER_TOGGLE = "cf/producer-toggle",
5148
5267
  UPDATE_ACTIVE = "media/update-active",
5149
- RESET_PRODUCER_STATE = "hive/reset-producer-state",
5150
- CF_TRANSPORT_STATE_CHANGED = "cf/transport-state-changed",
5151
- CF_ROOM_REJOINING = "cf/room-rejoining",
5152
- CF_ROOM_REJOIN_FAILED = "cf/room-rejoining-failed",
5153
- CF_ROOM_REJOINED = "cf/room-rejoined",
5154
- CF_TRANPSORT_RECONNECTING = "cf/transport-reconnecting",
5268
+ RESET_PRODUCER_STATE = "cf/reset-producer-state",
5155
5269
  ROOM_STATE = "sockethub/room-state",
5156
- PEER_DISPLAY_NAME_CHANGED = "hive/display-name-changed",
5157
5270
  GET_STAGE_REQUESTS = "GET_STAGE_REQUESTS",
5158
5271
  UPDATE_STAGE_REQUESTS = "UPDATE_STAGE_REQUESTS",
5159
5272
  KICK_PEER = "KICK_PEER",
@@ -5181,10 +5294,11 @@ type TypedEvents = {
5181
5294
  maxSpatialLayer: number;
5182
5295
  }) => void;
5183
5296
  [SessionEvents.UPDATE_ACTIVE]: (p?: {
5297
+ viewMode?: ViewMode;
5184
5298
  page?: number;
5185
5299
  createAllConsumers?: boolean;
5186
5300
  }) => void;
5187
- [SessionEvents.PEER_JOINED_INTERNAL]: (p: RTKParticipant$1) => void;
5301
+ [SessionEvents.PEER_JOINED_INTERNAL]: (p: Participant) => void;
5188
5302
  [SessionEvents.UPDATE_PEER_STAGE_STATUS]: (p: {
5189
5303
  id: string;
5190
5304
  status: string;
@@ -5219,12 +5333,12 @@ declare class AudioPlaybackManager extends AudioPlayback {
5219
5333
  removeParticipantTrack(participantId: string): void;
5220
5334
  }
5221
5335
 
5222
- type RTKContextState = {
5336
+ type ContextState = {
5223
5337
  authToken?: string;
5224
5338
  peerId?: string;
5225
5339
  apiBase?: string;
5226
5340
  baseURI?: string;
5227
- onError?: (error: RTKError) => void;
5341
+ onError?: (error: ClientError) => void;
5228
5342
  stageStatus?: StageStatus;
5229
5343
  organizationId?: string;
5230
5344
  presetName?: string;
@@ -5237,10 +5351,7 @@ type RTKContextState = {
5237
5351
  meetingId?: string;
5238
5352
  roomName?: string;
5239
5353
  socketService?: SocketService;
5240
- pip?: RTKPip;
5241
- roomNodeOptions?: {
5242
- sfu: MediaNodeType;
5243
- };
5354
+ pip?: Pip;
5244
5355
  roomNodeClient?: MediaNodeClient;
5245
5356
  viewType?: ViewType;
5246
5357
  env?: ClientEnvTypeAll;
@@ -5254,11 +5365,11 @@ type RTKContextState = {
5254
5365
  roomSocketHandler?: RoomSocketHandler;
5255
5366
  connectedMeetingsSocketHandler?: ConnectedMeetingsSocketHandler;
5256
5367
  audioPlayback?: AudioPlaybackManager;
5257
- options?: RealtimeKitClientOptions;
5258
- self?: RTKSelf;
5259
- telemetry?: RTKTelemetry;
5260
- logger?: RTKLogger$1;
5261
- meeting?: RealtimeKitClient;
5368
+ options?: ClientOptions;
5369
+ self?: Self;
5370
+ telemetry?: Telemetry;
5371
+ logger?: Logger;
5372
+ meeting?: Client;
5262
5373
  selfController?: SelfController;
5263
5374
  };
5264
5375
  interface Context<T extends Record<string, any>> {
@@ -5270,107 +5381,116 @@ interface Context<T extends Record<string, any>> {
5270
5381
  getAllValues: () => T;
5271
5382
  }
5272
5383
 
5273
- type SocketServiceCapability = keyof typeof Capabilities;
5274
- type SocketStateEvent = 'connected' | 'disconnected' | 'reconnected' | 'errored' | 'reconnecting' | 'reconnectAttempt' | 'reconnectFailure' | 'failed';
5275
- type SocketServiceCapabilities = SocketServiceCapability[];
5276
- interface SocketConnectionState {
5277
- state: Extract<SocketStateEvent, 'connected' | 'disconnected' | 'reconnecting' | 'failed'>;
5278
- reconnected: boolean;
5279
- reconnectionAttempt: number;
5384
+ declare class EnhancedEventEmitter<TransportPromiseEvents> extends EventEmitter$1 {
5385
+ get logger(): Logger;
5386
+ constructor(context: Context<ContextState>);
5387
+ safeEmit(event: string, ...args: any[]): boolean;
5388
+ safeEmitAsPromise<T extends keyof TransportPromiseEvents>(event: T, ...args: any[]): Promise<TransportPromiseEvents[T]>;
5389
+ safeEmitAsPromiseWithTimeout<T extends keyof TransportPromiseEvents>(event: T, timeout: number, ...args: any[]): Promise<TransportPromiseEvents[T]>;
5280
5390
  }
5281
- declare class SocketService {
5282
- readonly roomName: string;
5283
- readonly authToken: string;
5284
- readonly capabilities: SocketServiceCapabilities;
5285
- get joinAttempted(): boolean;
5286
- set joinAttempted(value: boolean);
5287
- get telemetry(): RTKTelemetry;
5288
- get logger(): RTKLogger$1;
5289
- get peerId(): string;
5290
- constructor(context: Context<RTKContextState>, { peerId, meetingId, authToken, capabilities, }: {
5291
- peerId: string;
5292
- meetingId: string;
5293
- authToken: string;
5294
- capabilities: SocketServiceCapabilities;
5295
- });
5296
- updateURL(peerID: string): void;
5297
- get url(): string;
5298
- connect(): Promise<void>;
5299
- disconnect(): void;
5300
- get isConnected(): boolean;
5301
- sendMessage(event: number, protobuf?: Uint8Array, messageId?: string): boolean;
5302
- sendMessagePromise(event: number, protobuf?: Uint8Array, messageId?: string, resp?: number): Promise<{
5303
- id: string;
5304
- payload: Uint8Array;
5305
- }>;
5306
- sendMessagePromiseWithTimeout({ event, timeout, protobuf, messageId, resp, }: {
5307
- timeout: number;
5308
- event: number;
5309
- protobuf?: Uint8Array;
5310
- messageId?: string;
5311
- resp?: number;
5312
- }): Promise<{
5313
- id: string;
5314
- payload: Uint8Array;
5315
- }>;
5316
- on(event: number, listener: (message: {
5317
- id?: string;
5318
- payload?: Uint8Array;
5319
- }) => void): void;
5320
- onStateEvent(event: SocketStateEvent, listener: (...args: any) => void): void;
5321
- removeListener(event: number, listener: (message: {
5322
- id?: string;
5323
- payload?: Uint8Array;
5324
- }) => void): void;
5325
- removeListeners(event: number): void;
5326
- flush(): any;
5327
- handleSocketConnectionEvents(): void;
5391
+
5392
+ type MediaKind = 'audio' | 'video';
5393
+ type ProducerConstructorOptions = {
5394
+ id: string;
5395
+ localId: string;
5396
+ track?: MediaStreamTrack;
5397
+ stopTracks: boolean;
5398
+ disableTrackOnPause: boolean;
5399
+ zeroRtpOnPause: boolean;
5400
+ handler: HandlerInterface<TransportPromiseEvents>;
5401
+ appData?: Record<string, unknown>;
5402
+ rtpSender?: RTCRtpSender;
5403
+ };
5404
+ declare class Producer extends EnhancedEventEmitter<TransportPromiseEvents> {
5405
+ readonly id: string;
5406
+ readonly localId: string;
5407
+ readonly kind: MediaKind;
5408
+ readonly appData: Record<string, unknown>;
5409
+ readonly rtpSender: RTCRtpSender;
5410
+ constructor(context: Context<ContextState>, opt: ProducerConstructorOptions);
5411
+ get closed(): boolean;
5412
+ get track(): MediaStreamTrack | null;
5413
+ get paused(): boolean;
5414
+ get maxSpatialLayer(): number | undefined;
5415
+ close(reason?: string): Promise<void>;
5416
+ getStats(): Promise<RTCStatsReport>;
5417
+ pause(): void;
5418
+ resume(): void;
5419
+ replaceTrack({ track, }: {
5420
+ track: MediaStreamTrack | null;
5421
+ }): Promise<void>;
5422
+ setMaxSpatialLayer(spatialLayer: number): Promise<void>;
5423
+ setRtpEncodingParameters(params: RTCRtpEncodingParameters): Promise<void>;
5424
+ private _onTrackEnded;
5425
+ private _handleTrack;
5426
+ private _destroyTrack;
5328
5427
  }
5329
5428
 
5330
- type EventHandlerTypes = PeerInfoResponse | GetWaitingRoomRequests | RecordingEvent | UpdatePeersPresetResponse | PeerJoinBroadcastResponse | PeerJoinCompleteResponse | GlobalPeerPinningBroadcastResponse | PeerLeaveResponse | SelectedPeersResponse | SelectedPeersDiffResponse;
5331
- declare class RoomSocketHandler {
5332
- socket: SocketService;
5333
- get telemetry(): RTKTelemetry;
5334
- get logger(): RTKLogger$1;
5335
- cleanup(): void;
5336
- constructor(context: Context<RTKContextState>, socketService: SocketService);
5337
- joinRoom(opts: {
5338
- name: string;
5339
- id: string;
5340
- userId: string;
5341
- customParticipantId: string;
5342
- picture?: string;
5343
- }): Promise<{
5344
- peer: Peer;
5345
- }>;
5346
- getAllAddedParticipants(): Promise<RTKBasicParticipant[]>;
5347
- getRoomPeers(searchQuery: string, limit: number, offset: number): Promise<RoomPeersInfoResponse>;
5348
- getRoomPeersNonPaginated(): Promise<RoomPeersInfoResponse>;
5349
- getStagePeers(): Promise<RoomPeersInfoResponse>;
5350
- getPeerInfo(peerId: string): Promise<PeerInfoResponse>;
5351
- getRoomState(): Promise<RoomInfoResponse>;
5352
- getRoomStageState(): Promise<GetRoomStageStateResponse>;
5353
- broadcastMessage(type: string, payload: BroadcastMessagePayload): Promise<{
5354
- id: string;
5355
- payload: Uint8Array;
5356
- }>;
5357
- broadcastToMeetings(type: string, meetingIds: string[], payload: BroadcastMessagePayload): Promise<{
5358
- id: string;
5359
- payload: Uint8Array;
5360
- }>;
5361
- broadcastToPeers(type: string, peerIds: string[], payload: BroadcastMessagePayload): Promise<boolean>;
5362
- leaveRoom(): Promise<void>;
5363
- kick(peerId: string): Promise<void>;
5364
- kickAll(propagateKickAll?: boolean): Promise<void>;
5365
- getWaitingRoomRequests(): void;
5366
- acceptWaitingRoomRequest(userIds: string[]): void;
5367
- rejectWaitingRoomRequest(userIds: string[]): void;
5368
- updatePermissions(userIds: string[], patch: PresetUpdates): Promise<{
5369
- id: string;
5370
- payload: Uint8Array;
5371
- }>;
5372
- on(event: number, handler: (message: EventHandlerTypes) => void): void;
5373
- getUserPermissions(userId: string): Promise<Pick<PresetTypeV2['permissions'], 'chat' | 'polls' | 'plugins'>>;
5429
+ interface UserDetailsResponse {
5430
+ id: string;
5431
+ name: string;
5432
+ email: string;
5433
+ picture?: string;
5434
+ loggedIn?: boolean;
5435
+ scope?: string[];
5436
+ clientSpecificId?: string;
5437
+ customParticipantId?: string;
5438
+ organizationId?: string;
5439
+ }
5440
+ declare class Self extends SelfMedia {
5441
+ name: string;
5442
+ picture: string;
5443
+ customParticipantId: string;
5444
+ waitlistStatus: 'accepted' | 'waiting' | 'rejected' | 'none';
5445
+ role: any;
5446
+ userId: string;
5447
+ organizationId: string;
5448
+ supportsRemoteControl: boolean;
5449
+ device: DeviceConfig;
5450
+ get telemetry(): Telemetry;
5451
+ hidden: boolean;
5452
+ get stageStatus(): StageStatus;
5453
+ get producers(): Producer[];
5454
+ get id(): string;
5455
+ get peerId(): string;
5456
+ presetName: string;
5457
+ roomState: 'init' | 'joined' | 'waitlisted' | LeaveRoomState;
5458
+ private constructor();
5459
+ static __init__(context: Context<ContextState>, details: UserDetailsResponse, permissions: PermissionPreset, theme: ThemePreset, presetName: string, skipAwaits?: boolean): Promise<Self>;
5460
+ cleanupEvents(): void;
5461
+ private setupEvents;
5462
+ get permissions(): PermissionPreset;
5463
+ get config(): ThemePreset;
5464
+ get roomJoined(): boolean;
5465
+ setName(name: string): void;
5466
+ setupTracks(options?: {
5467
+ video?: boolean;
5468
+ audio?: boolean;
5469
+ forceReset?: boolean;
5470
+ }): Promise<void>;
5471
+ destructMediaHandler(): Promise<void>;
5472
+ removeDocumentEventListeners(): Promise<void>;
5473
+ enableAudio(customTrack?: MediaStreamTrack): Promise<void>;
5474
+ enableVideo(customTrack?: MediaStreamTrack): Promise<void>;
5475
+ updateVideoConstraints(resolution: VideoQualityConstraints): Promise<void>;
5476
+ enableScreenShare(): Promise<void>;
5477
+ updateScreenshareConstraints(resolution: VideoQualityConstraints): Promise<void>;
5478
+ disableAudio(): Promise<void>;
5479
+ disableVideo(): Promise<void>;
5480
+ disableScreenShare(): Promise<void>;
5481
+ getAllDevices(): Promise<InputDeviceInfo[]>;
5482
+ setIsPinned(isPinned: boolean, emitEvent?: boolean): void;
5483
+ get isPinned(): boolean;
5484
+ pin(): Promise<void>;
5485
+ unpin(): Promise<void>;
5486
+ hide(): Promise<void>;
5487
+ show(): void;
5488
+ setDevice(device: MediaDeviceInfo): Promise<void>;
5489
+ cleanUpTracks(): void;
5490
+ playAudio(): Promise<void>;
5491
+ registerVideoElement(videoElem: HTMLVideoElement, isPreview?: boolean): void;
5492
+ deregisterVideoElement(videoElem?: HTMLVideoElement, isPreview?: boolean): void;
5493
+ private updateVideo;
5374
5494
  }
5375
5495
 
5376
5496
  interface DeviceConfig {
@@ -5390,7 +5510,7 @@ interface ProducerState {
5390
5510
  mimeType?: string;
5391
5511
  consumer?: Partial<Consumer>;
5392
5512
  }
5393
- interface Participant {
5513
+ interface IParticipant {
5394
5514
  id: string;
5395
5515
  userId: string;
5396
5516
  displayName: string;
@@ -5413,7 +5533,7 @@ interface Participant {
5413
5533
  };
5414
5534
  recorderType?: string;
5415
5535
  }
5416
- declare class RTKParticipant$1 extends RTKTypedEventEmitter<ParticipantEvents> {
5536
+ declare class Participant extends TypedEventEmitter$1<ParticipantEvents> {
5417
5537
  id: string;
5418
5538
  userId: string;
5419
5539
  name: string;
@@ -5439,22 +5559,24 @@ declare class RTKParticipant$1 extends RTKTypedEventEmitter<ParticipantEvents> {
5439
5559
  supportsRemoteControl: boolean;
5440
5560
  presetName?: string;
5441
5561
  get stageStatus(): StageStatus;
5442
- get telemetry(): RTKTelemetry;
5443
- constructor(context: Context<RTKContextState>, participant: Participant, self: RTKSelf, roomSocket: RoomSocketHandler);
5562
+ get telemetry(): Telemetry;
5563
+ constructor(context: Context<ContextState>, participant: IParticipant, self: Self, roomSocket: RoomSocketHandler);
5444
5564
  setVideoEnabled(videoEnabled: boolean, emitEvent?: boolean): void;
5445
5565
  setAudioEnabled(audioEnabled: boolean, emitEvent?: boolean): void;
5446
5566
  setScreenShareEnabled(screenShareEnabled: boolean, emitEvent?: boolean): void;
5567
+ private setupEvents;
5447
5568
  pin(): Promise<void>;
5448
5569
  unpin(): Promise<void>;
5449
5570
  setIsPinned(isPinned: boolean, emitEvent?: boolean): void;
5450
5571
  disableAudio(): Promise<void>;
5451
5572
  kick(): Promise<void>;
5452
5573
  disableVideo(): Promise<void>;
5453
- getPermissions(): Promise<Pick<_dyteinternals_utils.Permissions, "plugins" | "polls" | "chat">>;
5574
+ getPermissions(): Promise<Pick<_dyteinternals_utils.Permissions, "chat" | "polls" | "plugins">>;
5454
5575
  setStageStatus(stageStatus: StageStatus): void;
5455
5576
  get isPinned(): boolean;
5456
5577
  registerVideoElement(videoElem: HTMLVideoElement): void;
5457
5578
  deregisterVideoElement(videoElem?: HTMLVideoElement): void;
5579
+ private updateVideo;
5458
5580
  }
5459
5581
 
5460
5582
  declare function createSafeToLogError(ex: any): {
@@ -5477,7 +5599,7 @@ type LogData$2 = {
5477
5599
  };
5478
5600
  devices?: string | MediaDeviceInfo[];
5479
5601
  debuggingHint?: string;
5480
- constraints?: string | RTKMediaStreamConstraints;
5602
+ constraints?: string | ClientMediaStreamConstraints;
5481
5603
  timeout?: number;
5482
5604
  execTime?: number;
5483
5605
  country?: string;
@@ -5541,7 +5663,7 @@ type LogData$2 = {
5541
5663
  property: string;
5542
5664
  };
5543
5665
  };
5544
- dyteClientInitOptions?: RealtimeKitClientOptions;
5666
+ clientInitOptions?: ClientOptions;
5545
5667
  plugin?: {
5546
5668
  id?: string;
5547
5669
  name?: string;
@@ -5572,7 +5694,7 @@ type LogData$2 = {
5572
5694
  id: string;
5573
5695
  peerId?: string;
5574
5696
  kind: 'audio' | 'video' | PRODUCERS_TYPE;
5575
- status?: 'initializing' | 'producing' | 'paused' | 'failed' | 'closing' | 'closed' | 'UNKNOWN';
5697
+ status?: 'not_initialized' | 'initializing' | 'producing' | 'paused' | 'failed' | 'closing' | 'closed' | 'UNKNOWN';
5576
5698
  appData: {
5577
5699
  screenShare?: boolean;
5578
5700
  supportsRemoteControl?: boolean;
@@ -5638,16 +5760,17 @@ type LogData$2 = {
5638
5760
  ip: string;
5639
5761
  postal: string;
5640
5762
  };
5641
- dytePolls?: {
5763
+ polls?: {
5642
5764
  hasQuestion?: boolean;
5643
5765
  optionsLength?: number;
5644
5766
  };
5645
- dyteChat?: {
5767
+ chat?: {
5646
5768
  imageType?: string;
5647
5769
  messageType?: string;
5648
5770
  };
5649
- dyteParticipant?: {
5771
+ participant?: {
5650
5772
  id: string;
5773
+ maskedName?: string;
5651
5774
  };
5652
5775
  actions?: {
5653
5776
  disableAllAudio?: {
@@ -5694,7 +5817,7 @@ type LogData$2 = {
5694
5817
  performanceObserver?: {
5695
5818
  api: PerformanceEntry;
5696
5819
  };
5697
- dyteLocker?: {
5820
+ locker?: {
5698
5821
  methodName: string;
5699
5822
  lockName: string;
5700
5823
  };
@@ -5739,7 +5862,7 @@ interface MeetingMetadata {
5739
5862
  visitedUrl?: string;
5740
5863
  userId?: string;
5741
5864
  }
5742
- declare class RTKTelemetry {
5865
+ declare class Telemetry {
5743
5866
  logsCache: {
5744
5867
  [key: string]: any;
5745
5868
  }[];
@@ -5754,7 +5877,7 @@ declare class RTKTelemetry {
5754
5877
  logExclusionList: string[];
5755
5878
  meetingMetadata: MeetingMetadata;
5756
5879
  resetPeerId(peerId: string): void;
5757
- init(context: Context<RTKContextState>, options: MeetingMetadata, enableTracing: boolean): void;
5880
+ init(context: Context<ContextState>, options: MeetingMetadata, enableTracing: boolean): void;
5758
5881
  static trace(spanName: string, metadata?: LogData$1 | undefined): (_target: Object, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
5759
5882
  injectContext(injectionReceiver: any): void;
5760
5883
  addLogInCurrentSpan(eventSeverity: EventSeverities, eventName: string, metadata?: LogData$1, noCache?: boolean): void;
@@ -5764,9 +5887,9 @@ declare class RTKTelemetry {
5764
5887
  }
5765
5888
 
5766
5889
  type LogData = LogData$1;
5767
- declare class RTKLogger$1 {
5768
- get telemetry(): RTKTelemetry;
5769
- init(context: Context<RTKContextState>): void;
5890
+ declare class Logger {
5891
+ get telemetry(): Telemetry;
5892
+ init(context: Context<ContextState>): void;
5770
5893
  info(humanReadableLogIdentifier: string, logData?: LogData, isCrucial?: boolean): void;
5771
5894
  error(humanReadableLogIdentifier: string, logData?: LogData, isCrucial?: boolean): void;
5772
5895
  debug(humanReadableLogIdentifier: string, logData?: LogData, isCrucial?: boolean): void;
@@ -5782,7 +5905,7 @@ interface IceServerInformation {
5782
5905
  }
5783
5906
  interface CachedUserDetails {
5784
5907
  peerId?: string;
5785
- pluginInformation: RTKPluginResponse[];
5908
+ pluginInformation: PluginResponse[];
5786
5909
  userDetails: UserDetailsResponseV2;
5787
5910
  roomDetails: RoomDetails;
5788
5911
  iceServers: IceServerInformation[];
@@ -5797,10 +5920,20 @@ interface APIOptions {
5797
5920
  }
5798
5921
  declare class API {
5799
5922
  ipInfo: any;
5923
+ protected fetchClient: FetchClient;
5924
+ protected requests: FetchClient;
5925
+ protected roomName: string;
5926
+ protected roomUUID: string;
5927
+ protected authToken: string;
5928
+ protected organizationId: string;
5929
+ protected iceServers: IceServerInformation[];
5930
+ protected pluginInformation: PluginResponse[];
5931
+ protected userDetails: UserDetailsResponseV2;
5932
+ protected roomDetails: RoomDetails;
5800
5933
  get peerId(): string;
5801
- context: Context<RTKContextState>;
5802
- get logger(): RTKLogger$1;
5803
- constructor(context: Context<RTKContextState>, options?: APIOptions);
5934
+ context: Context<ContextState>;
5935
+ get logger(): Logger;
5936
+ constructor(context: Context<ContextState>, options?: APIOptions);
5804
5937
  setAuthToken(token: string, options?: {
5805
5938
  bearer?: boolean;
5806
5939
  }): void;
@@ -5812,43 +5945,48 @@ declare class API {
5812
5945
 
5813
5946
  interface Overrides {
5814
5947
  disableSimulcast?: boolean;
5948
+ simulcastConfig?: {
5949
+ disable?: boolean;
5950
+ encodings?: RTCRtpEncodingParameters[];
5951
+ };
5815
5952
  forceRelay?: boolean;
5816
- [key: string]: boolean | string | number;
5953
+ [key: string]: boolean | string | number | Record<string, any>;
5817
5954
  }
5818
- interface RealtimeKitClientOptions {
5955
+ interface ClientOptions {
5819
5956
  authToken: string;
5820
5957
  defaults?: DefaultOptions;
5821
5958
  modules?: Modules;
5822
5959
  overrides?: Overrides;
5823
5960
  baseURI?: string;
5824
- onError?: (error: RTKError) => void;
5961
+ onError?: (error: ClientError) => void;
5825
5962
  cachedUserDetails?: CachedUserDetails;
5826
5963
  }
5827
- declare class RealtimeKitClient {
5964
+ declare class Client {
5828
5965
  private constructor();
5829
5966
  get peerId(): string;
5830
5967
  static initMedia(options?: {
5831
- video?: boolean;
5832
- audio?: boolean;
5833
- constraints?: MediaConstraints;
5834
- }, skipAwaits?: boolean, cachedUserDetails?: CachedUserDetails): RTKSelfMedia$1;
5835
- static init(options: RealtimeKitClientOptions): Promise<RealtimeKitClient>;
5968
+ video?: boolean;
5969
+ audio?: boolean;
5970
+ constraints?: MediaConstraints;
5971
+ }, skipAwaits?: boolean, cachedUserDetails?: CachedUserDetails): SelfMedia;
5972
+ static init(options: ClientOptions): Promise<Client>;
5973
+ private static setupContext;
5836
5974
  join(): Promise<void>;
5837
5975
  leave(state?: LeaveRoomState): Promise<void>;
5838
- get participants(): Readonly<RTKParticipants$1>;
5839
- get self(): Readonly<RTKSelf$1>;
5840
- get meta(): Readonly<RTKMeta$1>;
5841
- get ai(): Readonly<RTKAi>;
5842
- get plugins(): Readonly<RTKPlugins$1>;
5843
- get chat(): Readonly<RTKChat$1>;
5844
- get polls(): Readonly<RTKPolls$1>;
5845
- get connectedMeetings(): Readonly<RTKConnectedMeetings$1>;
5846
- get recording(): Readonly<RTKRecording$1>;
5847
- get livestream(): Readonly<RTKLivestream$1>;
5848
- get stage(): Readonly<RTKStage>;
5849
- get stores(): Readonly<RTKStoreManager>;
5976
+ get participants(): Readonly<Participants>;
5977
+ get self(): Readonly<Self>;
5978
+ get meta(): Readonly<Meta>;
5979
+ get ai(): Readonly<Ai>;
5980
+ get plugins(): Readonly<Plugins>;
5981
+ get chat(): Readonly<Chat>;
5982
+ get polls(): Readonly<Polls>;
5983
+ get connectedMeetings(): Readonly<ConnectedMeetings>;
5984
+ get recording(): Readonly<Recording>;
5985
+ get livestream(): Readonly<Livestream>;
5986
+ get stage(): Readonly<Stage>;
5987
+ get stores(): Readonly<StoreManager>;
5850
5988
  get audio(): AudioPlaybackManager;
5851
- get __internals__(): Readonly<RTKInternals>;
5989
+ get __internals__(): Readonly<Internals>;
5852
5990
  joinRoom(): Promise<void>;
5853
5991
  leaveRoom(state?: LeaveRoomState): Promise<void>;
5854
5992
  }
@@ -5857,35 +5995,37 @@ declare enum RequestToJoinType {
5857
5995
  PRESENT = "REQUEST_TO_PRESENT"
5858
5996
  }
5859
5997
 
5860
- type RTKParticipant = Readonly<RTKParticipant$1>;
5998
+ type RTKConfigOptions = Omit<ControllerOptions, 'peerId'>;
5999
+
6000
+ type RTKParticipant = Readonly<Participant>;
5861
6001
 
5862
- type RTKParticipants = Readonly<RTKParticipants$1>;
5863
- type RTKParticipantMap = Readonly<RTKParticipantMap$1>;
6002
+ type RTKParticipants = Readonly<Participants>;
6003
+ type RTKParticipantMap = Readonly<ParticipantMap>;
5864
6004
 
5865
- type RTKPlugin = Readonly<RTKPlugin$1>;
5866
- type RTKPlugins = Readonly<RTKPlugins$1>;
5867
- type RTKPluginMap = Readonly<RTKPluginMap$1>;
5868
- type RTKMeta = Readonly<RTKMeta$1>;
5869
- type RTKSelf = Readonly<RTKSelf$1>;
5870
- type RTKSelfMedia = Readonly<RTKSelfMedia$1>;
5871
- type RTKChat = Readonly<RTKChat$1>;
5872
- type RTKPolls = Readonly<RTKPolls$1>;
5873
- type RTKRecording = Readonly<RTKRecording$1>;
6005
+ type RTKPlugin = Readonly<Plugin>;
6006
+ type RTKPlugins = Readonly<Plugins>;
6007
+ type RTKPluginMap = Readonly<PluginMap>;
6008
+ type RTKMeta = Readonly<Meta>;
6009
+ type RTKSelf = Readonly<Self>;
6010
+ type RTKSelfMedia = Readonly<SelfMedia>;
6011
+ type RTKChat = Readonly<Chat>;
6012
+ type RTKPolls = Readonly<Polls>;
6013
+ type RTKRecording = Readonly<Recording>;
5874
6014
 
5875
- type RTKLivestream = Readonly<RTKLivestream$1>;
6015
+ type RTKLivestream = Readonly<Livestream>;
5876
6016
 
5877
- type RTKStore = RTKStore$1;
6017
+ type RTKStore = Store;
5878
6018
 
5879
- type RTKConnectedMeetings = Readonly<RTKConnectedMeetings$1>;
6019
+ type RTKConnectedMeetings = Readonly<ConnectedMeetings>;
5880
6020
 
5881
- type RTKPermissionsPreset = Readonly<RTKPermissionsPreset$1>;
5882
- type RTKThemePreset = Readonly<RTKThemePreset$1>;
6021
+ type RTKPermissionsPreset = Readonly<PermissionPreset>;
6022
+ type RTKThemePreset = Readonly<ThemePreset>;
5883
6023
 
5884
- type RTKLogger = RTKLogger$1;
6024
+ type RTKLogger = Logger;
5885
6025
 
5886
- type RTKType = {
6026
+ type ClientType = {
5887
6027
  callStats?: unknown;
5888
- RTKTelemetry?: typeof RTKTelemetry;
6028
+ Telemetry?: typeof Telemetry;
5889
6029
  };
5890
6030
  declare global {
5891
6031
  interface Navigator {
@@ -5896,12 +6036,12 @@ declare global {
5896
6036
  isReactNative?: boolean;
5897
6037
  }
5898
6038
  interface Window {
5899
- RTK?: RTKType;
5900
- FAST_DYTE?: boolean;
6039
+ RTK?: ClientType;
6040
+ FAST_RTK?: boolean;
5901
6041
  MediaStreamTrackProcessor?: any;
5902
6042
  MediaStreamTrackGenerator?: any;
5903
6043
  TransformStream?: any;
5904
6044
  }
5905
6045
  }
5906
6046
 
5907
- export { ActiveTab, ActiveTabType, AudioConsumerScoreStats, AudioMiddleware, AudioProducerScoreStats, BroadcastMessagePayload, ChatChannel, ChatUpdateParams, CustomMessage, DeviceConfig, RTKBasicParticipant, RTKChat, RealtimeKitClientOptions, RTKConnectedMeetings, RTKLivestream, RTKMeta, RTKParticipant, RTKParticipantMap, RTKParticipants, RTKPermissionsPreset, RTKPlugin, RTKPluginMap, RTKPlugins, RTKPolls, RTKRecording, RTKSelf, RTKSelfMedia, RTKStore, RTKThemePreset, FileMessage, ImageMessage, JoinedPeer, LeaveRoomState, LivestreamIngestionCredentials, LivestreamState, LogData, MediaConnectionState, MediaConnectionUpdate, MediaKind$1 as MediaKind, MediaPermission, Message, ProducerScoreStats, RecordingState, RequestToJoinType, SocketConnectionState, StageStatus, StartLivestreamConfig, TextMessage, VideoConsumerScoreStats, VideoMiddleware, VideoProducerScoreStats, VideoQualityConstraints, RealtimeKitClient as default, LeaveRoomState as leaveRoomState };
6047
+ export { ActiveTab, ActiveTabType, AudioConsumerScoreStats, AudioMiddleware, AudioProducerScoreStats, BroadcastMessagePayload, CachedUserDetails, ChatChannel, ChatUpdateParams, ClientError, ConsumerScoreStats, CustomMessage, DeviceConfig, FileMessage, ImageMessage, JoinedPeer, LeaveRoomState, LivestreamIngestionCredentials, LivestreamState, LogData, MediaConnectionState, MediaConnectionUpdate, MediaConstraints, MediaKind, MediaPermission, Message, ProducerScoreStats, BasicParticipant as RTKBasicParticipant, BasicParticipantsMap as RTKBasicParticipantsMap, RTKChat, ClientOptions as RTKClientOptions, RTKConfigOptions, RTKConnectedMeetings, RTKLivestream, RTKLogger, RTKMeta, RTKParticipant, RTKParticipantMap, RTKParticipants, RTKPermissionsPreset, RTKPlugin, RTKPluginMap, RTKPlugins, RTKPolls, RTKRecording, RTKSelf, RTKSelfMedia, RTKStore, StoreData as RTKStoreData, RateLimitConfig as RTKStoreRateLimitConfig, RTKThemePreset, RecordingState, RequestToJoinType, SocketConnectionState, StageStatus, StartLivestreamConfig, TextMessage, UserDetailsResponseV2, VideoConsumerScoreStats, VideoMiddleware, VideoProducerScoreStats, VideoQualityConstraints, Client as default, LeaveRoomState as leaveRoomState };