opensips-js-vue 0.1.40 → 0.1.42

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.
@@ -1,108 +1,123 @@
1
1
  import { AnswerOptions } from 'jssip/lib/RTCSession';
2
+ import { CallListener } from 'jssip/lib/RTCSession';
2
3
  import type { ComputedRef } from 'vue';
4
+ import { ConfirmedListener } from 'jssip/lib/RTCSession';
5
+ import { ConnectingListener } from 'jssip/lib/RTCSession';
6
+ import { DTMFListener } from 'jssip/lib/RTCSession';
3
7
  import { EndEvent } from 'jssip/lib/RTCSession';
8
+ import { EndListener } from 'jssip/lib/RTCSession';
9
+ import { EventEmitter } from 'events';
4
10
  import { ExtraContactParams } from 'jssip/lib/Registrator';
5
- import { ICall as ICall_2 } from '@/types/rtc';
6
- import { ICallStatus as ICallStatus_2 } from '@/types/rtc';
7
- import { IMessage as IMessage_2 } from '@/types/msrp';
11
+ import { HoldListener } from 'jssip/lib/RTCSession';
12
+ import { IceCandidateListener } from 'jssip/lib/RTCSession';
8
13
  import { IncomingAckEvent } from 'jssip/lib/RTCSession';
9
14
  import { IncomingEvent } from 'jssip/lib/RTCSession';
10
- import { IncomingMSRPSessionEvent } from '@/helpers/UA';
11
15
  import { IncomingRequest } from 'jssip/lib/SIPMessage';
12
- import { ITimeData as ITimeData_2 } from '@/types/timer';
16
+ import { InfoListener } from 'jssip/lib/RTCSession';
13
17
  import { MediaConstraints } from 'jssip/lib/RTCSession';
14
- import { MODULES } from '@/enum/modules';
15
- import MSRPMessage from '@/lib/msrp/message';
16
- import { MSRPSession } from '@/lib/msrp/session';
17
- import { MSRPSessionEventMap } from '@/lib/msrp/session';
18
- import { MSRPSessionExtended as MSRPSessionExtended_2 } from '@/types/msrp';
18
+ import { MuteListener } from 'jssip/lib/RTCSession';
19
+ import { OnHoldResult } from 'jssip/lib/RTCSession';
20
+ import { Originator } from 'jssip/lib/RTCSession';
19
21
  import { OutgoingAckEvent } from 'jssip/lib/RTCSession';
20
22
  import { OutgoingEvent } from 'jssip/lib/RTCSession';
21
- import { OutgoingMSRPSessionEvent } from '@/helpers/UA';
23
+ import { PeerConnectionListener } from 'jssip/lib/RTCSession';
22
24
  import type { Ref } from 'vue';
23
- import { RoomChangeEmitType as RoomChangeEmitType_2 } from '@/types/rtc';
25
+ import { ReferListener } from 'jssip/lib/RTCSession';
26
+ import { ReInviteListener } from 'jssip/lib/RTCSession';
27
+ import { RTCPeerConnectionDeprecated } from 'jssip/lib/RTCSession';
24
28
  import { RTCSession } from 'jssip/lib/RTCSession';
25
29
  import { RTCSessionEventMap } from 'jssip/lib/RTCSession';
26
- import { RTCSessionExtended as RTCSessionExtended_2 } from '@/types/rtc';
30
+ import { SDPListener } from 'jssip/lib/RTCSession';
31
+ import { SendingListener } from 'jssip/lib/RTCSession';
27
32
  import { SessionDirection } from 'jssip/lib/RTCSession';
28
- import { StreamMediaType as StreamMediaType_2 } from '@/types/rtc';
33
+ import { UA } from 'jssip';
29
34
  import { UAConfiguration } from 'jssip/lib/UA';
30
35
  import { UAEventMap } from 'jssip/lib/UA';
36
+ import { UpdateListener } from 'jssip/lib/RTCSession';
31
37
 
32
- export declare type ActiveRoomListener = (event: number | undefined) => void
38
+ declare type ActiveRoomListener = (event: number | undefined) => void
33
39
 
34
- export declare type addRoomListener = (value: RoomChangeEmitType_2) => void
40
+ declare type addRoomListener = (value: RoomChangeEmitType) => void
35
41
 
36
- export declare interface AnswerOptionsExtended extends AnswerOptions {
42
+ declare interface AnswerOptionsExtended extends AnswerOptions {
37
43
  mediaConstraints?: MediaConstraints | ExactConstraints
38
44
  }
39
45
 
40
- export declare type AudioModuleName = typeof MODULES.AUDIO
46
+ declare interface AnswerOptionsExtended_2 extends AnswerOptions {
47
+ mediaConstraints?: MediaConstraints | ExactConstraints_2
48
+ }
49
+
50
+ declare type AudioModuleName = typeof MODULES.AUDIO
41
51
 
42
- export declare type CallAddingProgressListener = (callId: string | undefined) => void
52
+ declare type CallAddingProgressListener = (callId: string | undefined) => void
43
53
 
44
- export declare interface CallOptionsExtended extends AnswerOptionsExtended {
54
+ declare interface CallOptionsExtended extends AnswerOptionsExtended {
45
55
  eventHandlers?: Partial<RTCSessionEventMap>;
46
56
  anonymous?: boolean;
47
57
  fromUserName?: string;
48
58
  fromDisplayName?: string;
49
59
  }
50
60
 
51
- export declare type CallTime = Record<string, TempTimeData>
61
+ declare interface CallOptionsExtended_2 extends AnswerOptionsExtended_2 {
62
+ eventHandlers?: Partial<RTCSessionEventMap>;
63
+ anonymous?: boolean;
64
+ fromUserName?: string;
65
+ fromDisplayName?: string;
66
+ }
52
67
 
53
- export declare type changeActiveCallsListener = (event: { [key: string]: ICall_2 }) => void
68
+ declare type changeActiveCallsListener = (event: { [key: string]: ICall }) => void
54
69
 
55
- export declare type changeActiveInputMediaDeviceListener = (event: string) => void
70
+ declare type changeActiveInputMediaDeviceListener = (event: string) => void
56
71
 
57
- export declare type changeActiveMessagesListener = (event: { [key: string]: IMessage_2 }) => void
72
+ declare type changeActiveMessagesListener = (event: { [key: string]: IMessage_2 }) => void
58
73
 
59
- export declare type changeActiveOutputMediaDeviceListener = (event: string) => void
74
+ declare type changeActiveOutputMediaDeviceListener = (event: string) => void
60
75
 
61
- export declare type changeActiveStreamListener = (value: MediaStream) => void
76
+ declare type changeActiveStreamListener = (value: MediaStream) => void
62
77
 
63
- export declare type changeAudioStateListener = (state: boolean) => void
78
+ declare type changeAudioStateListener = (state: boolean) => void
64
79
 
65
- export declare type changeAvailableDeviceListListener = (event: Array<MediaDeviceInfo>) => void
80
+ declare type changeAvailableDeviceListListener = (event: Array<MediaDeviceInfo>) => void
66
81
 
67
- export declare type changeCallMetricsListener = (event: { [key: string]: any }) => void
82
+ declare type changeCallMetricsListener = (event: { [key: string]: any }) => void
68
83
 
69
- export declare type changeCallStatusListener = (event: { [key: string]: ICallStatus_2 }) => void
84
+ declare type changeCallStatusListener = (event: { [key: string]: ICallStatus }) => void
70
85
 
71
- export declare type changeCallTimeListener = (event: { [key: string]: ITimeData_2 }) => void
86
+ declare type changeCallTimeListener = (event: { [key: string]: ITimeData }) => void
72
87
 
73
- export declare type changeCallVolumeListener = (event: ChangeVolumeEventType) => void
88
+ declare type changeCallVolumeListener = (event: ChangeVolumeEventType) => void
74
89
 
75
- export declare type changeIsCallWaitingListener = (value: boolean) => void
90
+ declare type changeIsCallWaitingListener = (value: boolean) => void
76
91
 
77
- export declare type changeIsDNDListener = (value: boolean) => void
92
+ declare type changeIsDNDListener = (value: boolean) => void
78
93
 
79
- export declare type changeIsMutedListener = (value: boolean) => void
94
+ declare type changeIsMutedListener = (value: boolean) => void
80
95
 
81
- export declare type changeMainVideoStreamListener = (event: { name: string, event: MediaStream }) => void
96
+ declare type changeMsrpSessionListener = (session: IMessage_2 | null) => void
82
97
 
83
- export declare type changeMuteWhenJoinListener = (value: boolean) => void
98
+ declare type changeMuteWhenJoinListener = (value: boolean) => void
84
99
 
85
- export declare type changeNoiseReductionStateListener = (event: boolean) => void
100
+ declare type changeNoiseReductionStateListener = (event: boolean) => void
86
101
 
87
- export declare type changeVideoStateListener = (state: boolean) => void
102
+ declare type changeVideoStateListener = (state: boolean) => void
88
103
 
89
104
  export declare type ChangeVolumeEventType = {
90
105
  callId: string
91
106
  volume: number
92
107
  }
93
108
 
94
- export declare type CommonLogMethodType = (...args: unknown[]) => void
109
+ declare type CommonLogMethodType = (...args: unknown[]) => void
95
110
 
96
- export declare type conferenceEndListener = (sessionId) => void
111
+ declare type conferenceEndListener = (sessionId) => void
97
112
 
98
- export declare type conferenceStartListener = () => void
113
+ declare type conferenceStartListener = () => void
99
114
 
100
- export declare type connectionListener = (value: boolean) => void
115
+ declare type connectionListener = (value: boolean) => void
101
116
 
102
- export declare type connectionStateChangeListener = (event: ConnectionStateChangeType) => void
117
+ declare type connectionStateChangeListener = (event: ConnectionStateChangeType) => void
103
118
 
104
119
  export declare type ConnectionStateChangeType = {
105
- session: RTCSessionExtended_2,
120
+ session: RTCSessionExtended,
106
121
  connectionState: string
107
122
  }
108
123
 
@@ -113,7 +128,14 @@ export declare interface CustomLoggerType {
113
128
  debug: CommonLogMethodType
114
129
  }
115
130
 
116
- export declare type ExactConstraints = {
131
+ declare type ExactConstraints = {
132
+ audio?: {
133
+ deviceId: {exact: string}
134
+ }
135
+ video?: boolean;
136
+ }
137
+
138
+ declare type ExactConstraints_2 = {
117
139
  audio?: {
118
140
  deviceId: {exact: string}
119
141
  }
@@ -136,15 +158,15 @@ export declare interface ICallStatus {
136
158
  isTransferred: boolean
137
159
  }
138
160
 
139
- export declare interface ICallStatusUpdate {
140
- callId: string
141
- isMoving?: boolean
142
- isTransferring?: boolean
143
- isMerging?: boolean
144
- isTransferred?: boolean
161
+ export declare interface IMessage extends MSRPSessionExtended {
162
+ roomId?: number
163
+ localMuted?: boolean
164
+ localHold?: boolean
165
+ audioTag?: StreamMediaType
166
+ terminate(): void
145
167
  }
146
168
 
147
- declare interface IMessage extends MSRPSessionExtended {
169
+ declare interface IMessage_2 extends MSRPSessionExtended_2 {
148
170
  roomId?: number
149
171
  localMuted?: boolean
150
172
  localHold?: boolean
@@ -152,14 +174,18 @@ declare interface IMessage extends MSRPSessionExtended {
152
174
  terminate(): void
153
175
  }
154
176
 
155
- export declare type IncomingMSRPSessionListener = (event: IncomingMSRPSessionEvent) => void;
177
+ declare interface IncomingMSRPSessionEvent {
178
+ originator: Originator.REMOTE;
179
+ session: MSRPSession;
180
+ request: IncomingRequest;
181
+ }
182
+
183
+ declare type IncomingMSRPSessionListener = (event: IncomingMSRPSessionEvent) => void;
156
184
 
157
185
  declare type InitOpensipsConfiguration = Omit<IOpenSIPSConfiguration, 'uri' | 'session_timers' | 'password' | 'noiseReductionOptions'> & {
158
186
  noiseReductionOptions?: NoiseReductionOptionsWithoutVadModule
159
187
  }
160
188
 
161
- export declare type IntervalType = ReturnType<typeof setInterval>
162
-
163
189
  export declare type IOpenSIPSConfiguration = Omit<UAConfigurationExtended, 'sockets'>
164
190
 
165
191
  export declare interface IOpenSIPSJSOptions {
@@ -183,10 +209,6 @@ export declare interface IRoom {
183
209
  roomId: number
184
210
  }
185
211
 
186
- export declare type IRoomUpdate = Omit<IRoom, 'started'> & {
187
- started?: Date
188
- }
189
-
190
212
  export declare interface ITimeData {
191
213
  callId: string
192
214
  hours: number
@@ -195,38 +217,385 @@ export declare interface ITimeData {
195
217
  formatted: string
196
218
  }
197
219
 
220
+ declare type Listener = (event: unknown) => void
221
+
222
+ declare type Listener_3 = (event: unknown) => void
223
+
198
224
  export declare type ListenerCallbackFnType<T extends ListenersKeyType> = OpenSIPSEventMap[T]
199
225
 
200
226
  export declare type ListenerEventType = EndEvent | IncomingEvent | OutgoingEvent | IncomingAckEvent | OutgoingAckEvent
201
227
 
202
- export declare type ListenersCallbackFnType = OpenSIPSEventMap[ListenersKeyType]
203
-
204
- export declare type ListenersKeyType = keyof OpenSIPSEventMap
228
+ declare type ListenersKeyType = keyof OpenSIPSEventMap
205
229
 
206
230
  declare type MediaDeviceOption = Omit<MediaDeviceInfo, 'toJSON'>
207
231
 
208
- export declare interface MediaEvent extends Event {
209
- stream: MediaStream
232
+ declare type memberHangupListener = (event: object) => void
233
+
234
+ declare type memberJoinListener = (event: object) => void
235
+
236
+ declare const MODULES: {
237
+ readonly AUDIO: "audio";
238
+ readonly VIDEO: "video";
239
+ readonly MSRP: "msrp";
240
+ };
241
+
242
+ declare type Modules = AudioModuleName | VideoModuleName | MSRPModuleName
243
+
244
+ export declare const MSRP_EVT: {
245
+ readonly CREATE: "m.conversation.create";
246
+ readonly MESSAGE: "m.conversation.message";
247
+ readonly MEMBER: "m.conversation.member";
248
+ readonly CLOSED: "m.conversation.closed";
249
+ readonly REOPEN: "m.conversation.reopen";
250
+ readonly DELETE: "m.conversation.delete";
251
+ readonly SYNC: "m.sync";
252
+ readonly UPLOAD_REQUEST: "m.upload.request";
253
+ readonly UPLOAD_RESPONSE: "m.upload.response";
254
+ readonly FILE_ACCESS_REQUEST: "m.file.access.request";
255
+ readonly FILE_ACCESS_RESPONSE: "m.file.access.response";
256
+ readonly REACTION: "m.reaction";
257
+ readonly TYPING: "m.typing";
258
+ readonly PRESENCE: "m.presence";
259
+ readonly SENT: "m.sent";
260
+ readonly DELIVERED: "m.delivered";
261
+ readonly READ: "m.read";
262
+ readonly UNREAD: "m.unread";
263
+ readonly FAILED: "m.failed";
264
+ readonly SENDING: "m.sending";
265
+ };
266
+
267
+ declare type msrpConversationCreatedListener = (payload: {
268
+ conversation: MSRPConversationState_2
269
+ }) => void
270
+
271
+ /**
272
+ * A conversation is addressed exclusively by its public numeric
273
+ * `conversation_id`. A stringified id is also accepted for convenience.
274
+ */
275
+ export declare type MSRPConversationRef = number | string;
276
+
277
+ declare type msrpConversationRemovedListener = (payload: {
278
+ conversation_id?: number
279
+ }) => void
280
+
281
+ export declare interface MSRPConversationState {
282
+ /**
283
+ * Public, stable numeric conversation identifier assigned by the backend.
284
+ * This is the only identifier exposed to application code — conversations
285
+ * are addressed exclusively by `conversation_id`.
286
+ */
287
+ conversation_id?: number
288
+ creator: string | null
289
+ members: Set<string>
290
+ memberRoles: Map<string, MSRPMemberRole>
291
+ currentUserRole: MSRPMemberRole
292
+ currentUserStatus: MSRPMembership | null
293
+ /**
294
+ * Per-user read pointer (backend `last_read_message_id` in the current
295
+ * user's member state). `null` means the whole conversation is unread;
296
+ * an event_id means everything after that event is unread. Consumers
297
+ * derive the unread count from this pointer + the local timeline.
298
+ */
299
+ currentUserLastReadMessageId?: string | null
300
+ state_events: { [key: string]: { [stateKey: string]: any } }
301
+ created_at: number
302
+ updated_at: number
303
+ status?: string
210
304
  }
211
305
 
212
- export declare type memberHangupListener = (event: object) => void
306
+ declare interface MSRPConversationState_2 {
307
+ /**
308
+ * Public, stable numeric conversation identifier assigned by the backend.
309
+ * This is the only identifier exposed to application code — conversations
310
+ * are addressed exclusively by `conversation_id`.
311
+ */
312
+ conversation_id?: number
313
+ creator: string | null
314
+ members: Set<string>
315
+ memberRoles: Map<string, MSRPMemberRole_2>
316
+ currentUserRole: MSRPMemberRole_2
317
+ currentUserStatus: MSRPMembership_2 | null
318
+ /**
319
+ * Per-user read pointer (backend `last_read_message_id` in the current
320
+ * user's member state). `null` means the whole conversation is unread;
321
+ * an event_id means everything after that event is unread. Consumers
322
+ * derive the unread count from this pointer + the local timeline.
323
+ */
324
+ currentUserLastReadMessageId?: string | null
325
+ state_events: { [key: string]: { [stateKey: string]: any } }
326
+ created_at: number
327
+ updated_at: number
328
+ status?: string
329
+ }
330
+
331
+ declare type msrpConversationUpdatedListener = (payload: {
332
+ conversation_id?: number
333
+ patch: Partial<MSRPConversationState_2>
334
+ }) => void
335
+
336
+ declare type MSRPInitializingListener = (value: boolean) => void
337
+
338
+ export declare type MSRPMemberRole = 'in_charge' | 'manager' | 'assigned'
213
339
 
214
- export declare type memberJoinListener = (event: object) => void
340
+ declare type MSRPMemberRole_2 = 'in_charge' | 'manager' | 'assigned'
215
341
 
216
- export declare type Modules = AudioModuleName | VideoModuleName | MSRPModuleName
342
+ export declare type MSRPMembership = 'join' | 'leave' | 'invite' | 'ban'
217
343
 
218
- export declare type MSRPInitializingListener = (sessionId: string | undefined) => void
344
+ declare type MSRPMembership_2 = 'join' | 'leave' | 'invite' | 'ban'
345
+
346
+ declare class MSRPMessage {
347
+ protocol: string
348
+ ident: string
349
+ code: number
350
+ method: string
351
+ headers: any
352
+ body: string
353
+ direction: string
354
+
355
+ constructor(msg: string)
356
+ addHeader(name: string, content: string): void
357
+ getHeader(name: string): string
358
+ toString(): string
359
+ }
360
+
361
+ declare type msrpMessageAddedListener = (payload: {
362
+ conversation_id?: number
363
+ message: any
364
+ }) => void
365
+
366
+ declare type msrpMessageDeletedListener = (payload: {
367
+ conversation_id?: number
368
+ eventId: string
369
+ deletedBy: string
370
+ updatedAt: number
371
+ }) => void
372
+
373
+ declare type msrpMessageEditedListener = (payload: {
374
+ conversation_id?: number
375
+ eventId: string
376
+ newContent: any
377
+ editEvent: any
378
+ updatedAt: number
379
+ }) => void
219
380
 
220
381
  export declare type MSRPMessageEventType = {
221
382
  message: MSRPMessage,
222
383
  session: MSRPSessionExtended_2
223
384
  }
224
385
 
225
- export declare type MSRPMessageListener = (event: MSRPMessageEventType) => void;
386
+ declare type MSRPMessageListener = (event: MSRPMessageEventType) => void;
387
+
388
+ export declare type MSRPMessageStatus = 'pending' | 'sent' | 'delivered' | 'read' | 'failed'
389
+
390
+ declare type MSRPMessageStatus_2 = 'pending' | 'sent' | 'delivered' | 'read' | 'failed'
391
+
392
+ declare type MSRPModuleName = typeof MODULES.MSRP
393
+
394
+ declare interface MSRPOptions extends AnswerOptions {
395
+ eventHandlers?: Partial<MSRPSessionEventMap>
396
+ anonymous?: boolean;
397
+ fromUserName?: string;
398
+ fromDisplayName?: string;
399
+ }
400
+
401
+ declare interface MSRPOptions_2 extends AnswerOptions {
402
+ eventHandlers?: Partial<MSRPSessionEventMap_2>
403
+ anonymous?: boolean;
404
+ fromUserName?: string;
405
+ fromDisplayName?: string;
406
+ }
407
+
408
+ declare type msrpPresenceListener = (payload: {
409
+ conversation_id?: number
410
+ sender: string
411
+ presence: string | null
412
+ lastActiveAt: number | null
413
+ updatedAt: number
414
+ }) => void
415
+
416
+ /**
417
+ * Presence pulse for a peer, indexed by SIP URI. Values are pushed from
418
+ * `msrpPresence` events and consumed by presence dots / "last seen" UI.
419
+ */
420
+ export declare interface MSRPPresenceState {
421
+ presence: string | null;
422
+ lastActiveAt: number | null;
423
+ updatedAt: number;
424
+ }
425
+
426
+ export declare type MSRPReactionAction = 'add' | 'remove';
427
+
428
+ declare type msrpReactionChangedListener = (payload: {
429
+ conversation_id?: number
430
+ eventId: string
431
+ emoji: string
432
+ action: 'add' | 'remove'
433
+ sender: string
434
+ updatedAt: number
435
+ }) => void
436
+
437
+ declare type msrpReceiptChangedListener = (payload: {
438
+ conversation_id?: number
439
+ eventId: string
440
+ status: MSRPMessageStatus_2
441
+ updatedAt: number
442
+ }) => void
443
+
444
+ /** Optional modifiers for an outgoing text/note message. */
445
+ export declare interface MSRPSendMessageOptions {
446
+ /** event_id of the message being replied to — becomes `content.in_reply_to`. */
447
+ replyToEventId?: string;
448
+ /** Overrides `content.message_type` (defaults to 'text'). */
449
+ messageType?: string;
450
+ /** Attribution label for a forwarded message — becomes `content.forwarded_from`. */
451
+ forwardedFrom?: string;
452
+ }
453
+
454
+ declare class MSRPSession extends EventEmitter {
455
+ _ua: UAExtendedInterface
456
+ id: any
457
+ credentials: any
458
+ status: string
459
+ target: string
460
+ message: string
461
+
462
+ constructor(ua: UAExtendedInterface)
463
+
464
+ get direction(): SessionDirection;
465
+
466
+ get connection(): RTCPeerConnectionDeprecated;
467
+
468
+ get start_time(): Date;
469
+
470
+ isOnHold(): OnHoldResult;
471
+
472
+ mute(options?: MediaConstraints): void;
473
+
474
+ unmute(options?: MediaConstraints): void;
475
+
476
+ init_incoming(request: any): void;
477
+
478
+ isEnded(): boolean;
479
+
480
+ connect(target?:string): void
481
+
482
+ sendMSRP(message: string): void
483
+
484
+ _sendOk(message: string): void
485
+
486
+ _sendReport(message: string): void
487
+
488
+ terminate(options?: any): void
489
+
490
+ receiveRequest(request: unknown): void
491
+
492
+ on<T extends keyof MSRPSessionEventMap>(type: T, listener: MSRPSessionEventMap[T]): this;
493
+ }
494
+
495
+ declare class MSRPSession_2 extends EventEmitter {
496
+ _ua: UAExtendedInterface_2
497
+ id: any
498
+ credentials: any
499
+ status: string
500
+ target: string
501
+ message: string
502
+
503
+ constructor(ua: UAExtendedInterface_2)
504
+
505
+ get direction(): SessionDirection;
506
+
507
+ get connection(): RTCPeerConnectionDeprecated;
508
+
509
+ get start_time(): Date;
510
+
511
+ isOnHold(): OnHoldResult;
512
+
513
+ mute(options?: MediaConstraints): void;
226
514
 
227
- export declare type MSRPModuleName = typeof MODULES.MSRP
515
+ unmute(options?: MediaConstraints): void;
516
+
517
+ init_incoming(request: any): void;
518
+
519
+ isEnded(): boolean;
520
+
521
+ connect(target?:string): void
522
+
523
+ sendMSRP(message: string): void
524
+
525
+ _sendOk(message: string): void
526
+
527
+ _sendReport(message: string): void
528
+
529
+ terminate(options?: any): void
530
+
531
+ receiveRequest(request: unknown): void
532
+
533
+ on<T extends keyof MSRPSessionEventMap_2>(type: T, listener: MSRPSessionEventMap_2[T]): this;
534
+ }
228
535
 
229
- declare interface MSRPSessionExtended extends MSRPSession {
536
+ declare interface MSRPSessionEventMap {
537
+ 'peerconnection': PeerConnectionListener;
538
+ 'connecting': ConnectingListener;
539
+ 'sending': SendingListener;
540
+ 'progress': CallListener;
541
+ 'accepted': CallListener;
542
+ 'confirmed': ConfirmedListener;
543
+ 'ended': EndListener;
544
+ 'failed': EndListener;
545
+ 'newDTMF': DTMFListener;
546
+ 'newInfo': InfoListener;
547
+ 'hold': HoldListener;
548
+ 'unhold': HoldListener;
549
+ 'muted': MuteListener;
550
+ 'unmuted': MuteListener;
551
+ 'reinvite': ReInviteListener;
552
+ 'update': UpdateListener;
553
+ 'refer': ReferListener;
554
+ 'replaces': ReferListener;
555
+ 'sdp': SDPListener;
556
+ 'icecandidate': IceCandidateListener;
557
+ 'getusermediafailed': Listener;
558
+ 'active' : Listener;
559
+ 'msgHistoryUpdate' : Listener;
560
+ 'newMessage' : Listener;
561
+ 'peerconnection:createofferfailed': Listener;
562
+ 'peerconnection:createanswerfailed': Listener;
563
+ 'peerconnection:setlocaldescriptionfailed': Listener;
564
+ 'peerconnection:setremotedescriptionfailed': Listener;
565
+ }
566
+
567
+ declare interface MSRPSessionEventMap_2 {
568
+ 'peerconnection': PeerConnectionListener;
569
+ 'connecting': ConnectingListener;
570
+ 'sending': SendingListener;
571
+ 'progress': CallListener;
572
+ 'accepted': CallListener;
573
+ 'confirmed': ConfirmedListener;
574
+ 'ended': EndListener;
575
+ 'failed': EndListener;
576
+ 'newDTMF': DTMFListener;
577
+ 'newInfo': InfoListener;
578
+ 'hold': HoldListener;
579
+ 'unhold': HoldListener;
580
+ 'muted': MuteListener;
581
+ 'unmuted': MuteListener;
582
+ 'reinvite': ReInviteListener;
583
+ 'update': UpdateListener;
584
+ 'refer': ReferListener;
585
+ 'replaces': ReferListener;
586
+ 'sdp': SDPListener;
587
+ 'icecandidate': IceCandidateListener;
588
+ 'getusermediafailed': Listener_3;
589
+ 'active' : Listener_3;
590
+ 'msgHistoryUpdate' : Listener_3;
591
+ 'newMessage' : Listener_3;
592
+ 'peerconnection:createofferfailed': Listener_3;
593
+ 'peerconnection:createanswerfailed': Listener_3;
594
+ 'peerconnection:setlocaldescriptionfailed': Listener_3;
595
+ 'peerconnection:setremotedescriptionfailed': Listener_3;
596
+ }
597
+
598
+ export declare interface MSRPSessionExtended extends MSRPSession_2 {
230
599
  id: string
231
600
  status: string
232
601
  start_time: Date
@@ -246,10 +615,67 @@ declare interface MSRPSessionExtended extends MSRPSession {
246
615
  answer(options?: any): void
247
616
  _init_incomeing(): void
248
617
  sendMSRP(body: string): void
249
- on<T extends keyof MSRPSessionEventMap>(type: T, listener: MSRPSessionEventMap[T]): this;
618
+ on<T extends keyof MSRPSessionEventMap_2>(type: T, listener: MSRPSessionEventMap_2[T]): this;
619
+ }
620
+
621
+ declare interface MSRPSessionExtended_2 extends MSRPSession_2 {
622
+ id: string
623
+ status: string
624
+ start_time: Date
625
+ direction: SessionDirection
626
+ _id: string
627
+ _cancel_reason: string
628
+ _contact: string
629
+ _end_time: Date
630
+ _eventsCount: number
631
+ _from_tag: string
632
+ _is_canceled: boolean
633
+ _is_confirmed: boolean
634
+ _late_sdp: string
635
+ _status: number
636
+ _remote_identity: string
637
+ target_addr: Array<string>
638
+ answer(options?: any): void
639
+ _init_incomeing(): void
640
+ sendMSRP(body: string): void
641
+ on<T extends keyof MSRPSessionEventMap_2>(type: T, listener: MSRPSessionEventMap_2[T]): this;
250
642
  }
251
643
 
252
- export declare type MSRPSessionListener = IncomingMSRPSessionListener | OutgoingMSRPSessionListener;
644
+ declare type MSRPSessionListener = IncomingMSRPSessionListener | OutgoingMSRPSessionListener;
645
+
646
+ declare type msrpSyncCompletedListener = (payload: {
647
+ conversations: { [key: string]: MSRPConversationState_2 }
648
+ messagesByConversation: { [key: string]: any[] }
649
+ }) => void
650
+
651
+ declare type msrpTypingListener = (payload: {
652
+ conversation_id?: number
653
+ sender: string
654
+ isTyping: boolean
655
+ }) => void
656
+
657
+ /**
658
+ * Transient typing indicator kept per-conversation. Not emitted by
659
+ * opensips-js; the wrapper composes it from `msrpTyping` events plus a
660
+ * `Date.now()` timestamp for UI decay.
661
+ */
662
+ export declare interface MSRPTypingState {
663
+ sender: string;
664
+ isTyping: boolean;
665
+ updatedAt: number;
666
+ }
667
+
668
+ export declare interface MSRPUploadResult {
669
+ upload_url: string
670
+ expires_in?: number
671
+ mime_type: string
672
+ request_id: string
673
+ filename?: string
674
+ preview_url?: string
675
+ icon_url?: string
676
+ transcription?: string
677
+ media_type?: string
678
+ }
253
679
 
254
680
  export declare type NoiseReductionMode = 'disabled' | 'enabled' | 'dynamic'
255
681
 
@@ -276,7 +702,7 @@ export declare interface NoiseReductionOptions {
276
702
 
277
703
  export declare type NoiseReductionOptionsWithoutVadModule = Omit<NoiseReductionOptions, 'vadModule'>
278
704
 
279
- export declare type OnTransportCallback = (parsed: object, message: string) => void
705
+ declare type OnTransportCallback = (parsed: object, message: string) => void
280
706
 
281
707
  export declare interface OpensipsConnectOptions {
282
708
  domain: string
@@ -320,6 +746,19 @@ export declare interface OpenSIPSEventMap extends UAEventMap {
320
746
  connectionStateChange: connectionStateChangeListener
321
747
  newMSRPMessage: MSRPMessageListener
322
748
  newMSRPSession: MSRPSessionListener
749
+ // MSRP events listeners
750
+ changeMsrpSession: changeMsrpSessionListener
751
+ msrpSyncCompleted: msrpSyncCompletedListener
752
+ msrpConversationCreated: msrpConversationCreatedListener
753
+ msrpConversationRemoved: msrpConversationRemovedListener
754
+ msrpConversationUpdated: msrpConversationUpdatedListener
755
+ msrpMessageAdded: msrpMessageAddedListener
756
+ msrpReceiptChanged: msrpReceiptChangedListener
757
+ msrpReactionChanged: msrpReactionChangedListener
758
+ msrpTyping: msrpTypingListener
759
+ msrpMessageEdited: msrpMessageEditedListener
760
+ msrpMessageDeleted: msrpMessageDeletedListener
761
+ msrpPresence: msrpPresenceListener
323
762
  // JANUS
324
763
  conferenceStart: conferenceStartListener
325
764
  conferenceEnd: conferenceEndListener
@@ -333,36 +772,41 @@ export declare interface OpenSIPSEventMap extends UAEventMap {
333
772
  changeVideoState: changeVideoStateListener
334
773
  }
335
774
 
336
- export declare type OutgoingMSRPSessionListener = (event: OutgoingMSRPSessionEvent) => void;
775
+ declare interface OutgoingMSRPSessionEvent {
776
+ originator: Originator.LOCAL;
777
+ session: MSRPSession;
778
+ request: IncomingRequest;
779
+ }
780
+
781
+ declare type OutgoingMSRPSessionListener = (event: OutgoingMSRPSessionEvent) => void;
337
782
 
338
783
  declare interface PNExtraHeaders {
339
784
  [key: string]: string
340
785
  }
341
786
 
342
- export declare type readyListener = (value: boolean) => void
787
+ declare type readyListener = (value: boolean) => void
343
788
 
344
- export declare type reconnectionAttemptsLimitListener = () => void
789
+ declare type reconnectionAttemptsLimitListener = () => void
345
790
 
346
- export declare type reconnectionListener = (value: boolean) => void
791
+ declare type reconnectionListener = (value: boolean) => void
347
792
 
348
- export declare interface RemoteIdentityCallType {
793
+ declare interface RemoteIdentityCallType {
349
794
  _display_name: string
350
795
  _uri: {
351
796
  _user: string
352
797
  }
353
798
  }
354
799
 
355
- export declare type removeRoomListener = (value: RoomChangeEmitType_2) => void
800
+ declare type removeRoomListener = (value: RoomChangeEmitType) => void
356
801
 
357
- export declare type RoomChangeEmitType = {
802
+ declare type RoomChangeEmitType = {
358
803
  room: IRoom
359
804
  roomList: { [key: number]: IRoom }
360
805
  }
361
806
 
362
- export declare type RoomDeletedListener = (roomId: number) => void
807
+ declare type RoomDeletedListener = (roomId: number) => void
363
808
 
364
809
  declare type RTCBundlePolicy_2 = 'balanced' | 'max-bundle' | 'max-compat'
365
- export { RTCBundlePolicy_2 as RTCBundlePolicy }
366
810
 
367
811
  declare interface RTCConfiguration_2 {
368
812
  bundlePolicy?: RTCBundlePolicy_2;
@@ -372,22 +816,18 @@ declare interface RTCConfiguration_2 {
372
816
  iceTransportPolicy?: RTCIceTransportPolicy_2;
373
817
  rtcpMuxPolicy?: RTCRtcpMuxPolicy_2;
374
818
  }
375
- export { RTCConfiguration_2 as RTCConfiguration }
376
819
 
377
820
  declare interface RTCIceServer_2 {
378
821
  credential?: string;
379
822
  urls: string | string[];
380
823
  username?: string;
381
824
  }
382
- export { RTCIceServer_2 as RTCIceServer }
383
825
 
384
826
  declare type RTCIceTransportPolicy_2 = 'all' | 'relay'
385
- export { RTCIceTransportPolicy_2 as RTCIceTransportPolicy }
386
827
 
387
828
  declare type RTCRtcpMuxPolicy_2 = 'require'
388
- export { RTCRtcpMuxPolicy_2 as RTCRtcpMuxPolicy }
389
829
 
390
- export declare interface RTCSessionExtended extends RTCSession {
830
+ declare interface RTCSessionExtended extends RTCSession {
391
831
  id: string
392
832
  _automaticHold: boolean
393
833
  _id: string
@@ -410,49 +850,93 @@ export declare interface RTCSessionExtended extends RTCSession {
410
850
  init_icncoming(request: IncomingRequest): void
411
851
  }
412
852
 
413
- export declare type startBlurListener = () => void
853
+ declare type startBlurListener = () => void
414
854
 
415
- export declare type startScreenShareListener = (event: MediaStream) => void
855
+ declare type startScreenShareListener = (event: MediaStream) => void
416
856
 
417
- export declare type stopBlurListener = () => void
857
+ declare type stopBlurListener = () => void
418
858
 
419
- export declare type stopScreenShareListener = () => void
859
+ declare type stopScreenShareListener = () => void
420
860
 
421
- export declare interface StreamMediaType extends HTMLAudioElement {
861
+ declare interface StreamMediaType extends HTMLAudioElement {
422
862
  className: string
423
863
  setSinkId (id: string): Promise<void>
424
864
  }
425
865
 
426
- export declare type TempTimeData = Omit<ITimeData, 'callId'> & {
427
- callId: string | undefined
866
+ declare interface StreamMediaType_2 extends HTMLAudioElement {
867
+ className: string
868
+ setSinkId (id: string): Promise<void>
428
869
  }
429
870
 
430
- export declare type TestEventListener = (event: { test: string }) => void
871
+ declare type TestEventListener = (event: { test: string }) => void
431
872
 
432
- export declare interface TriggerListenerOptions {
873
+ export declare interface TriggerMSRPListenerOptions {
433
874
  listenerType: string
434
- session: RTCSessionExtended
875
+ session: MSRPSessionExtended
435
876
  event?: ListenerEventType
436
877
  }
437
878
 
438
- export declare type UAConfigurationExtended = UAConfiguration & {
879
+ declare type UAConfigurationExtended = UAConfiguration & {
439
880
  reconnectionAttemptsLimit?: number
440
881
  overrideUserAgent?: (userAgent: string) => string
441
882
  noiseReductionOptions?: NoiseReductionOptions
442
883
  onTransportCallback?: OnTransportCallback
443
884
  }
444
885
 
445
- export declare type updateRoomListener = (value: RoomChangeEmitType_2) => void
886
+ declare interface UAExtendedInterface extends UA {
887
+ //_msrp_sessions: MSRPSession[]
888
+ _transactions: {
889
+ nist: object,
890
+ nict: object,
891
+ ist: object,
892
+ ict: object
893
+ }
894
+
895
+ call (target: string, options?: CallOptionsExtended): RTCSession
896
+ newMSRPSession (session: MSRPSession, data: object): void
897
+ destroyMSRPSession (session: MSRPSession): void
898
+ receiveRequest (request: any): void
899
+ startMSRP (target: string, options: MSRPOptions): MSRPSession
900
+ terminateMSRPSessions (options: object): void
901
+ stop (): void
902
+ }
903
+
904
+ declare interface UAExtendedInterface_2 extends UA {
905
+ //_msrp_sessions: MSRPSession[]
906
+ _transactions: {
907
+ nist: object,
908
+ nict: object,
909
+ ist: object,
910
+ ict: object
911
+ }
912
+
913
+ call (target: string, options?: CallOptionsExtended_2): RTCSession
914
+ newMSRPSession (session: MSRPSession_2, data: object): void
915
+ destroyMSRPSession (session: MSRPSession_2): void
916
+ receiveRequest (request: any): void
917
+ startMSRP (target: string, options: MSRPOptions_2): MSRPSession_2
918
+ terminateMSRPSessions (options: object): void
919
+ stop (): void
920
+ }
921
+
922
+ /**
923
+ * Per-conversation unread count derived from
924
+ * `MSRPConversationState.currentUserLastReadMessageId` + local timeline.
925
+ * Only conversations with count > 0 appear in the map.
926
+ */
927
+ export declare type UnreadCounts = Record<string, number>;
928
+
929
+ declare type updateRoomListener = (value: RoomChangeEmitType) => void
446
930
 
447
931
  export declare function useVsipInject(): VsipAPI;
448
932
 
449
933
  export declare function useVsipProvide(): VsipAPI;
450
934
 
451
- export declare interface VADModule {
935
+ declare interface VADModule {
452
936
  MicVAD: any
453
937
  }
454
938
 
455
- export declare interface VADOptions {
939
+ declare interface VADOptions {
456
940
  model: 'v5' | 'legacy'
457
941
  positiveSpeechThreshold: number
458
942
  negativeSpeechThreshold: number
@@ -460,12 +944,7 @@ export declare interface VADOptions {
460
944
  preSpeechPadFrames: number
461
945
  }
462
946
 
463
- export declare interface VADSessionState {
464
- isSpeaking: boolean
465
- currentMode: 'clean' | 'noisy'
466
- }
467
-
468
- export declare type VideoModuleName = typeof MODULES.VIDEO
947
+ declare type VideoModuleName = typeof MODULES.VIDEO
469
948
 
470
949
  export declare interface VsipAPI {
471
950
  state: VsipAPIState
@@ -496,11 +975,7 @@ declare interface VsipAPIActions {
496
975
  unholdCall: (callId: string) => void
497
976
  answerCall: (callId: string) => void
498
977
  moveCall: (callId: string, roomId: number) => Promise<void>
499
- msrpAnswer: (callId: string) => void
500
- messageTerminate: (callId: string) => void
501
- initCall: (target: string, addToCurrentRoom: boolean, holdOtherCalls = false) => void
502
- sendMSRP: (msrpSessionId: string, body: string) => void
503
- initMSRP: (target: string, body: string, options: object) => void
978
+ initCall: (target: string, addToCurrentRoom: boolean, holdOtherCalls?: boolean) => void
504
979
  setMicrophone: (deviceId: string) => Promise<void>
505
980
  setSpeaker: (deviceId: string) => Promise<void>
506
981
  sendDTMF: (callId: string, value: string) => void
@@ -509,6 +984,76 @@ declare interface VsipAPIActions {
509
984
  setSpeakerVolume: (value: number) => void
510
985
  setAutoAnswer: (value: boolean) => void
511
986
  setMetricsConfig: (config: WebrtcMetricsConfigType) => void
987
+ // ---------- MSRP ----------
988
+ initMSRP: (options?: object) => void
989
+ initMSRPAndSendMessage: (target: string, body: string, options?: object) => void
990
+ msrpAnswer: (callId: string) => void
991
+ messageTerminate: (callId: string) => void
992
+ sendMSRP: (msrpSessionId: string, body: string) => void
993
+ safeSendMSRP: (body: string) => boolean
994
+ sendCreateConversationMessage: (targetSip: string | string[]) => boolean
995
+ sendTextMessage: (
996
+ conversationRef: MSRPConversationRef,
997
+ text: string,
998
+ options?: MSRPSendMessageOptions
999
+ ) => boolean
1000
+ sendInternalNote: (
1001
+ conversationRef: MSRPConversationRef,
1002
+ text: string,
1003
+ options?: Omit<MSRPSendMessageOptions, 'messageType'>
1004
+ ) => boolean
1005
+ editMessage: (conversationRef: MSRPConversationRef, targetEventId: string, newText: string) => boolean
1006
+ deleteMessage: (conversationRef: MSRPConversationRef, targetEventId: string) => boolean
1007
+ forwardMessage: (
1008
+ sourceMessage: any,
1009
+ targetConversationRef: MSRPConversationRef,
1010
+ forwardedFromLabel?: string
1011
+ ) => boolean
1012
+ sendMediaMessage: (
1013
+ conversationRef: MSRPConversationRef,
1014
+ uploadResult: MSRPUploadResult,
1015
+ caption?: string
1016
+ ) => boolean
1017
+ sendReaction: (
1018
+ conversationRef: MSRPConversationRef,
1019
+ targetEventId: string,
1020
+ emoji: string,
1021
+ action?: MSRPReactionAction
1022
+ ) => boolean
1023
+ removeReaction: (conversationRef: MSRPConversationRef, targetEventId: string, emoji: string) => boolean
1024
+ sendTypingIndicator: (conversationRef: MSRPConversationRef) => boolean
1025
+ startTypingKeepAlive: (conversationRef: MSRPConversationRef) => void
1026
+ stopTypingKeepAlive: () => void
1027
+ /**
1028
+ * Mark the whole conversation as unread (server-side pointer → null).
1029
+ * Optimistically applies the pointer locally so the UI reflects the
1030
+ * change without waiting for a backend echo.
1031
+ */
1032
+ markConversationAsUnread: (conversationRef: MSRPConversationRef) => boolean
1033
+ /**
1034
+ * Mark `targetEventId` and every later message as unread. The pointer
1035
+ * is moved to the message immediately preceding `targetEventId` in the
1036
+ * local timeline; if the target is the very first message the pointer
1037
+ * becomes null (whole conversation unread).
1038
+ */
1039
+ markAsUnreadFromMessage: (
1040
+ conversationRef: MSRPConversationRef,
1041
+ targetEventId: string
1042
+ ) => boolean
1043
+ closeConversation: (conversationRef: MSRPConversationRef, reason?: string, cause?: string) => boolean
1044
+ changeMemberRole: (conversationRef: MSRPConversationRef, targetUri: string, newRole: MSRPMemberRole) => boolean
1045
+ acceptInvite: (conversationRef: MSRPConversationRef) => boolean
1046
+ rejectInvite: (conversationRef: MSRPConversationRef) => boolean
1047
+ leaveConversation: (conversationRef: MSRPConversationRef) => boolean
1048
+ setActiveConversation: (conversationId: string | null) => void
1049
+ requestUploadUrl: (
1050
+ conversationRef: MSRPConversationRef,
1051
+ filename: string,
1052
+ mimeType: string,
1053
+ fileSize: number
1054
+ ) => Promise<MSRPUploadResult>
1055
+ requestFileAccess: (conversationRef: MSRPConversationRef, eventId: string) => Promise<unknown>
1056
+ uploadFile: (conversationRef: MSRPConversationRef, file: File, caption?: string) => Promise<MSRPUploadResult>
512
1057
  }
513
1058
 
514
1059
  declare interface VsipAPIState {
@@ -521,7 +1066,6 @@ declare interface VsipAPIState {
521
1066
  addCallToCurrentRoom: Ref<boolean>
522
1067
  callAddingInProgress: Ref<string | undefined>
523
1068
  activeRooms: Ref<{ [key: number]: IRoom }>
524
- msrpHistory: Ref<{ [key: string]: Array<MSRPMessage> }>
525
1069
  availableMediaDevices: Ref<Array<MediaDeviceInfo>>
526
1070
  inputMediaDeviceList: Ref<Array<MediaDeviceOption>>
527
1071
  outputMediaDeviceList: Ref<Array<MediaDeviceOption>>
@@ -540,9 +1084,36 @@ declare interface VsipAPIState {
540
1084
  callTime: Ref<{ [key: string]: ITimeData }>
541
1085
  callMetrics: Ref<{ [key: string]: unknown }>
542
1086
  noiseReductionState: Ref<boolean>
1087
+ // ---------- MSRP session ----------
1088
+ currentMsrpSession: Ref<IMessage | null>
1089
+ isMSRPInitializing: Ref<boolean>
1090
+ hasActiveMsrpSession: ComputedRef<boolean>
1091
+ // ---------- MSRP conversation state ----------
1092
+ // Conversations are keyed by their public numeric `conversation_id`
1093
+ // stringified. Metadata and chat history are kept as two parallel maps
1094
+ // so that message activity doesn't invalidate metadata-only consumers.
1095
+ conversations: Ref<{ [conversationId: string]: MSRPConversationState }>
1096
+ messagesByConversation: Ref<{ [conversationId: string]: any[] }>
1097
+ currentConversationId: Ref<string | null>
1098
+ currentConversation: ComputedRef<MSRPConversationState | null>
1099
+ currentMessages: ComputedRef<any[]>
1100
+ sortedConversations: ComputedRef<MSRPConversationState[]>
1101
+ typingByConversation: Ref<{ [conversationId: string]: MSRPTypingState }>
1102
+ presenceBySender: Ref<{ [sender: string]: MSRPPresenceState }>
1103
+ /**
1104
+ * Per-conversation unread count derived from
1105
+ * `MSRPConversationState.currentUserLastReadMessageId` + local timeline.
1106
+ * Only conversations with count > 0 appear in the map.
1107
+ */
1108
+ unreadByConversation: ComputedRef<UnreadCounts>
1109
+ /**
1110
+ * event_id of the first unread message per conversation. Consumers use
1111
+ * this to place a "— New messages —" divider inside the open chat.
1112
+ */
1113
+ firstUnreadByConversation: ComputedRef<Record<string, string>>
543
1114
  }
544
1115
 
545
- declare interface WebrtcMetricsConfigType {
1116
+ export declare interface WebrtcMetricsConfigType {
546
1117
  refreshEvery?: number
547
1118
  startAfter?: number
548
1119
  stopAfter?: number