@explorins/pers-sdk-react-native 1.5.31 → 1.5.32

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 (72) hide show
  1. package/dist/hooks/index.d.ts +2 -2
  2. package/dist/hooks/index.d.ts.map +1 -1
  3. package/dist/hooks/index.js +1 -1
  4. package/dist/hooks/useAnalytics.d.ts.map +1 -1
  5. package/dist/hooks/useAnalytics.js +0 -1
  6. package/dist/hooks/useAuth.d.ts +0 -1
  7. package/dist/hooks/useAuth.d.ts.map +1 -1
  8. package/dist/hooks/useAuth.js +5 -18
  9. package/dist/hooks/useBusiness.d.ts.map +1 -1
  10. package/dist/hooks/useBusiness.js +0 -9
  11. package/dist/hooks/useCampaigns.d.ts.map +1 -1
  12. package/dist/hooks/useCampaigns.js +0 -10
  13. package/dist/hooks/useDonations.d.ts.map +1 -1
  14. package/dist/hooks/useDonations.js +0 -1
  15. package/dist/hooks/useFiles.d.ts.map +1 -1
  16. package/dist/hooks/useFiles.js +0 -4
  17. package/dist/hooks/usePurchases.d.ts.map +1 -1
  18. package/dist/hooks/usePurchases.js +0 -3
  19. package/dist/hooks/useRedemptions.d.ts +4 -1
  20. package/dist/hooks/useRedemptions.d.ts.map +1 -1
  21. package/dist/hooks/useRedemptions.js +6 -17
  22. package/dist/hooks/useTenants.d.ts.map +1 -1
  23. package/dist/hooks/useTenants.js +0 -3
  24. package/dist/hooks/useTokens.d.ts.map +1 -1
  25. package/dist/hooks/useTokens.js +0 -6
  26. package/dist/hooks/useTransactionSigner.d.ts +13 -1
  27. package/dist/hooks/useTransactionSigner.d.ts.map +1 -1
  28. package/dist/hooks/useTransactionSigner.js +59 -2
  29. package/dist/hooks/useTransactions.d.ts +4 -1
  30. package/dist/hooks/useTransactions.d.ts.map +1 -1
  31. package/dist/hooks/useTransactions.js +9 -10
  32. package/dist/hooks/useUserStatus.d.ts.map +1 -1
  33. package/dist/hooks/useUserStatus.js +0 -3
  34. package/dist/hooks/useUsers.d.ts.map +1 -1
  35. package/dist/hooks/useUsers.js +0 -7
  36. package/dist/hooks/useWeb3.d.ts +26 -42
  37. package/dist/hooks/useWeb3.d.ts.map +1 -1
  38. package/dist/hooks/useWeb3.js +27 -53
  39. package/dist/index.d.ts +2 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +325 -302
  42. package/dist/index.js.map +1 -1
  43. package/dist/providers/PersSDKProvider.d.ts +1 -3
  44. package/dist/providers/PersSDKProvider.d.ts.map +1 -1
  45. package/dist/providers/PersSDKProvider.js +13 -9
  46. package/dist/providers/rn-dpop-provider.d.ts +2 -4
  47. package/dist/providers/rn-dpop-provider.d.ts.map +1 -1
  48. package/dist/providers/rn-dpop-provider.js +50 -23
  49. package/dist/storage/rn-secure-storage.d.ts +1 -0
  50. package/dist/storage/rn-secure-storage.d.ts.map +1 -1
  51. package/dist/storage/rn-secure-storage.js +9 -12
  52. package/package.json +2 -2
  53. package/src/hooks/index.ts +10 -2
  54. package/src/hooks/useAnalytics.ts +0 -1
  55. package/src/hooks/useAuth.ts +4 -25
  56. package/src/hooks/useBusiness.ts +0 -9
  57. package/src/hooks/useCampaigns.ts +0 -10
  58. package/src/hooks/useDonations.ts +0 -1
  59. package/src/hooks/useFiles.ts +0 -4
  60. package/src/hooks/usePurchases.ts +0 -3
  61. package/src/hooks/useRedemptions.ts +7 -21
  62. package/src/hooks/useTenants.ts +0 -3
  63. package/src/hooks/useTokens.ts +0 -6
  64. package/src/hooks/useTransactionSigner.ts +74 -4
  65. package/src/hooks/useTransactions.ts +10 -12
  66. package/src/hooks/useUserStatus.ts +0 -3
  67. package/src/hooks/useUsers.ts +0 -7
  68. package/src/hooks/useWeb3.ts +28 -68
  69. package/src/index.ts +4 -0
  70. package/src/providers/PersSDKProvider.tsx +16 -17
  71. package/src/providers/rn-dpop-provider.ts +85 -45
  72. package/src/storage/rn-secure-storage.ts +13 -13
@@ -1,4 +1,8 @@
1
1
  import { useCallback, useState, useRef, useEffect } from 'react';
2
+ // import { usePersSDK } from '../providers/PersSDKProvider';
3
+ import { SigningStatus } from '@explorins/pers-signer';
4
+ // Re-export signing status types from signer SDK for convenience
5
+ export { SigningStatus };
2
6
  // Dynamic import the signer SDK to avoid build issues with static dependencies
3
7
  let createPersSignerSDK = null;
4
8
  try {
@@ -191,6 +195,8 @@ const DEFAULT_ETHERS_PROVIDER = "https://sepolia.infura.io/v3/2781b4b5242343d5b0
191
195
  export const useTransactionSigner = () => {
192
196
  // const { isInitialized, isAuthenticated, user } = usePersSDK();
193
197
  const [isSignerInitialized, setIsSignerInitialized] = useState(false);
198
+ const [currentStatus, setCurrentStatus] = useState(null);
199
+ const [statusMessage, setStatusMessage] = useState(null);
194
200
  const signerSDKRef = useRef(null);
195
201
  // Auto-initialize signer SDK when PERS SDK is ready
196
202
  useEffect(() => {
@@ -239,6 +245,7 @@ export const useTransactionSigner = () => {
239
245
  *
240
246
  * @param {string} jwt - JWT token containing transaction ID and user information
241
247
  * Must include: `transactionId`, `identifierEmail`, `tenantId`
248
+ * @param {StatusCallback} [onStatusUpdate] - Optional callback for real-time status updates
242
249
  * @returns {Promise<SubmissionResult>} Complete transaction result
243
250
  *
244
251
  * @throws {Error} 'Transaction signer not initialized' - Hook not ready
@@ -261,6 +268,15 @@ export const useTransactionSigner = () => {
261
268
  * ```
262
269
  *
263
270
  * @example
271
+ * **With Status Updates:**
272
+ * ```typescript
273
+ * const result = await signAndSubmitTransactionWithJWT(jwtToken, (status, message) => {
274
+ * console.log(`Status: ${status} - ${message}`);
275
+ * setStatusText(message);
276
+ * });
277
+ * ```
278
+ *
279
+ * @example
264
280
  * **With Error Handling:**
265
281
  * ```typescript
266
282
  * try {
@@ -295,20 +311,30 @@ export const useTransactionSigner = () => {
295
311
  *
296
312
  * @see {@link SubmissionResult} for detailed result structure
297
313
  */
298
- const signAndSubmitTransactionWithJWT = useCallback(async (jwt) => {
314
+ const signAndSubmitTransactionWithJWT = useCallback(async (jwt, onStatusUpdate) => {
299
315
  if (!isSignerInitialized || !signerSDKRef.current) {
300
316
  throw new Error('Transaction signer not initialized');
301
317
  }
302
318
  if (!createPersSignerSDK) {
303
319
  throw new Error('PERS Signer SDK not available. Blockchain signing is not supported.');
304
320
  }
321
+ // Create status callback wrapper that updates both hook state and calls user callback
322
+ const statusCallback = {
323
+ onStatusUpdate: (status, message, data) => {
324
+ setCurrentStatus(status);
325
+ setStatusMessage(message);
326
+ onStatusUpdate?.(status, message, data);
327
+ }
328
+ };
305
329
  try {
306
330
  // Use the actual SDK method that handles the complete sign + submit flow
307
- const submissionResult = await signerSDKRef.current.signAndSubmitPersTransaction(jwt);
331
+ const submissionResult = await signerSDKRef.current.signAndSubmitPersTransaction(jwt, statusCallback);
308
332
  return submissionResult;
309
333
  }
310
334
  catch (error) {
311
335
  console.error('[useTransactionSigner] JWT transaction signing failed:', error);
336
+ setCurrentStatus(SigningStatus.ERROR);
337
+ setStatusMessage(error instanceof Error ? error.message : 'Transaction failed');
312
338
  throw error; // Re-throw to maintain error handling upstream
313
339
  }
314
340
  }, [isSignerInitialized]);
@@ -320,6 +346,7 @@ export const useTransactionSigner = () => {
320
346
  * from authentication to blockchain submission in a single call.
321
347
  *
322
348
  * @param {string} jwt - JWT token with transaction and user data
349
+ * @param {StatusCallback} [onStatusUpdate] - Optional callback for real-time status updates
323
350
  * @returns {Promise<SubmissionResult>} Transaction result with hash and status
324
351
  */
325
352
  signAndSubmitTransactionWithJWT,
@@ -365,5 +392,35 @@ export const useTransactionSigner = () => {
365
392
  * ```
366
393
  */
367
394
  isSignerAvailable: isSignerInitialized && !!createPersSignerSDK,
395
+ /**
396
+ * Current signing status for UI feedback
397
+ *
398
+ * Tracks the current state of the signing process. Use this to show
399
+ * progress indicators or status messages during transaction signing.
400
+ *
401
+ * Possible values: 'initializing', 'authenticating', 'preparing',
402
+ * 'signing', 'submitting', 'completed', 'error', 'expired'
403
+ *
404
+ * @example
405
+ * ```typescript
406
+ * const { currentStatus, statusMessage } = useTransactionSigner();
407
+ *
408
+ * return (
409
+ * <View>
410
+ * {currentStatus && (
411
+ * <Text>Status: {statusMessage}</Text>
412
+ * )}
413
+ * </View>
414
+ * );
415
+ * ```
416
+ */
417
+ currentStatus,
418
+ /**
419
+ * Human-readable status message
420
+ *
421
+ * Provides a user-friendly description of the current signing status.
422
+ * Updates in real-time as the transaction progresses.
423
+ */
424
+ statusMessage,
368
425
  };
369
426
  };
@@ -1,3 +1,4 @@
1
+ import { OnStatusUpdateFn } from './useTransactionSigner';
1
2
  import type { TransactionRequestDTO, TransactionRequestResponseDTO, TransactionDTO, TransactionRole, TransactionPaginationRequestDTO } from '@explorins/pers-shared';
2
3
  /**
3
4
  * React hook for transaction operations in the PERS SDK
@@ -36,13 +37,15 @@ import type { TransactionRequestDTO, TransactionRequestResponseDTO, TransactionD
36
37
  * ```
37
38
  */
38
39
  export declare const useTransactions: () => {
39
- createTransaction: (request: TransactionRequestDTO) => Promise<TransactionRequestResponseDTO>;
40
+ createTransaction: (request: TransactionRequestDTO, onStatusUpdate?: OnStatusUpdateFn) => Promise<TransactionRequestResponseDTO>;
40
41
  getTransactionById: (transactionId: string) => Promise<TransactionDTO | null>;
41
42
  getUserTransactionHistory: (role?: TransactionRole) => Promise<TransactionDTO[]>;
42
43
  getTenantTransactions: () => Promise<TransactionDTO[]>;
43
44
  getPaginatedTransactions: (params: TransactionPaginationRequestDTO) => Promise<any>;
44
45
  exportTransactionsCSV: () => Promise<Blob>;
45
46
  isAvailable: boolean;
47
+ signingStatus: import("@explorins/pers-signer").SigningStatus | null;
48
+ signingStatusMessage: string | null;
46
49
  };
47
50
  export type TransactionHook = ReturnType<typeof useTransactions>;
48
51
  //# sourceMappingURL=useTransactions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTransactions.d.ts","sourceRoot":"","sources":["../../src/hooks/useTransactions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,eAAe,EACf,+BAA+B,EAChC,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,eAAe;iCA8B4B,qBAAqB,KAAG,QAAQ,6BAA6B,CAAC;wCA8DvD,MAAM,KAAG,QAAQ,cAAc,GAAG,IAAI,CAAC;uCA6BxC,eAAe,KAAG,QAAQ,cAAc,EAAE,CAAC;iCAgBnD,QAAQ,cAAc,EAAE,CAAC;uCAcjB,+BAA+B,KAAG,QAAQ,GAAG,CAAC;iCAetD,QAAQ,IAAI,CAAC;;CAwBlE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"useTransactions.d.ts","sourceRoot":"","sources":["../../src/hooks/useTransactions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EACV,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,eAAe,EACf,+BAA+B,EAChC,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,eAAe;iCAgC4B,qBAAqB,mBAAmB,gBAAgB,KAAG,QAAQ,6BAA6B,CAAC;wCA2D1F,MAAM,KAAG,QAAQ,cAAc,GAAG,IAAI,CAAC;uCA4BxC,eAAe,KAAG,QAAQ,cAAc,EAAE,CAAC;iCAenD,QAAQ,cAAc,EAAE,CAAC;uCAcjB,+BAA+B,KAAG,QAAQ,GAAG,CAAC;iCActD,QAAQ,IAAI,CAAC;;;;CA0BlE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -39,7 +39,7 @@ import { useTransactionSigner } from './useTransactionSigner';
39
39
  */
40
40
  export const useTransactions = () => {
41
41
  const { sdk, isInitialized, isAuthenticated } = usePersSDK();
42
- const { signAndSubmitTransactionWithJWT, isSignerAvailable } = useTransactionSigner();
42
+ const { signAndSubmitTransactionWithJWT, isSignerAvailable, currentStatus, statusMessage } = useTransactionSigner();
43
43
  if (!isAuthenticated && isInitialized) {
44
44
  console.warn('SDK not authenticated. Some transaction operations may fail.');
45
45
  }
@@ -61,29 +61,29 @@ export const useTransactions = () => {
61
61
  * recipient: '0x123...',
62
62
  * tokenId: 'token-123'
63
63
  * };
64
- * const result = await createTransaction(request);
64
+ * const result = await createTransaction(request, (status, message) => {
65
+ * console.log(`Status: ${status} - ${message}`);
66
+ * });
65
67
  * console.log('Transaction created:', result);
66
68
  * ```
67
69
  */
68
- const createTransaction = useCallback(async (request) => {
70
+ const createTransaction = useCallback(async (request, onStatusUpdate) => {
69
71
  if (!isInitialized || !sdk) {
70
72
  throw new Error('SDK not initialized. Call initialize() first.');
71
73
  }
72
74
  try {
73
75
  const result = await sdk.transactions.createTransaction(request);
74
- console.log('Transaction created successfully:', result);
75
76
  // Check if transaction requires signing (contains actionable authToken)
76
77
  // Type assertion needed as TransactionRequestResponseDTO type may not include all dynamic properties
77
78
  const txToken = result?.actionable?.authToken;
78
79
  if (txToken) {
79
- console.log('[useTransactions] Transaction requires signing, attempting automatic signature...');
80
80
  try {
81
81
  if (!isSignerAvailable) {
82
82
  console.warn('[useTransactions] Transaction signer not available, skipping automatic signing');
83
83
  return result;
84
84
  }
85
85
  // Automatically sign the transaction using the authToken
86
- const signingResult = await signAndSubmitTransactionWithJWT(txToken);
86
+ const signingResult = await signAndSubmitTransactionWithJWT(txToken, onStatusUpdate);
87
87
  if (signingResult.success) {
88
88
  console.log('[useTransactions] Transaction signed successfully:', signingResult.transactionHash);
89
89
  // Return the original result - the transaction is now signed and will be processed
@@ -128,7 +128,6 @@ export const useTransactions = () => {
128
128
  }
129
129
  try {
130
130
  const result = await sdk.transactions.getTransactionById(transactionId);
131
- console.log('Transaction fetched successfully:', result);
132
131
  return result;
133
132
  }
134
133
  catch (error) {
@@ -156,7 +155,6 @@ export const useTransactions = () => {
156
155
  }
157
156
  try {
158
157
  const result = await sdk.transactions.getUserTransactionHistory(role);
159
- console.log('Transaction history fetched successfully:', result);
160
158
  return result;
161
159
  }
162
160
  catch (error) {
@@ -183,7 +181,6 @@ export const useTransactions = () => {
183
181
  }
184
182
  try {
185
183
  const result = await sdk.transactions.getPaginatedTransactions(params);
186
- console.log('Paginated transactions fetched successfully:', result);
187
184
  return result;
188
185
  }
189
186
  catch (error) {
@@ -197,7 +194,6 @@ export const useTransactions = () => {
197
194
  }
198
195
  try {
199
196
  const result = await sdk.transactions.exportTransactionsCSV();
200
- console.log('Transactions CSV exported successfully');
201
197
  return result;
202
198
  }
203
199
  catch (error) {
@@ -213,5 +209,8 @@ export const useTransactions = () => {
213
209
  getPaginatedTransactions,
214
210
  exportTransactionsCSV,
215
211
  isAvailable: isInitialized && !!sdk?.transactions,
212
+ // Expose signing status for UI feedback
213
+ signingStatus: currentStatus,
214
+ signingStatusMessage: statusMessage,
216
215
  };
217
216
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useUserStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useUserStatus.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,eAAO,MAAM,aAAa;8BAGyB,QAAQ,iBAAiB,EAAE,CAAC;+BAe3B,QAAQ,iBAAiB,EAAE,CAAC;2CAmBd,iBAAiB,KAAG,QAAQ,iBAAiB,CAAC;;CAqB/G,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"useUserStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useUserStatus.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,eAAO,MAAM,aAAa;8BAGyB,QAAQ,iBAAiB,EAAE,CAAC;+BAc3B,QAAQ,iBAAiB,EAAE,CAAC;2CAkBd,iBAAiB,KAAG,QAAQ,iBAAiB,CAAC;;CAoB/G,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -8,7 +8,6 @@ export const useUserStatus = () => {
8
8
  }
9
9
  try {
10
10
  const result = await sdk.userStatus.getUserStatusTypes();
11
- console.log('User status types fetched successfully:', result);
12
11
  return result;
13
12
  }
14
13
  catch (error) {
@@ -25,7 +24,6 @@ export const useUserStatus = () => {
25
24
  }
26
25
  try {
27
26
  const result = await sdk.userStatus.getEarnedUserStatus();
28
- console.log('Earned user status fetched successfully:', result);
29
27
  return result;
30
28
  }
31
29
  catch (error) {
@@ -40,7 +38,6 @@ export const useUserStatus = () => {
40
38
  }
41
39
  try {
42
40
  const result = await sdk.userStatus.createUserStatusType(userStatusType);
43
- console.log('User status type created successfully:', result);
44
41
  return result;
45
42
  }
46
43
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"useUsers.d.ts","sourceRoot":"","sources":["../../src/hooks/useUsers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE,eAAO,MAAM,QAAQ;0BAG0B,QAAQ,OAAO,CAAC;kCAkBN,oBAAoB,KAAG,QAAQ,OAAO,CAAC;0BAkB/C,MAAM,KAAG,QAAQ,OAAO,CAAC;iCAelB;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAG,QAAQ,oBAAoB,EAAE,CAAC;uBAgB5E,QAAQ,OAAO,EAAE,CAAC;yBAed,MAAM,YAAY,oBAAoB,KAAG,QAAQ,OAAO,CAAC;6BAerD,OAAO,KAAG,QAAQ,OAAO,CAAC;;CAyB7E,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"useUsers.d.ts","sourceRoot":"","sources":["../../src/hooks/useUsers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE,eAAO,MAAM,QAAQ;0BAG0B,QAAQ,OAAO,CAAC;kCAiBN,oBAAoB,KAAG,QAAQ,OAAO,CAAC;0BAiB/C,MAAM,KAAG,QAAQ,OAAO,CAAC;iCAclB;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAG,QAAQ,oBAAoB,EAAE,CAAC;uBAe5E,QAAQ,OAAO,EAAE,CAAC;yBAcd,MAAM,YAAY,oBAAoB,KAAG,QAAQ,OAAO,CAAC;6BAcrD,OAAO,KAAG,QAAQ,OAAO,CAAC;;CAwB7E,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC"}
@@ -11,7 +11,6 @@ export const useUsers = () => {
11
11
  }
12
12
  try {
13
13
  const result = await sdk.users.getCurrentUser();
14
- console.log('Current user fetched successfully:', result);
15
14
  return result;
16
15
  }
17
16
  catch (error) {
@@ -28,7 +27,6 @@ export const useUsers = () => {
28
27
  }
29
28
  try {
30
29
  const result = await sdk.users.updateCurrentUser(userData);
31
- console.log('Current user updated successfully:', result);
32
30
  return result;
33
31
  }
34
32
  catch (error) {
@@ -42,7 +40,6 @@ export const useUsers = () => {
42
40
  }
43
41
  try {
44
42
  const result = await sdk.users.getUserById(userId);
45
- console.log('User fetched successfully:', result);
46
43
  return result;
47
44
  }
48
45
  catch (error) {
@@ -56,7 +53,6 @@ export const useUsers = () => {
56
53
  }
57
54
  try {
58
55
  const result = await sdk.users.getAllUsersPublic(filter);
59
- console.log('Public users fetched successfully:', result);
60
56
  return result;
61
57
  }
62
58
  catch (error) {
@@ -71,7 +67,6 @@ export const useUsers = () => {
71
67
  }
72
68
  try {
73
69
  const result = await sdk.users.getAllUsers();
74
- console.log('All users fetched successfully:', result);
75
70
  return result;
76
71
  }
77
72
  catch (error) {
@@ -85,7 +80,6 @@ export const useUsers = () => {
85
80
  }
86
81
  try {
87
82
  const result = await sdk.users.updateUser(userId, userData);
88
- console.log('User updated successfully:', result);
89
83
  return result;
90
84
  }
91
85
  catch (error) {
@@ -99,7 +93,6 @@ export const useUsers = () => {
99
93
  }
100
94
  try {
101
95
  const result = await sdk.users.toggleUserStatus(user);
102
- console.log('User status toggled successfully:', result);
103
96
  return result;
104
97
  }
105
98
  catch (error) {
@@ -1,65 +1,51 @@
1
1
  import type { TokenBalance, TokenBalanceRequest, TokenCollectionRequest, TokenCollection, TokenMetadata } from '@explorins/pers-sdk/web3';
2
2
  import type { ChainData } from '@explorins/pers-sdk/web3-chain';
3
- /**
4
- * Wallet information interface
5
- *
6
- * @interface WalletInfo
7
- * @property {string | null} address - Wallet address if connected
8
- * @property {boolean} isConnected - Whether wallet is connected
9
- */
10
- export interface WalletInfo {
11
- address: string | null;
12
- isConnected: boolean;
13
- }
14
3
  /**
15
4
  * React hook for Web3 operations in the PERS SDK
16
5
  *
17
6
  * Provides comprehensive Web3 functionality including token balance queries,
18
7
  * metadata retrieval, collection management, IPFS resolution, and blockchain
19
- * explorer integration. Supports multi-chain operations and wallet management.
8
+ * explorer integration. Supports multi-chain operations.
9
+ *
10
+ * Note: Wallet addresses should be obtained from `user.wallets` via `usePersSDK()`.
20
11
  *
21
12
  * @returns Web3 hook with methods for blockchain operations
22
13
  *
23
14
  * @example
24
15
  * ```typescript
25
16
  * function Web3Component() {
26
- * const {
27
- * getTokenBalance,
28
- * getTokenMetadata,
29
- * getWalletInfo,
30
- * accountAddress
31
- * } = useWeb3();
17
+ * const { user } = usePersSDK();
18
+ * const { getTokenBalance, getTokenMetadata } = useWeb3();
19
+ *
20
+ * // Get wallet address from user
21
+ * const walletAddress = user?.wallets?.[0]?.address;
32
22
  *
33
23
  * const loadTokenData = async () => {
34
- * try {
35
- * if (!accountAddress) {
36
- * console.log('No wallet connected');
37
- * return;
38
- * }
24
+ * if (!walletAddress) {
25
+ * console.log('No wallet connected');
26
+ * return;
27
+ * }
39
28
  *
40
- * const balance = await getTokenBalance({
41
- * walletAddress: accountAddress,
42
- * contractAddress: '0x123...',
43
- * chainId: 1
44
- * });
29
+ * const balance = await getTokenBalance({
30
+ * walletAddress,
31
+ * contractAddress: '0x123...',
32
+ * chainId: 1
33
+ * });
45
34
  *
46
- * console.log('Token balance:', balance);
47
- * } catch (error) {
48
- * console.error('Failed to load token data:', error);
49
- * }
35
+ * console.log('Token balance:', balance);
50
36
  * };
51
37
  *
52
38
  * return (
53
- * <div>
54
- * {accountAddress ? (
55
- * <div>
56
- * <p>Wallet: {accountAddress}</p>
57
- * <button onClick={loadTokenData}>Load Tokens</button>
58
- * </div>
39
+ * <View>
40
+ * {walletAddress ? (
41
+ * <View>
42
+ * <Text>Wallet: {walletAddress}</Text>
43
+ * <Button onPress={loadTokenData} title="Load Tokens" />
44
+ * </View>
59
45
  * ) : (
60
- * <p>No wallet connected</p>
46
+ * <Text>No wallet connected</Text>
61
47
  * )}
62
- * </div>
48
+ * </View>
63
49
  * );
64
50
  * }
65
51
  * ```
@@ -72,8 +58,6 @@ export declare const useWeb3: () => {
72
58
  fetchAndProcessMetadata: (tokenUri: string, chainId: number) => Promise<TokenMetadata | null>;
73
59
  getChainDataById: (chainId: number) => Promise<ChainData | null>;
74
60
  getExplorerUrl: (chainId: number, address: string, type: 'address' | 'tx') => Promise<string>;
75
- getWalletInfo: () => Promise<WalletInfo | null>;
76
- accountAddress: string | null;
77
61
  isAvailable: boolean;
78
62
  };
79
63
  export type Web3Hook = ReturnType<typeof useWeb3>;
@@ -1 +1 @@
1
- {"version":3,"file":"useWeb3.d.ts","sourceRoot":"","sources":["../../src/hooks/useWeb3.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,aAAa,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,eAAO,MAAM,OAAO;+BA0BkC,mBAAmB,KAAG,QAAQ,YAAY,CAAC;gCAmC1C,mBAAmB,KAAG,QAAQ,aAAa,GAAG,IAAI,CAAC;kCAejD,sBAAsB,KAAG,QAAQ,eAAe,CAAC;0BAezD,MAAM,WAAW,MAAM,KAAG,QAAQ,MAAM,CAAC;wCAe3B,MAAM,WAAW,MAAM,KAAG,QAAQ,aAAa,GAAG,IAAI,CAAC;gCAe/D,MAAM,KAAG,QAAQ,SAAS,GAAG,IAAI,CAAC;8BAepC,MAAM,WAAW,MAAM,QAAQ,SAAS,GAAG,IAAI,KAAG,QAAQ,MAAM,CAAC;yBAexE,QAAQ,UAAU,GAAG,IAAI,CAAC;;;CA2BvE,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"useWeb3.d.ts","sourceRoot":"","sources":["../../src/hooks/useWeb3.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,aAAa,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,eAAO,MAAM,OAAO;+BA0BkC,mBAAmB,KAAG,QAAQ,YAAY,CAAC;gCAiC1C,mBAAmB,KAAG,QAAQ,aAAa,GAAG,IAAI,CAAC;kCAcjD,sBAAsB,KAAG,QAAQ,eAAe,CAAC;0BAczD,MAAM,WAAW,MAAM,KAAG,QAAQ,MAAM,CAAC;wCAc3B,MAAM,WAAW,MAAM,KAAG,QAAQ,aAAa,GAAG,IAAI,CAAC;gCAc/D,MAAM,KAAG,QAAQ,SAAS,GAAG,IAAI,CAAC;8BAcpC,MAAM,WAAW,MAAM,QAAQ,SAAS,GAAG,IAAI,KAAG,QAAQ,MAAM,CAAC;;CAwBrH,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC"}
@@ -5,56 +5,53 @@ import { usePersSDK } from '../providers/PersSDKProvider';
5
5
  *
6
6
  * Provides comprehensive Web3 functionality including token balance queries,
7
7
  * metadata retrieval, collection management, IPFS resolution, and blockchain
8
- * explorer integration. Supports multi-chain operations and wallet management.
8
+ * explorer integration. Supports multi-chain operations.
9
+ *
10
+ * Note: Wallet addresses should be obtained from `user.wallets` via `usePersSDK()`.
9
11
  *
10
12
  * @returns Web3 hook with methods for blockchain operations
11
13
  *
12
14
  * @example
13
15
  * ```typescript
14
16
  * function Web3Component() {
15
- * const {
16
- * getTokenBalance,
17
- * getTokenMetadata,
18
- * getWalletInfo,
19
- * accountAddress
20
- * } = useWeb3();
17
+ * const { user } = usePersSDK();
18
+ * const { getTokenBalance, getTokenMetadata } = useWeb3();
19
+ *
20
+ * // Get wallet address from user
21
+ * const walletAddress = user?.wallets?.[0]?.address;
21
22
  *
22
23
  * const loadTokenData = async () => {
23
- * try {
24
- * if (!accountAddress) {
25
- * console.log('No wallet connected');
26
- * return;
27
- * }
24
+ * if (!walletAddress) {
25
+ * console.log('No wallet connected');
26
+ * return;
27
+ * }
28
28
  *
29
- * const balance = await getTokenBalance({
30
- * walletAddress: accountAddress,
31
- * contractAddress: '0x123...',
32
- * chainId: 1
33
- * });
29
+ * const balance = await getTokenBalance({
30
+ * walletAddress,
31
+ * contractAddress: '0x123...',
32
+ * chainId: 1
33
+ * });
34
34
  *
35
- * console.log('Token balance:', balance);
36
- * } catch (error) {
37
- * console.error('Failed to load token data:', error);
38
- * }
35
+ * console.log('Token balance:', balance);
39
36
  * };
40
37
  *
41
38
  * return (
42
- * <div>
43
- * {accountAddress ? (
44
- * <div>
45
- * <p>Wallet: {accountAddress}</p>
46
- * <button onClick={loadTokenData}>Load Tokens</button>
47
- * </div>
39
+ * <View>
40
+ * {walletAddress ? (
41
+ * <View>
42
+ * <Text>Wallet: {walletAddress}</Text>
43
+ * <Button onPress={loadTokenData} title="Load Tokens" />
44
+ * </View>
48
45
  * ) : (
49
- * <p>No wallet connected</p>
46
+ * <Text>No wallet connected</Text>
50
47
  * )}
51
- * </div>
48
+ * </View>
52
49
  * );
53
50
  * }
54
51
  * ```
55
52
  */
56
53
  export const useWeb3 = () => {
57
- const { sdk, isInitialized, isAuthenticated, accountAddress } = usePersSDK();
54
+ const { sdk, isInitialized, isAuthenticated } = usePersSDK();
58
55
  if (!isAuthenticated && isInitialized) {
59
56
  console.warn('SDK not authenticated. Some web3 operations may fail.');
60
57
  }
@@ -78,13 +75,11 @@ export const useWeb3 = () => {
78
75
  * ```
79
76
  */
80
77
  const getTokenBalance = useCallback(async (request) => {
81
- console.log('[useWeb3] getTokenBalance called with request:', request);
82
78
  if (!isInitialized || !sdk) {
83
79
  throw new Error('SDK not initialized. Call initialize() first.');
84
80
  }
85
81
  try {
86
82
  const result = await sdk.web3.getTokenBalance(request);
87
- console.log('Token balance fetched successfully:', result);
88
83
  return result;
89
84
  }
90
85
  catch (error) {
@@ -117,7 +112,6 @@ export const useWeb3 = () => {
117
112
  }
118
113
  try {
119
114
  const result = await sdk.web3.getTokenMetadata(request);
120
- console.log('Token metadata fetched successfully:', result);
121
115
  return result;
122
116
  }
123
117
  catch (error) {
@@ -131,7 +125,6 @@ export const useWeb3 = () => {
131
125
  }
132
126
  try {
133
127
  const result = await sdk.web3.getTokenCollection(request);
134
- console.log('Token collection fetched successfully:', result);
135
128
  return result;
136
129
  }
137
130
  catch (error) {
@@ -145,7 +138,6 @@ export const useWeb3 = () => {
145
138
  }
146
139
  try {
147
140
  const result = await sdk.web3.resolveIPFSUrl(url, chainId);
148
- console.log('IPFS URL resolved successfully:', result);
149
141
  return result;
150
142
  }
151
143
  catch (error) {
@@ -159,7 +151,6 @@ export const useWeb3 = () => {
159
151
  }
160
152
  try {
161
153
  const result = await sdk.web3.fetchAndProcessMetadata(tokenUri, chainId);
162
- console.log('Metadata fetched and processed successfully:', result);
163
154
  return result;
164
155
  }
165
156
  catch (error) {
@@ -173,7 +164,6 @@ export const useWeb3 = () => {
173
164
  }
174
165
  try {
175
166
  const result = await sdk.web3.getChainDataById(chainId);
176
- console.log('Chain data fetched successfully:', result);
177
167
  return result;
178
168
  }
179
169
  catch (error) {
@@ -187,7 +177,6 @@ export const useWeb3 = () => {
187
177
  }
188
178
  try {
189
179
  const result = await sdk.web3.getExplorerUrl(chainId, address, type);
190
- console.log('Explorer URL generated successfully:', result);
191
180
  return result;
192
181
  }
193
182
  catch (error) {
@@ -195,19 +184,6 @@ export const useWeb3 = () => {
195
184
  throw error;
196
185
  }
197
186
  }, [sdk, isInitialized]);
198
- const getWalletInfo = useCallback(async () => {
199
- if (!isInitialized) {
200
- throw new Error('SDK not initialized. Call initialize() first.');
201
- }
202
- if (!accountAddress) {
203
- console.warn('No account address available');
204
- return null;
205
- }
206
- return {
207
- address: accountAddress,
208
- isConnected: !!accountAddress,
209
- };
210
- }, [isInitialized, accountAddress]);
211
187
  return {
212
188
  getTokenBalance,
213
189
  getTokenMetadata,
@@ -216,8 +192,6 @@ export const useWeb3 = () => {
216
192
  fetchAndProcessMetadata,
217
193
  getChainDataById,
218
194
  getExplorerUrl,
219
- getWalletInfo,
220
- accountAddress: isInitialized ? accountAddress : null,
221
195
  isAvailable: isInitialized && !!sdk?.web3,
222
196
  };
223
197
  };
package/dist/index.d.ts CHANGED
@@ -185,7 +185,8 @@ export { PersSDKProvider, usePersSDK, type PersConfig, type PersSDKContext } fro
185
185
  * }
186
186
  * ```
187
187
  */
188
- export { useAuth, useTokens, useTransactions, useTransactionSigner, useBusiness, useCampaigns, useRedemptions, useWeb3, usePurchases, useTenants, useUsers, useUserStatus, useFiles, useAnalytics, useDonations } from './hooks';
188
+ export { useAuth, useTokens, useTransactions, useTransactionSigner, SigningStatus, useBusiness, useCampaigns, useRedemptions, useWeb3, usePurchases, useTenants, useUsers, useUserStatus, useFiles, useAnalytics, useDonations } from './hooks';
189
+ export type { OnStatusUpdateFn, StatusUpdateData, SigningStatusType } from './hooks';
189
190
  /**
190
191
  * React Native-optimized HTTP client with automatic request/response handling
191
192
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAGH,OAAO,aAAa,CAAC;AAMrB;;;;;;;;GAQG;AACH,OAAO,EACL,6BAA6B,EAC7B,KAAK,qBAAqB,EAC3B,MAAM,wCAAwC,CAAC;AAMhD;;;;;;;;;;GAUG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE;;;;;;;;GAQG;AACH,OAAO,EACL,wBAAwB,GACzB,MAAM,uCAAuC,CAAC;AAM/C;;;GAGG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAMvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EACL,eAAe,EACf,UAAU,EACV,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,6BAA6B,CAAC;AAMrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,OAAO,EACL,OAAO,EACP,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,OAAO,EACP,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,EACb,MAAM,SAAS,CAAC;AAMjB;;;;;;GAMG;AACH,OAAO,EACL,qBAAqB,EACtB,MAAM,sCAAsC,CAAC;AAM9C;;;;;;;;GAQG;AACH,OAAO,EACL,8BAA8B,EAC/B,MAAM,aAAa,CAAC;AAMrB;;;;;;;;;;;;;;;GAeG;AACH,cAAc,wBAAwB,CAAC;AAEvC;;;;;;;;;;;GAWG;AACH,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,sBAAsB,EACvB,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAGH,OAAO,aAAa,CAAC;AAMrB;;;;;;;;GAQG;AACH,OAAO,EACL,6BAA6B,EAC7B,KAAK,qBAAqB,EAC3B,MAAM,wCAAwC,CAAC;AAMhD;;;;;;;;;;GAUG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE;;;;;;;;GAQG;AACH,OAAO,EACL,wBAAwB,GACzB,MAAM,uCAAuC,CAAC;AAM/C;;;GAGG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAMvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EACL,eAAe,EACf,UAAU,EACV,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,6BAA6B,CAAC;AAMrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,OAAO,EACL,OAAO,EACP,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,EACd,OAAO,EACP,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,EACb,MAAM,SAAS,CAAC;AAGjB,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAMrF;;;;;;GAMG;AACH,OAAO,EACL,qBAAqB,EACtB,MAAM,sCAAsC,CAAC;AAM9C;;;;;;;;GAQG;AACH,OAAO,EACL,8BAA8B,EAC/B,MAAM,aAAa,CAAC;AAMrB;;;;;;;;;;;;;;;GAeG;AACH,cAAc,wBAAwB,CAAC;AAEvC;;;;;;;;;;;GAWG;AACH,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,sBAAsB,EACvB,MAAM,0BAA0B,CAAC"}