react-sip-kit 0.2.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.
- package/LICENSE +21 -0
- package/README.md +107 -0
- package/dist/components/audio/index.d.ts +7 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/video/index.d.ts +13 -0
- package/dist/configs/index.d.ts +12 -0
- package/dist/configs/types.d.ts +111 -0
- package/dist/constructors/audioBlobs.d.ts +13 -0
- package/dist/constructors/buddy.d.ts +26 -0
- package/dist/constructors/index.d.ts +3 -0
- package/dist/constructors/line.d.ts +12 -0
- package/dist/events/registration/index.d.ts +15 -0
- package/dist/events/transport/index.d.ts +5 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/useDetectDevices/index.d.ts +1 -0
- package/dist/hooks/useSessionEvents/index.d.ts +18 -0
- package/dist/hooks/useSessionEvents/types.d.ts +13 -0
- package/dist/hooks/useSessionMethods/index.d.ts +21 -0
- package/dist/hooks/useSessionMethods/types.d.ts +31 -0
- package/dist/hooks/useSpdOptions/index.d.ts +27 -0
- package/dist/index.cjs +19616 -0
- package/dist/index.d.ts +378 -0
- package/dist/index.mjs +19611 -0
- package/dist/methods/initialization/index.d.ts +3 -0
- package/dist/methods/registration/index.d.ts +3 -0
- package/dist/methods/session/index.d.ts +2 -0
- package/dist/provider.d.ts +5 -0
- package/dist/store/index.d.ts +28 -0
- package/dist/store/types.d.ts +149 -0
- package/dist/types.d.ts +49 -0
- package/dist/utils/dayjs.d.ts +3 -0
- package/dist/utils/deepMerge.d.ts +1 -0
- package/dist/utils/formatDuration.d.ts +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/utcDateNow.d.ts +1 -0
- package/package.json +98 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
import { Dayjs } from 'dayjs';
|
|
2
|
+
import { Session, Invitation, SessionDescriptionHandler, SessionDescriptionHandlerOptions, Inviter, Bye, Message, UserAgent, Registerer, Subscriber } from 'sip.js';
|
|
3
|
+
import { IncomingInviteRequest, IncomingRequestMessage, IncomingResponse } from 'sip.js/lib/core';
|
|
4
|
+
import React$1, { AudioHTMLAttributes, VideoHTMLAttributes, HTMLAttributes } from 'react';
|
|
5
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
interface SipConfigs {
|
|
8
|
+
account: SipAccountConfig;
|
|
9
|
+
features: SipFeaturesConfig;
|
|
10
|
+
media: SipMediaConfig;
|
|
11
|
+
policy: SipPolicyConfig;
|
|
12
|
+
registration: SipRegistrationConfig;
|
|
13
|
+
storage: SipStorageConfig;
|
|
14
|
+
recording: SipRecordingConfig;
|
|
15
|
+
advanced: SipAdvancedConfig;
|
|
16
|
+
xmpp: SipXmppConfig;
|
|
17
|
+
permissions: SipPermissionsConfig;
|
|
18
|
+
}
|
|
19
|
+
interface SipPermissionsConfig {
|
|
20
|
+
enableSendFiles: boolean;
|
|
21
|
+
enableSendImages: boolean;
|
|
22
|
+
enableAudioRecording: boolean;
|
|
23
|
+
enableVideoRecording: boolean;
|
|
24
|
+
enableSms: boolean;
|
|
25
|
+
enableFax: boolean;
|
|
26
|
+
enableEmail: boolean;
|
|
27
|
+
}
|
|
28
|
+
interface SipXmppConfig {
|
|
29
|
+
server: string;
|
|
30
|
+
websocketPort: string;
|
|
31
|
+
websocketPath: string;
|
|
32
|
+
domain: string;
|
|
33
|
+
profileUser: string;
|
|
34
|
+
realm: string;
|
|
35
|
+
realmSeparator: string;
|
|
36
|
+
chatGroupService: string;
|
|
37
|
+
}
|
|
38
|
+
interface SipAdvancedConfig {
|
|
39
|
+
didLength: number;
|
|
40
|
+
maxDidLength: number;
|
|
41
|
+
singleInstance: boolean;
|
|
42
|
+
chatEngine: string;
|
|
43
|
+
}
|
|
44
|
+
interface SipRecordingConfig {
|
|
45
|
+
videoResampleSize: string;
|
|
46
|
+
recordingVideoSize: string;
|
|
47
|
+
recordingVideoFps: number;
|
|
48
|
+
recordingLayout: string;
|
|
49
|
+
}
|
|
50
|
+
interface SipStorageConfig {
|
|
51
|
+
streamBuffer: number;
|
|
52
|
+
maxDataStoreDays: number;
|
|
53
|
+
posterJpegQuality: number;
|
|
54
|
+
}
|
|
55
|
+
interface SipRegistrationConfig {
|
|
56
|
+
transportConnectionTimeout: number;
|
|
57
|
+
transportReconnectionAttempts: number;
|
|
58
|
+
transportReconnectionTimeout: number;
|
|
59
|
+
registerExpires: number;
|
|
60
|
+
registerExtraHeaders: string;
|
|
61
|
+
registerExtraContactParams: string;
|
|
62
|
+
registerContactParams: string;
|
|
63
|
+
wssInTransport: boolean;
|
|
64
|
+
ipInContact: boolean;
|
|
65
|
+
bundlePolicy: string;
|
|
66
|
+
iceStunServerJson: string;
|
|
67
|
+
iceStunCheckTimeout: number;
|
|
68
|
+
subscribeToYourself: boolean;
|
|
69
|
+
voiceMailSubscribe: boolean;
|
|
70
|
+
voicemailDid: string;
|
|
71
|
+
subscribeVoicemailExpires: number;
|
|
72
|
+
inviteExtraHeaders: string;
|
|
73
|
+
noAnswerTimeout: number;
|
|
74
|
+
}
|
|
75
|
+
interface SipPolicyConfig {
|
|
76
|
+
autoAnswerPolicy: string;
|
|
77
|
+
doNotDisturbPolicy: string;
|
|
78
|
+
callWaitingPolicy: string;
|
|
79
|
+
callRecordingPolicy: string;
|
|
80
|
+
intercomPolicy: string;
|
|
81
|
+
}
|
|
82
|
+
interface SipMediaConfig {
|
|
83
|
+
audioInputDeviceId: string;
|
|
84
|
+
audioOutputDeviceId: string;
|
|
85
|
+
videoInputDeviceId: string;
|
|
86
|
+
ringerOutputDeviceId: string;
|
|
87
|
+
maxFrameRate: number | string;
|
|
88
|
+
videoHeight: number | string;
|
|
89
|
+
videoAspectRatio: number | string;
|
|
90
|
+
autoGainControl: boolean;
|
|
91
|
+
echoCancellation: boolean;
|
|
92
|
+
noiseSuppression: boolean;
|
|
93
|
+
mirrorVideo: string;
|
|
94
|
+
maxVideoBandwidth: number;
|
|
95
|
+
startVideoFullScreen: boolean;
|
|
96
|
+
}
|
|
97
|
+
interface SipFeaturesConfig {
|
|
98
|
+
enableVideo: boolean;
|
|
99
|
+
enableRingtone: boolean;
|
|
100
|
+
enableTextMessaging: boolean;
|
|
101
|
+
enableTransfer: boolean;
|
|
102
|
+
enableConference: boolean;
|
|
103
|
+
enableTextExpressions: boolean;
|
|
104
|
+
enableTextDictate: boolean;
|
|
105
|
+
enableAlphanumericDial: boolean;
|
|
106
|
+
enableAccountSettings: boolean;
|
|
107
|
+
enableAppearanceSettings: boolean;
|
|
108
|
+
enableNotificationSettings: boolean;
|
|
109
|
+
}
|
|
110
|
+
interface SipAccountConfig {
|
|
111
|
+
username: string;
|
|
112
|
+
password: string;
|
|
113
|
+
domain: string;
|
|
114
|
+
wssServer: string;
|
|
115
|
+
webSocketPort: string | number;
|
|
116
|
+
serverPath: string;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
declare function reconnectTransport(userAgent?: SipUserAgent): void;
|
|
120
|
+
|
|
121
|
+
type AudioBlobsType = Record<'Alert' | 'Ringtone' | 'speech_orig' | 'Busy_UK' | 'Busy_US' | 'CallWaiting' | 'Congestion_UK' | 'Congestion_US' | 'EarlyMedia_Australia' | 'EarlyMedia_European' | 'EarlyMedia_Japan' | 'EarlyMedia_UK' | 'EarlyMedia_US', {
|
|
122
|
+
file: string;
|
|
123
|
+
url: string;
|
|
124
|
+
blob?: string | ArrayBuffer | null;
|
|
125
|
+
}>;
|
|
126
|
+
declare class AudioBlobs {
|
|
127
|
+
private static instance;
|
|
128
|
+
private audioBlobs;
|
|
129
|
+
private constructor();
|
|
130
|
+
static getInstance(overwrite?: Partial<AudioBlobsType>): AudioBlobs;
|
|
131
|
+
getAudios(): AudioBlobsType;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
interface SipStoreStateType {
|
|
135
|
+
configs: SipConfigs;
|
|
136
|
+
userAgent?: SipUserAgent;
|
|
137
|
+
buddies: Array<BuddyType>;
|
|
138
|
+
selectedBuddy: Array<any>;
|
|
139
|
+
selectedLine: Array<any>;
|
|
140
|
+
lines: Array<LineType>;
|
|
141
|
+
newLineNumber: number;
|
|
142
|
+
SipUsername: string;
|
|
143
|
+
SipDomain: string;
|
|
144
|
+
audioBlobs: AudioBlobs['audioBlobs'];
|
|
145
|
+
devicesInfo: DevicesInfoType;
|
|
146
|
+
setSipStore: (state: Partial<SipStoreStateType>) => void;
|
|
147
|
+
setUserAgent: (userAgent: SipStoreStateType['userAgent']) => void;
|
|
148
|
+
addLine: (line: LineType) => void;
|
|
149
|
+
updateLine: (line: LineType) => void;
|
|
150
|
+
removeLine: (lineNum: LineType['lineNumber']) => void;
|
|
151
|
+
addBuddy: (buddy: BuddyType) => void;
|
|
152
|
+
findBuddyByDid: (did: string) => BuddyType | null;
|
|
153
|
+
findBuddyByIdentity: (indentity: BuddyType['identity']) => BuddyType | null;
|
|
154
|
+
findLineByNumber: (lineNum: LineType['lineNumber']) => LineType | null;
|
|
155
|
+
getSession: (did: string) => SipSessionType | null;
|
|
156
|
+
getSessions: () => SipUserAgent['sessions'] | null;
|
|
157
|
+
countSessions: (id: string) => number;
|
|
158
|
+
}
|
|
159
|
+
interface SipInvitationType extends Omit<Invitation, 'incomingInviteRequest' | 'sessionDescriptionHandler'> {
|
|
160
|
+
data: Partial<SipSessionDataType>;
|
|
161
|
+
incomingInviteRequest: IncomingInviteRequest;
|
|
162
|
+
sessionDescriptionHandler: SipSessionDescriptionHandler;
|
|
163
|
+
sessionDescriptionHandlerOptionsReInvite: SipSessionDescriptionHandlerOptions;
|
|
164
|
+
isOnHold: boolean;
|
|
165
|
+
}
|
|
166
|
+
interface SipSessionDescriptionHandlerOptions extends SessionDescriptionHandlerOptions {
|
|
167
|
+
hold: boolean;
|
|
168
|
+
}
|
|
169
|
+
interface SipInviterType extends Inviter {
|
|
170
|
+
data: Partial<SipSessionDataType>;
|
|
171
|
+
sessionDescriptionHandler: SipSessionDescriptionHandler;
|
|
172
|
+
sessionDescriptionHandlerOptionsReInvite: SipSessionDescriptionHandlerOptions;
|
|
173
|
+
isOnHold: boolean;
|
|
174
|
+
}
|
|
175
|
+
interface SipSessionDescriptionHandler extends SessionDescriptionHandler {
|
|
176
|
+
peerConnection: RTCPeerConnection;
|
|
177
|
+
peerConnectionDelegate: any;
|
|
178
|
+
}
|
|
179
|
+
interface LineType {
|
|
180
|
+
lineNumber: number;
|
|
181
|
+
DisplayName: string;
|
|
182
|
+
DisplayNumber: string;
|
|
183
|
+
IsSelected: boolean;
|
|
184
|
+
BuddyObj: BuddyType | null;
|
|
185
|
+
sipSession: SipInvitationType | SipInviterType | null;
|
|
186
|
+
LocalSoundMeter: any;
|
|
187
|
+
RemoteSoundMeter: any;
|
|
188
|
+
}
|
|
189
|
+
interface SipSessionType extends Session {
|
|
190
|
+
data: SipSessionDataType;
|
|
191
|
+
}
|
|
192
|
+
interface SipSessionDataType {
|
|
193
|
+
line: number;
|
|
194
|
+
calldirection: 'inbound' | 'outbound';
|
|
195
|
+
terminateby: string;
|
|
196
|
+
src: string;
|
|
197
|
+
buddyId: string;
|
|
198
|
+
callstart: string;
|
|
199
|
+
earlyReject: boolean;
|
|
200
|
+
withvideo: boolean;
|
|
201
|
+
reasonCode: number;
|
|
202
|
+
reasonText: string;
|
|
203
|
+
teardownComplete: boolean;
|
|
204
|
+
childsession: SipSessionType | null;
|
|
205
|
+
startTime: Dayjs;
|
|
206
|
+
started: boolean;
|
|
207
|
+
hold: Array<{
|
|
208
|
+
event: 'hold' | 'unhold';
|
|
209
|
+
eventTime: string;
|
|
210
|
+
}>;
|
|
211
|
+
isHold: boolean;
|
|
212
|
+
mute: Array<{
|
|
213
|
+
event: 'mute' | 'unmute';
|
|
214
|
+
eventTime: string;
|
|
215
|
+
}>;
|
|
216
|
+
isMute: boolean;
|
|
217
|
+
videoChannelNames: Array<Record<'mid' | 'channel', string>>;
|
|
218
|
+
dst: string;
|
|
219
|
+
transfer: Array<SipSessionTransferType>;
|
|
220
|
+
AudioSourceTrack: any;
|
|
221
|
+
earlyMedia: any;
|
|
222
|
+
ringerObj: {
|
|
223
|
+
[key: string]: any;
|
|
224
|
+
} | null;
|
|
225
|
+
ConfbridgeChannels: Array<any>;
|
|
226
|
+
ConfbridgeEvents: Array<any>;
|
|
227
|
+
videoSourceDevice: string | null;
|
|
228
|
+
audioSourceDevice: string | null;
|
|
229
|
+
audioOutputDevice: string | null;
|
|
230
|
+
}
|
|
231
|
+
interface SipSessionTransferType {
|
|
232
|
+
type: 'Attended' | 'Blind';
|
|
233
|
+
to: number;
|
|
234
|
+
transferTime: string;
|
|
235
|
+
disposition: string;
|
|
236
|
+
dispositionTime: string;
|
|
237
|
+
accept: {
|
|
238
|
+
complete: boolean | null;
|
|
239
|
+
eventTime: string | null;
|
|
240
|
+
disposition: string;
|
|
241
|
+
};
|
|
242
|
+
onCancle?: Function;
|
|
243
|
+
}
|
|
244
|
+
interface BuddyType {
|
|
245
|
+
type: 'extension' | 'xmpp' | 'contact' | 'group';
|
|
246
|
+
identity: string;
|
|
247
|
+
CallerIDName: string;
|
|
248
|
+
ExtNo: string;
|
|
249
|
+
MobileNumber?: string;
|
|
250
|
+
ContactNumber1?: string;
|
|
251
|
+
ContactNumber2?: string;
|
|
252
|
+
lastActivity: string;
|
|
253
|
+
Desc: string;
|
|
254
|
+
Email: string;
|
|
255
|
+
jid?: string;
|
|
256
|
+
devState: string;
|
|
257
|
+
presence: string;
|
|
258
|
+
missed: number;
|
|
259
|
+
IsSelected: boolean;
|
|
260
|
+
imageObjectURL: string;
|
|
261
|
+
presenceText: string;
|
|
262
|
+
EnableDuringDnd: boolean;
|
|
263
|
+
EnableSubscribe: boolean;
|
|
264
|
+
SubscribeUser: string;
|
|
265
|
+
AllowAutoDelete: boolean;
|
|
266
|
+
Pinned: boolean;
|
|
267
|
+
}
|
|
268
|
+
interface DevicesInfoType {
|
|
269
|
+
hasVideoDevice: boolean;
|
|
270
|
+
hasAudioDevice: boolean;
|
|
271
|
+
hasSpeakerDevice: boolean;
|
|
272
|
+
audioInputDevices: any[];
|
|
273
|
+
videoInputDevices: any[];
|
|
274
|
+
speakerDevices: any[];
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
declare const useSessionMethods: () => {
|
|
278
|
+
receiveCall: (session: SipInvitationType) => void;
|
|
279
|
+
answerAudioSession: (lineNumber: LineType["lineNumber"]) => void;
|
|
280
|
+
answerVideoSession: (lineNumber: LineType["lineNumber"]) => void;
|
|
281
|
+
makeAudioSession: (lineObj: LineType, dialledNumber: string, extraHeaders?: Array<string>) => void;
|
|
282
|
+
makeVideoSession: (lineObj: LineType, dialledNumber: string, extraHeaders?: Array<string>) => void;
|
|
283
|
+
rejectCall: (lineNumber: LineType["lineNumber"]) => void;
|
|
284
|
+
dialByLine: (type: "audio" | "video", numToDial: string, buddy?: BuddyType, CallerID?: string, extraHeaders?: Array<string>) => void;
|
|
285
|
+
endSession: (lineNumber: LineType["lineNumber"]) => void;
|
|
286
|
+
holdSession: (lineNumber: LineType["lineNumber"]) => void;
|
|
287
|
+
unholdSession: (lineNumber: LineType["lineNumber"]) => void;
|
|
288
|
+
muteSession: (lineNumber: LineType["lineNumber"]) => void;
|
|
289
|
+
unmuteSession: (lineNumber: LineType["lineNumber"]) => void;
|
|
290
|
+
cancelSession: (lineNumber: LineType["lineNumber"]) => void;
|
|
291
|
+
startTransferSession: (lineNumber: LineType["lineNumber"]) => void;
|
|
292
|
+
cancelTransferSession: (lineNumber: LineType["lineNumber"]) => void;
|
|
293
|
+
attendedTransferSession: (baseLine: LineType, transferLineNumber: LineType["lineNumber"]) => void;
|
|
294
|
+
cancelAttendedTransferSession: (baseLine: LineType, transferLineNumber: LineType["lineNumber"]) => void;
|
|
295
|
+
teardownSession: (lineObj: LineType) => void;
|
|
296
|
+
};
|
|
297
|
+
|
|
298
|
+
declare const useSessionEvents: () => {
|
|
299
|
+
onInviteCancel: (lineObj: LineType, response: IncomingRequestMessage, callback?: CallbackFunction<any>) => void;
|
|
300
|
+
onInviteAccepted: (lineObj: LineType, includeVideo: boolean, response?: IncomingResponse) => void;
|
|
301
|
+
onInviteTrying: (lineObj: LineType, response: IncomingResponse) => void;
|
|
302
|
+
onInviteProgress: (lineObj: LineType, response: IncomingResponse) => void;
|
|
303
|
+
onInviteRejected: (lineObj: LineType, response: IncomingResponse, callback?: CallbackFunction<any>) => void;
|
|
304
|
+
onInviteRedirected: (lineObj: LineType, response: IncomingResponse) => void;
|
|
305
|
+
onSessionReceivedBye: (lineObj: LineType, response: Bye, callback?: CallbackFunction<any>) => void;
|
|
306
|
+
onSessionReinvited: (lineObj: LineType, response: IncomingRequestMessage) => void;
|
|
307
|
+
onSessionReceivedMessage: (lineObj: LineType, response: Message) => void;
|
|
308
|
+
onSessionDescriptionHandlerCreated: (lineObj: LineType, sdh: SipSessionDescriptionHandler, provisional: boolean, includeVideo?: boolean) => void;
|
|
309
|
+
onTrackAddedEvent: (lineObj: LineType, includeVideo?: boolean) => void;
|
|
310
|
+
onTransferSessionDescriptionHandlerCreated: (lineObj: LineType, session: SipSessionType, sdh: SipSessionDescriptionHandler, includeVideo?: boolean) => void;
|
|
311
|
+
};
|
|
312
|
+
|
|
313
|
+
interface SipUserAgent extends UserAgent {
|
|
314
|
+
isReRegister: boolean;
|
|
315
|
+
isRegistered: () => boolean;
|
|
316
|
+
registerer: Registerer;
|
|
317
|
+
sessions: {
|
|
318
|
+
[id: string]: SipSessionType;
|
|
319
|
+
};
|
|
320
|
+
_sessions: {
|
|
321
|
+
[id: string]: SipSessionType;
|
|
322
|
+
};
|
|
323
|
+
registrationCompleted: boolean;
|
|
324
|
+
registering: boolean;
|
|
325
|
+
transport: UserAgent['transport'] & {
|
|
326
|
+
ReconnectionAttempts: number;
|
|
327
|
+
attemptingReconnection: boolean;
|
|
328
|
+
};
|
|
329
|
+
BlfSubs: any[];
|
|
330
|
+
lastVoicemailCount: number;
|
|
331
|
+
selfSub: Subscriber | null;
|
|
332
|
+
voicemailSub: Subscriber | null;
|
|
333
|
+
}
|
|
334
|
+
type SipProviderConfigs<T extends SipConfigs> = {
|
|
335
|
+
account: T['account'];
|
|
336
|
+
} & {
|
|
337
|
+
[P in Exclude<keyof T, 'account'>]?: Partial<T[P]>;
|
|
338
|
+
};
|
|
339
|
+
interface SipProviderProps<T extends SipConfigs = SipConfigs> {
|
|
340
|
+
children: React.ReactNode;
|
|
341
|
+
configs: SipProviderConfigs<T>;
|
|
342
|
+
}
|
|
343
|
+
interface SipContextType {
|
|
344
|
+
lines: SipStoreStateType['lines'];
|
|
345
|
+
session: SipContextSessionType;
|
|
346
|
+
transport: SipContextTransportType;
|
|
347
|
+
}
|
|
348
|
+
interface SipContextSessionType {
|
|
349
|
+
methods: Omit<ReturnType<typeof useSessionMethods>, 'receiveCall'>;
|
|
350
|
+
events: ReturnType<typeof useSessionEvents>;
|
|
351
|
+
}
|
|
352
|
+
interface SipContextTransportType {
|
|
353
|
+
reconnectTransport: typeof reconnectTransport;
|
|
354
|
+
}
|
|
355
|
+
type CallbackFunction<T> = (value?: T) => void;
|
|
356
|
+
|
|
357
|
+
declare const SipProvider: React$1.FC<SipProviderProps>;
|
|
358
|
+
declare const useSipProvider: () => SipContextType;
|
|
359
|
+
|
|
360
|
+
interface AudioProps extends AudioHTMLAttributes<HTMLAudioElement> {
|
|
361
|
+
lineNumber: string | number;
|
|
362
|
+
type?: 'transfer' | 'conference';
|
|
363
|
+
}
|
|
364
|
+
declare const Audio: ({ lineNumber, type, ...rest }: AudioProps) => react_jsx_runtime.JSX.Element;
|
|
365
|
+
|
|
366
|
+
interface DefaultVideoProps {
|
|
367
|
+
lineNumber: string | number;
|
|
368
|
+
}
|
|
369
|
+
interface LocalVideoProps extends VideoHTMLAttributes<HTMLVideoElement>, DefaultVideoProps {
|
|
370
|
+
type: 'local';
|
|
371
|
+
}
|
|
372
|
+
interface RemoteVidepProps extends HTMLAttributes<HTMLDivElement>, DefaultVideoProps {
|
|
373
|
+
type: 'remote';
|
|
374
|
+
}
|
|
375
|
+
type VideoProps = LocalVideoProps | RemoteVidepProps;
|
|
376
|
+
declare const Video: ({ lineNumber, ...rest }: VideoProps) => react_jsx_runtime.JSX.Element;
|
|
377
|
+
|
|
378
|
+
export { Audio as AudioStream, SipProvider, Video as VideoStream, useSipProvider };
|