import TypedEmitter from "typed-emitter"; import { AuthErrorReason, BandwidthLimit, Component, ConnectConfig, CreateConfig, MessageEvents, Peer, SimulcastConfig, TrackBandwidthLimit, TrackContext, TrackEncoding } from "@jellyfish-dev/ts-client-sdk"; import { PeerId, PeerState, PeerStatus, TrackId, TrackWithOrigin } from "./state.types"; import { DeviceManager, DeviceManagerEvents } from "./DeviceManager"; import { MediaDeviceType, ScreenShareManager, ScreenShareManagerConfig } from "./ScreenShareManager"; import { DeviceManagerConfig, DeviceState, UseCameraAndMicrophoneResult, UseUserMediaState } from "./types"; export type ClientApi = { local: PeerState | null; peers: Record>; peersTracks: Record>; components: Record>; componentsTracks: Record>; bandwidthEstimation: bigint; status: PeerStatus; media: UseUserMediaState | null; devices: UseCameraAndMicrophoneResult; deviceManager: DeviceManager; screenShareManager: ScreenShareManager; }; export interface ClientEvents { /** * Emitted when the websocket connection is closed * * @param {CloseEvent} event - Close event object from the websocket */ socketClose: (event: CloseEvent, client: ClientApi) => void; /** * Emitted when occurs an error in the websocket connection * * @param {Event} event - Event object from the websocket */ socketError: (event: Event, client: ClientApi) => void; /** * Emitted when the websocket connection is opened * * @param {Event} event - Event object from the websocket */ socketOpen: (event: Event, client: ClientApi) => void; /** Emitted when authentication is successful */ authSuccess: (client: ClientApi) => void; /** Emitted when authentication fails */ authError: (reason: AuthErrorReason, client: ClientApi) => void; /** Emitted when the connection is closed */ disconnected: (client: ClientApi) => void; /** * Called when peer was accepted. */ joined: (event: { peerId: string; peers: Peer[]; components: Component[]; }, client: ClientApi) => void; /** * Called when peer was not accepted * @param metadata - Pass through for client application to communicate further actions to frontend */ joinError: (metadata: any, client: ClientApi) => void; /** * Called when data in a new track arrives. * * This callback is always called after {@link MessageEvents.trackAdded}. * It informs user that data related to the given track arrives and can be played or displayed. */ trackReady: (ctx: TrackContext, client: ClientApi) => void; /** * Called each time the peer which was already in the room, adds new track. Fields track and stream will be set to null. * These fields will be set to non-null value in {@link MessageEvents.trackReady} */ trackAdded: (ctx: TrackContext, client: ClientApi) => void; /** * Called when some track will no longer be sent. * * It will also be called before {@link MessageEvents.peerLeft} for each track of this peer. */ trackRemoved: (ctx: TrackContext, client: ClientApi) => void; /** * Called each time peer has its track metadata updated. */ trackUpdated: (ctx: TrackContext, client: ClientApi) => void; /** * Called each time new peer joins the room. */ peerJoined: (peer: Peer, client: ClientApi) => void; /** * Called each time peer leaves the room. */ peerLeft: (peer: Peer, client: ClientApi) => void; /** * Called each time peer has its metadata updated. */ peerUpdated: (peer: Peer, client: ClientApi) => void; /** * Called each time new Component is added to the room. */ componentAdded: (peer: Component, client: ClientApi) => void; /** * Called each time Component is removed from the room. */ componentRemoved: (peer: Component, client: ClientApi) => void; /** * Called each time Component has its metadata updated. */ componentUpdated: (peer: Component, client: ClientApi) => void; /** * Called in case of errors related to multimedia session e.g. ICE connection. */ connectionError: (message: string, client: ClientApi) => void; /** * Called every time the server estimates client's bandiwdth. * * @param {bigint} estimation - client's available incoming bitrate estimated * by the server. It's measured in bits per second. */ bandwidthEstimationChanged: (estimation: bigint, client: ClientApi) => void; encodingChanged: (context: TrackContext, client: ClientApi) => void; /** * Emitted every time an update about voice activity is received from the server. */ voiceActivityChanged: (context: TrackContext, client: ClientApi) => void; managerStarted: (event: Parameters[0] & { mediaDeviceType: MediaDeviceType; }, client: ClientApi) => void; managerInitialized: (event: { audio?: DeviceState; video?: DeviceState; mediaDeviceType: MediaDeviceType; }, client: ClientApi) => void; deviceReady: (event: Parameters[0] & { mediaDeviceType: MediaDeviceType; }, client: ClientApi) => void; devicesStarted: (event: Parameters[0] & { mediaDeviceType: MediaDeviceType; }, client: ClientApi) => void; devicesReady: (event: Parameters[0] & { mediaDeviceType: MediaDeviceType; }, client: ClientApi) => void; deviceStopped: (event: Parameters[0] & { mediaDeviceType: MediaDeviceType; }, client: ClientApi) => void; deviceEnabled: (event: Parameters[0] & { mediaDeviceType: MediaDeviceType; }, client: ClientApi) => void; deviceDisabled: (event: Parameters[0] & { mediaDeviceType: MediaDeviceType; }, client: ClientApi) => void; error: (arg: any, client: ClientApi) => void; targetTrackEncodingRequested: (event: Parameters["targetTrackEncodingRequested"]>[0], client: ClientApi) => void; localTrackAdded: (event: Parameters["localTrackAdded"]>[0], client: ClientApi) => void; localTrackRemoved: (event: Parameters["localTrackRemoved"]>[0], client: ClientApi) => void; localTrackReplaced: (event: Parameters["localTrackReplaced"]>[0], client: ClientApi) => void; localTrackBandwidthSet: (event: Parameters["localTrackBandwidthSet"]>[0], client: ClientApi) => void; localTrackEncodingBandwidthSet: (event: Parameters["localTrackEncodingBandwidthSet"]>[0], client: ClientApi) => void; localTrackEncodingEnabled: (event: Parameters["localTrackEncodingEnabled"]>[0], client: ClientApi) => void; localTrackEncodingDisabled: (event: Parameters["localTrackEncodingDisabled"]>[0], client: ClientApi) => void; localEndpointMetadataChanged: (event: Parameters["localEndpointMetadataChanged"]>[0], client: ClientApi) => void; localTrackMetadataChanged: (event: Parameters["localTrackMetadataChanged"]>[0], client: ClientApi) => void; disconnectRequested: (event: Parameters["disconnectRequested"]>[0], client: ClientApi) => void; } export type ReactClientCreteConfig = { clientConfig?: CreateConfig; deviceManagerDefaultConfig?: DeviceManagerConfig; screenShareManagerDefaultConfig?: ScreenShareManagerConfig; }; declare const Client_base: new () => TypedEmitter>>; export declare class Client extends Client_base { private readonly tsClient; readonly deviceManager: DeviceManager; readonly screenShareManager: ScreenShareManager; local: PeerState | null; peers: Record>; components: Record>; peersTracks: Record>; componentsTracks: Record>; bandwidthEstimation: bigint; status: PeerStatus; media: UseUserMediaState | null; devices: UseCameraAndMicrophoneResult; private currentMicrophoneTrackId; private currentCameraTrackId; private currentScreenShareTrackId; constructor(config?: ReactClientCreteConfig); setScreenManagerConfig(config: ScreenShareManagerConfig): void; setDeviceManagerConfig(config: DeviceManagerConfig): void; private trackContextToTrack; connect(config: ConnectConfig): void; disconnect(): void; addTrack(track: MediaStreamTrack, stream: MediaStream, trackMetadata?: TrackMetadata, simulcastConfig?: SimulcastConfig, maxBandwidth?: TrackBandwidthLimit): Promise; removeTrack(trackId: string): Promise; replaceTrack(trackId: string, newTrack: MediaStreamTrack, newTrackMetadata?: TrackMetadata): Promise; getStatistics(selector?: MediaStreamTrack | null): Promise; getBandwidthEstimation(): bigint; setTrackBandwidth(trackId: string, bandwidth: BandwidthLimit): Promise; setEncodingBandwidth(trackId: string, rid: string, bandwidth: BandwidthLimit): Promise; setTargetTrackEncoding(trackId: string, encoding: TrackEncoding): void; enableTrackEncoding(trackId: string, encoding: TrackEncoding): void; disableTrackEncoding(trackId: string, encoding: TrackEncoding): void; updatePeerMetadata: (peerMetadata: PeerMetadata) => void; updateTrackMetadata: (trackId: string, trackMetadata: TrackMetadata) => void; private stateToSnapshot; } export {}; //# sourceMappingURL=Client.d.ts.map