toss-expo-sdk 0.1.2 → 1.0.2

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 (93) hide show
  1. package/README.md +380 -25
  2. package/lib/module/ble.js +59 -4
  3. package/lib/module/ble.js.map +1 -1
  4. package/lib/module/client/BLETransactionHandler.js +277 -0
  5. package/lib/module/client/BLETransactionHandler.js.map +1 -0
  6. package/lib/module/client/NonceAccountManager.js +364 -0
  7. package/lib/module/client/NonceAccountManager.js.map +1 -0
  8. package/lib/module/client/TossClient.js +1 -1
  9. package/lib/module/client/TossClient.js.map +1 -1
  10. package/lib/module/examples/enhancedFeaturesFlow.js +233 -0
  11. package/lib/module/examples/enhancedFeaturesFlow.js.map +1 -0
  12. package/lib/module/examples/offlinePaymentFlow.js +27 -27
  13. package/lib/module/examples/offlinePaymentFlow.js.map +1 -1
  14. package/lib/module/hooks/useOfflineBLETransactions.js +314 -0
  15. package/lib/module/hooks/useOfflineBLETransactions.js.map +1 -0
  16. package/lib/module/index.js +18 -8
  17. package/lib/module/index.js.map +1 -1
  18. package/lib/module/intent.js +129 -0
  19. package/lib/module/intent.js.map +1 -1
  20. package/lib/module/noise.js +175 -0
  21. package/lib/module/noise.js.map +1 -1
  22. package/lib/module/qr.js +2 -2
  23. package/lib/module/reconciliation.js +155 -0
  24. package/lib/module/reconciliation.js.map +1 -1
  25. package/lib/module/services/authService.js +166 -3
  26. package/lib/module/services/authService.js.map +1 -1
  27. package/lib/module/storage/secureStorage.js +102 -0
  28. package/lib/module/storage/secureStorage.js.map +1 -1
  29. package/lib/module/sync.js +25 -1
  30. package/lib/module/sync.js.map +1 -1
  31. package/lib/module/types/nonceAccount.js +2 -0
  32. package/lib/module/types/nonceAccount.js.map +1 -0
  33. package/lib/module/types/tossUser.js +16 -1
  34. package/lib/module/types/tossUser.js.map +1 -1
  35. package/lib/module/utils/compression.js +210 -0
  36. package/lib/module/utils/compression.js.map +1 -0
  37. package/lib/module/wifi.js +311 -0
  38. package/lib/module/wifi.js.map +1 -0
  39. package/lib/typescript/src/__tests__/solana-program-simple.test.d.ts +8 -0
  40. package/lib/typescript/src/__tests__/solana-program-simple.test.d.ts.map +1 -0
  41. package/lib/typescript/src/ble.d.ts +31 -2
  42. package/lib/typescript/src/ble.d.ts.map +1 -1
  43. package/lib/typescript/src/client/BLETransactionHandler.d.ts +98 -0
  44. package/lib/typescript/src/client/BLETransactionHandler.d.ts.map +1 -0
  45. package/lib/typescript/src/client/NonceAccountManager.d.ts +82 -0
  46. package/lib/typescript/src/client/NonceAccountManager.d.ts.map +1 -0
  47. package/lib/typescript/src/examples/enhancedFeaturesFlow.d.ts +45 -0
  48. package/lib/typescript/src/examples/enhancedFeaturesFlow.d.ts.map +1 -0
  49. package/lib/typescript/src/hooks/useOfflineBLETransactions.d.ts +91 -0
  50. package/lib/typescript/src/hooks/useOfflineBLETransactions.d.ts.map +1 -0
  51. package/lib/typescript/src/index.d.ts +11 -4
  52. package/lib/typescript/src/index.d.ts.map +1 -1
  53. package/lib/typescript/src/intent.d.ts +15 -0
  54. package/lib/typescript/src/intent.d.ts.map +1 -1
  55. package/lib/typescript/src/noise.d.ts +62 -0
  56. package/lib/typescript/src/noise.d.ts.map +1 -1
  57. package/lib/typescript/src/reconciliation.d.ts +6 -0
  58. package/lib/typescript/src/reconciliation.d.ts.map +1 -1
  59. package/lib/typescript/src/services/authService.d.ts +26 -1
  60. package/lib/typescript/src/services/authService.d.ts.map +1 -1
  61. package/lib/typescript/src/storage/secureStorage.d.ts +16 -0
  62. package/lib/typescript/src/storage/secureStorage.d.ts.map +1 -1
  63. package/lib/typescript/src/sync.d.ts +6 -1
  64. package/lib/typescript/src/sync.d.ts.map +1 -1
  65. package/lib/typescript/src/types/nonceAccount.d.ts +59 -0
  66. package/lib/typescript/src/types/nonceAccount.d.ts.map +1 -0
  67. package/lib/typescript/src/types/tossUser.d.ts +16 -0
  68. package/lib/typescript/src/types/tossUser.d.ts.map +1 -1
  69. package/lib/typescript/src/utils/compression.d.ts +52 -0
  70. package/lib/typescript/src/utils/compression.d.ts.map +1 -0
  71. package/lib/typescript/src/wifi.d.ts +116 -0
  72. package/lib/typescript/src/wifi.d.ts.map +1 -0
  73. package/package.json +1 -1
  74. package/src/__tests__/solana-program-simple.test.ts +256 -0
  75. package/src/ble.ts +105 -4
  76. package/src/client/BLETransactionHandler.ts +364 -0
  77. package/src/client/NonceAccountManager.ts +444 -0
  78. package/src/client/TossClient.ts +1 -1
  79. package/src/examples/enhancedFeaturesFlow.ts +272 -0
  80. package/src/examples/offlinePaymentFlow.ts +27 -27
  81. package/src/hooks/useOfflineBLETransactions.ts +438 -0
  82. package/src/index.tsx +52 -6
  83. package/src/intent.ts +166 -0
  84. package/src/noise.ts +238 -0
  85. package/src/qr.tsx +2 -2
  86. package/src/reconciliation.ts +184 -0
  87. package/src/services/authService.ts +190 -3
  88. package/src/storage/secureStorage.ts +138 -0
  89. package/src/sync.ts +40 -0
  90. package/src/types/nonceAccount.ts +75 -0
  91. package/src/types/tossUser.ts +35 -2
  92. package/src/utils/compression.ts +247 -0
  93. package/src/wifi.ts +401 -0
@@ -0,0 +1,314 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useRef, useState } from 'react';
4
+ import { BLETransactionHandler } from "../client/BLETransactionHandler.js";
5
+ import { NonceAccountManager } from "../client/NonceAccountManager.js";
6
+ import { AuthService } from "../services/authService.js";
7
+
8
+ /**
9
+ * State for BLE transaction transmission
10
+ */
11
+
12
+ /**
13
+ * State for offline transaction preparation
14
+ */
15
+
16
+ /**
17
+ * useOfflineTransaction Hook
18
+ * Manages offline transaction creation with nonce accounts
19
+ * Handles biometric protection and secure storage
20
+ */
21
+ export function useOfflineTransaction(user, connection) {
22
+ const [state, setState] = useState({
23
+ isPreparing: false,
24
+ isReady: false
25
+ });
26
+ const nonceManagerRef = useRef(null);
27
+
28
+ // Initialize nonce manager
29
+ useEffect(() => {
30
+ nonceManagerRef.current = new NonceAccountManager(connection);
31
+
32
+ // Cleanup expired cache periodically
33
+ const interval = setInterval(() => {
34
+ nonceManagerRef.current?.cleanupExpiredCache();
35
+ }, 5 * 60 * 1000); // Every 5 minutes
36
+
37
+ return () => clearInterval(interval);
38
+ }, [connection]);
39
+
40
+ /**
41
+ * Create offline transaction with nonce account
42
+ * Requires biometric verification if enabled
43
+ */
44
+ const createOfflineTransaction = useCallback(async (instructions, metadata) => {
45
+ if (!user.nonceAccount) {
46
+ setState(prev => ({
47
+ ...prev,
48
+ error: 'User does not have nonce account configured'
49
+ }));
50
+ return null;
51
+ }
52
+ setState(prev => ({
53
+ ...prev,
54
+ isPreparing: true,
55
+ error: undefined
56
+ }));
57
+ try {
58
+ // Verify nonce account access (requires biometric if enabled)
59
+ if (user.security.nonceAccountRequiresBiometric) {
60
+ const hasAccess = await AuthService.verifyNonceAccountAccess(user.userId);
61
+ if (!hasAccess) {
62
+ throw new Error('Biometric verification failed');
63
+ }
64
+ }
65
+
66
+ // Get cached nonce account or retrieve from storage
67
+ const nonceManager = nonceManagerRef.current;
68
+ let nonceAccountData = nonceManager.getCachedNonceAccount(user.userId);
69
+ let nonceAccountInfo = null;
70
+ if (nonceAccountData) {
71
+ nonceAccountInfo = nonceAccountData;
72
+ } else {
73
+ const retrievedInfo = await nonceManager.getNonceAccountSecure(user.userId);
74
+ if (retrievedInfo) {
75
+ nonceAccountInfo = nonceManager.getCachedNonceAccount(user.userId);
76
+ }
77
+ }
78
+ if (!nonceAccountInfo) {
79
+ throw new Error('Failed to retrieve nonce account information');
80
+ }
81
+
82
+ // Validate nonce account
83
+ if (!nonceManager.isNonceAccountValid(nonceAccountInfo.accountInfo)) {
84
+ throw new Error('Nonce account is no longer valid');
85
+ }
86
+
87
+ // Prepare offline transaction
88
+ const transaction = await nonceManager.prepareOfflineTransaction(user, instructions, nonceAccountInfo.accountInfo);
89
+ transaction.metadata = metadata || {};
90
+ setState(prev => ({
91
+ ...prev,
92
+ transaction,
93
+ isReady: true,
94
+ isPreparing: false
95
+ }));
96
+ return transaction;
97
+ } catch (error) {
98
+ const errorMessage = error instanceof Error ? error.message : String(error);
99
+ setState(prev => ({
100
+ ...prev,
101
+ error: errorMessage,
102
+ isPreparing: false,
103
+ isReady: false
104
+ }));
105
+ return null;
106
+ }
107
+ }, [user]);
108
+
109
+ /**
110
+ * Clear current offline transaction
111
+ */
112
+ const clearTransaction = useCallback(() => {
113
+ setState({
114
+ isPreparing: false,
115
+ isReady: false
116
+ });
117
+ }, []);
118
+ return {
119
+ ...state,
120
+ createOfflineTransaction,
121
+ clearTransaction,
122
+ nonceManager: nonceManagerRef.current
123
+ };
124
+ }
125
+
126
+ /**
127
+ * useBLETransactionTransmission Hook
128
+ * Handles secure BLE transmission of fragmented transactions
129
+ * with Noise Protocol encryption
130
+ */
131
+ export function useBLETransactionTransmission(platform = 'android') {
132
+ const [state, setState] = useState({
133
+ isTransmitting: false,
134
+ progress: {
135
+ sentFragments: 0,
136
+ totalFragments: 0
137
+ }
138
+ });
139
+ const bleHandlerRef = useRef(new BLETransactionHandler(platform));
140
+
141
+ /**
142
+ * Send transaction over BLE with fragmentation
143
+ */
144
+ const sendTransactionBLE = useCallback(async (device, transaction, sendFn, noiseEncryptFn, isIntent = false) => {
145
+ setState(prev => ({
146
+ ...prev,
147
+ isTransmitting: true,
148
+ error: undefined
149
+ }));
150
+ try {
151
+ const bleHandler = bleHandlerRef.current;
152
+ const result = await bleHandler.sendFragmentedTransactionBLE(device, transaction, sendFn, noiseEncryptFn, isIntent);
153
+ if (!result.success) {
154
+ const failedCount = result.failedFragments.length;
155
+ throw new Error(`Failed to send ${failedCount} fragment(s): ${result.failedFragments.join(', ')}`);
156
+ }
157
+ setState(prev => ({
158
+ ...prev,
159
+ isTransmitting: false,
160
+ progress: {
161
+ sentFragments: result.sentFragments,
162
+ totalFragments: result.sentFragments + result.failedFragments.length,
163
+ messageId: result.messageId
164
+ },
165
+ lastSent: {
166
+ messageId: result.messageId,
167
+ timestamp: Date.now()
168
+ }
169
+ }));
170
+ return true;
171
+ } catch (error) {
172
+ const errorMessage = error instanceof Error ? error.message : String(error);
173
+ setState(prev => ({
174
+ ...prev,
175
+ isTransmitting: false,
176
+ error: errorMessage
177
+ }));
178
+ return false;
179
+ }
180
+ }, []);
181
+
182
+ /**
183
+ * Receive fragmented transaction
184
+ */
185
+ const receiveTransactionFragment = useCallback(async (fragment, noiseDecryptFn) => {
186
+ try {
187
+ const bleHandler = bleHandlerRef.current;
188
+ const result = await bleHandler.receiveFragmentedMessage(fragment, noiseDecryptFn);
189
+ setState(prev => ({
190
+ ...prev,
191
+ progress: {
192
+ sentFragments: result.progress.received,
193
+ totalFragments: result.progress.total,
194
+ messageId: fragment.messageId
195
+ }
196
+ }));
197
+ return result;
198
+ } catch (error) {
199
+ const errorMessage = error instanceof Error ? error.message : String(error);
200
+ setState(prev => ({
201
+ ...prev,
202
+ error: errorMessage
203
+ }));
204
+ return {
205
+ complete: false,
206
+ progress: {
207
+ received: 0,
208
+ total: 0
209
+ }
210
+ };
211
+ }
212
+ }, []);
213
+ const getMTUConfig = useCallback(() => {
214
+ return bleHandlerRef.current.getMTUConfig();
215
+ }, []);
216
+ const setMTUConfig = useCallback(config => {
217
+ bleHandlerRef.current.setMTUConfig(config);
218
+ }, []);
219
+ return {
220
+ ...state,
221
+ sendTransactionBLE,
222
+ receiveTransactionFragment,
223
+ getMTUConfig,
224
+ setMTUConfig
225
+ };
226
+ }
227
+
228
+ /**
229
+ * useNonceAccountManagement Hook
230
+ * Manages nonce account lifecycle: creation, renewal, revocation
231
+ */
232
+ export function useNonceAccountManagement(user, connection) {
233
+ const [isLoading, setIsLoading] = useState(false);
234
+ const [error, setError] = useState();
235
+ const nonceManagerRef = useRef(new NonceAccountManager(connection));
236
+
237
+ /**
238
+ * Create nonce account with biometric protection
239
+ */
240
+ const createNonceAccount = useCallback(async userKeypair => {
241
+ setIsLoading(true);
242
+ setError(undefined);
243
+ try {
244
+ const updatedUser = await AuthService.createSecureNonceAccount(user, connection, userKeypair);
245
+ return updatedUser;
246
+ } catch (err) {
247
+ const errorMessage = err instanceof Error ? err.message : String(err);
248
+ setError(errorMessage);
249
+ return null;
250
+ } finally {
251
+ setIsLoading(false);
252
+ }
253
+ }, [user, connection]);
254
+
255
+ /**
256
+ * Renew nonce account (refresh from blockchain)
257
+ */
258
+ const renewNonceAccount = useCallback(async () => {
259
+ if (!user.nonceAccount) {
260
+ setError('No nonce account to renew');
261
+ return null;
262
+ }
263
+ setIsLoading(true);
264
+ setError(undefined);
265
+ try {
266
+ const updated = await nonceManagerRef.current.renewNonceAccount(user.userId, user.nonceAccount.address);
267
+ return updated;
268
+ } catch (err) {
269
+ const errorMessage = err instanceof Error ? err.message : String(err);
270
+ setError(errorMessage);
271
+ return null;
272
+ } finally {
273
+ setIsLoading(false);
274
+ }
275
+ }, [user.userId, user.nonceAccount]);
276
+
277
+ /**
278
+ * Revoke nonce account
279
+ */
280
+ const revokeNonceAccount = useCallback(async () => {
281
+ setIsLoading(true);
282
+ setError(undefined);
283
+ try {
284
+ const updatedUser = await AuthService.revokeNonceAccount(user.userId, user);
285
+ return updatedUser;
286
+ } catch (err) {
287
+ const errorMessage = err instanceof Error ? err.message : String(err);
288
+ setError(errorMessage);
289
+ return null;
290
+ } finally {
291
+ setIsLoading(false);
292
+ }
293
+ }, [user]);
294
+ const isNonceAccountValid = useCallback(() => {
295
+ if (!user.nonceAccount) {
296
+ return false;
297
+ }
298
+ const cached = nonceManagerRef.current.getCachedNonceAccount(user.userId);
299
+ if (cached) {
300
+ return nonceManagerRef.current.isNonceAccountValid(cached.accountInfo);
301
+ }
302
+ return user.nonceAccount.status === 'active';
303
+ }, [user.userId, user.nonceAccount]);
304
+ return {
305
+ isLoading,
306
+ error,
307
+ createNonceAccount,
308
+ renewNonceAccount,
309
+ revokeNonceAccount,
310
+ isNonceAccountValid,
311
+ hasNonceAccount: !!user.nonceAccount
312
+ };
313
+ }
314
+ //# sourceMappingURL=useOfflineBLETransactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useState","BLETransactionHandler","NonceAccountManager","AuthService","useOfflineTransaction","user","connection","state","setState","isPreparing","isReady","nonceManagerRef","current","interval","setInterval","cleanupExpiredCache","clearInterval","createOfflineTransaction","instructions","metadata","nonceAccount","prev","error","undefined","security","nonceAccountRequiresBiometric","hasAccess","verifyNonceAccountAccess","userId","Error","nonceManager","nonceAccountData","getCachedNonceAccount","nonceAccountInfo","retrievedInfo","getNonceAccountSecure","isNonceAccountValid","accountInfo","transaction","prepareOfflineTransaction","errorMessage","message","String","clearTransaction","useBLETransactionTransmission","platform","isTransmitting","progress","sentFragments","totalFragments","bleHandlerRef","sendTransactionBLE","device","sendFn","noiseEncryptFn","isIntent","bleHandler","result","sendFragmentedTransactionBLE","success","failedCount","failedFragments","length","join","messageId","lastSent","timestamp","Date","now","receiveTransactionFragment","fragment","noiseDecryptFn","receiveFragmentedMessage","received","total","complete","getMTUConfig","setMTUConfig","config","useNonceAccountManagement","isLoading","setIsLoading","setError","createNonceAccount","userKeypair","updatedUser","createSecureNonceAccount","err","renewNonceAccount","updated","address","revokeNonceAccount","cached","status","hasNonceAccount"],"sourceRoot":"../../../src","sources":["hooks/useOfflineBLETransactions.ts"],"mappings":"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","ignoreList":[]}
@@ -1,16 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  // Core types and intents
4
- export { createIntent, createUserIntent, createSignedIntent } from "./intent.js";
5
-
4
+ export { createIntent, createUserIntent, createSignedIntent, createOfflineIntent } from "./intent.js";
5
+
6
+ // Nonce Account Management (for offline transactions)
7
+ export { NonceAccountManager } from "./client/NonceAccountManager.js";
8
+ // BLE Transaction Handling (fragmentation & Noise encryption)
9
+ export { BLETransactionHandler } from "./client/BLETransactionHandler.js";
10
+ // Custom Hooks for Offline BLE Transactions
11
+ export { useOfflineTransaction, useBLETransactionTransmission, useNonceAccountManagement } from "./hooks/useOfflineBLETransactions.js";
6
12
  // Intent management
7
13
  export { verifyIntentSignature, isIntentExpired, updateIntentStatus, validateIntent, processIntentsForSync, filterExpiredIntents } from "./intentManager.js";
8
14
 
9
15
  // Storage
10
16
  export { storePendingIntent, getPendingIntents, clearPendingIntents } from "./storage.js";
11
17
 
12
- // Transport methods
13
- export { startTossScan, requestBLEPermissions } from "./ble.js";
18
+ // Transport methods (enhanced with fragmentation)
19
+ export { startTossScan, requestBLEPermissions, sendOfflineTransactionFragmented, receiveOfflineTransactionFragment, getBLEMTUConfig, setBLEMTUConfig } from "./ble.js";
14
20
  export { initNFC, readNFCUser, writeUserToNFC, writeIntentToNFC } from "./nfc.js";
15
21
  export { QRScanner } from "./qr.js";
16
22
 
@@ -18,10 +24,8 @@ export { QRScanner } from "./qr.js";
18
24
  export { TossClient } from "./client/TossClient.js";
19
25
  export { WalletProvider, useWallet } from "./contexts/WalletContext.js";
20
26
 
21
- // Create client instance
22
- import { TossClient } from "./client/TossClient.js";
23
- export const createClient = TossClient.createClient;
24
-
27
+ // Authentication Service (enhanced with nonce accounts)
28
+ export { AuthService } from "./services/authService.js";
25
29
  // Sync and settlement
26
30
  export { syncToChain, checkSyncStatus } from "./sync.js";
27
31
 
@@ -30,4 +34,10 @@ export { reconcilePendingIntents, settleIntent, validateIntentOnchain, buildTran
30
34
 
31
35
  // Device discovery and intent exchange
32
36
  export { DeviceDiscoveryService, IntentExchangeProtocol, IntentRoutingService, MultiDeviceConflictResolver, deviceDiscovery, intentExchange, intentRouting } from "./discovery.js";
37
+
38
+ // Compression utilities
39
+ export { compressMetadata, decompressMetadata, compressIntentMetadata, decompressIntentMetadata, estimateCompressionSavings } from "./utils/compression.js";
40
+
41
+ // WiFi Direct transport
42
+ export { WiFiDirectTransport, SmartTransportSelector } from "./wifi.js";
33
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createIntent","createUserIntent","createSignedIntent","verifyIntentSignature","isIntentExpired","updateIntentStatus","validateIntent","processIntentsForSync","filterExpiredIntents","storePendingIntent","getPendingIntents","clearPendingIntents","startTossScan","requestBLEPermissions","initNFC","readNFCUser","writeUserToNFC","writeIntentToNFC","QRScanner","TossClient","WalletProvider","useWallet","createClient","syncToChain","checkSyncStatus","reconcilePendingIntents","settleIntent","validateIntentOnchain","buildTransactionFromIntent","submitTransactionToChain","detectConflicts","getReconciliationState","DeviceDiscoveryService","IntentExchangeProtocol","IntentRoutingService","MultiDeviceConflictResolver","deviceDiscovery","intentExchange","intentRouting"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA;AACA,SACEA,YAAY,EACZC,gBAAgB,EAChBC,kBAAkB,QAGb,aAAU;;AAEjB;AACA,SACEC,qBAAqB,EACrBC,eAAe,EACfC,kBAAkB,EAClBC,cAAc,EACdC,qBAAqB,EACrBC,oBAAoB,QACf,oBAAiB;;AAExB;AACA,SACEC,kBAAkB,EAClBC,iBAAiB,EACjBC,mBAAmB,QACd,cAAW;;AAElB;AACA,SAASC,aAAa,EAAEC,qBAAqB,QAAQ,UAAO;AAC5D,SAASC,OAAO,EAAEC,WAAW,EAAEC,cAAc,EAAEC,gBAAgB,QAAQ,UAAO;AAC9E,SAASC,SAAS,QAAQ,SAAM;;AAEhC;AACA,SAASC,UAAU,QAAyB,wBAAqB;AAEjE,SAASC,cAAc,EAAEC,SAAS,QAAQ,6BAA0B;;AAEpE;AACA,SAASF,UAAU,QAAQ,wBAAqB;AAChD,OAAO,MAAMG,YAAY,GAAGH,UAAU,CAACG,YAAY;;AAEnD;AACA,SAASC,WAAW,EAAEC,eAAe,QAAyB,WAAQ;;AAEtE;AACA,SACEC,uBAAuB,EACvBC,YAAY,EACZC,qBAAqB,EACrBC,0BAA0B,EAC1BC,wBAAwB,EACxBC,eAAe,EACfC,sBAAsB,QAGjB,qBAAkB;;AAEzB;AACA,SACEC,sBAAsB,EACtBC,sBAAsB,EACtBC,oBAAoB,EACpBC,2BAA2B,EAC3BC,eAAe,EACfC,cAAc,EACdC,aAAa,QAIR,gBAAa","ignoreList":[]}
1
+ {"version":3,"names":["createIntent","createUserIntent","createSignedIntent","createOfflineIntent","NonceAccountManager","BLETransactionHandler","useOfflineTransaction","useBLETransactionTransmission","useNonceAccountManagement","verifyIntentSignature","isIntentExpired","updateIntentStatus","validateIntent","processIntentsForSync","filterExpiredIntents","storePendingIntent","getPendingIntents","clearPendingIntents","startTossScan","requestBLEPermissions","sendOfflineTransactionFragmented","receiveOfflineTransactionFragment","getBLEMTUConfig","setBLEMTUConfig","initNFC","readNFCUser","writeUserToNFC","writeIntentToNFC","QRScanner","TossClient","WalletProvider","useWallet","AuthService","syncToChain","checkSyncStatus","reconcilePendingIntents","settleIntent","validateIntentOnchain","buildTransactionFromIntent","submitTransactionToChain","detectConflicts","getReconciliationState","DeviceDiscoveryService","IntentExchangeProtocol","IntentRoutingService","MultiDeviceConflictResolver","deviceDiscovery","intentExchange","intentRouting","compressMetadata","decompressMetadata","compressIntentMetadata","decompressIntentMetadata","estimateCompressionSavings","WiFiDirectTransport","SmartTransportSelector"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA;AACA,SACEA,YAAY,EACZC,gBAAgB,EAChBC,kBAAkB,EAClBC,mBAAmB,QAGd,aAAU;;AAEjB;AACA,SAASC,mBAAmB,QAAQ,iCAA8B;AAQlE;AACA,SAASC,qBAAqB,QAAQ,mCAAgC;AAOtE;AACA,SACEC,qBAAqB,EACrBC,6BAA6B,EAC7BC,yBAAyB,QACpB,sCAAmC;AAM1C;AACA,SACEC,qBAAqB,EACrBC,eAAe,EACfC,kBAAkB,EAClBC,cAAc,EACdC,qBAAqB,EACrBC,oBAAoB,QACf,oBAAiB;;AAExB;AACA,SACEC,kBAAkB,EAClBC,iBAAiB,EACjBC,mBAAmB,QACd,cAAW;;AAElB;AACA,SACEC,aAAa,EACbC,qBAAqB,EACrBC,gCAAgC,EAChCC,iCAAiC,EACjCC,eAAe,EACfC,eAAe,QACV,UAAO;AACd,SAASC,OAAO,EAAEC,WAAW,EAAEC,cAAc,EAAEC,gBAAgB,QAAQ,UAAO;AAC9E,SAASC,SAAS,QAAQ,SAAM;;AAEhC;AACA,SAASC,UAAU,QAAyB,wBAAqB;AAEjE,SAASC,cAAc,EAAEC,SAAS,QAAQ,6BAA0B;;AAEpE;AACA,SAASC,WAAW,QAAQ,2BAAwB;AACpD;AACA,SAASC,WAAW,EAAEC,eAAe,QAAyB,WAAQ;;AAEtE;AACA,SACEC,uBAAuB,EACvBC,YAAY,EACZC,qBAAqB,EACrBC,0BAA0B,EAC1BC,wBAAwB,EACxBC,eAAe,EACfC,sBAAsB,QAGjB,qBAAkB;;AAEzB;AACA,SACEC,sBAAsB,EACtBC,sBAAsB,EACtBC,oBAAoB,EACpBC,2BAA2B,EAC3BC,eAAe,EACfC,cAAc,EACdC,aAAa,QAIR,gBAAa;;AAEpB;AACA,SACEC,gBAAgB,EAChBC,kBAAkB,EAClBC,sBAAsB,EACtBC,wBAAwB,EACxBC,0BAA0B,QACrB,wBAAqB;;AAE5B;AACA,SAASC,mBAAmB,EAAEC,sBAAsB,QAAQ,WAAQ","ignoreList":[]}
@@ -14,6 +14,7 @@ import { encryptForArciumInternal } from "./internal/arciumHelper.js";
14
14
 
15
15
  /**
16
16
  * Core type for an offline intent following TOSS specification
17
+ * Enhanced with durable nonce account support
17
18
  */
18
19
 
19
20
  /**
@@ -84,8 +85,28 @@ export const nonceManager = new NonceManager();
84
85
  /**
85
86
  * Creates a signed intent between two TOSS users (User-centric API)
86
87
  * Recommended for application developers - validates user wallets
88
+ *
89
+ * GAP #8 FIX: Requires biometric authentication for sensitive transactions
87
90
  */
88
91
  export async function createUserIntent(senderUser, senderKeypair, recipientUser, amount, connection, options = {}) {
92
+ // GAP #8 FIX: Require biometric verification if enabled
93
+ if (senderUser.security?.biometricEnabled) {
94
+ try {
95
+ const LocalAuthentication = await import('expo-local-authentication');
96
+ const compatible = await LocalAuthentication.default.hasHardwareAsync();
97
+ if (compatible) {
98
+ const authenticated = await LocalAuthentication.default.authenticateAsync({
99
+ disableDeviceFallback: false
100
+ });
101
+ if (!authenticated.success) {
102
+ throw new Error('Biometric authentication failed');
103
+ }
104
+ }
105
+ } catch (error) {
106
+ console.warn('Biometric verification not available, proceeding without', error);
107
+ }
108
+ }
109
+
89
110
  // Verify sender's keypair matches their wallet
90
111
  if (senderKeypair.publicKey.toBase58() !== senderUser.wallet.publicKey.toBase58()) {
91
112
  throw new Error('Sender keypair does not match user wallet');
@@ -289,4 +310,112 @@ export function updateIntentStatus(intent, status, error) {
289
310
  updatedAt: Math.floor(Date.now() / 1000)
290
311
  };
291
312
  }
313
+ /**
314
+ * Creates an offline intent with durable nonce account support
315
+ * Enables replay-protected offline transactions using nonce accounts
316
+ * Requires biometric authentication for enhanced security
317
+ */
318
+ export async function createOfflineIntent(senderUser, senderKeypair, recipientUser, amount, nonceAccountInfo,
319
+ // NonceAccountInfo from NonceAccountManager
320
+ connection, options = {}) {
321
+ // Verify sender has nonce account enabled
322
+ if (!senderUser.nonceAccount || !senderUser.tossFeatures.offlineTransactionsEnabled) {
323
+ throw new Error('Offline transactions not enabled for this user');
324
+ }
325
+
326
+ // Verify sender's keypair matches their wallet
327
+ if (senderKeypair.publicKey.toBase58() !== senderUser.wallet.publicKey.toBase58()) {
328
+ throw new Error('Sender keypair does not match user wallet');
329
+ }
330
+
331
+ // Verify both users can transact
332
+ if (!senderUser.tossFeatures.canSend) {
333
+ throw new Error('Sender account is not enabled for sending');
334
+ }
335
+ if (!recipientUser.tossFeatures.canReceive) {
336
+ throw new Error('Recipient account is not enabled for receiving');
337
+ }
338
+
339
+ // Verify transaction amount is within limits
340
+ if (amount > senderUser.tossFeatures.maxTransactionAmount) {
341
+ throw new Error(`Transaction amount exceeds limit of ${senderUser.tossFeatures.maxTransactionAmount} lamports`);
342
+ }
343
+ const now = Math.floor(Date.now() / 1000);
344
+ const defaultExpiry = 24 * 60 * 60; // 24 hours default
345
+
346
+ // Get latest blockhash for nonce account
347
+ const {
348
+ blockhash
349
+ } = await connection.getLatestBlockhash();
350
+
351
+ // Prepare user contexts
352
+ const senderCtx = {
353
+ userId: senderUser.userId,
354
+ username: senderUser.username,
355
+ wallet: {
356
+ publicKey: senderUser.wallet.publicKey,
357
+ isVerified: senderUser.wallet.isVerified,
358
+ createdAt: senderUser.wallet.createdAt
359
+ },
360
+ status: senderUser.status,
361
+ deviceId: senderUser.device.id,
362
+ sessionId: uuidv4()
363
+ };
364
+ const recipientCtx = {
365
+ userId: recipientUser.userId,
366
+ username: recipientUser.username,
367
+ wallet: {
368
+ publicKey: recipientUser.wallet.publicKey,
369
+ isVerified: recipientUser.wallet.isVerified,
370
+ createdAt: recipientUser.wallet.createdAt
371
+ },
372
+ status: recipientUser.status,
373
+ deviceId: recipientUser.device.id,
374
+ sessionId: uuidv4()
375
+ };
376
+
377
+ // Create base intent with nonce account support
378
+ const baseIntent = {
379
+ id: uuidv4(),
380
+ from: senderKeypair.publicKey.toBase58(),
381
+ to: recipientUser.wallet.publicKey.toBase58(),
382
+ fromUser: senderCtx,
383
+ toUser: recipientCtx,
384
+ amount,
385
+ nonce: nonceAccountInfo.currentNonce,
386
+ expiry: now + (options.expiresIn || defaultExpiry),
387
+ blockhash,
388
+ feePayer: senderKeypair.publicKey.toBase58(),
389
+ status: 'pending',
390
+ createdAt: now,
391
+ updatedAt: now,
392
+ // Nonce account support
393
+ nonceAccountAddress: nonceAccountInfo.address,
394
+ nonceAccountAuth: nonceAccountInfo.authorizedSigner,
395
+ requiresBiometric: senderUser.security.nonceAccountRequiresBiometric,
396
+ // Backward compatibility
397
+ nonceAccount: nonceAccountInfo.address,
398
+ nonceAuth: nonceAccountInfo.authorizedSigner
399
+ };
400
+
401
+ // Sign the intent
402
+ const signature = sign(Buffer.from(JSON.stringify(baseIntent)), senderKeypair.secretKey);
403
+ const intent = {
404
+ ...baseIntent,
405
+ signature: bs58.encode(signature)
406
+ };
407
+
408
+ // If private transaction, encrypt the intent data
409
+ if (options.privateTransaction) {
410
+ if (!options.mxeProgramId) {
411
+ throw new Error('MXE Program ID is required for private transactions');
412
+ }
413
+ if (!options.provider) {
414
+ throw new Error('Provider is required for private transactions');
415
+ }
416
+ const plaintextValues = [BigInt(amount)];
417
+ intent.encrypted = await encryptForArciumInternal(options.mxeProgramId, plaintextValues, options.provider);
418
+ }
419
+ return intent;
420
+ }
292
421
  //# sourceMappingURL=intent.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["PublicKey","bs58","v4","uuidv4","sign","nacl","encryptForArciumInternal","NonceManager","nonceStore","Map","NONCE_EXPIRY","getNextNonce","publicKey","connection","key","toBase58","now","Date","cleanupNonces","accountInfo","getAccountInfo","chainNonce","extractNonceFromAccountInfo","stored","get","nonce","lastUsed","nextNonce","Math","max","set","error","console","warn","data","length","readUInt32LE","value","entries","delete","nonceManager","createUserIntent","senderUser","senderKeypair","recipientUser","amount","options","wallet","Error","tossFeatures","canSend","canReceive","maxTransactionAmount","senderCtx","userId","username","isVerified","createdAt","status","deviceId","device","id","sessionId","recipientCtx","intent","createSignedIntent","fromUser","toUser","sender","recipient","floor","defaultExpiry","blockhash","Promise","all","getLatestBlockhash","undefined","resolve","baseIntent","from","to","expiry","expiresIn","feePayer","nonceAuth","updatedAt","nonceAccount","signature","Buffer","JSON","stringify","secretKey","encode","verifyIntent","isIntentExpired","decode","message","toBytes","publicKeyUint8","Uint8Array","signatureUint8","verified","detached","verify","currentNonce","createIntent","privateTransaction","mxeProgramId","provider","plaintextValues","BigInt","encrypted","updateIntentStatus"],"sourceRoot":"../../src","sources":["intent.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["PublicKey","bs58","v4","uuidv4","sign","nacl","encryptForArciumInternal","NonceManager","nonceStore","Map","NONCE_EXPIRY","getNextNonce","publicKey","connection","key","toBase58","now","Date","cleanupNonces","accountInfo","getAccountInfo","chainNonce","extractNonceFromAccountInfo","stored","get","nonce","lastUsed","nextNonce","Math","max","set","error","console","warn","data","length","readUInt32LE","value","entries","delete","nonceManager","createUserIntent","senderUser","senderKeypair","recipientUser","amount","options","security","biometricEnabled","LocalAuthentication","compatible","default","hasHardwareAsync","authenticated","authenticateAsync","disableDeviceFallback","success","Error","wallet","tossFeatures","canSend","canReceive","maxTransactionAmount","senderCtx","userId","username","isVerified","createdAt","status","deviceId","device","id","sessionId","recipientCtx","intent","createSignedIntent","fromUser","toUser","sender","recipient","floor","defaultExpiry","blockhash","Promise","all","getLatestBlockhash","undefined","resolve","baseIntent","from","to","expiry","expiresIn","feePayer","nonceAuth","updatedAt","nonceAccount","signature","Buffer","JSON","stringify","secretKey","encode","verifyIntent","isIntentExpired","decode","message","toBytes","publicKeyUint8","Uint8Array","signatureUint8","verified","detached","verify","currentNonce","createIntent","privateTransaction","mxeProgramId","provider","plaintextValues","BigInt","encrypted","updateIntentStatus","createOfflineIntent","nonceAccountInfo","offlineTransactionsEnabled","nonceAccountAddress","address","nonceAccountAuth","authorizedSigner","requiresBiometric","nonceAccountRequiresBiometric"],"sourceRoot":"../../src","sources":["intent.ts"],"mappings":"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","ignoreList":[]}