react-native-telecom 0.0.0-stage → 0.1.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.
Files changed (57) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +321 -2
  3. package/Telecom.podspec +20 -0
  4. package/android/build.gradle +58 -0
  5. package/android/src/main/AndroidManifest.xml +43 -0
  6. package/android/src/main/java/com/telecom/CallSession.kt +37 -0
  7. package/android/src/main/java/com/telecom/CallSessionManager.kt +486 -0
  8. package/android/src/main/java/com/telecom/TelecomAudioRouter.kt +227 -0
  9. package/android/src/main/java/com/telecom/TelecomAvatarLoader.kt +77 -0
  10. package/android/src/main/java/com/telecom/TelecomCallService.kt +395 -0
  11. package/android/src/main/java/com/telecom/TelecomCallUi.kt +65 -0
  12. package/android/src/main/java/com/telecom/TelecomInCallActivity.kt +285 -0
  13. package/android/src/main/java/com/telecom/TelecomIncomingCallActivity.kt +171 -0
  14. package/android/src/main/java/com/telecom/TelecomModule.kt +189 -0
  15. package/android/src/main/java/com/telecom/TelecomPackage.kt +31 -0
  16. package/android/src/main/java/com/telecom/TelecomPushBridge.kt +82 -0
  17. package/android/src/main/java/com/telecom/TelecomRingtonePlayer.kt +109 -0
  18. package/android/src/main/java/com/telecom/TelecomUiConfig.kt +27 -0
  19. package/android/src/main/res/drawable/rn_telecom_action_pill.xml +6 -0
  20. package/android/src/main/res/drawable/rn_telecom_answer_circle.xml +8 -0
  21. package/android/src/main/res/drawable/rn_telecom_answer_circle_green.xml +8 -0
  22. package/android/src/main/res/drawable/rn_telecom_avatar_bg.xml +6 -0
  23. package/android/src/main/res/drawable/rn_telecom_avatar_circle.xml +12 -0
  24. package/android/src/main/res/drawable/rn_telecom_btn_answer.xml +6 -0
  25. package/android/src/main/res/drawable/rn_telecom_btn_decline.xml +6 -0
  26. package/android/src/main/res/drawable/rn_telecom_btn_message.xml +9 -0
  27. package/android/src/main/res/drawable/rn_telecom_btn_secondary.xml +6 -0
  28. package/android/src/main/res/drawable/rn_telecom_control_circle.xml +8 -0
  29. package/android/src/main/res/drawable/rn_telecom_control_circle_on.xml +8 -0
  30. package/android/src/main/res/drawable/rn_telecom_decline_circle.xml +8 -0
  31. package/android/src/main/res/drawable/rn_telecom_ic_call.xml +10 -0
  32. package/android/src/main/res/drawable/rn_telecom_ic_call_end.xml +16 -0
  33. package/android/src/main/res/drawable/rn_telecom_ic_call_white.xml +10 -0
  34. package/android/src/main/res/drawable/rn_telecom_ic_dialpad.xml +13 -0
  35. package/android/src/main/res/drawable/rn_telecom_ic_hold.xml +10 -0
  36. package/android/src/main/res/drawable/rn_telecom_ic_message.xml +10 -0
  37. package/android/src/main/res/drawable/rn_telecom_ic_mic.xml +10 -0
  38. package/android/src/main/res/drawable/rn_telecom_ic_mic_off.xml +10 -0
  39. package/android/src/main/res/drawable/rn_telecom_ic_speaker.xml +10 -0
  40. package/android/src/main/res/layout/rn_telecom_control_item.xml +36 -0
  41. package/android/src/main/res/layout/rn_telecom_incall.xml +168 -0
  42. package/android/src/main/res/layout/rn_telecom_incoming_call.xml +188 -0
  43. package/ios/Telecom.h +5 -0
  44. package/ios/Telecom.mm +66 -0
  45. package/lib/module/NativeTelecom.js +5 -0
  46. package/lib/module/NativeTelecom.js.map +1 -0
  47. package/lib/module/index.js +102 -0
  48. package/lib/module/index.js.map +1 -0
  49. package/lib/module/package.json +1 -0
  50. package/lib/typescript/package.json +1 -0
  51. package/lib/typescript/src/NativeTelecom.d.ts +40 -0
  52. package/lib/typescript/src/NativeTelecom.d.ts.map +1 -0
  53. package/lib/typescript/src/index.d.ts +104 -0
  54. package/lib/typescript/src/index.d.ts.map +1 -0
  55. package/package.json +154 -4
  56. package/src/NativeTelecom.ts +55 -0
  57. package/src/index.tsx +217 -0
@@ -0,0 +1,188 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!--
3
+ Pixel / Material You style incoming call.
4
+ Host apps can override via res/layout/rn_telecom_incoming_call.xml
5
+ -->
6
+ <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
7
+ android:id="@+id/rn_telecom_root"
8
+ android:layout_width="match_parent"
9
+ android:layout_height="match_parent"
10
+ android:background="#FFF7F4EF"
11
+ android:fitsSystemWindows="true">
12
+
13
+ <LinearLayout
14
+ android:layout_width="match_parent"
15
+ android:layout_height="match_parent"
16
+ android:gravity="center_horizontal"
17
+ android:orientation="vertical"
18
+ android:paddingLeft="28dp"
19
+ android:paddingRight="28dp"
20
+ android:paddingTop="72dp"
21
+ android:paddingBottom="36dp">
22
+
23
+ <TextView
24
+ android:id="@+id/rn_telecom_caller_name"
25
+ android:layout_width="match_parent"
26
+ android:layout_height="wrap_content"
27
+ android:gravity="center"
28
+ android:textColor="#FF1C1B1F"
29
+ android:textSize="34sp"
30
+ android:textStyle="bold"
31
+ android:maxLines="2"
32
+ android:ellipsize="end" />
33
+
34
+ <TextView
35
+ android:id="@+id/rn_telecom_handle"
36
+ android:layout_width="match_parent"
37
+ android:layout_height="wrap_content"
38
+ android:layout_marginTop="8dp"
39
+ android:gravity="center"
40
+ android:textColor="#FF49454F"
41
+ android:textSize="16sp" />
42
+
43
+ <TextView
44
+ android:id="@+id/rn_telecom_title"
45
+ android:layout_width="wrap_content"
46
+ android:layout_height="wrap_content"
47
+ android:layout_marginTop="4dp"
48
+ android:gravity="center"
49
+ android:text="Incoming call"
50
+ android:textColor="#FF79747E"
51
+ android:textSize="13sp"
52
+ android:visibility="gone" />
53
+
54
+ <View
55
+ android:layout_width="match_parent"
56
+ android:layout_height="0dp"
57
+ android:layout_weight="1" />
58
+
59
+ <FrameLayout
60
+ android:layout_width="168dp"
61
+ android:layout_height="168dp"
62
+ android:background="@drawable/rn_telecom_avatar_circle"
63
+ android:clipToOutline="true">
64
+
65
+ <TextView
66
+ android:id="@+id/rn_telecom_avatar_initials"
67
+ android:layout_width="match_parent"
68
+ android:layout_height="match_parent"
69
+ android:gravity="center"
70
+ android:textColor="#FFFFFFFF"
71
+ android:textSize="56sp"
72
+ android:textStyle="bold" />
73
+
74
+ <ImageView
75
+ android:id="@+id/rn_telecom_avatar_image"
76
+ android:layout_width="match_parent"
77
+ android:layout_height="match_parent"
78
+ android:contentDescription="@null"
79
+ android:scaleType="centerCrop"
80
+ android:visibility="gone" />
81
+ </FrameLayout>
82
+
83
+ <View
84
+ android:layout_width="match_parent"
85
+ android:layout_height="0dp"
86
+ android:layout_weight="1" />
87
+
88
+ <TextView
89
+ android:id="@+id/rn_telecom_message"
90
+ android:layout_width="wrap_content"
91
+ android:layout_height="40dp"
92
+ android:layout_marginBottom="28dp"
93
+ android:background="@drawable/rn_telecom_btn_message"
94
+ android:drawablePadding="8dp"
95
+ android:gravity="center"
96
+ android:paddingLeft="18dp"
97
+ android:paddingRight="18dp"
98
+ android:text="Message"
99
+ android:textAllCaps="false"
100
+ android:textColor="#FF1C1B1F"
101
+ android:textSize="14sp" />
102
+
103
+ <!-- Bottom: Decline (red) + Answer (green) — tap only -->
104
+ <LinearLayout
105
+ android:id="@+id/rn_telecom_action_bar"
106
+ android:layout_width="match_parent"
107
+ android:layout_height="wrap_content"
108
+ android:gravity="center"
109
+ android:orientation="horizontal"
110
+ android:paddingLeft="12dp"
111
+ android:paddingRight="12dp">
112
+
113
+ <LinearLayout
114
+ android:id="@+id/rn_telecom_decline"
115
+ android:layout_width="0dp"
116
+ android:layout_height="wrap_content"
117
+ android:layout_weight="1"
118
+ android:gravity="center"
119
+ android:orientation="vertical"
120
+ android:clickable="true"
121
+ android:focusable="true"
122
+ android:background="?android:attr/selectableItemBackgroundBorderless"
123
+ android:paddingTop="8dp"
124
+ android:paddingBottom="8dp">
125
+
126
+ <FrameLayout
127
+ android:layout_width="72dp"
128
+ android:layout_height="72dp"
129
+ android:background="@drawable/rn_telecom_decline_circle">
130
+
131
+ <ImageView
132
+ android:layout_width="32dp"
133
+ android:layout_height="32dp"
134
+ android:layout_gravity="center"
135
+ android:contentDescription="@null"
136
+ android:src="@drawable/rn_telecom_ic_call_end"
137
+ android:importantForAccessibility="no" />
138
+ </FrameLayout>
139
+
140
+ <TextView
141
+ android:id="@+id/rn_telecom_decline_label"
142
+ android:layout_width="wrap_content"
143
+ android:layout_height="wrap_content"
144
+ android:layout_marginTop="10dp"
145
+ android:text="Decline"
146
+ android:textColor="#FF1C1B1F"
147
+ android:textSize="14sp" />
148
+ </LinearLayout>
149
+
150
+ <LinearLayout
151
+ android:id="@+id/rn_telecom_answer"
152
+ android:layout_width="0dp"
153
+ android:layout_height="wrap_content"
154
+ android:layout_weight="1"
155
+ android:gravity="center"
156
+ android:orientation="vertical"
157
+ android:clickable="true"
158
+ android:focusable="true"
159
+ android:background="?android:attr/selectableItemBackgroundBorderless"
160
+ android:paddingTop="8dp"
161
+ android:paddingBottom="8dp">
162
+
163
+ <FrameLayout
164
+ android:layout_width="72dp"
165
+ android:layout_height="72dp"
166
+ android:background="@drawable/rn_telecom_answer_circle_green">
167
+
168
+ <ImageView
169
+ android:layout_width="32dp"
170
+ android:layout_height="32dp"
171
+ android:layout_gravity="center"
172
+ android:contentDescription="@null"
173
+ android:src="@drawable/rn_telecom_ic_call_white"
174
+ android:importantForAccessibility="no" />
175
+ </FrameLayout>
176
+
177
+ <TextView
178
+ android:id="@+id/rn_telecom_answer_label"
179
+ android:layout_width="wrap_content"
180
+ android:layout_height="wrap_content"
181
+ android:layout_marginTop="10dp"
182
+ android:text="Answer"
183
+ android:textColor="#FF1C1B1F"
184
+ android:textSize="14sp" />
185
+ </LinearLayout>
186
+ </LinearLayout>
187
+ </LinearLayout>
188
+ </FrameLayout>
package/ios/Telecom.h ADDED
@@ -0,0 +1,5 @@
1
+ #import <TelecomSpec/TelecomSpec.h>
2
+
3
+ @interface Telecom : NSObject <NativeTelecomSpec>
4
+
5
+ @end
package/ios/Telecom.mm ADDED
@@ -0,0 +1,66 @@
1
+ #import "Telecom.h"
2
+
3
+ @implementation Telecom
4
+
5
+ - (void)setup:(NSDictionary *)options
6
+ resolve:(RCTPromiseResolveBlock)resolve
7
+ reject:(RCTPromiseRejectBlock)reject
8
+ {
9
+ reject(@"E_IOS_UNSUPPORTED", @"react-native-telecom v0.x supports Android only. iOS CallKit is coming later.", nil);
10
+ }
11
+
12
+ - (void)displayIncomingCall:(NSString *)uuid
13
+ handle:(NSString *)handle
14
+ callerName:(NSString *)callerName
15
+ hasVideo:(BOOL)hasVideo
16
+ autoAnswer:(BOOL)autoAnswer
17
+ {
18
+ }
19
+
20
+ - (void)startCall:(NSString *)uuid
21
+ handle:(NSString *)handle
22
+ callerName:(NSString *)callerName
23
+ hasVideo:(BOOL)hasVideo
24
+ {
25
+ }
26
+
27
+ - (void)answerCall:(NSString *)uuid
28
+ {
29
+ }
30
+
31
+ - (void)endCall:(NSString *)uuid
32
+ {
33
+ }
34
+
35
+ - (void)endAllCalls
36
+ {
37
+ }
38
+
39
+ - (void)setMuted:(NSString *)uuid muted:(BOOL)muted
40
+ {
41
+ }
42
+
43
+ - (void)setOnHold:(NSString *)uuid hold:(BOOL)hold
44
+ {
45
+ }
46
+
47
+ - (void)addListener:(NSString *)eventName
48
+ {
49
+ }
50
+
51
+ - (void)removeListeners:(double)count
52
+ {
53
+ }
54
+
55
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
56
+ (const facebook::react::ObjCTurboModule::InitParams &)params
57
+ {
58
+ return std::make_shared<facebook::react::NativeTelecomSpecJSI>(params);
59
+ }
60
+
61
+ + (NSString *)moduleName
62
+ {
63
+ return @"Telecom";
64
+ }
65
+
66
+ @end
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from 'react-native';
4
+ export default TurboModuleRegistry.getEnforcing('Telecom');
5
+ //# sourceMappingURL=NativeTelecom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeTelecom.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AAsDpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ import { NativeEventEmitter, NativeModules, Platform } from 'react-native';
4
+ import NativeTelecom from "./NativeTelecom.js";
5
+ const isAndroid = Platform.OS === 'android';
6
+ const emitter = new NativeEventEmitter(NativeModules.Telecom ?? NativeTelecom);
7
+ function assertAndroid() {
8
+ if (!isAndroid) {
9
+ throw new Error('react-native-telecom: Android Jetpack Core-Telecom only in v0.x. iOS CallKit support is coming later.');
10
+ }
11
+ }
12
+ export async function setup(options = {}) {
13
+ assertAndroid();
14
+ return NativeTelecom.setup({
15
+ appName: options.appName ?? 'App',
16
+ supportsVideo: options.supportsVideo ?? true,
17
+ ui: options.ui
18
+ });
19
+ }
20
+ export function displayIncomingCall(uuid, handle, callerName, hasVideo = false, autoAnswer = false, avatarUrl = '') {
21
+ assertAndroid();
22
+ NativeTelecom.displayIncomingCall(uuid, handle, callerName, hasVideo, autoAnswer, avatarUrl);
23
+ }
24
+ export function startCall(uuid, handle, callerName, hasVideo = false, avatarUrl = '') {
25
+ assertAndroid();
26
+ NativeTelecom.startCall(uuid, handle, callerName, hasVideo, avatarUrl);
27
+ }
28
+ export function answerCall(uuid) {
29
+ assertAndroid();
30
+ NativeTelecom.answerCall(uuid);
31
+ }
32
+ export function endCall(uuid) {
33
+ assertAndroid();
34
+ NativeTelecom.endCall(uuid);
35
+ }
36
+ export function endAllCalls() {
37
+ assertAndroid();
38
+ NativeTelecom.endAllCalls();
39
+ }
40
+ export function setMuted(uuid, muted) {
41
+ assertAndroid();
42
+ NativeTelecom.setMuted(uuid, muted);
43
+ }
44
+ export function setOnHold(uuid, hold) {
45
+ assertAndroid();
46
+ NativeTelecom.setOnHold(uuid, hold);
47
+ }
48
+ export function setAudioRoute(uuid, route) {
49
+ assertAndroid();
50
+ NativeTelecom.setAudioRoute(uuid, route);
51
+ }
52
+ export async function getAvailableAudioRoutes() {
53
+ assertAndroid();
54
+ const routes = await NativeTelecom.getAvailableAudioRoutes();
55
+ return routes;
56
+ }
57
+
58
+ /** Local DTMF beep + `dtmfTone` event — forward digits in your signaling/WebRTC. */
59
+ export function sendDtmf(uuid, digits) {
60
+ assertAndroid();
61
+ NativeTelecom.sendDtmf(uuid, digits);
62
+ }
63
+
64
+ /**
65
+ * Handle an FCM / push data map from JS (foreground).
66
+ * For killed-state, call `TelecomPushBridge` from your native MessagingService.
67
+ */
68
+ export async function handlePushMessage(data) {
69
+ assertAndroid();
70
+ return NativeTelecom.handlePushMessage(data);
71
+ }
72
+ export function addEventListener(eventName, listener) {
73
+ assertAndroid();
74
+ return emitter.addListener(eventName, event => {
75
+ listener(event);
76
+ });
77
+ }
78
+ export function removeAllListeners(eventName) {
79
+ if (eventName) {
80
+ emitter.removeAllListeners(eventName);
81
+ return;
82
+ }
83
+ ['answerCall', 'endCall', 'didDisplayIncomingCall', 'didChangeHoldState', 'didChangeMuteState', 'didChangeSpeaker', 'didChangeAudioRoute', 'didActivateAudioSession', 'didDeactivateAudioSession', 'dtmfTone'].forEach(name => emitter.removeAllListeners(name));
84
+ }
85
+ const Telecom = {
86
+ setup,
87
+ displayIncomingCall,
88
+ startCall,
89
+ answerCall,
90
+ endCall,
91
+ endAllCalls,
92
+ setMuted,
93
+ setOnHold,
94
+ setAudioRoute,
95
+ getAvailableAudioRoutes,
96
+ sendDtmf,
97
+ handlePushMessage,
98
+ addEventListener,
99
+ removeAllListeners
100
+ };
101
+ export default Telecom;
102
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeEventEmitter","NativeModules","Platform","NativeTelecom","isAndroid","OS","emitter","Telecom","assertAndroid","Error","setup","options","appName","supportsVideo","ui","displayIncomingCall","uuid","handle","callerName","hasVideo","autoAnswer","avatarUrl","startCall","answerCall","endCall","endAllCalls","setMuted","muted","setOnHold","hold","setAudioRoute","route","getAvailableAudioRoutes","routes","sendDtmf","digits","handlePushMessage","data","addEventListener","eventName","listener","addListener","event","removeAllListeners","forEach","name"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,40 @@
1
+ import { type TurboModule } from 'react-native';
2
+ export type TelecomSetupOptions = {
3
+ appName?: string;
4
+ supportsVideo?: boolean;
5
+ /** Customize the full-screen incoming host Activity (not the CallStyle notification). */
6
+ ui?: {
7
+ incomingTitle?: string;
8
+ answerLabel?: string;
9
+ declineLabel?: string;
10
+ /** Hex colors e.g. `#000000`, `#43A047` */
11
+ backgroundColor?: string;
12
+ titleColor?: string;
13
+ nameColor?: string;
14
+ handleColor?: string;
15
+ answerColor?: string;
16
+ declineColor?: string;
17
+ /** Default true. Set false for notification-only (native CallStyle). */
18
+ launchFullScreenOnIncoming?: boolean;
19
+ };
20
+ };
21
+ export type TelecomAudioRoute = 'earpiece' | 'speaker' | 'bluetooth';
22
+ export interface Spec extends TurboModule {
23
+ setup(options: Object): Promise<boolean>;
24
+ displayIncomingCall(uuid: string, handle: string, callerName: string, hasVideo: boolean, autoAnswer: boolean, avatarUrl: string): void;
25
+ startCall(uuid: string, handle: string, callerName: string, hasVideo: boolean, avatarUrl: string): void;
26
+ answerCall(uuid: string): void;
27
+ endCall(uuid: string): void;
28
+ endAllCalls(): void;
29
+ setMuted(uuid: string, muted: boolean): void;
30
+ setOnHold(uuid: string, hold: boolean): void;
31
+ setAudioRoute(uuid: string, route: string): void;
32
+ getAvailableAudioRoutes(): Promise<Object>;
33
+ sendDtmf(uuid: string, digits: string): void;
34
+ handlePushMessage(data: Object): Promise<boolean>;
35
+ addListener(eventName: string): void;
36
+ removeListeners(count: number): void;
37
+ }
38
+ declare const _default: Spec;
39
+ export default _default;
40
+ //# sourceMappingURL=NativeTelecom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeTelecom.d.ts","sourceRoot":"","sources":["../../../src/NativeTelecom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yFAAyF;IACzF,EAAE,CAAC,EAAE;QACH,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,2CAA2C;QAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,wEAAwE;QACxE,0BAA0B,CAAC,EAAE,OAAO,CAAC;KACtC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAErE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,mBAAmB,CACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,MAAM,GAChB,IAAI,CAAC;IACR,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,MAAM,GAChB,IAAI,CAAC;IACR,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,IAAI,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;;AAED,wBAAiE"}
@@ -0,0 +1,104 @@
1
+ import { type EmitterSubscription } from 'react-native';
2
+ import { type TelecomAudioRoute, type TelecomSetupOptions } from './NativeTelecom.js';
3
+ export type { TelecomAudioRoute, TelecomSetupOptions };
4
+ export type TelecomAudioRouteInfo = {
5
+ id: TelecomAudioRoute;
6
+ name: string;
7
+ available: boolean;
8
+ selected: boolean;
9
+ };
10
+ export type TelecomEvents = {
11
+ answerCall: {
12
+ callUUID: string;
13
+ };
14
+ endCall: {
15
+ callUUID: string;
16
+ };
17
+ didDisplayIncomingCall: {
18
+ callUUID: string;
19
+ handle: string;
20
+ callerName: string;
21
+ hasVideo: boolean;
22
+ direction: 'incoming' | 'outgoing';
23
+ avatarUrl?: string;
24
+ };
25
+ didChangeHoldState: {
26
+ callUUID: string;
27
+ hold: boolean;
28
+ };
29
+ didChangeMuteState: {
30
+ callUUID: string;
31
+ muted: boolean;
32
+ };
33
+ didChangeSpeaker: {
34
+ callUUID: string;
35
+ speakerOn: boolean;
36
+ };
37
+ didChangeAudioRoute: {
38
+ callUUID: string;
39
+ route: TelecomAudioRoute;
40
+ };
41
+ didActivateAudioSession: {
42
+ callUUID: string;
43
+ route: TelecomAudioRoute;
44
+ };
45
+ didDeactivateAudioSession: {
46
+ callUUID?: string;
47
+ };
48
+ dtmfTone: {
49
+ callUUID: string;
50
+ digit: string;
51
+ };
52
+ };
53
+ export type TelecomEventName = keyof TelecomEvents;
54
+ export type TelecomPushPayload = {
55
+ uuid?: string;
56
+ callUUID?: string;
57
+ handle?: string;
58
+ number?: string;
59
+ callerName?: string;
60
+ name?: string;
61
+ hasVideo?: boolean | string;
62
+ autoAnswer?: boolean | string;
63
+ avatarUrl?: string;
64
+ avatar?: string;
65
+ type?: string;
66
+ [key: string]: unknown;
67
+ };
68
+ export declare function setup(options?: TelecomSetupOptions): Promise<boolean>;
69
+ export declare function displayIncomingCall(uuid: string, handle: string, callerName: string, hasVideo?: boolean, autoAnswer?: boolean, avatarUrl?: string): void;
70
+ export declare function startCall(uuid: string, handle: string, callerName: string, hasVideo?: boolean, avatarUrl?: string): void;
71
+ export declare function answerCall(uuid: string): void;
72
+ export declare function endCall(uuid: string): void;
73
+ export declare function endAllCalls(): void;
74
+ export declare function setMuted(uuid: string, muted: boolean): void;
75
+ export declare function setOnHold(uuid: string, hold: boolean): void;
76
+ export declare function setAudioRoute(uuid: string, route: TelecomAudioRoute): void;
77
+ export declare function getAvailableAudioRoutes(): Promise<TelecomAudioRouteInfo[]>;
78
+ /** Local DTMF beep + `dtmfTone` event — forward digits in your signaling/WebRTC. */
79
+ export declare function sendDtmf(uuid: string, digits: string): void;
80
+ /**
81
+ * Handle an FCM / push data map from JS (foreground).
82
+ * For killed-state, call `TelecomPushBridge` from your native MessagingService.
83
+ */
84
+ export declare function handlePushMessage(data: TelecomPushPayload): Promise<boolean>;
85
+ export declare function addEventListener<E extends TelecomEventName>(eventName: E, listener: (event: TelecomEvents[E]) => void): EmitterSubscription;
86
+ export declare function removeAllListeners(eventName?: TelecomEventName): void;
87
+ declare const Telecom: {
88
+ setup: typeof setup;
89
+ displayIncomingCall: typeof displayIncomingCall;
90
+ startCall: typeof startCall;
91
+ answerCall: typeof answerCall;
92
+ endCall: typeof endCall;
93
+ endAllCalls: typeof endAllCalls;
94
+ setMuted: typeof setMuted;
95
+ setOnHold: typeof setOnHold;
96
+ setAudioRoute: typeof setAudioRoute;
97
+ getAvailableAudioRoutes: typeof getAvailableAudioRoutes;
98
+ sendDtmf: typeof sendDtmf;
99
+ handlePushMessage: typeof handlePushMessage;
100
+ addEventListener: typeof addEventListener;
101
+ removeAllListeners: typeof removeAllListeners;
102
+ };
103
+ export default Telecom;
104
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"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"}