import type { ParticipantInfo } from '@livekit/protocol'; import type { SignalClient } from '../../api/SignalClient'; import { DeferrableMap } from '../../utils/deferrable-map'; import type RemoteDataTrack from '../data-track/RemoteDataTrack'; import RemoteTrackPublication from '../track/RemoteTrackPublication'; import { Track } from '../track/Track'; import type { AudioOutputOptions } from '../track/options'; import type { AdaptiveStreamSettings } from '../track/types'; import type { LoggerOptions } from '../types'; import Participant, { ParticipantKind } from './Participant'; import type { ParticipantEventCallbacks } from './Participant'; export default class RemoteParticipant extends Participant { audioTrackPublications: Map; videoTrackPublications: Map; trackPublications: Map; /** A map of data track name to the corresponding {@link RemoteDataTrack}. * @example * // An already existing data track: * const track = remoteParticipant.dataTracks.get("data track name"); * // Wait for a data track which will be published soon: * const track = await remoteParticipant.dataTracks.getDeferred("data track name"); */ dataTracks: DeferrableMap; signalClient: SignalClient; private volumeMap; private audioOutput?; /** @internal */ static fromParticipantInfo(signalClient: SignalClient, pi: ParticipantInfo, loggerOptions: LoggerOptions): RemoteParticipant; protected get logContext(): { remoteParticipantID: string; remoteParticipant: string; }; /** @internal */ constructor(signalClient: SignalClient, sid: string, identity?: string, name?: string, metadata?: string, attributes?: Record, loggerOptions?: LoggerOptions, kind?: ParticipantKind); protected addTrackPublication(publication: RemoteTrackPublication): void; getTrackPublication(source: Track.Source): RemoteTrackPublication | undefined; getTrackPublicationByName(name: string): RemoteTrackPublication | undefined; /** * sets the volume on the participant's audio track * by default, this affects the microphone publication * a different source can be passed in as a second argument * if no track exists the volume will be applied when the microphone track is added */ setVolume(volume: number, source?: Track.Source.Microphone | Track.Source.ScreenShareAudio): void; /** * gets the volume on the participant's microphone track */ getVolume(source?: Track.Source.Microphone | Track.Source.ScreenShareAudio): number | undefined; /** @internal */ addSubscribedMediaTrack(mediaTrack: MediaStreamTrack, sid: Track.SID, mediaStream: MediaStream, receiver: RTCRtpReceiver, adaptiveStreamSettings?: AdaptiveStreamSettings, triesLeft?: number): RemoteTrackPublication | undefined; /** @internal */ get hasMetadata(): boolean; /** * @internal */ getTrackPublicationBySid(sid: Track.SID): RemoteTrackPublication | undefined; /** @internal */ updateInfo(info: ParticipantInfo): boolean; /** @internal */ unpublishTrack(sid: Track.SID, sendUnpublish?: boolean): void; /** * @internal */ setAudioOutput(output: AudioOutputOptions): Promise; /** @internal */ addRemoteDataTrack(remoteDataTrack: RemoteDataTrack): void; /** @internal */ removeRemoteDataTrack(remoteDataTrackSid: RemoteDataTrack['info']['sid']): void; /** @internal */ emit(event: E, ...args: Parameters): boolean; } //# sourceMappingURL=RemoteParticipant.d.ts.map