@telnyx/react-voice-commons-sdk 0.1.2 → 0.1.3

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 (58) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/TelnyxVoiceCommons.podspec +31 -31
  3. package/ios/CallKitBridge.m +43 -43
  4. package/ios/CallKitBridge.swift +874 -879
  5. package/ios/VoicePnBridge.m +30 -30
  6. package/ios/VoicePnBridge.swift +86 -86
  7. package/lib/callkit/callkit-coordinator.d.ts +110 -117
  8. package/lib/callkit/callkit-coordinator.js +664 -727
  9. package/lib/callkit/callkit.d.ts +41 -41
  10. package/lib/callkit/callkit.js +252 -242
  11. package/lib/callkit/index.js +15 -47
  12. package/lib/callkit/use-callkit.d.ts +19 -19
  13. package/lib/callkit/use-callkit.js +270 -310
  14. package/lib/context/TelnyxVoiceContext.d.ts +9 -9
  15. package/lib/context/TelnyxVoiceContext.js +10 -13
  16. package/lib/hooks/use-callkit-coordinator.d.ts +9 -17
  17. package/lib/hooks/use-callkit-coordinator.js +45 -50
  18. package/lib/hooks/useAppReadyNotifier.js +13 -15
  19. package/lib/hooks/useAppStateHandler.d.ts +6 -11
  20. package/lib/hooks/useAppStateHandler.js +95 -110
  21. package/lib/hooks/useNetworkStateHandler.d.ts +0 -0
  22. package/lib/hooks/useNetworkStateHandler.js +0 -0
  23. package/lib/index.d.ts +3 -21
  24. package/lib/index.js +50 -201
  25. package/lib/internal/CallKitHandler.d.ts +6 -6
  26. package/lib/internal/CallKitHandler.js +96 -104
  27. package/lib/internal/callkit-manager.d.ts +57 -57
  28. package/lib/internal/callkit-manager.js +299 -316
  29. package/lib/internal/calls/call-state-controller.d.ts +73 -86
  30. package/lib/internal/calls/call-state-controller.js +263 -307
  31. package/lib/internal/session/session-manager.d.ts +71 -75
  32. package/lib/internal/session/session-manager.js +360 -424
  33. package/lib/internal/user-defaults-helpers.js +49 -39
  34. package/lib/internal/voice-pn-bridge.d.ts +114 -12
  35. package/lib/internal/voice-pn-bridge.js +212 -5
  36. package/lib/models/call-state.d.ts +46 -44
  37. package/lib/models/call-state.js +70 -68
  38. package/lib/models/call.d.ts +161 -133
  39. package/lib/models/call.js +454 -382
  40. package/lib/models/config.d.ts +11 -18
  41. package/lib/models/config.js +37 -35
  42. package/lib/models/connection-state.d.ts +10 -10
  43. package/lib/models/connection-state.js +16 -16
  44. package/lib/telnyx-voice-app.d.ts +28 -28
  45. package/lib/telnyx-voice-app.js +463 -481
  46. package/lib/telnyx-voip-client.d.ts +167 -167
  47. package/lib/telnyx-voip-client.js +385 -390
  48. package/package.json +11 -4
  49. package/src/callkit/callkit-coordinator.ts +18 -34
  50. package/src/hooks/useNetworkStateHandler.ts +0 -0
  51. package/src/internal/calls/call-state-controller.ts +81 -58
  52. package/src/internal/session/session-manager.ts +42 -26
  53. package/src/internal/voice-pn-bridge.ts +250 -2
  54. package/src/models/call-state.ts +8 -1
  55. package/src/models/call.ts +119 -5
  56. package/src/telnyx-voice-app.tsx +87 -40
  57. package/src/telnyx-voip-client.ts +15 -3
  58. package/src/types/telnyx-sdk.d.ts +16 -2
@@ -1,31 +1,31 @@
1
- #import <React/RCTBridgeModule.h>
2
-
3
- @interface RCT_EXTERN_MODULE(VoicePnBridge, NSObject)
4
-
5
- RCT_EXTERN_METHOD(getPendingPushAction:(RCTPromiseResolveBlock)resolve
6
- rejecter:(RCTPromiseRejectBlock)reject)
7
-
8
- RCT_EXTERN_METHOD(setPendingPushAction:(NSString *)action
9
- metadata:(NSString *)metadata
10
- resolver:(RCTPromiseResolveBlock)resolve
11
- rejecter:(RCTPromiseRejectBlock)reject)
12
-
13
- RCT_EXTERN_METHOD(clearPendingPushAction:(RCTPromiseResolveBlock)resolve
14
- rejecter:(RCTPromiseRejectBlock)reject)
15
-
16
- RCT_EXTERN_METHOD(getVoipToken:(RCTPromiseResolveBlock)resolve
17
- rejecter:(RCTPromiseRejectBlock)reject)
18
-
19
- RCT_EXTERN_METHOD(getPendingVoipPush:(RCTPromiseResolveBlock)resolve
20
- rejecter:(RCTPromiseRejectBlock)reject)
21
-
22
- RCT_EXTERN_METHOD(clearPendingVoipPush:(RCTPromiseResolveBlock)resolve
23
- rejecter:(RCTPromiseRejectBlock)reject)
24
-
25
- RCT_EXTERN_METHOD(getPendingVoipAction:(RCTPromiseResolveBlock)resolve
26
- rejecter:(RCTPromiseRejectBlock)reject)
27
-
28
- RCT_EXTERN_METHOD(clearPendingVoipAction:(RCTPromiseResolveBlock)resolve
29
- rejecter:(RCTPromiseRejectBlock)reject)
30
-
1
+ #import <React/RCTBridgeModule.h>
2
+
3
+ @interface RCT_EXTERN_MODULE(VoicePnBridge, NSObject)
4
+
5
+ RCT_EXTERN_METHOD(getPendingPushAction:(RCTPromiseResolveBlock)resolve
6
+ rejecter:(RCTPromiseRejectBlock)reject)
7
+
8
+ RCT_EXTERN_METHOD(setPendingPushAction:(NSString *)action
9
+ metadata:(NSString *)metadata
10
+ resolver:(RCTPromiseResolveBlock)resolve
11
+ rejecter:(RCTPromiseRejectBlock)reject)
12
+
13
+ RCT_EXTERN_METHOD(clearPendingPushAction:(RCTPromiseResolveBlock)resolve
14
+ rejecter:(RCTPromiseRejectBlock)reject)
15
+
16
+ RCT_EXTERN_METHOD(getVoipToken:(RCTPromiseResolveBlock)resolve
17
+ rejecter:(RCTPromiseRejectBlock)reject)
18
+
19
+ RCT_EXTERN_METHOD(getPendingVoipPush:(RCTPromiseResolveBlock)resolve
20
+ rejecter:(RCTPromiseRejectBlock)reject)
21
+
22
+ RCT_EXTERN_METHOD(clearPendingVoipPush:(RCTPromiseResolveBlock)resolve
23
+ rejecter:(RCTPromiseRejectBlock)reject)
24
+
25
+ RCT_EXTERN_METHOD(getPendingVoipAction:(RCTPromiseResolveBlock)resolve
26
+ rejecter:(RCTPromiseRejectBlock)reject)
27
+
28
+ RCT_EXTERN_METHOD(clearPendingVoipAction:(RCTPromiseResolveBlock)resolve
29
+ rejecter:(RCTPromiseRejectBlock)reject)
30
+
31
31
  @end
@@ -1,87 +1,87 @@
1
- import Foundation
2
- import React
3
-
4
- @objc(VoicePnBridge)
5
- class VoicePnBridge: NSObject {
6
-
7
- @objc
8
- static func requiresMainQueueSetup() -> Bool {
9
- return false
10
- }
11
-
12
- // MARK: - UserDefaults-based methods for VoIP push handling
13
-
14
- @objc
15
- func getPendingPushAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
16
- let action = UserDefaults.standard.string(forKey: "pending_push_action")
17
- let metadata = UserDefaults.standard.string(forKey: "pending_push_metadata")
18
-
19
- NSLog("[VoicePnBridge] getPendingPushAction - action: \(action ?? "nil"), metadata: \(metadata ?? "nil")")
20
-
21
- let result: [String: Any?] = [
22
- "action": action,
23
- "metadata": metadata
24
- ]
25
-
26
- resolve(result)
27
- }
28
-
29
- @objc
30
- func setPendingPushAction(_ action: String, metadata: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
31
- UserDefaults.standard.set(action, forKey: "pending_push_action")
32
- UserDefaults.standard.set(metadata, forKey: "pending_push_metadata")
33
- UserDefaults.standard.synchronize()
34
-
35
- NSLog("[VoicePnBridge] setPendingPushAction - action: \(action), metadata: \(metadata)")
36
- resolve(true)
37
- }
38
-
39
- @objc
40
- func clearPendingPushAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
41
- UserDefaults.standard.removeObject(forKey: "pending_push_action")
42
- UserDefaults.standard.removeObject(forKey: "pending_push_metadata")
43
- UserDefaults.standard.synchronize()
44
-
45
- NSLog("[VoicePnBridge] clearPendingPushAction - cleared pending push data")
46
- resolve(true)
47
- }
48
-
49
- // MARK: - Additional UserDefaults methods from UserDefaultsModule
50
-
51
- @objc
52
- func getVoipToken(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
53
- let token = UserDefaults.standard.string(forKey: "voip_push_token")
54
- NSLog("[VoicePnBridge] getVoipToken called. token=\(token ?? "(nil)")")
55
- resolve(token)
56
- }
57
-
58
- @objc
59
- func getPendingVoipPush(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
60
- let pending = UserDefaults.standard.string(forKey: "pending_voip_push")
61
- NSLog("[VoicePnBridge] getPendingVoipPush called. pending=\(pending ?? "(nil)")")
62
- resolve(pending)
63
- }
64
-
65
- @objc
66
- func clearPendingVoipPush(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
67
- UserDefaults.standard.removeObject(forKey: "pending_voip_push")
68
- UserDefaults.standard.synchronize()
69
- NSLog("[VoicePnBridge] clearPendingVoipPush called. Cleared key pending_voip_push")
70
- resolve(true)
71
- }
72
-
73
- @objc
74
- func getPendingVoipAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
75
- let pending = UserDefaults.standard.string(forKey: "pending_voip_action")
76
- NSLog("[VoicePnBridge] getPendingVoipAction called. pending=\(pending ?? "(nil)")")
77
- resolve(pending)
78
- }
79
-
80
- @objc
81
- func clearPendingVoipAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
82
- UserDefaults.standard.removeObject(forKey: "pending_voip_action")
83
- UserDefaults.standard.synchronize()
84
- NSLog("[VoicePnBridge] clearPendingVoipAction called. Cleared key pending_voip_action")
85
- resolve(true)
86
- }
1
+ import Foundation
2
+ import React
3
+
4
+ @objc(VoicePnBridge)
5
+ class VoicePnBridge: NSObject {
6
+
7
+ @objc
8
+ static func requiresMainQueueSetup() -> Bool {
9
+ return false
10
+ }
11
+
12
+ // MARK: - UserDefaults-based methods for VoIP push handling
13
+
14
+ @objc
15
+ func getPendingPushAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
16
+ let action = UserDefaults.standard.string(forKey: "pending_push_action")
17
+ let metadata = UserDefaults.standard.string(forKey: "pending_push_metadata")
18
+
19
+ NSLog("[VoicePnBridge] getPendingPushAction - action: \(action ?? "nil"), metadata: \(metadata ?? "nil")")
20
+
21
+ let result: [String: Any?] = [
22
+ "action": action,
23
+ "metadata": metadata
24
+ ]
25
+
26
+ resolve(result)
27
+ }
28
+
29
+ @objc
30
+ func setPendingPushAction(_ action: String, metadata: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
31
+ UserDefaults.standard.set(action, forKey: "pending_push_action")
32
+ UserDefaults.standard.set(metadata, forKey: "pending_push_metadata")
33
+ UserDefaults.standard.synchronize()
34
+
35
+ NSLog("[VoicePnBridge] setPendingPushAction - action: \(action), metadata: \(metadata)")
36
+ resolve(true)
37
+ }
38
+
39
+ @objc
40
+ func clearPendingPushAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
41
+ UserDefaults.standard.removeObject(forKey: "pending_push_action")
42
+ UserDefaults.standard.removeObject(forKey: "pending_push_metadata")
43
+ UserDefaults.standard.synchronize()
44
+
45
+ NSLog("[VoicePnBridge] clearPendingPushAction - cleared pending push data")
46
+ resolve(true)
47
+ }
48
+
49
+ // MARK: - Additional UserDefaults methods from UserDefaultsModule
50
+
51
+ @objc
52
+ func getVoipToken(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
53
+ let token = UserDefaults.standard.string(forKey: "voip_push_token")
54
+ NSLog("[VoicePnBridge] getVoipToken called. token=\(token ?? "(nil)")")
55
+ resolve(token)
56
+ }
57
+
58
+ @objc
59
+ func getPendingVoipPush(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
60
+ let pending = UserDefaults.standard.string(forKey: "pending_voip_push")
61
+ NSLog("[VoicePnBridge] getPendingVoipPush called. pending=\(pending ?? "(nil)")")
62
+ resolve(pending)
63
+ }
64
+
65
+ @objc
66
+ func clearPendingVoipPush(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
67
+ UserDefaults.standard.removeObject(forKey: "pending_voip_push")
68
+ UserDefaults.standard.synchronize()
69
+ NSLog("[VoicePnBridge] clearPendingVoipPush called. Cleared key pending_voip_push")
70
+ resolve(true)
71
+ }
72
+
73
+ @objc
74
+ func getPendingVoipAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
75
+ let pending = UserDefaults.standard.string(forKey: "pending_voip_action")
76
+ NSLog("[VoicePnBridge] getPendingVoipAction called. pending=\(pending ?? "(nil)")")
77
+ resolve(pending)
78
+ }
79
+
80
+ @objc
81
+ func clearPendingVoipAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
82
+ UserDefaults.standard.removeObject(forKey: "pending_voip_action")
83
+ UserDefaults.standard.synchronize()
84
+ NSLog("[VoicePnBridge] clearPendingVoipAction called. Cleared key pending_voip_action")
85
+ resolve(true)
86
+ }
87
87
  }
@@ -8,123 +8,116 @@ import { TelnyxVoipClient } from '../telnyx-voip-client';
8
8
  * guidelines for proper CallKit integration.
9
9
  */
10
10
  declare class CallKitCoordinator {
11
- private static instance;
12
- private callMap;
13
- private processingCalls;
14
- private endedCalls;
15
- private connectedCalls;
16
- private isCallFromPush;
17
- private voipClient;
18
- static getInstance(): CallKitCoordinator;
19
- private constructor();
20
- private setupCallKitListeners;
21
- /**
22
- * Report an incoming call to CallKit (from push notification or socket)
23
- * For push notifications, the call is already reported - we just need to map it
24
- */
25
- reportIncomingCall(call: Call, callerName: string, callerNumber: string): Promise<string | null>;
26
- /**
27
- * Start an outgoing call through CallKit
28
- */
29
- startOutgoingCall(
30
- call: Call,
31
- destinationNumber: string,
32
- displayName?: string
33
- ): Promise<string | null>;
34
- /**
35
- * Answer a call from the app UI (CallKit-first approach)
36
- */
37
- answerCallFromUI(call: Call): Promise<boolean>;
38
- /**
39
- * End a call from the app UI (CallKit-first approach)
40
- */
41
- endCallFromUI(call: Call): Promise<boolean>;
42
- /**
43
- * Handle CallKit answer action (triggered by CallKit)
44
- */
45
- handleCallKitAnswer(callKitUUID: string, event?: any): Promise<void>;
46
- /**
47
- * Handle CallKit end action (triggered by CallKit)
48
- */
49
- private handleCallKitEnd;
50
- /**
51
- * Handle CallKit start action (triggered by CallKit for outgoing calls)
52
- */
53
- private handleCallKitStart;
54
- /**
55
- * Handle CallKit push received event - when a VoIP push notification has been processed
56
- * This allows us to coordinate between the push notification and any subsequent WebRTC calls
57
- */
58
- handleCallKitPushReceived(callKitUUID: string, event?: any): Promise<void>;
59
- /**
60
- * Handle push notification answer - when user answers from CallKit but we don't have a WebRTC call yet
61
- * This is the iOS equivalent of the Android FCM handler
62
- */
63
- private handlePushNotificationAnswer;
64
- /**
65
- * Handle push notification reject - when user rejects from CallKit but we don't have a WebRTC call yet
66
- * This is the iOS equivalent of the Android FCM handler reject
67
- */
68
- private handlePushNotificationReject;
69
- /**
70
- * Set up listeners for WebRTC call state changes
71
- */
72
- private setupWebRTCCallListeners;
73
- /**
74
- * Clean up call mappings and listeners
75
- */
76
- private cleanupCall;
77
- /**
78
- * Get CallKit UUID for a WebRTC call
79
- */
80
- getCallKitUUID(call: Call): string | null;
81
- /**
82
- * Get WebRTC call for a CallKit UUID
83
- */
84
- getWebRTCCall(callKitUUID: string): Call | null;
85
- /**
86
- * Link an existing CallKit call (from push notification) with a WebRTC call
87
- * This should be called when a WebRTC call arrives that corresponds to an existing CallKit call
88
- */
89
- linkExistingCallKitCall(call: Call, callKitUUID: string): void;
90
- /**
91
- * Set the VoIP client reference for triggering reconnection
92
- */
93
- setVoipClient(voipClient: TelnyxVoipClient): void;
94
- /**
95
- * Helper method to handle auto-answer logic for push notification calls
96
- */
97
- private handleAutoAnswer;
98
- /**
99
- * Helper method to clean up push notification state
100
- */
101
- private cleanupPushNotificationState;
102
- /**
103
- * Get reference to the SDK client (for queuing actions when call doesn't exist yet)
104
- */
105
- private getSDKClient;
106
- /**
107
- * Check if app is in background and disconnect client if no active calls
108
- */
109
- private checkBackgroundDisconnection;
110
- /**
111
- * Reset only flags (keeping active call mappings intact)
112
- */
113
- resetFlags(): void;
114
- /**
115
- * Check if there are any calls currently being processed by CallKit
116
- * This helps prevent premature flag resets during CallKit operations
117
- */
118
- hasProcessingCalls(): boolean;
119
- /**
120
- * Check if there's currently a call from push notification being processed
121
- * This helps prevent disconnection during push call handling
122
- */
123
- getIsCallFromPush(): boolean;
124
- /**
125
- * Check if CallKit is available and coordinator is active
126
- */
127
- isAvailable(): boolean;
11
+ private static instance;
12
+ private callMap;
13
+ private processingCalls;
14
+ private endedCalls;
15
+ private connectedCalls;
16
+ private isCallFromPush;
17
+ private shouldAutoAnswerNextCall;
18
+ private voipClient;
19
+ static getInstance(): CallKitCoordinator;
20
+ private constructor();
21
+ private setupCallKitListeners;
22
+ /**
23
+ * Report an incoming call to CallKit (from push notification or socket)
24
+ * For push notifications, the call is already reported - we just need to map it
25
+ */
26
+ reportIncomingCall(call: Call, callerName: string, callerNumber: string): Promise<string | null>;
27
+ /**
28
+ * Start an outgoing call through CallKit
29
+ */
30
+ startOutgoingCall(call: Call, destinationNumber: string, displayName?: string): Promise<string | null>;
31
+ /**
32
+ * Answer a call from the app UI (CallKit-first approach)
33
+ */
34
+ answerCallFromUI(call: Call): Promise<boolean>;
35
+ /**
36
+ * End a call from the app UI (CallKit-first approach)
37
+ */
38
+ endCallFromUI(call: Call): Promise<boolean>;
39
+ /**
40
+ * Handle CallKit answer action (triggered by CallKit)
41
+ */
42
+ handleCallKitAnswer(callKitUUID: string, event?: any): Promise<void>;
43
+ /**
44
+ * Handle CallKit end action (triggered by CallKit)
45
+ */
46
+ private handleCallKitEnd;
47
+ /**
48
+ * Handle CallKit start action (triggered by CallKit for outgoing calls)
49
+ */
50
+ private handleCallKitStart;
51
+ /**
52
+ * Handle CallKit push received event
53
+ * This allows us to coordinate between the push notification and any subsequent WebRTC calls
54
+ */
55
+ handleCallKitPushReceived(callKitUUID: string, event?: any): Promise<void>;
56
+ /**
57
+ * Handle push notification answer - when user answers from CallKit but we don't have a WebRTC call yet
58
+ * This is the iOS equivalent of the Android FCM handler
59
+ */
60
+ private handlePushNotificationAnswer;
61
+ /**
62
+ * Handle push notification reject - when user rejects from CallKit but we don't have a WebRTC call yet
63
+ * This is the iOS equivalent of the Android FCM handler reject
64
+ */
65
+ private handlePushNotificationReject;
66
+ /**
67
+ * Set up listeners for WebRTC call state changes
68
+ */
69
+ private setupWebRTCCallListeners;
70
+ /**
71
+ * Clean up call mappings and listeners
72
+ */
73
+ private cleanupCall;
74
+ /**
75
+ * Get CallKit UUID for a WebRTC call
76
+ */
77
+ getCallKitUUID(call: Call): string | null;
78
+ /**
79
+ * Get WebRTC call for a CallKit UUID
80
+ */
81
+ getWebRTCCall(callKitUUID: string): Call | null;
82
+ /**
83
+ * Link an existing CallKit call (from push notification) with a WebRTC call
84
+ * This should be called when a WebRTC call arrives that corresponds to an existing CallKit call
85
+ */
86
+ linkExistingCallKitCall(call: Call, callKitUUID: string): void;
87
+ /**
88
+ * Set the VoIP client reference for triggering reconnection
89
+ */
90
+ setVoipClient(voipClient: TelnyxVoipClient): void;
91
+ /**
92
+ * Helper method to clean up push notification state
93
+ */
94
+ private cleanupPushNotificationState;
95
+ /**
96
+ * Get reference to the SDK client (for queuing actions when call doesn't exist yet)
97
+ */
98
+ private getSDKClient;
99
+ /**
100
+ * Check if app is in background and disconnect client if no active calls
101
+ */
102
+ private checkBackgroundDisconnection;
103
+ /**
104
+ * Reset only flags (keeping active call mappings intact)
105
+ */
106
+ resetFlags(): void;
107
+ /**
108
+ * Check if there are any calls currently being processed by CallKit
109
+ * This helps prevent premature flag resets during CallKit operations
110
+ */
111
+ hasProcessingCalls(): boolean;
112
+ /**
113
+ * Check if there's currently a call from push notification being processed
114
+ * This helps prevent disconnection during push call handling
115
+ */
116
+ getIsCallFromPush(): boolean;
117
+ /**
118
+ * Check if CallKit is available and coordinator is active
119
+ */
120
+ isAvailable(): boolean;
128
121
  }
129
122
  export declare const callKitCoordinator: CallKitCoordinator;
130
123
  export default callKitCoordinator;