react-native-fpay 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 (167) hide show
  1. package/Fpay.podspec +20 -0
  2. package/LICENSE +20 -0
  3. package/README.md +37 -0
  4. package/android/build.gradle +67 -0
  5. package/android/src/main/AndroidManifest.xml +2 -0
  6. package/android/src/main/java/com/fpay/FpayModule.kt +15 -0
  7. package/android/src/main/java/com/fpay/FpayPackage.kt +31 -0
  8. package/ios/Fpay.h +5 -0
  9. package/ios/Fpay.mm +21 -0
  10. package/lib/module/FountainPayProvider.js +18 -0
  11. package/lib/module/FountainPayProvider.js.map +1 -0
  12. package/lib/module/core/api/client.js +47 -0
  13. package/lib/module/core/api/client.js.map +1 -0
  14. package/lib/module/core/api/index.js +35 -0
  15. package/lib/module/core/api/index.js.map +1 -0
  16. package/lib/module/core/types/index.js +4 -0
  17. package/lib/module/core/types/index.js.map +1 -0
  18. package/lib/module/engine/BLEReceiverService.js +190 -0
  19. package/lib/module/engine/BLEReceiverService.js.map +1 -0
  20. package/lib/module/engine/BLESenderService.js +259 -0
  21. package/lib/module/engine/BLESenderService.js.map +1 -0
  22. package/lib/module/engine/FPEngine.js +340 -0
  23. package/lib/module/engine/FPEngine.js.map +1 -0
  24. package/lib/module/engine/NearbyUsersService.js +87 -0
  25. package/lib/module/engine/NearbyUsersService.js.map +1 -0
  26. package/lib/module/index.js +16 -0
  27. package/lib/module/index.js.map +1 -0
  28. package/lib/module/package.json +1 -0
  29. package/lib/module/ui/components/FPButton.js +71 -0
  30. package/lib/module/ui/components/FPButton.js.map +1 -0
  31. package/lib/module/ui/components/LoadingAnimation/InLoading.js +74 -0
  32. package/lib/module/ui/components/LoadingAnimation/InLoading.js.map +1 -0
  33. package/lib/module/ui/components/LoadingAnimation/index.js +82 -0
  34. package/lib/module/ui/components/LoadingAnimation/index.js.map +1 -0
  35. package/lib/module/ui/components/OtpInput/OTPInputView.js +290 -0
  36. package/lib/module/ui/components/OtpInput/OTPInputView.js.map +1 -0
  37. package/lib/module/ui/components/OtpInput/Styles.js +20 -0
  38. package/lib/module/ui/components/OtpInput/Styles.js.map +1 -0
  39. package/lib/module/ui/components/OtpInput/helpers/codeToArray.js +7 -0
  40. package/lib/module/ui/components/OtpInput/helpers/codeToArray.js.map +1 -0
  41. package/lib/module/ui/components/OtpInput/helpers/device.js +9 -0
  42. package/lib/module/ui/components/OtpInput/helpers/device.js.map +1 -0
  43. package/lib/module/ui/components/OtpInput/helpers/styles.js +17 -0
  44. package/lib/module/ui/components/OtpInput/helpers/styles.js.map +1 -0
  45. package/lib/module/ui/components/OtpInput/helpers/types.js +4 -0
  46. package/lib/module/ui/components/OtpInput/helpers/types.js.map +1 -0
  47. package/lib/module/ui/components/OtpInput/index.js +45 -0
  48. package/lib/module/ui/components/OtpInput/index.js.map +1 -0
  49. package/lib/module/ui/components/PulseAnimation.js +61 -0
  50. package/lib/module/ui/components/PulseAnimation.js.map +1 -0
  51. package/lib/module/ui/modals/FPPaymentRequestModal.js +253 -0
  52. package/lib/module/ui/modals/FPPaymentRequestModal.js.map +1 -0
  53. package/lib/module/ui/modals/FPShell.js +180 -0
  54. package/lib/module/ui/modals/FPShell.js.map +1 -0
  55. package/lib/module/ui/screens/ReceiveScreen.js +291 -0
  56. package/lib/module/ui/screens/ReceiveScreen.js.map +1 -0
  57. package/lib/module/ui/screens/SendScreen.js +216 -0
  58. package/lib/module/ui/screens/SendScreen.js.map +1 -0
  59. package/lib/module/ui/screens/sub/BluetoothSubScreen.js +403 -0
  60. package/lib/module/ui/screens/sub/BluetoothSubScreen.js.map +1 -0
  61. package/lib/module/ui/screens/sub/NFCSubScreen.js +169 -0
  62. package/lib/module/ui/screens/sub/NFCSubScreen.js.map +1 -0
  63. package/lib/module/ui/screens/sub/NQRSubScreen.js +136 -0
  64. package/lib/module/ui/screens/sub/NQRSubScreen.js.map +1 -0
  65. package/lib/module/ui/screens/sub/ProximitySubScreen.js +501 -0
  66. package/lib/module/ui/screens/sub/ProximitySubScreen.js.map +1 -0
  67. package/lib/module/ui/screens/sub/TransferSubScreen.js +361 -0
  68. package/lib/module/ui/screens/sub/TransferSubScreen.js.map +1 -0
  69. package/lib/module/ui/theme/index.js +64 -0
  70. package/lib/module/ui/theme/index.js.map +1 -0
  71. package/lib/module/useFountainPay.js +82 -0
  72. package/lib/module/useFountainPay.js.map +1 -0
  73. package/lib/typescript/package.json +1 -0
  74. package/lib/typescript/src/FountainPayProvider.d.ts +7 -0
  75. package/lib/typescript/src/FountainPayProvider.d.ts.map +1 -0
  76. package/lib/typescript/src/core/api/client.d.ts +7 -0
  77. package/lib/typescript/src/core/api/client.d.ts.map +1 -0
  78. package/lib/typescript/src/core/api/index.d.ts +67 -0
  79. package/lib/typescript/src/core/api/index.d.ts.map +1 -0
  80. package/lib/typescript/src/core/types/index.d.ts +130 -0
  81. package/lib/typescript/src/core/types/index.d.ts.map +1 -0
  82. package/lib/typescript/src/engine/BLEReceiverService.d.ts +43 -0
  83. package/lib/typescript/src/engine/BLEReceiverService.d.ts.map +1 -0
  84. package/lib/typescript/src/engine/BLESenderService.d.ts +39 -0
  85. package/lib/typescript/src/engine/BLESenderService.d.ts.map +1 -0
  86. package/lib/typescript/src/engine/FPEngine.d.ts +24 -0
  87. package/lib/typescript/src/engine/FPEngine.d.ts.map +1 -0
  88. package/lib/typescript/src/engine/NearbyUsersService.d.ts +19 -0
  89. package/lib/typescript/src/engine/NearbyUsersService.d.ts.map +1 -0
  90. package/lib/typescript/src/index.d.ts +4 -0
  91. package/lib/typescript/src/index.d.ts.map +1 -0
  92. package/lib/typescript/src/ui/components/FPButton.d.ts +12 -0
  93. package/lib/typescript/src/ui/components/FPButton.d.ts.map +1 -0
  94. package/lib/typescript/src/ui/components/LoadingAnimation/InLoading.d.ts +7 -0
  95. package/lib/typescript/src/ui/components/LoadingAnimation/InLoading.d.ts.map +1 -0
  96. package/lib/typescript/src/ui/components/LoadingAnimation/index.d.ts +6 -0
  97. package/lib/typescript/src/ui/components/LoadingAnimation/index.d.ts.map +1 -0
  98. package/lib/typescript/src/ui/components/OtpInput/OTPInputView.d.ts +29 -0
  99. package/lib/typescript/src/ui/components/OtpInput/OTPInputView.d.ts.map +1 -0
  100. package/lib/typescript/src/ui/components/OtpInput/Styles.d.ts +330 -0
  101. package/lib/typescript/src/ui/components/OtpInput/Styles.d.ts.map +1 -0
  102. package/lib/typescript/src/ui/components/OtpInput/helpers/codeToArray.d.ts +6 -0
  103. package/lib/typescript/src/ui/components/OtpInput/helpers/codeToArray.d.ts.map +1 -0
  104. package/lib/typescript/src/ui/components/OtpInput/helpers/device.d.ts +6 -0
  105. package/lib/typescript/src/ui/components/OtpInput/helpers/device.d.ts.map +1 -0
  106. package/lib/typescript/src/ui/components/OtpInput/helpers/styles.d.ts +6 -0
  107. package/lib/typescript/src/ui/components/OtpInput/helpers/styles.d.ts.map +1 -0
  108. package/lib/typescript/src/ui/components/OtpInput/helpers/types.d.ts +84 -0
  109. package/lib/typescript/src/ui/components/OtpInput/helpers/types.d.ts.map +1 -0
  110. package/lib/typescript/src/ui/components/OtpInput/index.d.ts +9 -0
  111. package/lib/typescript/src/ui/components/OtpInput/index.d.ts.map +1 -0
  112. package/lib/typescript/src/ui/components/PulseAnimation.d.ts +2 -0
  113. package/lib/typescript/src/ui/components/PulseAnimation.d.ts.map +1 -0
  114. package/lib/typescript/src/ui/modals/FPPaymentRequestModal.d.ts +2 -0
  115. package/lib/typescript/src/ui/modals/FPPaymentRequestModal.d.ts.map +1 -0
  116. package/lib/typescript/src/ui/modals/FPShell.d.ts +2 -0
  117. package/lib/typescript/src/ui/modals/FPShell.d.ts.map +1 -0
  118. package/lib/typescript/src/ui/screens/ReceiveScreen.d.ts +10 -0
  119. package/lib/typescript/src/ui/screens/ReceiveScreen.d.ts.map +1 -0
  120. package/lib/typescript/src/ui/screens/SendScreen.d.ts +9 -0
  121. package/lib/typescript/src/ui/screens/SendScreen.d.ts.map +1 -0
  122. package/lib/typescript/src/ui/screens/sub/BluetoothSubScreen.d.ts +552 -0
  123. package/lib/typescript/src/ui/screens/sub/BluetoothSubScreen.d.ts.map +1 -0
  124. package/lib/typescript/src/ui/screens/sub/NFCSubScreen.d.ts +19 -0
  125. package/lib/typescript/src/ui/screens/sub/NFCSubScreen.d.ts.map +1 -0
  126. package/lib/typescript/src/ui/screens/sub/NQRSubScreen.d.ts +13 -0
  127. package/lib/typescript/src/ui/screens/sub/NQRSubScreen.d.ts.map +1 -0
  128. package/lib/typescript/src/ui/screens/sub/ProximitySubScreen.d.ts +552 -0
  129. package/lib/typescript/src/ui/screens/sub/ProximitySubScreen.d.ts.map +1 -0
  130. package/lib/typescript/src/ui/screens/sub/TransferSubScreen.d.ts +12 -0
  131. package/lib/typescript/src/ui/screens/sub/TransferSubScreen.d.ts.map +1 -0
  132. package/lib/typescript/src/ui/theme/index.d.ts +62 -0
  133. package/lib/typescript/src/ui/theme/index.d.ts.map +1 -0
  134. package/lib/typescript/src/useFountainPay.d.ts +3 -0
  135. package/lib/typescript/src/useFountainPay.d.ts.map +1 -0
  136. package/package.json +217 -0
  137. package/src/FountainPayProvider.tsx +21 -0
  138. package/src/core/api/client.ts +47 -0
  139. package/src/core/api/index.ts +61 -0
  140. package/src/core/types/index.ts +144 -0
  141. package/src/engine/BLEReceiverService.ts +244 -0
  142. package/src/engine/BLESenderService.ts +314 -0
  143. package/src/engine/FPEngine.ts +370 -0
  144. package/src/engine/NearbyUsersService.ts +106 -0
  145. package/src/index.ts +30 -0
  146. package/src/ui/components/FPButton.tsx +42 -0
  147. package/src/ui/components/LoadingAnimation/InLoading.tsx +88 -0
  148. package/src/ui/components/LoadingAnimation/index.tsx +93 -0
  149. package/src/ui/components/OtpInput/OTPInputView.tsx +243 -0
  150. package/src/ui/components/OtpInput/Styles.ts +19 -0
  151. package/src/ui/components/OtpInput/helpers/codeToArray.ts +3 -0
  152. package/src/ui/components/OtpInput/helpers/device.ts +6 -0
  153. package/src/ui/components/OtpInput/helpers/styles.ts +17 -0
  154. package/src/ui/components/OtpInput/helpers/types.ts +88 -0
  155. package/src/ui/components/OtpInput/index.tsx +51 -0
  156. package/src/ui/components/PulseAnimation.tsx +78 -0
  157. package/src/ui/modals/FPPaymentRequestModal.tsx +158 -0
  158. package/src/ui/modals/FPShell.tsx +107 -0
  159. package/src/ui/screens/ReceiveScreen.tsx +119 -0
  160. package/src/ui/screens/SendScreen.tsx +86 -0
  161. package/src/ui/screens/sub/BluetoothSubScreen.tsx +433 -0
  162. package/src/ui/screens/sub/NFCSubScreen.tsx +83 -0
  163. package/src/ui/screens/sub/NQRSubScreen.tsx +61 -0
  164. package/src/ui/screens/sub/ProximitySubScreen.tsx +390 -0
  165. package/src/ui/screens/sub/TransferSubScreen.tsx +146 -0
  166. package/src/ui/theme/index.ts +24 -0
  167. package/src/useFountainPay.ts +95 -0
@@ -0,0 +1,361 @@
1
+ "use strict";
2
+
3
+ import React, { useState, useEffect } from 'react';
4
+ import { View, Text, TextInput, FlatList, TouchableOpacity, StyleSheet, ActivityIndicator } from 'react-native';
5
+ import { transferAPI } from "../../../core/api/index.js";
6
+ import { FPButton } from "../../components/FPButton.js";
7
+ import { C, R, S, F } from "../../theme/index.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ export function TransferSubScreen({
10
+ amount,
11
+ currency,
12
+ onBack,
13
+ onDone,
14
+ onSuccess,
15
+ onError
16
+ }) {
17
+ const [step, setStep] = useState('bank');
18
+ const [banks, setBanks] = useState([]);
19
+ const [search, setSearch] = useState('');
20
+ const [selectedBank, setSelectedBank] = useState(null);
21
+ const [accountNumber, setAccountNumber] = useState('');
22
+ const [verifiedName, setVerifiedName] = useState('');
23
+ const [isVerifying, setIsVerifying] = useState(false);
24
+ const [narration, setNarration] = useState('');
25
+ const [loading, setLoading] = useState(false);
26
+ const [error, setError] = useState('');
27
+ useEffect(() => {
28
+ transferAPI.getBanks().then(setBanks).catch(() => {});
29
+ }, []);
30
+ useEffect(() => {
31
+ if (accountNumber.length === 10 && selectedBank) {
32
+ setIsVerifying(true);
33
+ setVerifiedName('');
34
+ transferAPI.verifyAccount(accountNumber, selectedBank.code).then(r => setVerifiedName(r.accountName)).catch(() => setVerifiedName('')).finally(() => setIsVerifying(false));
35
+ }
36
+ }, [accountNumber, selectedBank]);
37
+ const handleSend = async () => {
38
+ if (!selectedBank || !verifiedName) return;
39
+ setLoading(true);
40
+ setStep('processing');
41
+ try {
42
+ const result = await transferAPI.send({
43
+ accountNumber,
44
+ bankCode: selectedBank.code,
45
+ amount: amount * 100,
46
+ narration
47
+ });
48
+ onSuccess?.({
49
+ id: result.reference,
50
+ reference: result.reference,
51
+ type: 'debit',
52
+ channel: 'transfer',
53
+ amount: result.amount,
54
+ currency: result.currency,
55
+ status: result.status,
56
+ recipient: {
57
+ accountName: result.recipient.accountName
58
+ },
59
+ createdAt: result.createdAt
60
+ });
61
+ setStep('done');
62
+ } catch (err) {
63
+ setError(err.message);
64
+ setStep('confirm');
65
+ onError?.(err);
66
+ } finally {
67
+ setLoading(false);
68
+ }
69
+ };
70
+ const filtered = banks.filter(b => b.name.toLowerCase().includes(search.toLowerCase()));
71
+ if (step === 'bank') return /*#__PURE__*/_jsxs(View, {
72
+ style: st.wrap,
73
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
74
+ onPress: onBack,
75
+ style: st.back,
76
+ children: /*#__PURE__*/_jsx(Text, {
77
+ style: st.backText,
78
+ children: "Back"
79
+ })
80
+ }), /*#__PURE__*/_jsx(Text, {
81
+ style: st.title,
82
+ children: "Select Bank"
83
+ }), /*#__PURE__*/_jsx(TextInput, {
84
+ style: st.input,
85
+ placeholder: "Search...",
86
+ value: search,
87
+ onChangeText: setSearch,
88
+ placeholderTextColor: C.ghost
89
+ }), /*#__PURE__*/_jsx(FlatList, {
90
+ data: filtered,
91
+ keyExtractor: i => i.code,
92
+ renderItem: ({
93
+ item
94
+ }) => /*#__PURE__*/_jsxs(TouchableOpacity, {
95
+ style: st.bankRow,
96
+ onPress: () => {
97
+ setSelectedBank(item);
98
+ setStep('account');
99
+ },
100
+ children: [/*#__PURE__*/_jsx(Text, {
101
+ style: st.bankName,
102
+ children: item.name
103
+ }), /*#__PURE__*/_jsx(Text, {
104
+ style: st.arrow,
105
+ children: ">"
106
+ })]
107
+ }),
108
+ ItemSeparatorComponent: () => /*#__PURE__*/_jsx(View, {
109
+ style: {
110
+ height: 1,
111
+ backgroundColor: C.border
112
+ }
113
+ })
114
+ })]
115
+ });
116
+ if (step === 'account') return /*#__PURE__*/_jsxs(View, {
117
+ style: st.wrap,
118
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
119
+ onPress: () => setStep('bank'),
120
+ style: st.back,
121
+ children: /*#__PURE__*/_jsx(Text, {
122
+ style: st.backText,
123
+ children: selectedBank?.name
124
+ })
125
+ }), /*#__PURE__*/_jsx(Text, {
126
+ style: st.title,
127
+ children: "Account Number"
128
+ }), /*#__PURE__*/_jsx(TextInput, {
129
+ style: st.bigInput,
130
+ placeholder: "0000000000",
131
+ value: accountNumber,
132
+ onChangeText: v => setAccountNumber(v.replace(/[^0-9]/g, '').slice(0, 10)),
133
+ keyboardType: "number-pad",
134
+ maxLength: 10,
135
+ placeholderTextColor: C.ghost
136
+ }), isVerifying && /*#__PURE__*/_jsx(ActivityIndicator, {
137
+ color: C.brand
138
+ }), verifiedName ? /*#__PURE__*/_jsx(View, {
139
+ style: st.verified,
140
+ children: /*#__PURE__*/_jsxs(Text, {
141
+ style: st.verifiedText,
142
+ children: ["Verified: ", verifiedName]
143
+ })
144
+ }) : null, /*#__PURE__*/_jsx(FPButton, {
145
+ label: "Continue",
146
+ onPress: () => setStep('confirm'),
147
+ disabled: !verifiedName,
148
+ style: st.btn
149
+ })]
150
+ });
151
+ if (step === 'confirm') return /*#__PURE__*/_jsxs(View, {
152
+ style: st.wrap,
153
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
154
+ onPress: () => setStep('account'),
155
+ style: st.back,
156
+ children: /*#__PURE__*/_jsx(Text, {
157
+ style: st.backText,
158
+ children: "Back"
159
+ })
160
+ }), /*#__PURE__*/_jsx(Text, {
161
+ style: st.title,
162
+ children: "Confirm Transfer"
163
+ }), /*#__PURE__*/_jsxs(View, {
164
+ style: st.card,
165
+ children: [/*#__PURE__*/_jsx(Row, {
166
+ label: "Recipient",
167
+ value: verifiedName
168
+ }), /*#__PURE__*/_jsx(Row, {
169
+ label: "Bank",
170
+ value: selectedBank?.name ?? ''
171
+ }), /*#__PURE__*/_jsx(Row, {
172
+ label: "Account",
173
+ value: accountNumber
174
+ }), /*#__PURE__*/_jsx(Row, {
175
+ label: "Amount",
176
+ value: currency + ' ' + amount.toLocaleString('en-NG', {
177
+ minimumFractionDigits: 2
178
+ }),
179
+ bold: true
180
+ })]
181
+ }), /*#__PURE__*/_jsx(TextInput, {
182
+ style: st.input,
183
+ placeholder: "Add a note (optional)",
184
+ value: narration,
185
+ onChangeText: setNarration,
186
+ placeholderTextColor: C.ghost
187
+ }), error ? /*#__PURE__*/_jsx(Text, {
188
+ style: st.error,
189
+ children: error
190
+ }) : null, /*#__PURE__*/_jsx(FPButton, {
191
+ label: "Send Money",
192
+ onPress: handleSend,
193
+ loading: loading,
194
+ style: st.btn
195
+ })]
196
+ });
197
+ if (step === 'processing') return /*#__PURE__*/_jsxs(View, {
198
+ style: [st.wrap, st.centered],
199
+ children: [/*#__PURE__*/_jsx(ActivityIndicator, {
200
+ size: "large",
201
+ color: C.brand
202
+ }), /*#__PURE__*/_jsx(Text, {
203
+ style: st.title,
204
+ children: "Sending..."
205
+ })]
206
+ });
207
+ if (step === 'done') return /*#__PURE__*/_jsxs(View, {
208
+ style: [st.wrap, st.centered],
209
+ children: [/*#__PURE__*/_jsx(View, {
210
+ style: st.successCircle,
211
+ children: /*#__PURE__*/_jsx(Text, {
212
+ style: {
213
+ fontSize: 28,
214
+ color: C.green
215
+ },
216
+ children: "OK"
217
+ })
218
+ }), /*#__PURE__*/_jsx(Text, {
219
+ style: st.title,
220
+ children: "Sent!"
221
+ }), /*#__PURE__*/_jsxs(Text, {
222
+ style: st.sub,
223
+ children: [currency, " ", amount.toLocaleString(), " to ", verifiedName]
224
+ }), /*#__PURE__*/_jsx(FPButton, {
225
+ label: "Done",
226
+ onPress: onDone,
227
+ style: st.btn
228
+ })]
229
+ });
230
+ return null;
231
+ }
232
+ function Row({
233
+ label,
234
+ value,
235
+ bold
236
+ }) {
237
+ return /*#__PURE__*/_jsxs(View, {
238
+ style: {
239
+ flexDirection: 'row',
240
+ justifyContent: 'space-between',
241
+ paddingVertical: S.sm,
242
+ borderBottomWidth: 1,
243
+ borderBottomColor: C.border
244
+ },
245
+ children: [/*#__PURE__*/_jsx(Text, {
246
+ style: {
247
+ color: C.muted,
248
+ fontSize: F.sm
249
+ },
250
+ children: label
251
+ }), /*#__PURE__*/_jsx(Text, {
252
+ style: {
253
+ color: C.ink,
254
+ fontWeight: bold ? '800' : '600',
255
+ fontSize: F.sm
256
+ },
257
+ children: value
258
+ })]
259
+ });
260
+ }
261
+ const st = StyleSheet.create({
262
+ wrap: {
263
+ flex: 1,
264
+ padding: S.lg
265
+ },
266
+ centered: {
267
+ justifyContent: 'center',
268
+ alignItems: 'center'
269
+ },
270
+ back: {
271
+ marginBottom: S.md
272
+ },
273
+ backText: {
274
+ color: C.brand,
275
+ fontSize: F.md,
276
+ fontWeight: '600'
277
+ },
278
+ title: {
279
+ fontSize: F.xl,
280
+ fontWeight: '800',
281
+ color: C.ink,
282
+ marginBottom: S.lg
283
+ },
284
+ input: {
285
+ backgroundColor: C.surface,
286
+ borderRadius: R.md,
287
+ padding: S.md,
288
+ fontSize: F.md,
289
+ color: C.ink,
290
+ borderWidth: 1,
291
+ borderColor: C.border,
292
+ marginBottom: S.md
293
+ },
294
+ bigInput: {
295
+ backgroundColor: C.surface,
296
+ borderRadius: R.md,
297
+ padding: S.md,
298
+ fontSize: 28,
299
+ fontWeight: '800',
300
+ color: C.ink,
301
+ textAlign: 'center',
302
+ letterSpacing: 3,
303
+ borderWidth: 1,
304
+ borderColor: C.border,
305
+ marginBottom: S.md
306
+ },
307
+ verified: {
308
+ backgroundColor: C.greenLight,
309
+ borderRadius: R.md,
310
+ padding: S.sm,
311
+ marginBottom: S.md
312
+ },
313
+ verifiedText: {
314
+ color: C.green,
315
+ fontWeight: '700',
316
+ fontSize: F.sm
317
+ },
318
+ btn: {
319
+ marginTop: S.sm
320
+ },
321
+ bankRow: {
322
+ flexDirection: 'row',
323
+ justifyContent: 'space-between',
324
+ paddingVertical: S.md,
325
+ alignItems: 'center'
326
+ },
327
+ bankName: {
328
+ fontSize: F.md,
329
+ color: C.ink
330
+ },
331
+ arrow: {
332
+ color: C.ghost,
333
+ fontSize: F.lg
334
+ },
335
+ card: {
336
+ backgroundColor: C.surface,
337
+ borderRadius: R.lg,
338
+ padding: S.md,
339
+ marginBottom: S.md
340
+ },
341
+ error: {
342
+ color: C.red,
343
+ fontSize: F.sm,
344
+ marginBottom: S.sm
345
+ },
346
+ successCircle: {
347
+ width: 80,
348
+ height: 80,
349
+ borderRadius: 40,
350
+ backgroundColor: C.greenLight,
351
+ justifyContent: 'center',
352
+ alignItems: 'center',
353
+ marginBottom: S.lg
354
+ },
355
+ sub: {
356
+ color: C.muted,
357
+ fontSize: F.md,
358
+ marginBottom: S.xl
359
+ }
360
+ });
361
+ //# sourceMappingURL=TransferSubScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useState","useEffect","View","Text","TextInput","FlatList","TouchableOpacity","StyleSheet","ActivityIndicator","transferAPI","FPButton","C","R","S","F","jsx","_jsx","jsxs","_jsxs","TransferSubScreen","amount","currency","onBack","onDone","onSuccess","onError","step","setStep","banks","setBanks","search","setSearch","selectedBank","setSelectedBank","accountNumber","setAccountNumber","verifiedName","setVerifiedName","isVerifying","setIsVerifying","narration","setNarration","loading","setLoading","error","setError","getBanks","then","catch","length","verifyAccount","code","r","accountName","finally","handleSend","result","send","bankCode","id","reference","type","channel","status","recipient","createdAt","err","message","filtered","filter","b","name","toLowerCase","includes","style","st","wrap","children","onPress","back","backText","title","input","placeholder","value","onChangeText","placeholderTextColor","ghost","data","keyExtractor","i","renderItem","item","bankRow","bankName","arrow","ItemSeparatorComponent","height","backgroundColor","border","bigInput","v","replace","slice","keyboardType","maxLength","color","brand","verified","verifiedText","label","disabled","btn","card","Row","toLocaleString","minimumFractionDigits","bold","centered","size","successCircle","fontSize","green","sub","flexDirection","justifyContent","paddingVertical","sm","borderBottomWidth","borderBottomColor","muted","ink","fontWeight","create","flex","padding","lg","alignItems","marginBottom","md","xl","surface","borderRadius","borderWidth","borderColor","textAlign","letterSpacing","greenLight","marginTop","red","width"],"sourceRoot":"../../../../../src","sources":["ui/screens/sub/TransferSubScreen.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ export const C = {
4
+ ink: '#0B1D35',
5
+ brand: '#0052CC',
6
+ brandLight: '#E8F0FE',
7
+ green: '#00875A',
8
+ greenLight: '#E3FCEF',
9
+ red: '#DE350B',
10
+ redLight: '#FFEBE6',
11
+ amber: '#FF8B00',
12
+ white: '#FFFFFF',
13
+ surface: '#F4F5F7',
14
+ border: '#DFE1E6',
15
+ muted: '#6B778C',
16
+ ghost: '#B3BAC5'
17
+ };
18
+ export const R = {
19
+ sm: 8,
20
+ md: 12,
21
+ lg: 16,
22
+ xl: 20,
23
+ full: 999
24
+ };
25
+ export const S = {
26
+ xs: 4,
27
+ sm: 8,
28
+ md: 16,
29
+ lg: 24,
30
+ xl: 32,
31
+ xxl: 48
32
+ };
33
+ export const F = {
34
+ xs: 11,
35
+ sm: 13,
36
+ md: 15,
37
+ lg: 17,
38
+ xl: 20,
39
+ xxl: 24,
40
+ hero: 32
41
+ };
42
+ export const shadow = {
43
+ sm: {
44
+ shadowColor: '#0B1D35',
45
+ shadowOffset: {
46
+ width: 0,
47
+ height: 2
48
+ },
49
+ shadowOpacity: 0.07,
50
+ shadowRadius: 6,
51
+ elevation: 2
52
+ },
53
+ lg: {
54
+ shadowColor: '#0B1D35',
55
+ shadowOffset: {
56
+ width: 0,
57
+ height: 8
58
+ },
59
+ shadowOpacity: 0.12,
60
+ shadowRadius: 20,
61
+ elevation: 8
62
+ }
63
+ };
64
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["C","ink","brand","brandLight","green","greenLight","red","redLight","amber","white","surface","border","muted","ghost","R","sm","md","lg","xl","full","S","xs","xxl","F","hero","shadow","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation"],"sourceRoot":"../../../../src","sources":["ui/theme/index.ts"],"mappings":";;AAAA,OAAO,MAAMA,CAAC,GAAG;EACfC,GAAG,EAAE,SAAS;EACdC,KAAK,EAAE,SAAS;EAChBC,UAAU,EAAE,SAAS;EACrBC,KAAK,EAAE,SAAS;EAChBC,UAAU,EAAE,SAAS;EACrBC,GAAG,EAAE,SAAS;EACdC,QAAQ,EAAE,SAAS;EACnBC,KAAK,EAAE,SAAS;EAChBC,KAAK,EAAE,SAAS;EAChBC,OAAO,EAAE,SAAS;EAClBC,MAAM,EAAE,SAAS;EACjBC,KAAK,EAAE,SAAS;EAChBC,KAAK,EAAE;AACT,CAAC;AAED,OAAO,MAAMC,CAAC,GAAG;EAAEC,EAAE,EAAE,CAAC;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAI,CAAC;AAC7D,OAAO,MAAMC,CAAC,GAAG;EAAEC,EAAE,EAAE,CAAC;EAAEN,EAAE,EAAE,CAAC;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE,EAAE;EAAEI,GAAG,EAAE;AAAG,CAAC;AAClE,OAAO,MAAMC,CAAC,GAAG;EAAEF,EAAE,EAAE,EAAE;EAAEN,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE,EAAE;EAAEI,GAAG,EAAE,EAAE;EAAEE,IAAI,EAAE;AAAG,CAAC;AAE9E,OAAO,MAAMC,MAAM,GAAG;EACpBV,EAAE,EAAE;IAAEW,WAAW,EAAE,SAAS;IAAEC,YAAY,EAAE;MAAEC,KAAK,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAE,CAAC;IAAEC,aAAa,EAAE,IAAI;IAAEC,YAAY,EAAE,CAAC;IAAEC,SAAS,EAAE;EAAE,CAAC;EACzHf,EAAE,EAAE;IAAES,WAAW,EAAE,SAAS;IAAEC,YAAY,EAAE;MAAEC,KAAK,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAE,CAAC;IAAEC,aAAa,EAAE,IAAI;IAAEC,YAAY,EAAE,EAAE;IAAEC,SAAS,EAAE;EAAE;AAC3H,CAAC","ignoreList":[]}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ // ─────────────────────────────────────────────────────────────
4
+ // useFountainPay — The ONLY hook the host app ever uses.
5
+ //
6
+ // Usage:
7
+ // const pay = useFountainPay('your-api-key');
8
+ // await pay.initializeSDK(userInfo, callbacks);
9
+ // pay.send(500, 'NGN');
10
+ // pay.receive(200, 'NGN');
11
+ // const acct = await pay.generateAccountNumber({ accountName: 'John' });
12
+ // pay.listen();
13
+ // pay.destroy();
14
+ // ─────────────────────────────────────────────────────────────
15
+ import { useMemo } from 'react';
16
+ import { FPEngine } from "./engine/FPEngine.js";
17
+ import { initClient } from "./core/api/client.js";
18
+ export function useFountainPay(apiKey, options) {
19
+ // Initialize HTTP client immediately so API calls can be made
20
+ // even before initializeSDK (e.g. generateAccountNumber for onboarding)
21
+ useMemo(() => {
22
+ initClient(apiKey, {
23
+ baseUrl: options?.baseUrl,
24
+ environment: options?.environment
25
+ });
26
+ }, [apiKey]);
27
+ const instance = useMemo(() => ({
28
+ /**
29
+ * Call this once after the user logs in.
30
+ * Starts proximity broadcasting, BLE peripheral, and BT listener.
31
+ */
32
+ async initializeSDK(user, callbacks) {
33
+ await FPEngine.initialize(apiKey, user, options ?? {}, callbacks ?? {});
34
+ },
35
+ /**
36
+ * Open the Send Money sheet.
37
+ * @param amount Major denomination (e.g. 500 for NGN 500)
38
+ * @param currency e.g. 'NGN', 'USD'
39
+ */
40
+ send(amount, currency) {
41
+ FPEngine.showSend(amount, currency);
42
+ },
43
+ /**
44
+ * Open the Receive Money sheet.
45
+ * @param amount Expected amount (optional)
46
+ * @param currency e.g. 'NGN'
47
+ */
48
+ receive(amount, currency = 'NGN') {
49
+ FPEngine.showReceive(amount, currency);
50
+ },
51
+ /**
52
+ * Generate a virtual account number.
53
+ * No UI is shown — returns the account directly.
54
+ */
55
+ async generateAccountNumber(request) {
56
+ return FPEngine.generateAccount(request);
57
+ },
58
+ /**
59
+ * Start listening for incoming Bluetooth payment requests.
60
+ * When one arrives, the SDK auto-shows the Accept/Decline modal.
61
+ * The result fires onPaymentReceived / onPaymentDeclined callbacks
62
+ * that were passed into initializeSDK.
63
+ */
64
+ listen() {
65
+ FPEngine.startListening();
66
+ },
67
+ /**
68
+ * Stop all background services. Call on logout.
69
+ */
70
+ destroy() {
71
+ FPEngine.destroy();
72
+ },
73
+ get isReady() {
74
+ return FPEngine.isReady();
75
+ },
76
+ get currentUser() {
77
+ return FPEngine.getUser();
78
+ }
79
+ }), [apiKey]);
80
+ return instance;
81
+ }
82
+ //# sourceMappingURL=useFountainPay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","FPEngine","initClient","useFountainPay","apiKey","options","baseUrl","environment","instance","initializeSDK","user","callbacks","initialize","send","amount","currency","showSend","receive","showReceive","generateAccountNumber","request","generateAccount","listen","startListening","destroy","isReady","currentUser","getUser"],"sourceRoot":"../../src","sources":["useFountainPay.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,QAAQ,QAAQ,sBAAmB;AAC5C,SAASC,UAAU,QAAQ,sBAAmB;AAW9C,OAAO,SAASC,cAAcA,CAACC,MAAc,EAAEC,OAAsB,EAAc;EACjF;EACA;EACAL,OAAO,CAAC,MAAM;IACZE,UAAU,CAACE,MAAM,EAAE;MAAEE,OAAO,EAAED,OAAO,EAAEC,OAAO;MAAEC,WAAW,EAAEF,OAAO,EAAEE;IAAY,CAAC,CAAC;EACtF,CAAC,EAAE,CAACH,MAAM,CAAC,CAAC;EAEZ,MAAMI,QAAQ,GAAGR,OAAO,CAAa,OAAO;IAC1C;AACJ;AACA;AACA;IACI,MAAMS,aAAaA,CAACC,IAAgB,EAAEC,SAAuB,EAAiB;MAC5E,MAAMV,QAAQ,CAACW,UAAU,CAACR,MAAM,EAAEM,IAAI,EAAEL,OAAO,IAAI,CAAC,CAAC,EAAEM,SAAS,IAAI,CAAC,CAAC,CAAC;IACzE,CAAC;IAED;AACJ;AACA;AACA;AACA;IACIE,IAAIA,CAACC,MAAc,EAAEC,QAAoB,EAAQ;MAC/Cd,QAAQ,CAACe,QAAQ,CAACF,MAAM,EAAEC,QAAQ,CAAC;IACrC,CAAC;IAED;AACJ;AACA;AACA;AACA;IACIE,OAAOA,CAACH,MAAe,EAAEC,QAAoB,GAAG,KAAK,EAAQ;MAC3Dd,QAAQ,CAACiB,WAAW,CAACJ,MAAM,EAAEC,QAAQ,CAAC;IACxC,CAAC;IAED;AACJ;AACA;AACA;IACI,MAAMI,qBAAqBA,CAACC,OAAiC,EAA6B;MACxF,OAAOnB,QAAQ,CAACoB,eAAe,CAACD,OAAO,CAAC;IAC1C,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIE,MAAMA,CAAA,EAAS;MACbrB,QAAQ,CAACsB,cAAc,CAAC,CAAC;IAC3B,CAAC;IAED;AACJ;AACA;IACIC,OAAOA,CAAA,EAAS;MACdvB,QAAQ,CAACuB,OAAO,CAAC,CAAC;IACpB,CAAC;IAED,IAAIC,OAAOA,CAAA,EAAY;MACrB,OAAOxB,QAAQ,CAACwB,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,IAAIC,WAAWA,CAAA,EAAsB;MACnC,OAAOzB,QAAQ,CAAC0B,OAAO,CAAC,CAAC;IAC3B;EACF,CAAC,CAAC,EAAE,CAACvB,MAAM,CAAC,CAAC;EAEb,OAAOI,QAAQ;AACjB","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,7 @@
1
+ import { type ReactNode } from 'react';
2
+ interface Props {
3
+ children: ReactNode;
4
+ }
5
+ export declare function FountainPayProvider({ children }: Props): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=FountainPayProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FountainPayProvider.d.ts","sourceRoot":"","sources":["../../../src/FountainPayProvider.tsx"],"names":[],"mappings":"AAKA,OAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG9C,UAAU,KAAK;IACb,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAQtD"}
@@ -0,0 +1,7 @@
1
+ import { type AxiosInstance } from 'axios';
2
+ export declare function initClient(apiKey: string, options?: {
3
+ baseUrl?: string;
4
+ environment?: string;
5
+ }): void;
6
+ export declare function http(): AxiosInstance;
7
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../src/core/api/client.ts"],"names":[],"mappings":"AAIA,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAOlD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,IAAI,CA8BzG;AAED,wBAAgB,IAAI,IAAI,aAAa,CAGpC"}
@@ -0,0 +1,67 @@
1
+ import type { FPVirtualAccount, FPGenerateAccountRequest, FPBankItem, FPTransaction, FPNQRData, FPTxStatus, FPProximityPeer } from "../types";
2
+ export declare const walletAPI: {
3
+ generate: (req: FPGenerateAccountRequest) => Promise<FPVirtualAccount>;
4
+ getBalance: (walletId: string) => Promise<{
5
+ balance: number;
6
+ currency: string;
7
+ }>;
8
+ };
9
+ export declare const transferAPI: {
10
+ getBanks: () => Promise<FPBankItem[]>;
11
+ verifyAccount: (accountNumber: string, bankCode: string) => Promise<{
12
+ accountName: string;
13
+ accountNumber: string;
14
+ bankName: string;
15
+ bankCode: string;
16
+ }>;
17
+ send: (payload: {
18
+ accountNumber: string;
19
+ bankCode: string;
20
+ amount: number;
21
+ narration?: string;
22
+ reference?: string;
23
+ }) => Promise<{
24
+ reference: string;
25
+ status: FPTxStatus;
26
+ amount: number;
27
+ currency: string;
28
+ recipient: {
29
+ accountName: string;
30
+ };
31
+ message: string;
32
+ createdAt: string;
33
+ }>;
34
+ status: (reference: string) => Promise<{
35
+ status: FPTxStatus;
36
+ reference: string;
37
+ }>;
38
+ };
39
+ export declare const nqrAPI: {
40
+ generate: (payload: {
41
+ amount?: number;
42
+ reference?: string;
43
+ currency?: string;
44
+ expiresInMinutes?: number;
45
+ }) => Promise<FPNQRData>;
46
+ pay: (payload: {
47
+ qrString: string;
48
+ amount: number;
49
+ currency: string;
50
+ }) => Promise<FPTransaction>;
51
+ };
52
+ export declare const proximityAPI: {
53
+ broadcast: (payload: {
54
+ latitude: number;
55
+ longitude: number;
56
+ accountName: string;
57
+ accountNumber: string;
58
+ bankCode: string;
59
+ bankName: string;
60
+ }) => Promise<{
61
+ sessionId: string;
62
+ }>;
63
+ heartbeat: (sessionId: string, lat: number, lng: number) => Promise<import("axios").AxiosResponse<any, any, {}>>;
64
+ unregister: (sessionId: string) => Promise<import("axios").AxiosResponse<any, any, {}>>;
65
+ discover: (lat: number, lng: number, radiusMeters: number) => Promise<FPProximityPeer[]>;
66
+ };
67
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/api/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,wBAAwB,EACxB,UAAU,EACV,aAAa,EACb,SAAS,EACT,UAAU,EACV,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,SAAS;oBACJ,wBAAwB;2BAGjB,MAAM;iBACL,MAAM;kBAAY,MAAM;;CACjD,CAAC;AAEF,eAAO,MAAM,WAAW;;mCAIS,MAAM,YAAY,MAAM;qBAC1B,MAAM;uBAAiB,MAAM;kBAAY,MAAM;kBAAY,MAAM;;oBAI9E;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;mBACxF,MAAM;gBAAU,UAAU;gBAAU,MAAM;kBAAY,MAAM;mBAAa;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE;iBAAW,MAAM;mBAAa,MAAM;;wBAI3I,MAAM;gBACH,UAAU;mBAAa,MAAM;;CACrD,CAAC;AAEF,eAAO,MAAM,MAAM;wBACG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE;mBAG1F;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;CAEtE,CAAC;AAEF,eAAO,MAAM,YAAY;yBACF;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;mBACjH,MAAM;;2BAEV,MAAM,OAAO,MAAM,OAAO,MAAM;4BAG/B,MAAM;oBAGd,MAAM,OAAO,MAAM,gBAAgB,MAAM;CAI1D,CAAC"}