@vkontakte/calls-sdk 2.8.12-beta.1 → 2.8.12-dev.26c45af4.0

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.
@@ -9,12 +9,12 @@ import MediaOption from '../enums/MediaOption';
9
9
  import UpdateDisplayLayoutErrorReason from '../enums/UpdateDisplayLayoutErrorReason';
10
10
  import UserRole from '../enums/UserRole';
11
11
  import UserType from '../enums/UserType';
12
- import { DebugMessageType } from '../static/Debug';
13
12
  import { JSONObject } from '../static/Json';
14
13
  import { IAsrStartParams, IAsrStopParams } from '../types/Asr';
15
14
  import { AudienceModeHandsResponse } from '../types/AudienceMode';
16
- import { ConversationData, ConversationOnJoinParams, ConversationOnStartParams } from '../types/Conversation';
17
- import { ExternalId, ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk } from '../types/ExternalId';
15
+ import { ConversationData, ConversationOnStartParams } from '../types/Conversation';
16
+ import { ExternalId, ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk, ExternalUserId } from '../types/ExternalId';
17
+ import type { FastJoinHandler } from '../types/FastJoin';
18
18
  import MediaModifiers from '../types/MediaModifiers';
19
19
  import MediaSettings, { IVideoDimentions } from '../types/MediaSettings';
20
20
  import { IAddMovieParams, IUpdateMovieData } from '../types/MovieShare';
@@ -82,12 +82,18 @@ export default class Conversation extends EventEmitter {
82
82
  get mediaSettings(): MediaSettings | undefined;
83
83
  get isCallHeld(): boolean;
84
84
  static debugSessionId(): string | null;
85
- static debugMessage(type: DebugMessageType, ...args: any[]): boolean;
86
- static debugMessageWithContext(type: DebugMessageType, conversationId: string, ...args: any[]): boolean;
87
85
  static getSyncedTime(): number;
88
86
  get debugSessionId(): string | null;
89
87
  onStart({ opponentIds, opponentType, mediaOptions, payload, joiningAllowed, requireAuthToJoin, onlyAdminCanShareMovie, externalIds, onFastStart, conversationId, }: ConversationOnStartParams): Promise<ConversationData>;
90
- onJoin(joinArgs: ConversationOnJoinParams): Promise<ConversationData>;
88
+ onJoin(joinArgs: {
89
+ conversationId?: string;
90
+ mediaOptions: MediaOption[];
91
+ chatId?: string;
92
+ joinLink?: string;
93
+ observedIds?: ExternalUserId[];
94
+ payload?: string;
95
+ onFastJoin?: FastJoinHandler;
96
+ }): Promise<ConversationData>;
91
97
  private _onJoinPart2;
92
98
  private _extractExternalRooms;
93
99
  private _extractExternalRoomsData;
@@ -100,6 +106,7 @@ export default class Conversation extends EventEmitter {
100
106
  private _acceptConcurrent;
101
107
  private _getMainRoomParticipants;
102
108
  private _decodeExternalConversationParams;
109
+ private _logCallStartEvent;
103
110
  accept(mediaOptions: MediaOption[]): Promise<ConversationData>;
104
111
  decline(): Promise<void>;
105
112
  hangup(): Promise<void>;
@@ -111,7 +118,7 @@ export default class Conversation extends EventEmitter {
111
118
  private _openTransport;
112
119
  private _allocateParticipantTransport;
113
120
  private _close;
114
- destroy(): Promise<void>;
121
+ destroy(): void;
115
122
  private _getConversationParams;
116
123
  private _setConversationParams;
117
124
  private _buildSignalingEndpoint;
@@ -153,6 +160,7 @@ export default class Conversation extends EventEmitter {
153
160
  private _getExistedParticipantByIdOrCreate;
154
161
  private _getExternalIdByParticipantId;
155
162
  private _getExternalIdsByOkIdsFromCache;
163
+ private _getOrCacheExternalIdByCompositeId;
156
164
  private _registerParticipantAndSetMarkersIfChunkEnabled;
157
165
  private _warnParticipantNotInConversation;
158
166
  private _denormalizeMarkers;
@@ -189,9 +197,6 @@ export default class Conversation extends EventEmitter {
189
197
  private _cleanupParticipants;
190
198
  private _cleanupParticipantAgnosticStreams;
191
199
  private _cleanupTransport;
192
- private _finishLifecycle;
193
- private _getFirstMediaSentCallback;
194
- private _stopFirstMediaSentProbe;
195
200
  private _cleanupTransportForHold;
196
201
  private _cleanupSpeakerDetector;
197
202
  private _cleanupSpecListener;
@@ -357,7 +362,7 @@ export default class Conversation extends EventEmitter {
357
362
  private _onRecordInfo;
358
363
  private _onStopRecordInfo;
359
364
  private _changePinnedParticipantForRoom;
360
- _changeRecordInfoForRoom(): Promise<void>;
365
+ _changeRecordInfoForRoom(): void;
361
366
  private _changeAsrInfoForRoom;
362
367
  private _changeUrlSharingInfoForRoom;
363
368
  private _onParticipantAnimojiChanged;
@@ -5,7 +5,7 @@ import { Participant, ParticipantId } from '../types/Participant';
5
5
  type DisplayLayoutRequesterParams = {
6
6
  api: BaseApi;
7
7
  debug: DebugLogger;
8
- getParticipants: () => Promise<Record<ParticipantId, Participant>>;
8
+ getParticipants: () => Record<ParticipantId, Participant>;
9
9
  isMe: (participantId: ParticipantId) => boolean;
10
10
  updateDisplayLayout: (layouts: ParticipantLayout[]) => Promise<void>;
11
11
  };
@@ -1,14 +1,6 @@
1
1
  import BaseApi from '../abstract/BaseApi';
2
2
  import BaseLogger from '../abstract/BaseLogger';
3
3
  import StatLog from '../enums/StatLog';
4
- import TransportTopology from '../enums/TransportTopology';
5
- type ClientStatsPayload = Record<string, string | number | boolean | undefined | null>;
6
- export type LogClientStatsOptions = {
7
- immediately?: boolean;
8
- occurredAt?: number;
9
- conversationId?: string | null;
10
- deferUntilServerTime?: boolean;
11
- };
12
4
  /**
13
5
  * Класс отвечает за отправку различной информации в сервис статистики (события, статистика и подобное)
14
6
  */
@@ -16,26 +8,19 @@ export default class StatsLogger extends BaseLogger {
16
8
  private readonly _externalLogger;
17
9
  private readonly _api;
18
10
  private readonly _conversationIdProvider;
19
- private readonly _topologyProvider;
20
11
  private readonly _batchInterval;
21
12
  private _batchedClientStats;
22
13
  private _batchTimeout;
23
14
  private _serverTimeDelta;
24
- private _waitingForServerTime;
25
- private _deferredClientStats;
26
- constructor(api: BaseApi, externalLogger: BaseLogger | null, conversationIdProvider: () => string | null, topologyProvider?: () => TransportTopology | undefined);
15
+ constructor(api: BaseApi, externalLogger: BaseLogger | null, conversationIdProvider: () => string | null);
27
16
  log(name: StatLog, value?: string, immediately?: boolean): void;
28
- logClientStats(data: ClientStatsPayload, immediatelyOrOptions?: boolean | LogClientStatsOptions): void;
17
+ logClientStats(data: Record<string, string | number | boolean | undefined | null>, immediately?: boolean): void;
29
18
  destroy(): void;
30
- private _logClientStats;
31
19
  private _getConversationId;
32
- private _getCallTopology;
33
20
  private _sendBatch;
34
21
  private _startTimeout;
35
22
  private _stopTimeout;
36
23
  private _sendClientStats;
37
24
  private _calculateServerTimeDelta;
38
- private _flushDeferredClientStats;
39
25
  private _now;
40
26
  }
41
- export {};
@@ -1,22 +1,21 @@
1
1
  import BaseApi from '../../abstract/BaseApi';
2
2
  import BaseLogger from '../../abstract/BaseLogger';
3
- import TransportTopology from '../../enums/TransportTopology';
4
3
  import HangupReason from '../HangupReason';
5
4
  import StatsLogger from '../StatsLogger';
6
- import { CallLifecycleStats } from './CallLifecycleStats';
5
+ import TransportTopology from '../../enums/TransportTopology';
7
6
  import { CodecStatsAggregator } from './CodecStatsAggregator';
8
7
  import { StatAggregator } from './StatAggregator';
9
8
  import { StatPings } from './StatPings';
10
9
  import { StatSignalingCommands } from './StatSignalingCommands';
11
10
  export declare class ConversationStats {
12
11
  readonly logger: StatsLogger;
13
- readonly lifecycle: CallLifecycleStats;
14
12
  readonly statAggregator: StatAggregator;
15
13
  readonly codecStatsAggregator: CodecStatsAggregator;
16
14
  readonly pings: StatPings;
17
15
  readonly signalingCommands: StatSignalingCommands;
18
16
  constructor(api: BaseApi, externalLogger: BaseLogger | null, getConversationId: () => string | null, getTopology: () => TransportTopology | undefined);
19
- logHangup(reason: HangupReason): void;
20
- flushCallMetrics(): void;
17
+ logHangup(reason: HangupReason, topology?: TransportTopology): void;
18
+ flushCallMetrics(topology?: TransportTopology): void;
21
19
  destroy(): void;
20
+ private static correctHangupReason;
22
21
  }
@@ -1,5 +1,6 @@
1
1
  import { SignalingTransportType } from '../../enums/SignalingTransportStat';
2
2
  import StatsLogger from '../StatsLogger';
3
+ import TransportTopology from '../../enums/TransportTopology';
3
4
  export declare class StatPings {
4
5
  private readonly _logger;
5
6
  private trackerByTransport;
@@ -11,6 +12,6 @@ export declare class StatPings {
11
12
  */
12
13
  mark(transport: SignalingTransportType): void;
13
14
  /** Отправляем данные в стату */
14
- logMetrics(): void;
15
+ logMetrics(topology?: TransportTopology): void;
15
16
  destroy(): void;
16
17
  }
@@ -1,11 +1,12 @@
1
1
  import { SignalingTransportType } from '../../enums/SignalingTransportStat';
2
2
  import StatsLogger from '../StatsLogger';
3
+ import TransportTopology from '../../enums/TransportTopology';
3
4
  export declare class StatSignalingCommands {
4
5
  private readonly _logger;
5
6
  private trackerByCommand;
6
7
  constructor(logger: StatsLogger);
7
8
  mark(command: string, time: number, transport: SignalingTransportType): void;
8
9
  /** Отправляем данные в стату */
9
- logMetrics(): void;
10
+ logMetrics(topology?: TransportTopology): void;
10
11
  destroy(): void;
11
12
  }
@@ -7,13 +7,7 @@ export default abstract class BaseTransport extends EventEmitter {
7
7
  protected readonly _mediaSource: MediaSource;
8
8
  protected _state: TransportState;
9
9
  protected _pc: RTCPeerConnection | null;
10
- private readonly _onFirstMediaSent;
11
- private _firstMediaSentProbe;
12
- private _firstMediaSentProbeStopped;
13
- protected constructor(signaling: BaseSignaling, mediaSource: MediaSource, onFirstMediaSent?: (() => void) | null);
10
+ protected constructor(signaling: BaseSignaling, mediaSource: MediaSource);
14
11
  getState(): TransportState;
15
- stopFirstMediaSentProbe(): void;
16
12
  abstract close(error?: Error): void;
17
- protected _startFirstMediaSentProbe(): void;
18
- protected _disposeFirstMediaSentProbe(): void;
19
13
  }
@@ -43,7 +43,7 @@ export default class DirectTransport extends BaseTransport {
43
43
  private readonly _logger;
44
44
  private readonly _statAggregator;
45
45
  private readonly _codecStatsAggregator;
46
- constructor(participantId: ParticipantId, isMaster: boolean, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatsLogger | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
46
+ constructor(participantId: ParticipantId, isMaster: boolean, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatsLogger | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null);
47
47
  get participantId(): ParticipantId;
48
48
  updateStatisticsInterval(): void;
49
49
  private _isDeadConnection;
@@ -47,7 +47,7 @@ export default class ServerTransport extends BaseTransport {
47
47
  private readonly _logger;
48
48
  private readonly _statAggregator;
49
49
  private readonly _codecStatsAggregator;
50
- constructor(signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatsLogger | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
50
+ constructor(signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatsLogger | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null);
51
51
  updateStatisticsInterval(): void;
52
52
  open(observer?: boolean): void;
53
53
  close(error?: Error): void;
@@ -48,16 +48,13 @@ export declare class Transport extends EventEmitter {
48
48
  private readonly _logger;
49
49
  private readonly _statAggregator;
50
50
  private readonly _codecStatsAggregator;
51
- private readonly _onFirstMediaSent;
52
- private _firstMediaSentProbeStopped;
53
- constructor(topology: TransportTopology, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatsLogger | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
51
+ constructor(topology: TransportTopology, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatsLogger | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null);
54
52
  updateSettings(settings: ServerSettings): void;
55
53
  updateStatisticsInterval(): void;
56
54
  allocate(participantId: ParticipantId, isMaster?: boolean): void;
57
55
  open(participantIds: ParticipantId[], peerId?: string | null, observer?: boolean, force?: boolean): void;
58
56
  close(participantId: ParticipantId): void;
59
57
  destroy(): void;
60
- stopFirstMediaSentProbe(): void;
61
58
  holdClose(): void;
62
59
  setRemoteHold(hold: boolean): void;
63
60
  getTopology(): TransportTopology;
@@ -72,8 +69,6 @@ export declare class Transport extends EventEmitter {
72
69
  private _setStates;
73
70
  private _setLocalState;
74
71
  private _onSignalingNotification;
75
- private _handleFirstMediaSent;
76
- private _getFirstMediaSentCallback;
77
72
  private _onTopologyChanged;
78
73
  private _createDirectTransport;
79
74
  private _createServerTransport;
package/default/Api.d.ts CHANGED
@@ -12,7 +12,7 @@ export default class Api extends BaseApi {
12
12
  private _idCache;
13
13
  private _callUnsafe;
14
14
  protected _call(method: string, data?: any, noSession?: boolean): Promise<any>;
15
- userId(participantId: ParticipantId): Promise<ExternalParticipantId>;
15
+ userId(participantId: ParticipantId): ExternalParticipantId;
16
16
  authorize(): Promise<void>;
17
17
  private _getAnonymLoginCacheKey;
18
18
  private _getCachedAnonymLogin;
@@ -1,6 +1,5 @@
1
1
  import SignalingConnectionType from '../enums/SignalingConnectionType';
2
2
  import { SignalingTransportType } from '../enums/SignalingTransportStat';
3
- import { DebugLogger } from '../static/Debug';
4
3
  export declare enum SignalingTransportFailure {
5
4
  EMPTY_ENDPOINT = "EMPTY_ENDPOINT",
6
5
  NETWORK_ERROR = "NETWORK_ERROR",
@@ -39,8 +38,7 @@ export default class SignalingTransport {
39
38
  private abortSignal;
40
39
  private manualClose;
41
40
  private currentType;
42
- private readonly _debug;
43
- constructor(debug: DebugLogger | undefined, handlers: SignalingTransportHandlers);
41
+ constructor(handlers: SignalingTransportHandlers);
44
42
  get readyState(): number | null;
45
43
  get type(): SignalingTransportType;
46
44
  setEndpoint(endpoint: string): void;
package/enums/Stat.d.ts CHANGED
@@ -1,10 +1,4 @@
1
1
  declare const enum Stat {
2
- CALL_INIT = "call_init",
3
- CALL_WARMUP = "call_warmup",
4
- CALL_START = "call_start",
5
- CALL_ACCEPTED_OUTGOING = "call_accepted_outgoing",
6
- CALL_ACCEPTED_INCOMING = "call_accepted_incoming",
7
- FIRST_MEDIA_SENT = "first_media_sent",
8
2
  CALL_FINISH = "call_finish",// событие отправляемое в конце звонка
9
3
  CODEC_USAGE = "codec_usage",// событие когда меняется кодек
10
4
  SIGNALING_CONNECTED = "signaling_connected",// measure
@@ -13,6 +7,7 @@ declare const enum Stat {
13
7
  FIRST_MEDIA_RECEIVED = "first_media_received",
14
8
  CALL_DECLINED_OR_HANGED_LOCALLY = "CallDeclinedOrHangedLocally",
15
9
  USER_FEEDBACK_RECEIVED = "UserFeedbackReceived",
10
+ CALL_START = "call_start",
16
11
  SIGNALING_PING_SUMMARY = "signaling_ping_summary",
17
12
  SIGNALING_COMMAND_SUMMARY = "signaling_command_summary",
18
13
  WEBSOCKET_CONNECTED = "websocket_connected",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/calls-sdk",
3
- "version": "2.8.12-beta.1",
3
+ "version": "2.8.12-dev.26c45af4.0",
4
4
  "author": "vk.com",
5
5
  "description": "Library for video calls based on the vk.com platform",
6
6
  "homepage": "https://vk.com",
package/static/Debug.d.ts CHANGED
@@ -21,7 +21,6 @@ export type DebugSessionLogger = DebugLogger & {
21
21
  readonly sessionId: string | null;
22
22
  readonly conversationId: string | null;
23
23
  setConversationId(conversationId: string | null): void;
24
- send(type: DebugMessageType, ...args: any[]): void;
25
24
  };
26
25
  declare namespace Debug {
27
26
  type ContextProvider = () => DebugMessageContext;
@@ -485,6 +485,13 @@ export type ParamsObject = {
485
485
  * _По умолчанию: `false`_
486
486
  */
487
487
  webtransport: boolean;
488
+ /**
489
+ * Включить поддержку webtransport для сигналинга в FireFox
490
+ * Отдельная ручка, так как есть проблемы сейчас с FF
491
+ *
492
+ * _По умолчанию: `false`_
493
+ */
494
+ webtransportFF: boolean;
488
495
  /**
489
496
  * Ждать подтверждения от бэкенда для команд startStream/stopStream.
490
497
  * При включении: reject без соединения, resolve/reject по ответу бэкенда,
@@ -1024,6 +1031,7 @@ export default abstract class Params {
1024
1031
  static get enableVideoEffectsFpsDegradation(): boolean;
1025
1032
  static get simulcast(): boolean;
1026
1033
  static get webtransport(): boolean;
1034
+ static get webtransportFF(): boolean;
1027
1035
  static get waitForRecordResponse(): boolean;
1028
1036
  static get transparentAudio(): boolean;
1029
1037
  static get enableSessionStateUpdates(): boolean;
@@ -1060,6 +1068,7 @@ export default abstract class Params {
1060
1068
  switchVideoAtBadNetwork: boolean;
1061
1069
  simulcast: boolean;
1062
1070
  webtransport: boolean;
1071
+ webtransportFF: boolean;
1063
1072
  waitForRecordResponse: boolean;
1064
1073
  transparentAudio: boolean;
1065
1074
  enableSessionStateUpdates: boolean;
@@ -7,8 +7,7 @@ import MediaOption from '../enums/MediaOption';
7
7
  import UserRole from '../enums/UserRole';
8
8
  import { AsrInfo } from './Asr';
9
9
  import { IFeaturesPerRole } from './ConversationFeature';
10
- import { ExternalId, ExternalParticipantId, ExternalUserId } from './ExternalId';
11
- import { FastJoinHandler } from './FastJoin';
10
+ import { ExternalId, ExternalParticipantId } from './ExternalId';
12
11
  import { FastStartHandler } from './FastStart';
13
12
  import MediaModifiers from './MediaModifiers';
14
13
  import MuteStates from './MuteStates';
@@ -85,16 +84,6 @@ export type ConversationOnStartParams = {
85
84
  onFastStart?: FastStartHandler;
86
85
  conversationId?: string;
87
86
  };
88
- export type ConversationOnJoinParams = {
89
- conversationId?: string;
90
- mediaOptions: MediaOption[];
91
- chatId?: string;
92
- joinLink?: string;
93
- observedIds?: ExternalUserId[];
94
- payload?: string;
95
- onFastJoin?: FastJoinHandler;
96
- anonymous?: boolean;
97
- };
98
87
  export type StartConversationParams = {
99
88
  opponentIds?: OkUserId[];
100
89
  opponentType: CallType;
@@ -105,6 +94,7 @@ export type StartConversationParams = {
105
94
  requireAuthToJoin?: boolean;
106
95
  onlyAdminCanShareMovie?: boolean;
107
96
  externalIds?: ExternalId[];
97
+ startedTime: number;
108
98
  onFastStart?: FastStartHandler;
109
99
  conversationId?: string;
110
100
  };
@@ -1,5 +1,4 @@
1
1
  import { WebTransportOptions } from '@fails-components/webtransport';
2
- import { DebugLogger } from '../static/Debug';
3
2
  declare class WebTransportEventual {
4
3
  private webTransport;
5
4
  private stream;
@@ -12,13 +11,12 @@ declare class WebTransportEventual {
12
11
  private closeEventEmitted;
13
12
  private encoder;
14
13
  private decoder;
15
- private readonly _debug;
16
14
  onopen: ((this: WebTransportEventual, ev: Event) => any) | null;
17
15
  onmessage: ((this: WebTransportEventual, ev: MessageEvent) => any) | null;
18
16
  onerror: ((this: WebTransportEventual, ev: Event) => any) | null;
19
17
  onclose: ((this: WebTransportEventual, ev: CloseEvent) => any) | null;
20
18
  readyState: number;
21
- constructor(url: string, options?: WebTransportOptions, debug?: DebugLogger);
19
+ constructor(url: string, options?: WebTransportOptions);
22
20
  private getCompressionTypeFromUrl;
23
21
  private connect;
24
22
  private readChunks;
@@ -1,47 +0,0 @@
1
- import HangupReason from '../HangupReason';
2
- import StatsLogger from '../StatsLogger';
3
- export type CallLifecycleSource = 'outgoing' | 'incoming' | 'join' | 'anonym_join';
4
- export interface CallLifecycleInitializationParams {
5
- source: CallLifecycleSource;
6
- conversationId?: string;
7
- }
8
- export interface CallLifecycleClock {
9
- wallNow(): number;
10
- monotonicNow(): number;
11
- }
12
- export declare class CallLifecycleStats {
13
- private readonly _logger;
14
- private readonly _clock;
15
- private _conversationId;
16
- private _callStartLabel;
17
- private _lifecycleStartedAtMonotonic;
18
- private _warmupStartedAtMonotonic;
19
- private _pendingEvents;
20
- private _warmupCompleted;
21
- private _callStarted;
22
- private _accepted;
23
- private _firstMediaSent;
24
- private _finished;
25
- private _destroyed;
26
- constructor(logger: StatsLogger, clock?: CallLifecycleClock);
27
- get firstMediaSentReported(): boolean;
28
- get terminated(): boolean;
29
- markInitializationStarted({ source, conversationId }: CallLifecycleInitializationParams): void;
30
- bindConversationId(conversationId: string): void;
31
- markWarmupStarted(): void;
32
- markWarmupCompleted(): void;
33
- markCallStarted(): void;
34
- markOutgoingAccepted(): void;
35
- markIncomingAccepted(concurrent: boolean): void;
36
- markFirstMediaSent(): void;
37
- markFinished(reason: HangupReason): void;
38
- markTerminated(): void;
39
- destroy(): void;
40
- private _canRecord;
41
- private _durationSince;
42
- private _finish;
43
- private _ensureConversationId;
44
- private _record;
45
- private _flushPendingEvents;
46
- private _logEvent;
47
- }
@@ -1,13 +0,0 @@
1
- export declare class FirstMediaSentProbe {
2
- private readonly _peerConnection;
3
- private readonly _onFirstMediaSent;
4
- private readonly _pollIntervalMs;
5
- private _timer;
6
- private _state;
7
- constructor(peerConnection: RTCPeerConnection, onFirstMediaSent: () => void, pollIntervalMs?: number);
8
- start(): void;
9
- destroy(): void;
10
- private _getStatsReports;
11
- private _poll;
12
- private _scheduleNextPoll;
13
- }