livekit-client
Version:
JavaScript/TypeScript client SDK for LiveKit
142 lines • 6.8 kB
TypeScript
import { DataPacket_Kind, Encryption_Type, ParticipantInfo, ParticipantInfo_Kind as ParticipantKind, ParticipantPermission, ConnectionQuality as ProtoQuality, type SipDTMF, SubscriptionError } from '@livekit/protocol';
import type TypedEmitter from 'typed-emitter';
import { type StructuredLogger } from '../../logger';
import type LocalTrackPublication from '../track/LocalTrackPublication';
import type LocalVideoTrack from '../track/LocalVideoTrack';
import type RemoteTrack from '../track/RemoteTrack';
import type RemoteTrackPublication from '../track/RemoteTrackPublication';
import { Track } from '../track/Track';
import type { TrackPublication } from '../track/TrackPublication';
import type { ChatMessage, LoggerOptions, TranscriptionSegment } from '../types';
import { Future } from '../utils';
export declare enum ConnectionQuality {
Excellent = "excellent",
Good = "good",
Poor = "poor",
/**
* Indicates that a participant has temporarily (or permanently) lost connection to LiveKit.
* For permanent disconnection a `ParticipantDisconnected` event will be emitted after a timeout
*/
Lost = "lost",
Unknown = "unknown"
}
export { ParticipantKind };
declare const Participant_base: new () => TypedEmitter<ParticipantEventCallbacks>;
export default class Participant extends Participant_base {
protected participantInfo?: ParticipantInfo;
audioTrackPublications: Map<string, TrackPublication>;
videoTrackPublications: Map<string, TrackPublication>;
/** map of track sid => all published tracks */
trackPublications: Map<string, TrackPublication>;
/** audio level between 0-1.0, 1 being loudest, 0 being softest */
audioLevel: number;
/** if participant is currently speaking */
isSpeaking: boolean;
/** server assigned unique id */
sid: string;
/** client assigned identity, encoded in JWT token */
identity: string;
/** client assigned display name, encoded in JWT token */
name?: string;
/** client metadata, opaque to livekit */
metadata?: string;
private _attributes;
lastSpokeAt?: Date | undefined;
permissions?: ParticipantPermission;
protected _kind: ParticipantKind;
private _connectionQuality;
protected audioContext?: AudioContext;
protected log: StructuredLogger;
protected loggerOptions?: LoggerOptions;
protected activeFuture?: Future<void, Error>;
protected get logContext(): {
[x: string]: unknown;
};
get isEncrypted(): boolean;
get isAgent(): boolean;
get isActive(): boolean;
get kind(): ParticipantKind;
/** participant attributes, similar to metadata, but as a key/value map */
get attributes(): Readonly<Record<string, string>>;
/** @internal */
constructor(sid: string, identity: string, name?: string, metadata?: string, attributes?: Record<string, string>, loggerOptions?: LoggerOptions, kind?: ParticipantKind);
getTrackPublications(): TrackPublication[];
/**
* Finds the first track that matches the source filter, for example, getting
* the user's camera track with getTrackBySource(Track.Source.Camera).
*/
getTrackPublication(source: Track.Source): TrackPublication | undefined;
/**
* Finds the first track that matches the track's name.
*/
getTrackPublicationByName(name: string): TrackPublication | undefined;
/**
* Waits until the participant is active and ready to receive data messages
* @returns a promise that resolves when the participant is active
*/
waitUntilActive(): Promise<void>;
get connectionQuality(): ConnectionQuality;
get isCameraEnabled(): boolean;
get isMicrophoneEnabled(): boolean;
get isScreenShareEnabled(): boolean;
get isLocal(): boolean;
/** when participant joined the room */
get joinedAt(): Date | undefined;
/** @internal */
updateInfo(info: ParticipantInfo): boolean;
/**
* Updates metadata from server
**/
private _setMetadata;
private _setName;
/**
* Updates metadata from server
**/
private _setAttributes;
/** @internal */
setPermissions(permissions: ParticipantPermission): boolean;
/** @internal */
setIsSpeaking(speaking: boolean): void;
/** @internal */
setConnectionQuality(q: ProtoQuality): void;
/**
* @internal
*/
setDisconnected(): void;
/**
* @internal
*/
setAudioContext(ctx: AudioContext | undefined): void;
protected addTrackPublication(publication: TrackPublication): void;
}
export type ParticipantEventCallbacks = {
trackPublished: (publication: RemoteTrackPublication) => void;
trackSubscribed: (track: RemoteTrack, publication: RemoteTrackPublication) => void;
trackSubscriptionFailed: (trackSid: string, reason?: SubscriptionError) => void;
trackUnpublished: (publication: RemoteTrackPublication) => void;
trackUnsubscribed: (track: RemoteTrack, publication: RemoteTrackPublication) => void;
trackMuted: (publication: TrackPublication) => void;
trackUnmuted: (publication: TrackPublication) => void;
localTrackPublished: (publication: LocalTrackPublication) => void;
localTrackUnpublished: (publication: LocalTrackPublication) => void;
localTrackCpuConstrained: (track: LocalVideoTrack, publication: LocalTrackPublication) => void;
localSenderCreated: (sender: RTCRtpSender, track: Track) => void;
participantMetadataChanged: (prevMetadata: string | undefined, participant?: any) => void;
participantNameChanged: (name: string) => void;
dataReceived: (payload: Uint8Array, kind: DataPacket_Kind, encryptionType?: Encryption_Type) => void;
sipDTMFReceived: (dtmf: SipDTMF) => void;
transcriptionReceived: (transcription: TranscriptionSegment[], publication?: TrackPublication) => void;
isSpeakingChanged: (speaking: boolean) => void;
connectionQualityChanged: (connectionQuality: ConnectionQuality) => void;
trackStreamStateChanged: (publication: RemoteTrackPublication, streamState: Track.StreamState) => void;
trackSubscriptionPermissionChanged: (publication: RemoteTrackPublication, status: TrackPublication.PermissionStatus) => void;
mediaDevicesError: (error: Error, kind?: MediaDeviceKind) => void;
audioStreamAcquired: () => void;
participantPermissionsChanged: (prevPermissions?: ParticipantPermission) => void;
trackSubscriptionStatusChanged: (publication: RemoteTrackPublication, status: TrackPublication.SubscriptionStatus) => void;
attributesChanged: (changedAttributes: Record<string, string>) => void;
localTrackSubscribed: (trackPublication: LocalTrackPublication) => void;
chatMessage: (msg: ChatMessage) => void;
active: () => void;
};
//# sourceMappingURL=Participant.d.ts.map