@livedigital/client 3.56.1 → 3.57.0-lk-5354-api-reference.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -35,6 +35,47 @@ git pull --recurse-submodules
35
35
  git submodule update --init --recursive
36
36
  ```
37
37
 
38
+ ### Public API And Docs
39
+
40
+ The SDK has a single public entrypoint: `src/index.ts`.
41
+
42
+ Everything around the public API is built from that file:
43
+
44
+ - package runtime bundle is built from `src/index.ts`
45
+ - published TypeScript types end up in `dist/index.d.ts`
46
+ - API Extractor validates that contract and stores the tracked baseline in `api/public-contract.api.md`
47
+ - TypeDoc generates Docusaurus-compatible markdown into `generated-docs/api`
48
+
49
+ ### API Commands
50
+
51
+ ```bash
52
+ yarn build
53
+ yarn api:check
54
+ yarn api:update
55
+ yarn docs:api
56
+ yarn docs:sync
57
+ ```
58
+
59
+ - `yarn build` performs the full package build and refreshes `dist`, including `dist/index.d.ts`.
60
+ - `yarn api:check` reads `dist/index.d.ts` and checks that the public TypeScript contract still matches `api/public-contract.api.md`.
61
+ - `yarn api:update` updates `api/public-contract.api.md` after an intentional public API change.
62
+ - `yarn docs:api` runs TypeDoc against `src/index.ts` and regenerates markdown files in `generated-docs/api`.
63
+ - `yarn docs:sync` runs the full public API refresh flow: build, API contract update, and TypeDoc generation.
64
+
65
+ ### How It Fits Together
66
+
67
+ `api/public-contract.api.md` is not user-facing documentation. It is a tracked contract snapshot used by API Extractor for CI checks and PR diffs.
68
+
69
+ `generated-docs/api` is the user-facing reference output for Docusaurus. It is generated by TypeDoc directly from `src/index.ts` and does not read `api/public-contract.api.md`.
70
+
71
+ Typical flow when the public API changes:
72
+
73
+ 1. Update exports or public signatures reachable from `src/index.ts`.
74
+ 2. Run `yarn build` to refresh `dist/index.d.ts`.
75
+ 3. Run `yarn api:update` to accept the new public contract.
76
+ 4. Run `yarn docs:api` to regenerate markdown reference docs.
77
+ 5. Commit the code changes together with `api/public-contract.api.md`.
78
+
38
79
  ## Debugging
39
80
  ### Log Levels
40
81
  LiveDigital client uses the [debug](https://www.npmjs.com/package/debug) module to log to the browser console.
@@ -0,0 +1,160 @@
1
+ import 'reflect-metadata';
2
+ import type { ClientMetaPayload } from './ClientMetaProvider';
3
+ import type Peer from './engine/Peer';
4
+ import type { TransportsWebRTCStats } from './engine/WebRTCStats/types';
5
+ import EnhancedEventEmitter from './EnhancedEventEmitter';
6
+ import type { ClientParams } from './types/client';
7
+ import type { AvailableMediaDevices, CreateCameraVideoTrackOptions, CreateCustomAudioOptions, CreateCustomVideoOptions, CreateMicrophoneAudioTrackOptions, CreateScreenMediaOptions, JoinChannelParams, Role, TransportsStateInfo } from './types/common';
8
+ import type { ClientObserverEvents } from './types/engine';
9
+ import type { AudioTrack, Track, VideoTrack } from './types/media';
10
+ import type { IceTransportPolicy } from './types/network';
11
+ import type { ScoresCalculator } from './qoe/ScoresCalculator';
12
+ /**
13
+ * Основная точка входа в SDK LiveDigital.
14
+ *
15
+ * Экземпляр `Client` отвечает за подключение к каналу, управление локальными
16
+ * треками, получение удалённых участников и подписку на пользовательские события.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * import Client from '@livedigital/client';
21
+ *
22
+ * const client = new Client({
23
+ * signalingServerUrl: 'https://signaling.livedigital.space',
24
+ * });
25
+ *
26
+ * // Подписки — до join(), чтобы не пропустить события
27
+ * client.observer.on('peer-joined', (peer) => {
28
+ * peer.observer.on('media-published', async ({ producerId }) => {
29
+ * await peer.subscribe({ producerId });
30
+ * });
31
+ * });
32
+ *
33
+ * client.observer.on('channel-state-synced', async () => {
34
+ * // Состояние канала синхронизировано — можно работать с участниками
35
+ * });
36
+ *
37
+ * await client.join({ token: 'signaling-token' });
38
+ * client.requestChannelStateSync();
39
+ *
40
+ * const cameraTrack = await client.createCameraVideoTrack();
41
+ * await cameraTrack.publish();
42
+ * ```
43
+ */
44
+ declare class Client {
45
+ #private;
46
+ private readonly clientEventEmitter;
47
+ readonly canUseNoiseSuppression = true;
48
+ constructor(params: ClientParams);
49
+ /** Метаданные текущей сессии, полезные для аналитики, логирования и диагностики. */
50
+ get meta(): ClientMetaPayload;
51
+ /** Набор пользовательских событий SDK, на которые приложение может подписываться. */
52
+ get observer(): EnhancedEventEmitter<ClientObserverEvents>;
53
+ /** Идентификатор текущего участника после успешного подключения к каналу. */
54
+ get id(): string | undefined;
55
+ /**
56
+ * Список участников, известных клиенту в текущем канале.
57
+ *
58
+ * @remarks Список актуален только после получения события `channel-state-synced`.
59
+ * До этого момента массив может быть неполным или пустым.
60
+ */
61
+ get peers(): Peer[];
62
+ /** Список видеоустройств, обнаруженных после последнего вызова `detectDevices()`. */
63
+ get availableVideoDevices(): MediaDeviceInfo[];
64
+ /** Список аудиоустройств, обнаруженных после последнего вызова `detectDevices()`. */
65
+ get availableAudioDevices(): MediaDeviceInfo[];
66
+ /** Показывает, был ли успешно подготовлен движок видеоэффектов. */
67
+ get effectsSDKInitialized(): boolean;
68
+ /** Экземпляр калькулятора качества, который можно использовать в собственных метриках UI. */
69
+ get scoresCalculator(): ScoresCalculator;
70
+ /**
71
+ * Обнаруживает доступные устройства ввода и обновляет внутренний список камер и микрофонов.
72
+ *
73
+ * @param force Принудительно запрашивает повторное определение устройств, даже если список уже известен.
74
+ */
75
+ detectDevices(force?: boolean): Promise<AvailableMediaDevices>;
76
+ /**
77
+ * Предварительно инициализирует SDK видеоэффектов.
78
+ *
79
+ * Полезно вызывать заранее, если приложение хочет уменьшить задержку перед
80
+ * первым включением background blur или виртуального фона.
81
+ */
82
+ initEffectsSDK(): Promise<boolean>;
83
+ /**
84
+ * Подключает клиента к каналу.
85
+ *
86
+ * Канал и роль участника определяются сервером на основе переданного `token`.
87
+ * После успешного завершения необходимо вызвать `requestChannelStateSync()`,
88
+ * чтобы получить актуальное состояние канала через событие `channel-state-synced`.
89
+ */
90
+ join(params: JoinChannelParams): Promise<void>;
91
+ /**
92
+ * Выходит из канала.
93
+ *
94
+ * @param keepTracks Если `true`, локальные треки не будут автоматически уничтожены после выхода.
95
+ */
96
+ leave(keepTracks?: boolean): Promise<void>;
97
+ /**
98
+ * Подтверждает активность в ответ на событие `channel-activity-confirmation-required`.
99
+ *
100
+ * Событие рассылается **всем участникам канала** одновременно. Если хотя бы один из них
101
+ * вызовет `confirmActivity()` до истечения таймаута, канал продолжит работу и все участники
102
+ * получат `channel-activity-confirmation-acquired`.
103
+ * Если никто не ответит — канал закрывается целиком и все участники получают
104
+ * `channel-activity-confirmation-expired`.
105
+ */
106
+ confirmActivity(): Promise<void>;
107
+ /** Создаёт локальный видеотрек с камеры, готовый к публикации в канале. */
108
+ createCameraVideoTrack(options?: CreateCameraVideoTrackOptions): Promise<VideoTrack>;
109
+ /** Создаёт локальный аудиотрек с микрофона, при необходимости сразу с шумоподавлением. */
110
+ createMicrophoneAudioTrack(options?: CreateMicrophoneAudioTrackOptions): Promise<AudioTrack>;
111
+ /** Создаёт набор треков для демонстрации экрана и, при наличии, системного аудио. */
112
+ createScreenMediaTracks(options?: CreateScreenMediaOptions): Promise<Track[]>;
113
+ /** Регистрирует в SDK уже созданный приложением аудиотрек, чтобы им можно было управлять и публиковать его. */
114
+ createCustomAudioTrack(options: CreateCustomAudioOptions): Track;
115
+ /** Регистрирует в SDK уже созданный приложением видеотрек, чтобы им можно было управлять и публиковать его. */
116
+ createCustomVideoTrack(options: CreateCustomVideoOptions): Track;
117
+ /** Удаляет локальный трек из жизненного цикла SDK и освобождает связанные ресурсы. */
118
+ deleteTrack(track: Track): Promise<void>;
119
+ /**
120
+ * @deprecated Используйте `requestChannelStateSync()` вместо этого метода.
121
+ * `loadPeers` не является потокобезопасным и допускает состояние гонки между
122
+ * двумя последовательными вызовами. `requestChannelStateSync()` гарантирует
123
+ * атомарное получение состояния канала через событие `channel-state-synced`.
124
+ */
125
+ loadPeers(role?: Role): Promise<void>;
126
+ /**
127
+ * Запрашивает синхронизацию состояния канала с сервером.
128
+ *
129
+ * Должен быть вызван сразу после `join()`. Когда синхронизация завершится,
130
+ * придёт событие `channel-state-synced` — только после него `client.peers`
131
+ * содержит актуальный список участников и их медиапотоков.
132
+ */
133
+ requestChannelStateSync(): void;
134
+ /** Обновляет пользовательские `appData` текущего участника, чтобы другие клиенты получили новый payload.
135
+ * Максимальный размер `appData` - 1KB. */
136
+ updateAppData(appData: Record<string, unknown>): Promise<void>;
137
+ /** Возвращает текущее состояние receive/send transport'ов для отладки сетевых проблем. */
138
+ getTransportsInfo(): Promise<TransportsStateInfo>;
139
+ /** Включает или отключает предпочтение relay-маршрутов для WebRTC-транспортов. */
140
+ setPreferRelay(value: boolean): void;
141
+ /** Показывает, включено ли сейчас предпочтение relay-маршрутов. */
142
+ getPreferRelay(): boolean;
143
+ /**
144
+ * Меняет ICE transport policy для активных транспортов клиента.
145
+ *
146
+ * Это полезно для диагностики сетевых сценариев, например когда нужно
147
+ * принудительно использовать relay-соединение.
148
+ */
149
+ changeIceTransportPolicy(policy: IceTransportPolicy): Promise<void>;
150
+ /** Принудительно перезапускает ICE на активных транспортных соединениях клиента. */
151
+ restartIce(): Promise<void>;
152
+ /** Возвращает агрегированную транспортную статистику WebRTC для мониторинга качества соединения. */
153
+ transportsStats(): TransportsWebRTCStats | undefined;
154
+ /** Переопределяет адрес signaling-сервера для последующих подключений или переподключения. */
155
+ setSignalingServerUrl(url: string): void;
156
+ /** Добавляет пользовательские метаданные, которые будут включаться в diagnostics и аналитику SDK. */
157
+ setMeta(meta: Record<string, unknown>): void;
158
+ }
159
+ export default Client;
160
+ export { Client };
@@ -1,9 +1,21 @@
1
+ /**
2
+ * Служебные метаданные текущей сессии клиента.
3
+ *
4
+ * Эти данные полезны для диагностики, аналитики и корреляции событий между
5
+ * приложением, каналом и конкретным подключением пользователя.
6
+ */
1
7
  export interface ClientMetaPayload {
8
+ /** Идентификатор текущего участника в рамках канала, если клиент уже подключён. */
2
9
  peerId?: string;
10
+ /** Идентификатор канала, к которому относится текущая сессия. */
3
11
  channelId?: string;
12
+ /** Идентификатор приложения LiveDigital, выданный сервером. */
4
13
  appId?: string;
14
+ /** Имя датацентра, обслуживающего текущее подключение. */
5
15
  datacenterName?: string;
16
+ /** Идентификатор узла, на котором обслуживается соединение. */
6
17
  nodeId?: string;
18
+ /** Уникальный идентификатор клиентской сессии для трассировки и аналитики. */
7
19
  clUId: string;
8
20
  [key: string]: unknown;
9
21
  }
@@ -1,5 +1,11 @@
1
1
  import { EventEmitter } from 'events-alias';
2
2
  type Events = Record<PropertyKey, any[]>;
3
+ /**
4
+ * Типизированный EventEmitter, который используется во внешнем API SDK для подписки на события.
5
+ *
6
+ * Позволяет получать подсказки по именам событий и их аргументам в приложении,
7
+ * не привязываясь к внутренним деталям реализации.
8
+ */
3
9
  export default class EnhancedEventEmitter<E extends Record<keyof E, any[]> = Events> extends EventEmitter {
4
10
  constructor();
5
11
  emit<K extends keyof E & string>(eventName: K, ...args: E[K]): boolean;
@@ -3,10 +3,10 @@ import EnhancedEventEmitter from '../EnhancedEventEmitter';
3
3
  import { type ChangePreferredLayersPayload, type PayloadOfPublishedMedia, type PayloadOfUnpublishedMedia, type PeerGroup, type PeerInfo, type PeerShortData, type ProducerData, type ProducerSetMaxSpatialLayer, type Role, type SubscribeOptions, TrackLabel, type TrackLabelString } from '../types/common';
4
4
  import type { PeerConsumerFactory } from '../types/container';
5
5
  import type { GroupsChangedPayload, ProducePermissionsChangedPayload } from '../types/engine';
6
+ import type { PeerTrack } from '../types/peerTrack';
6
7
  import type { CallState } from './CallState';
7
8
  import type Logger from './Logger';
8
9
  import type Media from './media';
9
- import type PeerTrack from './media/tracks/PeerTrack';
10
10
  import type { MyPeer } from './MyPeer';
11
11
  import type Network from './network';
12
12
  import type PeerConsumer from './PeerConsumer';
@@ -38,6 +38,9 @@ interface PeerConstructor extends PeerDependencies {
38
38
  appData?: Record<string, unknown>;
39
39
  role: Role;
40
40
  }
41
+ /**
42
+ * Карта событий участника канала, доступная через `peer.observer`.
43
+ */
41
44
  export interface PeerObserverEvents {
42
45
  [PEER_EVENTS.mediaPublished]: [PayloadOfPublishedMedia];
43
46
  [PEER_EVENTS.appDataUpdated]: [Record<string, unknown>];
@@ -64,37 +67,73 @@ export interface PeerObserverEvents {
64
67
  [CHANNEL_EVENTS.updatePeerAppData]: [Record<string, unknown>];
65
68
  [event: string]: unknown[];
66
69
  }
70
+ /**
71
+ * Представление участника канала в публичном API SDK.
72
+ *
73
+ * Через `Peer` приложение получает информацию об удалённом пользователе,
74
+ * может подписываться на его медиа и отслеживать изменения его состояния.
75
+ */
67
76
  declare class Peer {
68
77
  #private;
78
+ /** Идентификатор участника внутри канала. */
69
79
  id: string;
80
+ /** Список каналов, к которым привязан участник. */
70
81
  channelIds: string[];
82
+ /** Группы прав участника, например `moderator` или `user`. */
71
83
  groups: PeerGroup[];
84
+ /** Метки треков, которые участнику разрешено публиковать. */
72
85
  producePermissions: TrackLabel[];
86
+ /** Идентификатор приложения, из которого подключён участник. */
73
87
  appId: string;
88
+ /** Время входа участника в систему или канал. */
74
89
  loginDate: Date;
90
+ /** Дополнительный пользовательский идентификатор, если он передаётся. */
75
91
  uid?: string;
76
92
  private applicationData;
93
+ /** Роль участника в канале. */
77
94
  role: Role;
95
+ /** Активные опубликованные producer'ы участника. */
78
96
  producers: Map<string, PeerProducer>;
97
+ /** Удалённые треки, на которые клиент уже подписался у этого участника. */
79
98
  readonly tracks: Map<string, PeerTrack>;
80
99
  private readonly _observer;
81
100
  constructor({ id, channelIds, groups, producePermissions, appId, loginDate, producers, appData, uid, role, loggerFactory, myPeer, callState, peers, remotePeerTracks, media, network, peerConsumerFactory, }: PeerConstructor);
101
+ /** Пользовательские данные участника, переданные через `appData`. */
82
102
  get appData(): Record<string, unknown>;
103
+ /** Шина событий участника для подписки на медиапотоки, изменения метаданных и состояния соединения. */
83
104
  get observer(): EnhancedEventEmitter<PeerObserverEvents>;
105
+ /** Показывает, принадлежит ли этот объект `Peer` к текущему локальному пользователю. */
84
106
  get isMe(): boolean;
107
+ /** Показывает, входит ли участник в группу `moderator`. Модератор может управлять правами других участников. */
85
108
  get isModerator(): boolean;
109
+ /** Показывает, входит ли участник в группу `user`. */
86
110
  get isUser(): boolean;
111
+ /** Текущий список опубликованных участником медиаисточников. */
87
112
  get publishedMedia(): PayloadOfPublishedMedia[];
88
113
  get shortData(): PeerShortData;
114
+ /** Проверяет, может ли участник публиковать трек с указанной меткой. */
89
115
  hasPermission(producePermission: TrackLabel): boolean;
116
+ /** Проверяет, состоит ли участник в указанной группе прав. */
90
117
  hasGroup(group: PeerGroup): boolean;
118
+ /**
119
+ * Подписывает текущего клиента на удалённый producer участника.
120
+ *
121
+ * После успешного вызова соответствующий удалённый трек появится в `peer.tracks`.
122
+ */
91
123
  subscribe({ producerId, muted }: SubscribeOptions): Promise<void>;
124
+ /** Отписывает клиента от ранее созданной подписки на producer участника. */
92
125
  unsubscribe(producerId: string): Promise<void>;
126
+ /** Полностью заменяет набор разрешений на публикацию для выбранного участника. Доступно модератору. */
93
127
  setProducePermissions(producePermissions: TrackLabelString[]): Promise<void>;
128
+ /** Добавляет одно разрешение на публикацию трека для участника. Доступно модератору. */
94
129
  addProducePermission(label: TrackLabelString): Promise<void>;
130
+ /** Удаляет одно разрешение на публикацию трека у участника. Доступно модератору. */
95
131
  removeProducePermission(label: TrackLabelString): Promise<void>;
132
+ /** Возвращает срез данных об участнике и его активных треках в удобной для UI форме. */
96
133
  getInfo(): Promise<PeerInfo>;
134
+ /** Возвращает список producer'ов участника в том виде, как их знает SDK. */
97
135
  getProducers(): PeerProducer[];
136
+ /** Возвращает техническое состояние consumer'ов, созданных для подписки на треки участника. */
98
137
  getConsumersState(): Array<{
99
138
  id: string;
100
139
  producerId: string;
@@ -102,6 +141,7 @@ declare class Peer {
102
141
  }>;
103
142
  private handleNewProducer;
104
143
  private handlePeerEvents;
144
+ /** Сбрасывает локальное состояние участника и освобождает созданные для него подписки. */
105
145
  reset(): Promise<void>;
106
146
  getActiveTracksCount(): number;
107
147
  getActivePublishersCount(): number;
@@ -16,8 +16,16 @@ export interface ResultQValues {
16
16
  export interface LDTransportWebRTCStats extends ParsedConnectionStats, ResultQValues {
17
17
  bitrate: number;
18
18
  }
19
+ /**
20
+ * Агрегированная транспортная статистика WebRTC, которую возвращает клиент.
21
+ *
22
+ * Подходит для отладки качества соединения, отображения сетевых метрик в UI и
23
+ * отправки данных в собственный мониторинг приложения.
24
+ */
19
25
  export interface TransportsWebRTCStats {
26
+ /** Сводные метрики по исходящему transport'у клиента. */
20
27
  outbound?: LDTransportWebRTCStats;
28
+ /** Сводные метрики по входящему transport'у клиента. */
21
29
  inbound?: LDTransportWebRTCStats;
22
30
  }
23
31
  export interface ParsedInboundVideoStreamCompositeStats {
@@ -66,7 +66,7 @@ declare class Engine {
66
66
  getPeers(): Peer[];
67
67
  get myPeerId(): string | undefined;
68
68
  confirmActivity(): Promise<void>;
69
- join(params: JoinChannelParams): Promise<void>;
69
+ join({ token, appData, isP2pCall }: JoinChannelParams): Promise<void>;
70
70
  loadPeers(role?: Role): Promise<void>;
71
71
  requestChannelStateSync(): void;
72
72
  updateAppData(appData: Record<string, unknown>): Promise<void>;
@@ -24,23 +24,56 @@ export declare enum ErrorEmitter {
24
24
  }
25
25
  export type LayoutTypes = 'center' | 'left-bottom' | 'right-bottom';
26
26
  export type LowerThirdTypes = 'lowerthird_1' | 'lowerthird_2' | 'lowerthird_3' | 'lowerthird_4' | 'lowerthird_5';
27
+ /**
28
+ * Набор визуальных эффектов, который можно применить к локальному видеотреку.
29
+ *
30
+ * Подходит для background blur, замены фона, базовой beautification-обработки
31
+ * и оверлеев вроде lower third.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * await videoTrack.applyEffects({
36
+ * blur: 0.6,
37
+ * beautification: 0.3,
38
+ * colorFilter: {
39
+ * url: '/filters/warm.cube',
40
+ * power: 0.4,
41
+ * },
42
+ * });
43
+ * ```
44
+ */
27
45
  export interface Effects {
46
+ /** Сила размытия фона за спиной пользователя. */
28
47
  blur?: number;
48
+ /** URL или идентификатор изображения, которое будет использовано как виртуальный фон. */
29
49
  background?: string;
50
+ /** Сплошной цвет фона в числовом формате, если нужен однотонный background вместо изображения. */
30
51
  backgroundColor?: number;
52
+ /** Интенсивность эффекта улучшения внешности и сглаживания изображения. */
31
53
  beautification?: number;
54
+ /** Интенсивность цветокоррекции для более выразительной картинки. */
32
55
  colorCorrector?: number;
56
+ /** Сила улучшения изображения при недостаточном освещении. */
33
57
  lowLightEffect?: number;
58
+ /** Размер области лица в кадре, который smart zoom старается удерживать в фокусе. */
34
59
  smartZoom?: number;
60
+ /** Положение пользователя в кадре при активных background-эффектах. */
35
61
  layout?: LayoutTypes;
62
+ /** LUT-фильтр для стилизации цветовой палитры видеопотока. */
36
63
  colorFilter?: {
64
+ /** Ссылка на LUT-ресурс фильтра. */
37
65
  url: string;
66
+ /** Интенсивность наложения LUT-фильтра. */
38
67
  power: number;
39
68
  };
69
+ /** Конфигурация нижнего графического баннера поверх видео. */
40
70
  lowerThird?: {
71
+ /** Вариант шаблона lower third. */
41
72
  type: LowerThirdTypes;
73
+ /** Настройки выбранного шаблона lower third, например тексты и стили. */
42
74
  options?: LtOptions;
43
75
  };
76
+ /** Интенсивность повышения резкости изображения. */
44
77
  sharpness?: number;
45
78
  }
46
79
  interface VideoTrackProcessorParams {
@@ -1,8 +1,8 @@
1
1
  import type { types } from 'mediasoup-client';
2
2
  import type { ParsedInboundAudioStreamStats, ParsedInboundVideoStreamStats } from 'webrtc-issue-detector';
3
- import { PEER_EVENTS, TRACK_EVENTS } from '../../../constants/events';
4
3
  import EnhancedEventEmitter from '../../../EnhancedEventEmitter';
5
4
  import { type PeerTrackInfo, type PreferredLayersParams, type SpatialLayerParams, TrackLabel } from '../../../types/common';
5
+ import type { PeerTrack as PublicPeerTrack, PeerTrackObserverEvents } from '../../../types/peerTrack';
6
6
  import type { PeerConsumerFactory } from '../../../types/container';
7
7
  import type { CallState } from '../../CallState';
8
8
  import type Logger from '../../Logger';
@@ -32,25 +32,15 @@ interface PeerTrackConstructor extends PeerTrackDependencies {
32
32
  peerEventEmitter: EnhancedEventEmitter;
33
33
  statsHandler: StatsHandler;
34
34
  }
35
- interface PeerTrackObserverEvents {
36
- [PEER_EVENTS.trackStart]: [PeerTrack];
37
- [PEER_EVENTS.trackEnd]: [PeerTrack];
38
- [TRACK_EVENTS.volumeChanged]: [{
39
- value: number;
40
- }];
41
- [PEER_EVENTS.trackFailed]: [PeerTrack];
42
- [PEER_EVENTS.trackPaused]: [PeerTrack];
43
- [PEER_EVENTS.trackResumed]: [PeerTrack];
44
- }
45
35
  interface CloseTrackParams {
46
36
  closeRemote?: boolean;
47
37
  }
48
- declare class PeerTrack {
38
+ declare class PeerTrack implements PublicPeerTrack {
49
39
  #private;
50
40
  readonly label: TrackLabel;
51
- consumer?: PeerConsumer;
52
41
  readonly observer: EnhancedEventEmitter<PeerTrackObserverEvents>;
53
42
  constructor(payload: PeerTrackConstructor);
43
+ get consumer(): PeerConsumer | undefined;
54
44
  get videoWebRTCStats(): ParsedInboundVideoStreamStats | undefined;
55
45
  get audioWebRTCStats(): ParsedInboundAudioStreamStats | undefined;
56
46
  get connectionScores(): MOSScores;
package/dist/index.d.ts CHANGED
@@ -1,49 +1,18 @@
1
- import 'reflect-metadata';
2
- import type { ClientMetaPayload } from './ClientMetaProvider';
3
- import type Peer from './engine/Peer';
4
- import type { TransportsWebRTCStats } from './engine/WebRTCStats/types';
5
- import EnhancedEventEmitter from './EnhancedEventEmitter';
6
- import type { ClientParams } from './types/client';
7
- import type { AvailableMediaDevices, CreateCameraVideoTrackOptions, CreateCustomAudioOptions, CreateCustomVideoOptions, CreateMicrophoneAudioTrackOptions, CreateScreenMediaOptions, JoinChannelParams, Role, TransportsStateInfo } from './types/common';
8
- import type { ClientObserverEvents } from './types/engine';
9
- import type { AudioTrack, Track, VideoTrack } from './types/media';
10
- import type { IceTransportPolicy } from './engine/signalingApiClient/api';
11
- import type { ScoresCalculator } from './qoe/ScoresCalculator';
12
- declare class Client {
13
- #private;
14
- private readonly clientEventEmitter;
15
- readonly canUseNoiseSuppression = true;
16
- constructor(params: ClientParams);
17
- get meta(): ClientMetaPayload;
18
- get observer(): EnhancedEventEmitter<ClientObserverEvents>;
19
- get id(): string | undefined;
20
- get peers(): Peer[];
21
- get availableVideoDevices(): MediaDeviceInfo[];
22
- get availableAudioDevices(): MediaDeviceInfo[];
23
- get effectsSDKInitialized(): boolean;
24
- get scoresCalculator(): ScoresCalculator;
25
- detectDevices(force?: boolean): Promise<AvailableMediaDevices>;
26
- initEffectsSDK(): Promise<boolean>;
27
- join(params: JoinChannelParams): Promise<void>;
28
- leave(keepTracks?: boolean): Promise<void>;
29
- confirmActivity(): Promise<void>;
30
- createCameraVideoTrack(options?: CreateCameraVideoTrackOptions): Promise<VideoTrack>;
31
- createMicrophoneAudioTrack(options?: CreateMicrophoneAudioTrackOptions): Promise<AudioTrack>;
32
- createScreenMediaTracks(options?: CreateScreenMediaOptions): Promise<Track[]>;
33
- createCustomAudioTrack(options: CreateCustomAudioOptions): Track;
34
- createCustomVideoTrack(options: CreateCustomVideoOptions): Track;
35
- deleteTrack(track: Track): Promise<void>;
36
- loadPeers(role?: Role): Promise<void>;
37
- requestChannelStateSync(): void;
38
- updateAppData(appData: Record<string, unknown>): Promise<void>;
39
- getTransportsInfo(): Promise<TransportsStateInfo>;
40
- setPreferRelay(value: boolean): void;
41
- getPreferRelay(): boolean;
42
- changeIceTransportPolicy(policy: IceTransportPolicy): Promise<void>;
43
- restartIce(): Promise<void>;
44
- transportsStats(): TransportsWebRTCStats | undefined;
45
- setSignalingServerUrl(url: string): void;
46
- setMeta(meta: Record<string, unknown>): void;
47
- }
48
- export default Client;
49
- export type { ClientMetaPayload };
1
+ export { default, Client } from './Client';
2
+ export { default as EnhancedEventEmitter } from './EnhancedEventEmitter';
3
+ export { default as Peer } from './engine/Peer';
4
+ export { default as PeerProducer } from './engine/PeerProducer';
5
+ export { ScoresCalculator } from './qoe/ScoresCalculator';
6
+ export type { ClientMetaPayload } from './ClientMetaProvider';
7
+ export type { PeerObserverEvents } from './engine/Peer';
8
+ export type { TransportsWebRTCStats, LDTransportWebRTCStats } from './engine/WebRTCStats/types';
9
+ export type { Effects, LayoutTypes } from './engine/media/streamEffects/video/esdk/TrackProcessor';
10
+ export type { AudioStreamStats, MOSScores, VideoStreamStats, } from './qoe/types';
11
+ export type { ClientParams } from './types/client';
12
+ export { DeviceErrors, TrackLabel, } from './types/common';
13
+ export type { ConsumerData, ActivityConfirmationRequiredPayload, AudioEncoderConfig, AvailableMediaDevices, BaseTrackInfo, ChannelEvent, CreateCameraVideoTrackOptions, CreateCustomAudioOptions, CreateCustomVideoOptions, CreateMicrophoneAudioTrackOptions, CreateScreenMediaOptions, EncoderConfig, JoinChannelParams, PayloadOfPublishedMedia, PayloadOfUnpublishedMedia, ProducerData, PeerGroup, PeerInfo, PeerTrackInfo, Role, SubscribeOptions, TransformParams, TrackTransformParams, TrackForceClosedPayload, TrackInboundStats, TrackLabelString, TrackOutboundStats, TransportsStateInfo, VideoEncoderConfig, VideoCodec, PreferredLayersParams, SpatialLayerParams, } from './types/common';
14
+ export type { ChannelStateInconsistentPayload, ClientObserverEvents, IssuesHandler, NetworkScoresUpdatedHandler, ProducePermissionsChangedPayload, } from './types/engine';
15
+ export type { AudioTrack, BaseTrack, InitEffectsSDKParams, Track, VideoTrack, VideoTrackPublishParams, } from './types/media';
16
+ export type { IceTransportPolicy } from './types/network';
17
+ export type { PeerConsumer } from './types/peerConsumer';
18
+ export type { PeerTrack, PeerTrackObserverEvents } from './types/peerTrack';