@cloudflare/realtimekit 1.2.0-staging.2 → 1.2.0-staging.20

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>;
@@ -4878,7 +5001,7 @@ declare class ConnectedMeetingsSocketHandler {
4878
5001
  }
4879
5002
 
4880
5003
  type ConnectedMeetingsEvents = {
4881
- ['meetingChanged']: (meeting: RealtimeKitClient) => void;
5004
+ ['meetingChanged']: (meeting: Client) => void;
4882
5005
  ['stateUpdate']: (payload: {
4883
5006
  meetings: ConnectedMeeting[];
4884
5007
  parentMeeting: ConnectedMeeting;
@@ -4886,12 +5009,13 @@ type ConnectedMeetingsEvents = {
4886
5009
  ['changingMeeting']: (meetingId: string) => void;
4887
5010
  ['*']: (eventName: string, ...args: any[]) => void;
4888
5011
  };
4889
- declare class RTKConnectedMeetings$1 extends RTKTypedEventEmitter<ConnectedMeetingsEvents> {
4890
- constructor(context: Context<RTKContextState>);
5012
+ declare class ConnectedMeetings extends TypedEventEmitter$1<ConnectedMeetingsEvents> {
5013
+ constructor(context: Context<ContextState>);
4891
5014
  meetings: ConnectedMeeting[];
4892
5015
  parentMeeting: ConnectedMeeting;
4893
5016
  get supportsConnectedMeetings(): boolean;
4894
5017
  get isActive(): boolean;
5018
+ private validateConnectedMeetingsAction;
4895
5019
  getConnectedMeetings(): Promise<{
4896
5020
  parentMeeting: ConnectedMeeting;
4897
5021
  meetings: ConnectedMeeting[];
@@ -4926,6 +5050,7 @@ declare class RTKConnectedMeetings$1 extends RTKTypedEventEmitter<ConnectedMeeti
4926
5050
  success: boolean;
4927
5051
  error: any;
4928
5052
  }>;
5053
+ private moveSuccessHandler;
4929
5054
  }
4930
5055
 
4931
5056
  interface Modules {
@@ -4962,7 +5087,7 @@ interface DefaultOptions {
4962
5087
  video?: boolean;
4963
5088
  audio?: boolean;
4964
5089
  recording?: RecordingConfig;
4965
- mediaHandler?: RTKSelfMedia$1;
5090
+ mediaHandler?: SelfMedia;
4966
5091
  autoSwitchAudioDevice?: boolean;
4967
5092
  mediaConfiguration?: {
4968
5093
  video?: VideoQualityConstraints;
@@ -4972,11 +5097,13 @@ interface DefaultOptions {
4972
5097
  isNonPreferredDevice?: (device: MediaDeviceInfo) => boolean;
4973
5098
  }
4974
5099
  interface RoomDetails {
4975
- sfu: MediaNodeType;
4976
5100
  roomNodeUrl: string;
4977
5101
  meetingTitle: string;
4978
5102
  useHiveMedia: boolean;
4979
5103
  }
5104
+ interface ControllerOptions {
5105
+ peerId?: string;
5106
+ }
4980
5107
 
4981
5108
  declare class ConnectionHandler {
4982
5109
  mediaJoined: boolean;
@@ -4987,7 +5114,7 @@ declare class ConnectionHandler {
4987
5114
  mediaState: MediaConnectionState;
4988
5115
  get joinAttempted(): boolean;
4989
5116
  get roomJoined(): boolean;
4990
- constructor(context: Context<RTKContextState>);
5117
+ constructor(context: Context<ContextState>);
4991
5118
  updateSocketConnectionState(state: SocketStateEvent, attempt?: number): void;
4992
5119
  }
4993
5120
 
@@ -5080,9 +5207,9 @@ declare const ERROR_CODES: {
5080
5207
  '2006': string;
5081
5208
  '9900': string;
5082
5209
  };
5083
- declare class RTKError extends Error {
5210
+ declare class ClientError extends Error {
5084
5211
  code: keyof typeof ERROR_CODES;
5085
- constructor(message: string, code?: keyof typeof ERROR_CODES, logger?: RTKLogger$1 | undefined, log?: boolean);
5212
+ constructor(message: string, code?: keyof typeof ERROR_CODES, logger?: Logger | undefined, log?: boolean);
5086
5213
  }
5087
5214
 
5088
5215
  type EventMap = {
@@ -5181,10 +5308,11 @@ type TypedEvents = {
5181
5308
  maxSpatialLayer: number;
5182
5309
  }) => void;
5183
5310
  [SessionEvents.UPDATE_ACTIVE]: (p?: {
5311
+ viewMode?: ViewMode;
5184
5312
  page?: number;
5185
5313
  createAllConsumers?: boolean;
5186
5314
  }) => void;
5187
- [SessionEvents.PEER_JOINED_INTERNAL]: (p: RTKParticipant$1) => void;
5315
+ [SessionEvents.PEER_JOINED_INTERNAL]: (p: Participant) => void;
5188
5316
  [SessionEvents.UPDATE_PEER_STAGE_STATUS]: (p: {
5189
5317
  id: string;
5190
5318
  status: string;
@@ -5219,12 +5347,12 @@ declare class AudioPlaybackManager extends AudioPlayback {
5219
5347
  removeParticipantTrack(participantId: string): void;
5220
5348
  }
5221
5349
 
5222
- type RTKContextState = {
5350
+ type ContextState = {
5223
5351
  authToken?: string;
5224
5352
  peerId?: string;
5225
5353
  apiBase?: string;
5226
5354
  baseURI?: string;
5227
- onError?: (error: RTKError) => void;
5355
+ onError?: (error: ClientError) => void;
5228
5356
  stageStatus?: StageStatus;
5229
5357
  organizationId?: string;
5230
5358
  presetName?: string;
@@ -5237,10 +5365,7 @@ type RTKContextState = {
5237
5365
  meetingId?: string;
5238
5366
  roomName?: string;
5239
5367
  socketService?: SocketService;
5240
- pip?: RTKPip;
5241
- roomNodeOptions?: {
5242
- sfu: MediaNodeType;
5243
- };
5368
+ pip?: Pip;
5244
5369
  roomNodeClient?: MediaNodeClient;
5245
5370
  viewType?: ViewType;
5246
5371
  env?: ClientEnvTypeAll;
@@ -5254,11 +5379,11 @@ type RTKContextState = {
5254
5379
  roomSocketHandler?: RoomSocketHandler;
5255
5380
  connectedMeetingsSocketHandler?: ConnectedMeetingsSocketHandler;
5256
5381
  audioPlayback?: AudioPlaybackManager;
5257
- options?: RealtimeKitClientOptions;
5258
- self?: RTKSelf;
5259
- telemetry?: RTKTelemetry;
5260
- logger?: RTKLogger$1;
5261
- meeting?: RealtimeKitClient;
5382
+ options?: ClientOptions;
5383
+ self?: Self;
5384
+ telemetry?: Telemetry;
5385
+ logger?: Logger;
5386
+ meeting?: Client;
5262
5387
  selfController?: SelfController;
5263
5388
  };
5264
5389
  interface Context<T extends Record<string, any>> {
@@ -5270,107 +5395,116 @@ interface Context<T extends Record<string, any>> {
5270
5395
  getAllValues: () => T;
5271
5396
  }
5272
5397
 
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;
5398
+ declare class EnhancedEventEmitter<TransportPromiseEvents> extends EventEmitter$1 {
5399
+ get logger(): Logger;
5400
+ constructor(context: Context<ContextState>);
5401
+ safeEmit(event: string, ...args: any[]): boolean;
5402
+ safeEmitAsPromise<T extends keyof TransportPromiseEvents>(event: T, ...args: any[]): Promise<TransportPromiseEvents[T]>;
5403
+ safeEmitAsPromiseWithTimeout<T extends keyof TransportPromiseEvents>(event: T, timeout: number, ...args: any[]): Promise<TransportPromiseEvents[T]>;
5280
5404
  }
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;
5405
+
5406
+ type MediaKind = 'audio' | 'video';
5407
+ type ProducerConstructorOptions = {
5408
+ id: string;
5409
+ localId: string;
5410
+ track?: MediaStreamTrack;
5411
+ stopTracks: boolean;
5412
+ disableTrackOnPause: boolean;
5413
+ zeroRtpOnPause: boolean;
5414
+ handler: HandlerInterface<TransportPromiseEvents>;
5415
+ appData?: Record<string, unknown>;
5416
+ rtpSender?: RTCRtpSender;
5417
+ };
5418
+ declare class Producer extends EnhancedEventEmitter<TransportPromiseEvents> {
5419
+ readonly id: string;
5420
+ readonly localId: string;
5421
+ readonly kind: MediaKind;
5422
+ readonly appData: Record<string, unknown>;
5423
+ readonly rtpSender: RTCRtpSender;
5424
+ constructor(context: Context<ContextState>, opt: ProducerConstructorOptions);
5425
+ get closed(): boolean;
5426
+ get track(): MediaStreamTrack | null;
5427
+ get paused(): boolean;
5428
+ get maxSpatialLayer(): number | undefined;
5429
+ close(reason?: string): Promise<void>;
5430
+ getStats(): Promise<RTCStatsReport>;
5431
+ pause(): void;
5432
+ resume(): void;
5433
+ replaceTrack({ track, }: {
5434
+ track: MediaStreamTrack | null;
5435
+ }): Promise<void>;
5436
+ setMaxSpatialLayer(spatialLayer: number): Promise<void>;
5437
+ setRtpEncodingParameters(params: RTCRtpEncodingParameters): Promise<void>;
5438
+ private _onTrackEnded;
5439
+ private _handleTrack;
5440
+ private _destroyTrack;
5328
5441
  }
5329
5442
 
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'>>;
5443
+ interface UserDetailsResponse {
5444
+ id: string;
5445
+ name: string;
5446
+ email: string;
5447
+ picture?: string;
5448
+ loggedIn?: boolean;
5449
+ scope?: string[];
5450
+ clientSpecificId?: string;
5451
+ customParticipantId?: string;
5452
+ organizationId?: string;
5453
+ }
5454
+ declare class Self extends SelfMedia {
5455
+ name: string;
5456
+ picture: string;
5457
+ customParticipantId: string;
5458
+ waitlistStatus: 'accepted' | 'waiting' | 'rejected' | 'none';
5459
+ role: any;
5460
+ userId: string;
5461
+ organizationId: string;
5462
+ supportsRemoteControl: boolean;
5463
+ device: DeviceConfig;
5464
+ get telemetry(): Telemetry;
5465
+ hidden: boolean;
5466
+ get stageStatus(): StageStatus;
5467
+ get producers(): Producer[];
5468
+ get id(): string;
5469
+ get peerId(): string;
5470
+ presetName: string;
5471
+ roomState: 'init' | 'joined' | 'waitlisted' | LeaveRoomState;
5472
+ private constructor();
5473
+ static __init__(context: Context<ContextState>, details: UserDetailsResponse, permissions: PermissionPreset, theme: ThemePreset, presetName: string, skipAwaits?: boolean): Promise<Self>;
5474
+ cleanupEvents(): void;
5475
+ private setupEvents;
5476
+ get permissions(): PermissionPreset;
5477
+ get config(): ThemePreset;
5478
+ get roomJoined(): boolean;
5479
+ setName(name: string): void;
5480
+ setupTracks(options?: {
5481
+ video?: boolean;
5482
+ audio?: boolean;
5483
+ forceReset?: boolean;
5484
+ }): Promise<void>;
5485
+ destructMediaHandler(): Promise<void>;
5486
+ removeDocumentEventListeners(): Promise<void>;
5487
+ enableAudio(customTrack?: MediaStreamTrack): Promise<void>;
5488
+ enableVideo(customTrack?: MediaStreamTrack): Promise<void>;
5489
+ updateVideoConstraints(resolution: VideoQualityConstraints): Promise<void>;
5490
+ enableScreenShare(): Promise<void>;
5491
+ updateScreenshareConstraints(resolution: VideoQualityConstraints): Promise<void>;
5492
+ disableAudio(): Promise<void>;
5493
+ disableVideo(): Promise<void>;
5494
+ disableScreenShare(): Promise<void>;
5495
+ getAllDevices(): Promise<InputDeviceInfo[]>;
5496
+ setIsPinned(isPinned: boolean, emitEvent?: boolean): void;
5497
+ get isPinned(): boolean;
5498
+ pin(): Promise<void>;
5499
+ unpin(): Promise<void>;
5500
+ hide(): Promise<void>;
5501
+ show(): void;
5502
+ setDevice(device: MediaDeviceInfo): Promise<void>;
5503
+ cleanUpTracks(): void;
5504
+ playAudio(): Promise<void>;
5505
+ registerVideoElement(videoElem: HTMLVideoElement, isPreview?: boolean): void;
5506
+ deregisterVideoElement(videoElem?: HTMLVideoElement, isPreview?: boolean): void;
5507
+ private updateVideo;
5374
5508
  }
5375
5509
 
5376
5510
  interface DeviceConfig {
@@ -5390,7 +5524,7 @@ interface ProducerState {
5390
5524
  mimeType?: string;
5391
5525
  consumer?: Partial<Consumer>;
5392
5526
  }
5393
- interface Participant {
5527
+ interface IParticipant {
5394
5528
  id: string;
5395
5529
  userId: string;
5396
5530
  displayName: string;
@@ -5413,7 +5547,7 @@ interface Participant {
5413
5547
  };
5414
5548
  recorderType?: string;
5415
5549
  }
5416
- declare class RTKParticipant$1 extends RTKTypedEventEmitter<ParticipantEvents> {
5550
+ declare class Participant extends TypedEventEmitter$1<ParticipantEvents> {
5417
5551
  id: string;
5418
5552
  userId: string;
5419
5553
  name: string;
@@ -5439,22 +5573,24 @@ declare class RTKParticipant$1 extends RTKTypedEventEmitter<ParticipantEvents> {
5439
5573
  supportsRemoteControl: boolean;
5440
5574
  presetName?: string;
5441
5575
  get stageStatus(): StageStatus;
5442
- get telemetry(): RTKTelemetry;
5443
- constructor(context: Context<RTKContextState>, participant: Participant, self: RTKSelf, roomSocket: RoomSocketHandler);
5576
+ get telemetry(): Telemetry;
5577
+ constructor(context: Context<ContextState>, participant: IParticipant, self: Self, roomSocket: RoomSocketHandler);
5444
5578
  setVideoEnabled(videoEnabled: boolean, emitEvent?: boolean): void;
5445
5579
  setAudioEnabled(audioEnabled: boolean, emitEvent?: boolean): void;
5446
5580
  setScreenShareEnabled(screenShareEnabled: boolean, emitEvent?: boolean): void;
5581
+ private setupEvents;
5447
5582
  pin(): Promise<void>;
5448
5583
  unpin(): Promise<void>;
5449
5584
  setIsPinned(isPinned: boolean, emitEvent?: boolean): void;
5450
5585
  disableAudio(): Promise<void>;
5451
5586
  kick(): Promise<void>;
5452
5587
  disableVideo(): Promise<void>;
5453
- getPermissions(): Promise<Pick<_dyteinternals_utils.Permissions, "plugins" | "polls" | "chat">>;
5588
+ getPermissions(): Promise<Pick<_dyteinternals_utils.Permissions, "chat" | "polls" | "plugins">>;
5454
5589
  setStageStatus(stageStatus: StageStatus): void;
5455
5590
  get isPinned(): boolean;
5456
5591
  registerVideoElement(videoElem: HTMLVideoElement): void;
5457
5592
  deregisterVideoElement(videoElem?: HTMLVideoElement): void;
5593
+ private updateVideo;
5458
5594
  }
5459
5595
 
5460
5596
  declare function createSafeToLogError(ex: any): {
@@ -5477,7 +5613,7 @@ type LogData$2 = {
5477
5613
  };
5478
5614
  devices?: string | MediaDeviceInfo[];
5479
5615
  debuggingHint?: string;
5480
- constraints?: string | RTKMediaStreamConstraints;
5616
+ constraints?: string | ClientMediaStreamConstraints;
5481
5617
  timeout?: number;
5482
5618
  execTime?: number;
5483
5619
  country?: string;
@@ -5541,7 +5677,7 @@ type LogData$2 = {
5541
5677
  property: string;
5542
5678
  };
5543
5679
  };
5544
- dyteClientInitOptions?: RealtimeKitClientOptions;
5680
+ clientInitOptions?: ClientOptions;
5545
5681
  plugin?: {
5546
5682
  id?: string;
5547
5683
  name?: string;
@@ -5572,7 +5708,7 @@ type LogData$2 = {
5572
5708
  id: string;
5573
5709
  peerId?: string;
5574
5710
  kind: 'audio' | 'video' | PRODUCERS_TYPE;
5575
- status?: 'initializing' | 'producing' | 'paused' | 'failed' | 'closing' | 'closed' | 'UNKNOWN';
5711
+ status?: 'not_initialized' | 'initializing' | 'producing' | 'paused' | 'failed' | 'closing' | 'closed' | 'UNKNOWN';
5576
5712
  appData: {
5577
5713
  screenShare?: boolean;
5578
5714
  supportsRemoteControl?: boolean;
@@ -5638,16 +5774,17 @@ type LogData$2 = {
5638
5774
  ip: string;
5639
5775
  postal: string;
5640
5776
  };
5641
- dytePolls?: {
5777
+ polls?: {
5642
5778
  hasQuestion?: boolean;
5643
5779
  optionsLength?: number;
5644
5780
  };
5645
- dyteChat?: {
5781
+ chat?: {
5646
5782
  imageType?: string;
5647
5783
  messageType?: string;
5648
5784
  };
5649
- dyteParticipant?: {
5785
+ participant?: {
5650
5786
  id: string;
5787
+ maskedName?: string;
5651
5788
  };
5652
5789
  actions?: {
5653
5790
  disableAllAudio?: {
@@ -5694,7 +5831,7 @@ type LogData$2 = {
5694
5831
  performanceObserver?: {
5695
5832
  api: PerformanceEntry;
5696
5833
  };
5697
- dyteLocker?: {
5834
+ locker?: {
5698
5835
  methodName: string;
5699
5836
  lockName: string;
5700
5837
  };
@@ -5739,7 +5876,7 @@ interface MeetingMetadata {
5739
5876
  visitedUrl?: string;
5740
5877
  userId?: string;
5741
5878
  }
5742
- declare class RTKTelemetry {
5879
+ declare class Telemetry {
5743
5880
  logsCache: {
5744
5881
  [key: string]: any;
5745
5882
  }[];
@@ -5754,7 +5891,7 @@ declare class RTKTelemetry {
5754
5891
  logExclusionList: string[];
5755
5892
  meetingMetadata: MeetingMetadata;
5756
5893
  resetPeerId(peerId: string): void;
5757
- init(context: Context<RTKContextState>, options: MeetingMetadata, enableTracing: boolean): void;
5894
+ init(context: Context<ContextState>, options: MeetingMetadata, enableTracing: boolean): void;
5758
5895
  static trace(spanName: string, metadata?: LogData$1 | undefined): (_target: Object, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
5759
5896
  injectContext(injectionReceiver: any): void;
5760
5897
  addLogInCurrentSpan(eventSeverity: EventSeverities, eventName: string, metadata?: LogData$1, noCache?: boolean): void;
@@ -5764,9 +5901,9 @@ declare class RTKTelemetry {
5764
5901
  }
5765
5902
 
5766
5903
  type LogData = LogData$1;
5767
- declare class RTKLogger$1 {
5768
- get telemetry(): RTKTelemetry;
5769
- init(context: Context<RTKContextState>): void;
5904
+ declare class Logger {
5905
+ get telemetry(): Telemetry;
5906
+ init(context: Context<ContextState>): void;
5770
5907
  info(humanReadableLogIdentifier: string, logData?: LogData, isCrucial?: boolean): void;
5771
5908
  error(humanReadableLogIdentifier: string, logData?: LogData, isCrucial?: boolean): void;
5772
5909
  debug(humanReadableLogIdentifier: string, logData?: LogData, isCrucial?: boolean): void;
@@ -5782,7 +5919,7 @@ interface IceServerInformation {
5782
5919
  }
5783
5920
  interface CachedUserDetails {
5784
5921
  peerId?: string;
5785
- pluginInformation: RTKPluginResponse[];
5922
+ pluginInformation: PluginResponse[];
5786
5923
  userDetails: UserDetailsResponseV2;
5787
5924
  roomDetails: RoomDetails;
5788
5925
  iceServers: IceServerInformation[];
@@ -5797,10 +5934,20 @@ interface APIOptions {
5797
5934
  }
5798
5935
  declare class API {
5799
5936
  ipInfo: any;
5937
+ protected fetchClient: FetchClient;
5938
+ protected requests: FetchClient;
5939
+ protected roomName: string;
5940
+ protected roomUUID: string;
5941
+ protected authToken: string;
5942
+ protected organizationId: string;
5943
+ protected iceServers: IceServerInformation[];
5944
+ protected pluginInformation: PluginResponse[];
5945
+ protected userDetails: UserDetailsResponseV2;
5946
+ protected roomDetails: RoomDetails;
5800
5947
  get peerId(): string;
5801
- context: Context<RTKContextState>;
5802
- get logger(): RTKLogger$1;
5803
- constructor(context: Context<RTKContextState>, options?: APIOptions);
5948
+ context: Context<ContextState>;
5949
+ get logger(): Logger;
5950
+ constructor(context: Context<ContextState>, options?: APIOptions);
5804
5951
  setAuthToken(token: string, options?: {
5805
5952
  bearer?: boolean;
5806
5953
  }): void;
@@ -5812,43 +5959,48 @@ declare class API {
5812
5959
 
5813
5960
  interface Overrides {
5814
5961
  disableSimulcast?: boolean;
5962
+ simulcastConfig?: {
5963
+ disable?: boolean;
5964
+ encodings?: RTCRtpEncodingParameters[];
5965
+ };
5815
5966
  forceRelay?: boolean;
5816
- [key: string]: boolean | string | number;
5967
+ [key: string]: boolean | string | number | Record<string, any>;
5817
5968
  }
5818
- interface RealtimeKitClientOptions {
5969
+ interface ClientOptions {
5819
5970
  authToken: string;
5820
5971
  defaults?: DefaultOptions;
5821
5972
  modules?: Modules;
5822
5973
  overrides?: Overrides;
5823
5974
  baseURI?: string;
5824
- onError?: (error: RTKError) => void;
5975
+ onError?: (error: ClientError) => void;
5825
5976
  cachedUserDetails?: CachedUserDetails;
5826
5977
  }
5827
- declare class RealtimeKitClient {
5978
+ declare class Client {
5828
5979
  private constructor();
5829
5980
  get peerId(): string;
5830
5981
  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>;
5982
+ video?: boolean;
5983
+ audio?: boolean;
5984
+ constraints?: MediaConstraints;
5985
+ }, skipAwaits?: boolean, cachedUserDetails?: CachedUserDetails): SelfMedia;
5986
+ static init(options: ClientOptions): Promise<Client>;
5987
+ private static setupContext;
5836
5988
  join(): Promise<void>;
5837
5989
  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>;
5990
+ get participants(): Readonly<Participants>;
5991
+ get self(): Readonly<Self>;
5992
+ get meta(): Readonly<Meta>;
5993
+ get ai(): Readonly<Ai>;
5994
+ get plugins(): Readonly<Plugins>;
5995
+ get chat(): Readonly<Chat>;
5996
+ get polls(): Readonly<Polls>;
5997
+ get connectedMeetings(): Readonly<ConnectedMeetings>;
5998
+ get recording(): Readonly<Recording>;
5999
+ get livestream(): Readonly<Livestream>;
6000
+ get stage(): Readonly<Stage>;
6001
+ get stores(): Readonly<StoreManager>;
5850
6002
  get audio(): AudioPlaybackManager;
5851
- get __internals__(): Readonly<RTKInternals>;
6003
+ get __internals__(): Readonly<Internals>;
5852
6004
  joinRoom(): Promise<void>;
5853
6005
  leaveRoom(state?: LeaveRoomState): Promise<void>;
5854
6006
  }
@@ -5857,35 +6009,37 @@ declare enum RequestToJoinType {
5857
6009
  PRESENT = "REQUEST_TO_PRESENT"
5858
6010
  }
5859
6011
 
5860
- type RTKParticipant = Readonly<RTKParticipant$1>;
6012
+ type RTKConfigOptions = Omit<ControllerOptions, 'peerId'>;
6013
+
6014
+ type RTKParticipant = Readonly<Participant>;
5861
6015
 
5862
- type RTKParticipants = Readonly<RTKParticipants$1>;
5863
- type RTKParticipantMap = Readonly<RTKParticipantMap$1>;
6016
+ type RTKParticipants = Readonly<Participants>;
6017
+ type RTKParticipantMap = Readonly<ParticipantMap>;
5864
6018
 
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>;
6019
+ type RTKPlugin = Readonly<Plugin>;
6020
+ type RTKPlugins = Readonly<Plugins>;
6021
+ type RTKPluginMap = Readonly<PluginMap>;
6022
+ type RTKMeta = Readonly<Meta>;
6023
+ type RTKSelf = Readonly<Self>;
6024
+ type RTKSelfMedia = Readonly<SelfMedia>;
6025
+ type RTKChat = Readonly<Chat>;
6026
+ type RTKPolls = Readonly<Polls>;
6027
+ type RTKRecording = Readonly<Recording>;
5874
6028
 
5875
- type RTKLivestream = Readonly<RTKLivestream$1>;
6029
+ type RTKLivestream = Readonly<Livestream>;
5876
6030
 
5877
- type RTKStore = RTKStore$1;
6031
+ type RTKStore = Store;
5878
6032
 
5879
- type RTKConnectedMeetings = Readonly<RTKConnectedMeetings$1>;
6033
+ type RTKConnectedMeetings = Readonly<ConnectedMeetings>;
5880
6034
 
5881
- type RTKPermissionsPreset = Readonly<RTKPermissionsPreset$1>;
5882
- type RTKThemePreset = Readonly<RTKThemePreset$1>;
6035
+ type RTKPermissionsPreset = Readonly<PermissionPreset>;
6036
+ type RTKThemePreset = Readonly<ThemePreset>;
5883
6037
 
5884
- type RTKLogger = RTKLogger$1;
6038
+ type RTKLogger = Logger;
5885
6039
 
5886
- type RTKType = {
6040
+ type ClientType = {
5887
6041
  callStats?: unknown;
5888
- RTKTelemetry?: typeof RTKTelemetry;
6042
+ Telemetry?: typeof Telemetry;
5889
6043
  };
5890
6044
  declare global {
5891
6045
  interface Navigator {
@@ -5896,12 +6050,12 @@ declare global {
5896
6050
  isReactNative?: boolean;
5897
6051
  }
5898
6052
  interface Window {
5899
- RTK?: RTKType;
5900
- FAST_DYTE?: boolean;
6053
+ RTK?: ClientType;
6054
+ FAST_RTK?: boolean;
5901
6055
  MediaStreamTrackProcessor?: any;
5902
6056
  MediaStreamTrackGenerator?: any;
5903
6057
  TransformStream?: any;
5904
6058
  }
5905
6059
  }
5906
6060
 
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 };
6061
+ 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 };