@explorins/pers-sdk 2.0.10 → 2.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 (184) hide show
  1. package/README.md +37 -18
  2. package/dist/analytics/index.d.ts +0 -2
  3. package/dist/analytics/index.d.ts.map +1 -1
  4. package/dist/analytics/models/index.d.ts +1 -10
  5. package/dist/analytics/models/index.d.ts.map +1 -1
  6. package/dist/analytics.cjs +44 -29
  7. package/dist/analytics.cjs.map +1 -1
  8. package/dist/analytics.js +45 -2
  9. package/dist/analytics.js.map +1 -1
  10. package/dist/business/index.d.ts +0 -1
  11. package/dist/business/index.d.ts.map +1 -1
  12. package/dist/business.cjs +7 -774
  13. package/dist/business.cjs.map +1 -1
  14. package/dist/business.js +3 -751
  15. package/dist/business.js.map +1 -1
  16. package/dist/campaign/index.d.ts +0 -1
  17. package/dist/campaign/index.d.ts.map +1 -1
  18. package/dist/campaign.cjs +429 -29
  19. package/dist/campaign.cjs.map +1 -1
  20. package/dist/campaign.js +431 -3
  21. package/dist/campaign.js.map +1 -1
  22. package/dist/chunks/business-membership-service-8KC_qRj7.cjs +756 -0
  23. package/dist/chunks/business-membership-service-8KC_qRj7.cjs.map +1 -0
  24. package/dist/chunks/business-membership-service-D6vaVQTR.js +751 -0
  25. package/dist/chunks/business-membership-service-D6vaVQTR.js.map +1 -0
  26. package/dist/chunks/{web3-chain-service-BeBjALg2.cjs → index-B-g2JPVK.cjs} +1 -220
  27. package/dist/chunks/index-B-g2JPVK.cjs.map +1 -0
  28. package/dist/chunks/{web3-chain-service-DKHCnHQX.js → index-CKm_V5XE.js} +2 -219
  29. package/dist/chunks/index-CKm_V5XE.js.map +1 -0
  30. package/dist/chunks/payment-service-Bkw7ZXev.cjs +214 -0
  31. package/dist/chunks/payment-service-Bkw7ZXev.cjs.map +1 -0
  32. package/dist/chunks/payment-service-IvM6rryM.js +211 -0
  33. package/dist/chunks/payment-service-IvM6rryM.js.map +1 -0
  34. package/dist/chunks/{pers-sdk-JIExM712.js → pers-sdk-CGefBd1F.js} +14 -293
  35. package/dist/chunks/pers-sdk-CGefBd1F.js.map +1 -0
  36. package/dist/chunks/{pers-sdk-h-uoLpBx.cjs → pers-sdk-CaSw6CPz.cjs} +42 -322
  37. package/dist/chunks/pers-sdk-CaSw6CPz.cjs.map +1 -0
  38. package/dist/chunks/redemption-service-D-hBqh42.js +339 -0
  39. package/dist/chunks/redemption-service-D-hBqh42.js.map +1 -0
  40. package/dist/chunks/redemption-service-rMB6T2W5.cjs +342 -0
  41. package/dist/chunks/redemption-service-rMB6T2W5.cjs.map +1 -0
  42. package/dist/chunks/tenant-service-CsRA3O2V.js +163 -0
  43. package/dist/chunks/tenant-service-CsRA3O2V.js.map +1 -0
  44. package/dist/chunks/tenant-service-fj-pkXTw.cjs +166 -0
  45. package/dist/chunks/tenant-service-fj-pkXTw.cjs.map +1 -0
  46. package/dist/chunks/{transaction-service-BcJfyCcq.cjs → transaction-request.builder-BpgtuMMq.cjs} +353 -1
  47. package/dist/chunks/transaction-request.builder-BpgtuMMq.cjs.map +1 -0
  48. package/dist/chunks/{transaction-service-CnOD3scu.js → transaction-request.builder-C1vVVFto.js} +346 -3
  49. package/dist/chunks/transaction-request.builder-C1vVVFto.js.map +1 -0
  50. package/dist/chunks/web3-chain-service-D68-0WaW.cjs +224 -0
  51. package/dist/chunks/web3-chain-service-D68-0WaW.cjs.map +1 -0
  52. package/dist/chunks/web3-chain-service-DuvxmKSj.js +221 -0
  53. package/dist/chunks/web3-chain-service-DuvxmKSj.js.map +1 -0
  54. package/dist/chunks/{explorer.utils-Cx3wrqAj.cjs → web3-manager-C_cFaMCm.cjs} +411 -144
  55. package/dist/chunks/web3-manager-C_cFaMCm.cjs.map +1 -0
  56. package/dist/chunks/{explorer.utils-BkS3k8hX.js → web3-manager-OExwBWB7.js} +412 -146
  57. package/dist/chunks/web3-manager-OExwBWB7.js.map +1 -0
  58. package/dist/core/version.d.ts +2 -2
  59. package/dist/core.cjs +19 -22
  60. package/dist/core.cjs.map +1 -1
  61. package/dist/core.js +11 -13
  62. package/dist/core.js.map +1 -1
  63. package/dist/donation/index.d.ts +0 -1
  64. package/dist/donation/index.d.ts.map +1 -1
  65. package/dist/donation.cjs +48 -29
  66. package/dist/donation.cjs.map +1 -1
  67. package/dist/donation.js +50 -3
  68. package/dist/donation.js.map +1 -1
  69. package/dist/index.cjs +48 -72
  70. package/dist/index.cjs.map +1 -1
  71. package/dist/index.d.ts +1 -3
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +13 -16
  74. package/dist/index.js.map +1 -1
  75. package/dist/managers/analytics-manager.d.ts +1 -1
  76. package/dist/managers/index.d.ts +0 -1
  77. package/dist/managers/index.d.ts.map +1 -1
  78. package/dist/managers/web3-manager.d.ts +2 -13
  79. package/dist/managers/web3-manager.d.ts.map +1 -1
  80. package/dist/node.cjs +11 -14
  81. package/dist/node.cjs.map +1 -1
  82. package/dist/node.js +11 -14
  83. package/dist/node.js.map +1 -1
  84. package/dist/package.json +6 -18
  85. package/dist/payment/index.d.ts +0 -1
  86. package/dist/payment/index.d.ts.map +1 -1
  87. package/dist/payment.cjs +5 -232
  88. package/dist/payment.cjs.map +1 -1
  89. package/dist/payment.js +3 -210
  90. package/dist/payment.js.map +1 -1
  91. package/dist/pers-sdk.d.ts +3 -13
  92. package/dist/pers-sdk.d.ts.map +1 -1
  93. package/dist/redemption/index.d.ts +0 -1
  94. package/dist/redemption/index.d.ts.map +1 -1
  95. package/dist/redemption/services/redemption-service.d.ts +1 -2
  96. package/dist/redemption/services/redemption-service.d.ts.map +1 -1
  97. package/dist/redemption.cjs +5 -360
  98. package/dist/redemption.cjs.map +1 -1
  99. package/dist/redemption.js +3 -338
  100. package/dist/redemption.js.map +1 -1
  101. package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts +40 -21
  102. package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts.map +1 -1
  103. package/dist/tenant/index.d.ts +0 -1
  104. package/dist/tenant/index.d.ts.map +1 -1
  105. package/dist/tenant.cjs +5 -184
  106. package/dist/tenant.cjs.map +1 -1
  107. package/dist/tenant.js +3 -162
  108. package/dist/tenant.js.map +1 -1
  109. package/dist/token/index.d.ts +0 -1
  110. package/dist/token/index.d.ts.map +1 -1
  111. package/dist/token.cjs +1 -25
  112. package/dist/token.cjs.map +1 -1
  113. package/dist/token.js +1 -1
  114. package/dist/transaction/index.d.ts +2 -0
  115. package/dist/transaction/index.d.ts.map +1 -1
  116. package/dist/transaction/models/transaction-request.builder.d.ts +59 -9
  117. package/dist/transaction/models/transaction-request.builder.d.ts.map +1 -1
  118. package/dist/transaction.cjs +6 -4
  119. package/dist/transaction.cjs.map +1 -1
  120. package/dist/transaction.js +1 -2
  121. package/dist/transaction.js.map +1 -1
  122. package/dist/user/index.d.ts +0 -1
  123. package/dist/user/index.d.ts.map +1 -1
  124. package/dist/user-status/index.d.ts +0 -1
  125. package/dist/user-status/index.d.ts.map +1 -1
  126. package/dist/user-status.cjs +0 -25
  127. package/dist/user-status.cjs.map +1 -1
  128. package/dist/user-status.js +0 -1
  129. package/dist/user-status.js.map +1 -1
  130. package/dist/user.cjs +209 -29
  131. package/dist/user.cjs.map +1 -1
  132. package/dist/user.js +211 -3
  133. package/dist/user.js.map +1 -1
  134. package/dist/web3/application/web3-application.service.d.ts +12 -0
  135. package/dist/web3/application/web3-application.service.d.ts.map +1 -1
  136. package/dist/web3/index.d.ts +2 -1
  137. package/dist/web3/index.d.ts.map +1 -1
  138. package/dist/web3-chain/index.d.ts +0 -1
  139. package/dist/web3-chain/index.d.ts.map +1 -1
  140. package/dist/web3-chain.cjs +14 -29
  141. package/dist/web3-chain.cjs.map +1 -1
  142. package/dist/web3-chain.js +16 -3
  143. package/dist/web3-chain.js.map +1 -1
  144. package/dist/web3-manager.cjs +13 -0
  145. package/dist/web3-manager.cjs.map +1 -0
  146. package/dist/web3-manager.js +7 -0
  147. package/dist/web3-manager.js.map +1 -0
  148. package/dist/web3.cjs +10 -6
  149. package/dist/web3.cjs.map +1 -1
  150. package/dist/web3.js +4 -1
  151. package/dist/web3.js.map +1 -1
  152. package/package.json +6 -18
  153. package/dist/chunks/analytics-service-CitlimKJ.cjs +0 -49
  154. package/dist/chunks/analytics-service-CitlimKJ.cjs.map +0 -1
  155. package/dist/chunks/analytics-service-CxyrOwel.js +0 -46
  156. package/dist/chunks/analytics-service-CxyrOwel.js.map +0 -1
  157. package/dist/chunks/campaign-service-CdEz0jpP.cjs +0 -435
  158. package/dist/chunks/campaign-service-CdEz0jpP.cjs.map +0 -1
  159. package/dist/chunks/campaign-service-DrTAqFZM.js +0 -432
  160. package/dist/chunks/campaign-service-DrTAqFZM.js.map +0 -1
  161. package/dist/chunks/donation-service--6cnTvWq.cjs +0 -54
  162. package/dist/chunks/donation-service--6cnTvWq.cjs.map +0 -1
  163. package/dist/chunks/donation-service-xiXZ2Eto.js +0 -51
  164. package/dist/chunks/donation-service-xiXZ2Eto.js.map +0 -1
  165. package/dist/chunks/explorer.utils-BkS3k8hX.js.map +0 -1
  166. package/dist/chunks/explorer.utils-Cx3wrqAj.cjs.map +0 -1
  167. package/dist/chunks/index-BtDNXaFq.js +0 -13
  168. package/dist/chunks/index-BtDNXaFq.js.map +0 -1
  169. package/dist/chunks/index-CMk3Aqkk.cjs +0 -15
  170. package/dist/chunks/index-CMk3Aqkk.cjs.map +0 -1
  171. package/dist/chunks/pers-sdk-JIExM712.js.map +0 -1
  172. package/dist/chunks/pers-sdk-h-uoLpBx.cjs.map +0 -1
  173. package/dist/chunks/transaction-request.builder-DltmruUC.js +0 -296
  174. package/dist/chunks/transaction-request.builder-DltmruUC.js.map +0 -1
  175. package/dist/chunks/transaction-request.builder-DrqTWcyC.cjs +0 -303
  176. package/dist/chunks/transaction-request.builder-DrqTWcyC.cjs.map +0 -1
  177. package/dist/chunks/transaction-service-BcJfyCcq.cjs.map +0 -1
  178. package/dist/chunks/transaction-service-CnOD3scu.js.map +0 -1
  179. package/dist/chunks/user-service-BGP3SZpk.js +0 -212
  180. package/dist/chunks/user-service-BGP3SZpk.js.map +0 -1
  181. package/dist/chunks/user-service-gITOx4qj.cjs +0 -215
  182. package/dist/chunks/user-service-gITOx4qj.cjs.map +0 -1
  183. package/dist/chunks/web3-chain-service-BeBjALg2.cjs.map +0 -1
  184. package/dist/chunks/web3-chain-service-DKHCnHQX.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { TransactionRole } from '@explorins/pers-shared';
1
+ import { TransactionRole, Web3TransactionType, AccountOwnerType } from '@explorins/pers-shared';
2
2
  import { b as buildPaginationParams } from './pagination-utils-9vQ-Npkr.js';
3
3
 
4
4
  /**
@@ -366,5 +366,348 @@ class TransactionService {
366
366
  }
367
367
  }
368
368
 
369
- export { TransactionApi as T, TransactionService as a };
370
- //# sourceMappingURL=transaction-service-CnOD3scu.js.map
369
+ /**
370
+ * Client-side transaction types extending backend Web3TransactionType
371
+ * Includes client-specific flows like pending submissions (POS flow)
372
+ *
373
+ * Pattern follows loyalty app: extend Web3TransactionType with client-side types
374
+ */
375
+ const ClientTransactionType = {
376
+ ...Web3TransactionType,
377
+ /** Transaction signed by user, pending business submission (POS QR flow) */
378
+ PENDING_SUBMISSION: 'PENDING_SUBMISSION',
379
+ };
380
+ /**
381
+ * Helper to extract deadline from transaction signing data
382
+ * Works with EIP-712 typed data structure from counterfactual wallet
383
+ *
384
+ * @param signingData - The signing data from TransactionSigningResult
385
+ * @returns Deadline timestamp in seconds, or null if not found
386
+ */
387
+ function extractDeadlineFromSigningData(signingData) {
388
+ if (!signingData || typeof signingData !== 'object')
389
+ return null;
390
+ const data = signingData;
391
+ // Check typedData.message.deadline (EIP-712 standard location)
392
+ if (data.typedData?.message?.deadline) {
393
+ return data.typedData.message.deadline;
394
+ }
395
+ // Check metadata.deadline (alternative location)
396
+ if (data.metadata?.deadline) {
397
+ return data.metadata.deadline;
398
+ }
399
+ return null;
400
+ }
401
+ /**
402
+ * Build pending transaction data for transfer to business
403
+ * Returns properly typed object ready for serialization (QR code, NFC, deep link, etc.)
404
+ *
405
+ * Pattern from loyalty app: scan.component.ts
406
+ *
407
+ * @param transactionId - Transaction ID from signing result
408
+ * @param signature - User's signature from WebAuthn
409
+ * @param transactionFormat - Format (e.g., 'EIP-712')
410
+ * @returns Typed object with txType set to PENDING_SUBMISSION
411
+ */
412
+ function buildPendingTransactionData(transactionId, signature, transactionFormat = 'EIP-712') {
413
+ return {
414
+ transactionId,
415
+ signature,
416
+ transactionFormat,
417
+ txType: ClientTransactionType.PENDING_SUBMISSION,
418
+ };
419
+ }
420
+ // ============================================================================
421
+ // SHARED HELPERS (internal)
422
+ // ============================================================================
423
+ function buildTokenSelector(data) {
424
+ return {
425
+ contractAddress: data.contractAddress,
426
+ chainId: data.chainId,
427
+ // Only include contractTokenId if it's not null (for NFTs)
428
+ ...(data.contractTokenId !== null && data.contractTokenId !== undefined && {
429
+ contractTokenId: String(data.contractTokenId)
430
+ })
431
+ };
432
+ }
433
+ function buildAccountSelector(data) {
434
+ return {
435
+ // ✅ Always prefer accountId and accountType when available
436
+ accountId: data.accountId,
437
+ accountType: data.accountType,
438
+ // ⚠️ Only use accountAddress as fallback if no account info available
439
+ ...((!data.accountId && data.accountAddress) && {
440
+ accountAddress: data.accountAddress
441
+ })
442
+ };
443
+ }
444
+ // ============================================================================
445
+ // PUBLIC FACTORY FUNCTIONS
446
+ // ============================================================================
447
+ /**
448
+ * 🎯 Build a MINT transaction request (admin/business endpoint)
449
+ * Creates tokens and assigns them to a recipient account
450
+ *
451
+ * @example
452
+ * ```typescript
453
+ * const request = buildMintRequest({
454
+ * amount: 100,
455
+ * contractAddress: '0x...',
456
+ * chainId: 137,
457
+ * recipientAccountId: 'user-123',
458
+ * recipientAccountType: AccountOwnerType.USER,
459
+ * engagedBusinessId: 'business-456' // optional: for tracking which business triggered the mint
460
+ * });
461
+ * ```
462
+ */
463
+ function buildMintRequest(data) {
464
+ return {
465
+ web3TransactionType: Web3TransactionType.MINT,
466
+ amount: Math.round(data.amount),
467
+ token: buildTokenSelector(data),
468
+ ...(data.recipientAccountId || data.recipientAccountType || data.recipientAccountAddress) && {
469
+ recipient: buildAccountSelector({
470
+ accountId: data.recipientAccountId,
471
+ accountType: data.recipientAccountType,
472
+ accountAddress: data.recipientAccountAddress
473
+ })
474
+ },
475
+ ...(data.engagedBusinessId && { engagedBusinessId: data.engagedBusinessId })
476
+ };
477
+ }
478
+ /**
479
+ * 🎯 Build a BURN transaction request
480
+ * For auth endpoint: sender is handled automatically by backend
481
+ * For admin endpoint: provide senderAccountId/Type to burn on behalf of user
482
+ *
483
+ * @example
484
+ * ```typescript
485
+ * // Auth endpoint (sender auto-resolved)
486
+ * const request = buildBurnRequest({
487
+ * amount: 50,
488
+ * contractAddress: '0x...',
489
+ * chainId: 137
490
+ * });
491
+ *
492
+ * // Admin endpoint (explicit sender)
493
+ * const request = buildBurnRequest({
494
+ * amount: 50,
495
+ * contractAddress: '0x...',
496
+ * chainId: 137,
497
+ * senderAccountId: 'user-123',
498
+ * senderAccountType: AccountOwnerType.USER
499
+ * });
500
+ *
501
+ * // POS burn (business submits on behalf of user)
502
+ * const request = buildBurnRequest({
503
+ * amount: 50,
504
+ * contractAddress: '0x...',
505
+ * chainId: 137,
506
+ * engagedBusinessId: 'business-456',
507
+ * authorizedSubmitterId: 'business-456',
508
+ * authorizedSubmitterType: AccountOwnerType.BUSINESS
509
+ * });
510
+ * ```
511
+ */
512
+ function buildBurnRequest(data) {
513
+ return {
514
+ web3TransactionType: Web3TransactionType.BURN,
515
+ amount: Math.round(data.amount),
516
+ token: buildTokenSelector(data),
517
+ // Only include sender if an identifier is provided (for admin burns)
518
+ ...(data.senderAccountId || data.senderAccountAddress) && {
519
+ sender: buildAccountSelector({
520
+ accountId: data.senderAccountId,
521
+ accountType: data.senderAccountType || AccountOwnerType.USER,
522
+ accountAddress: data.senderAccountAddress
523
+ })
524
+ },
525
+ // POS authorization fields
526
+ ...(data.engagedBusinessId && { engagedBusinessId: data.engagedBusinessId }),
527
+ ...(data.authorizedSubmitterId && { authorizedSubmitterId: data.authorizedSubmitterId }),
528
+ ...(data.authorizedSubmitterType && { authorizedSubmitterType: data.authorizedSubmitterType })
529
+ };
530
+ }
531
+ /**
532
+ * 🎯 Build a TRANSFER transaction request (business endpoint)
533
+ * Transfers tokens between accounts
534
+ *
535
+ * @example Basic Transfer
536
+ * ```typescript
537
+ * const request = buildTransferRequest({
538
+ * amount: 25,
539
+ * contractAddress: '0x...',
540
+ * chainId: 137,
541
+ * senderAccountId: 'user-123',
542
+ * senderAccountType: AccountOwnerType.USER,
543
+ * recipientAccountId: 'business-456',
544
+ * recipientAccountType: AccountOwnerType.BUSINESS
545
+ * });
546
+ * ```
547
+ *
548
+ * @example POS Flow (Business submits on behalf of User)
549
+ * ```typescript
550
+ * const request = buildTransferRequest({
551
+ * amount: 25,
552
+ * contractAddress: '0x...',
553
+ * chainId: 137,
554
+ * senderAccountId: 'user-123',
555
+ * senderAccountType: AccountOwnerType.USER,
556
+ * recipientAccountId: 'business-456',
557
+ * recipientAccountType: AccountOwnerType.BUSINESS,
558
+ * // POS authorization - allows business to submit the signed transaction
559
+ * engagedBusinessId: 'business-456',
560
+ * authorizedSubmitterId: 'business-456',
561
+ * authorizedSubmitterType: AccountOwnerType.BUSINESS
562
+ * });
563
+ * ```
564
+ */
565
+ function buildTransferRequest(data) {
566
+ return {
567
+ web3TransactionType: Web3TransactionType.TRANSFER,
568
+ amount: Math.round(data.amount),
569
+ token: buildTokenSelector(data),
570
+ ...(data.senderAccountId || data.senderAccountType || data.senderAccountAddress) && {
571
+ sender: buildAccountSelector({
572
+ accountId: data.senderAccountId,
573
+ accountType: data.senderAccountType,
574
+ accountAddress: data.senderAccountAddress
575
+ })
576
+ },
577
+ ...(data.recipientAccountId || data.recipientAccountType || data.recipientAccountAddress) && {
578
+ recipient: buildAccountSelector({
579
+ accountId: data.recipientAccountId,
580
+ accountType: data.recipientAccountType,
581
+ accountAddress: data.recipientAccountAddress
582
+ })
583
+ },
584
+ // POS authorization fields
585
+ ...(data.engagedBusinessId && { engagedBusinessId: data.engagedBusinessId }),
586
+ ...(data.authorizedSubmitterId && { authorizedSubmitterId: data.authorizedSubmitterId }),
587
+ ...(data.authorizedSubmitterType && { authorizedSubmitterType: data.authorizedSubmitterType })
588
+ };
589
+ }
590
+ /**
591
+ * 🎯 Build a transaction submission request from QR code parameters
592
+ * Handles the logic of mapping signature to the correct field based on transaction format.
593
+ *
594
+ * @example
595
+ * ```typescript
596
+ * const request = buildSubmissionRequest({
597
+ * transactionId: 'tx-123',
598
+ * transactionFormat: 'EIP-712',
599
+ * signature: '0x...'
600
+ * });
601
+ * ```
602
+ */
603
+ function buildSubmissionRequest(params) {
604
+ return {
605
+ transactionId: params.transactionId,
606
+ type: params.transactionFormat,
607
+ signature: params.transactionFormat === 'EIP-712' ? params.signature : undefined,
608
+ signedTransaction: params.transactionFormat !== 'EIP-712' ? params.signature : undefined,
609
+ };
610
+ }
611
+ /**
612
+ * 🎯 Build a POS TRANSFER transaction request
613
+ * Convenience function for POS (Point of Sale) scenarios where a business
614
+ * submits a transaction on behalf of a user.
615
+ *
616
+ * This sets up the authorization fields correctly so the business can submit
617
+ * the user-signed transaction.
618
+ *
619
+ * @example POS Flow
620
+ * ```typescript
621
+ * // Step 1: Create POS transaction (user to business)
622
+ * const request = buildPOSTransferRequest({
623
+ * amount: 100,
624
+ * contractAddress: '0x...',
625
+ * chainId: 137,
626
+ * userId: 'user-123',
627
+ * businessId: 'business-456'
628
+ * });
629
+ *
630
+ * // Step 2: Prepare and get signing data
631
+ * const response = await sdk.transactions.prepareClientSignedTransaction(request);
632
+ *
633
+ * // Step 3: User signs the transaction
634
+ * const signature = await userWallet.signTypedData(response.signingData);
635
+ *
636
+ * // Step 4: Business submits the signed transaction
637
+ * await sdk.transactions.submitSignedTransaction({
638
+ * transactionId: response.transaction.id,
639
+ * type: 'EIP_712',
640
+ * signature
641
+ * });
642
+ * ```
643
+ */
644
+ function buildPOSTransferRequest(data) {
645
+ return buildTransferRequest({
646
+ amount: data.amount,
647
+ contractAddress: data.contractAddress,
648
+ contractTokenId: data.contractTokenId,
649
+ chainId: data.chainId,
650
+ senderAccountId: data.userId,
651
+ senderAccountType: AccountOwnerType.USER,
652
+ senderAccountAddress: data.userAccountAddress,
653
+ recipientAccountId: data.businessId,
654
+ recipientAccountType: AccountOwnerType.BUSINESS,
655
+ recipientAccountAddress: data.businessAccountAddress,
656
+ // POS authorization - business is engaged and authorized to submit
657
+ engagedBusinessId: data.businessId,
658
+ authorizedSubmitterId: data.businessId,
659
+ authorizedSubmitterType: AccountOwnerType.BUSINESS
660
+ });
661
+ }
662
+ /**
663
+ * 🎯 Build a POS BURN transaction request
664
+ * Convenience function for POS scenarios where a business facilitates
665
+ * a user burning tokens (e.g., redeeming rewards at point of sale).
666
+ *
667
+ * This sets up the authorization fields correctly so the business can submit
668
+ * the user-signed burn transaction.
669
+ *
670
+ * @example POS Burn Flow
671
+ * ```typescript
672
+ * // Step 1: Create POS burn transaction
673
+ * const request = buildPOSBurnRequest({
674
+ * amount: 1,
675
+ * contractAddress: '0x...',
676
+ * contractTokenId: '123', // NFT token ID
677
+ * chainId: 137,
678
+ * userId: 'user-123',
679
+ * businessId: 'business-456'
680
+ * });
681
+ *
682
+ * // Step 2: Prepare and get signing data
683
+ * const response = await sdk.transactions.prepareClientSignedTransaction(request);
684
+ *
685
+ * // Step 3: User signs the transaction
686
+ * const signature = await userWallet.signTypedData(response.signingData);
687
+ *
688
+ * // Step 4: Business submits the signed transaction
689
+ * await sdk.transactions.submitSignedTransaction({
690
+ * transactionId: response.transaction.id,
691
+ * type: 'EIP_712',
692
+ * signature
693
+ * });
694
+ * ```
695
+ */
696
+ function buildPOSBurnRequest(data) {
697
+ return buildBurnRequest({
698
+ amount: data.amount,
699
+ contractAddress: data.contractAddress,
700
+ contractTokenId: data.contractTokenId,
701
+ chainId: data.chainId,
702
+ senderAccountId: data.userId,
703
+ senderAccountType: AccountOwnerType.USER,
704
+ senderAccountAddress: data.userAccountAddress,
705
+ // POS authorization - business is engaged and authorized to submit
706
+ engagedBusinessId: data.businessId,
707
+ authorizedSubmitterId: data.businessId,
708
+ authorizedSubmitterType: AccountOwnerType.BUSINESS
709
+ });
710
+ }
711
+
712
+ export { ClientTransactionType as C, TransactionApi as T, TransactionService as a, buildPendingTransactionData as b, buildMintRequest as c, buildBurnRequest as d, extractDeadlineFromSigningData as e, buildTransferRequest as f, buildPOSTransferRequest as g, buildPOSBurnRequest as h, buildSubmissionRequest as i };
713
+ //# sourceMappingURL=transaction-request.builder-C1vVVFto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-request.builder-C1vVVFto.js","sources":["../../src/transaction/api/transaction-api.ts","../../src/transaction/services/transaction-service.ts","../../src/transaction/models/transaction-request.builder.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":"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"}
@@ -0,0 +1,224 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-B-g2JPVK.cjs');
4
+ var index$1 = require('./index-B6-bbNnd.cjs');
5
+ var ethers = require('@explorins/web3-ts/ethers');
6
+
7
+ /**
8
+ * Platform-Agnostic Web3 Chain API Client
9
+ *
10
+ * Handles blockchain chain operations using the PERS backend.
11
+ * Uses @explorins/web3-ts types for perfect framework compatibility.
12
+ */
13
+ class Web3ChainApi {
14
+ constructor(apiClient) {
15
+ this.apiClient = apiClient;
16
+ this.basePath = '/chains';
17
+ }
18
+ // ==========================================
19
+ // PUBLIC OPERATIONS
20
+ // ==========================================
21
+ /**
22
+ * PUBLIC: Get chain data by chain ID
23
+ */
24
+ async getChainData(chainId) {
25
+ try {
26
+ const response = await this.apiClient.get(`${this.basePath}/${chainId}`);
27
+ if (!response) {
28
+ throw new Error(`No chain data received for chainId: ${chainId}`);
29
+ }
30
+ return response;
31
+ }
32
+ catch (error) {
33
+ console.error('[Web3ChainApi] Failed to get chain data:', {
34
+ chainId,
35
+ error: error instanceof Error ? error.message : String(error)
36
+ });
37
+ throw error;
38
+ }
39
+ }
40
+ }
41
+
42
+ /**
43
+ * Create Web3 provider from chain data
44
+ * Synchronous function for immediate provider creation
45
+ */
46
+ const getWeb3ProviderFromChainData = (chainData, timeout = 15000, customUserAgentName = '', tokenRefresher) => {
47
+ let ethersProvider;
48
+ if (chainData.authHeader) {
49
+ // Authenticated provider for private chains
50
+ const fetchRequest = new ethers.FetchRequest(chainData.rpcUrl);
51
+ fetchRequest.timeout = timeout;
52
+ // Handle auth header format
53
+ const authValue = chainData.authHeader.startsWith('Bearer ')
54
+ ? chainData.authHeader
55
+ : `Bearer ${chainData.authHeader}`;
56
+ fetchRequest.setHeader('Authorization', authValue);
57
+ fetchRequest.setHeader('Content-Type', 'application/json');
58
+ fetchRequest.setHeader('Accept', 'application/json');
59
+ if (customUserAgentName) {
60
+ fetchRequest.setHeader('User-Agent', customUserAgentName);
61
+ }
62
+ ethersProvider = new ethers.JsonRpcProvider(fetchRequest, chainData.chainId, {
63
+ staticNetwork: true, // Prevent eth_chainId calls - we know the chain
64
+ polling: false,
65
+ batchMaxCount: 1, // Disable batching for private chains
66
+ });
67
+ }
68
+ else {
69
+ // Public provider for public chains
70
+ ethersProvider = new ethers.JsonRpcProvider(chainData.rpcUrl, chainData.chainId, {
71
+ staticNetwork: true, // Prevent eth_chainId calls - we know the chain
72
+ polling: false,
73
+ });
74
+ }
75
+ return ethersProvider;
76
+ };
77
+ /**
78
+ * Async wrapper with retry logic for higher-level usage
79
+ */
80
+ const getWeb3ProviderWithRetry = async (chainData, timeout = 15000, customUserAgentName = '', tokenRefresher, retryConfig = { maxAttempts: 3, baseDelay: 1000, maxDelay: 8000 }) => {
81
+ let lastError = null;
82
+ for (let attempt = 1; attempt <= retryConfig.maxAttempts; attempt++) {
83
+ try {
84
+ const provider = getWeb3ProviderFromChainData(chainData, timeout, customUserAgentName, tokenRefresher);
85
+ await validateChainConnection(provider, chainData.authHeader ? 'private' : 'public');
86
+ return provider;
87
+ }
88
+ catch (error) {
89
+ lastError = error instanceof Error ? error : new Error(String(error));
90
+ // Stop retrying on auth errors for authenticated chains
91
+ if (index.ApiErrorDetector.isAuthError(lastError) && chainData.authHeader) {
92
+ break;
93
+ }
94
+ if (attempt === retryConfig.maxAttempts)
95
+ break;
96
+ const delay = Math.min(retryConfig.baseDelay * Math.pow(2, attempt - 1), retryConfig.maxDelay);
97
+ await sleep(delay);
98
+ }
99
+ }
100
+ throw new Error(`Failed to create Web3 provider after ${retryConfig.maxAttempts} attempts. Last error: ${lastError?.message}`);
101
+ };
102
+ async function validateChainConnection(provider, chainType) {
103
+ try {
104
+ // Lightweight test using eth_chainId (works for both public and private)
105
+ const timeoutPromise = new Promise((_, reject) => {
106
+ setTimeout(() => reject(new Error(`${chainType} chain validation timeout`)), 3000);
107
+ });
108
+ const chainIdPromise = provider.send('eth_chainId', []);
109
+ await Promise.race([chainIdPromise, timeoutPromise]);
110
+ }
111
+ catch (error) {
112
+ // Fallback: try net_version if chainId fails
113
+ try {
114
+ const timeoutPromise = new Promise((_, reject) => {
115
+ setTimeout(() => reject(new Error(`${chainType} chain fallback validation timeout`)), 3000);
116
+ });
117
+ const versionPromise = provider.send('net_version', []);
118
+ await Promise.race([versionPromise, timeoutPromise]);
119
+ }
120
+ catch (fallbackError) {
121
+ throw new Error(`${chainType} chain validation failed: ${error instanceof Error ? error.message : String(error)}`);
122
+ }
123
+ }
124
+ }
125
+ function sleep(ms) {
126
+ return new Promise(resolve => setTimeout(resolve, ms));
127
+ }
128
+
129
+ class Web3ChainService {
130
+ constructor(web3ChainApi) {
131
+ this.web3ChainApi = web3ChainApi;
132
+ this.cache = index$1.globalCacheService.createNamespace('web3-chain');
133
+ }
134
+ async getEthersProviderByChainId(chainId) {
135
+ const cacheKey = `provider:${chainId}`;
136
+ // Check if we have a valid cached provider
137
+ const cached = this.cache.get(cacheKey);
138
+ if (cached && !this.checkIsTokenExpired(cached.chainData.authHeader)) {
139
+ return cached.provider;
140
+ }
141
+ try {
142
+ // Create new provider instance
143
+ const { provider, chainData } = await this.createProviderInstance(chainId);
144
+ // Cache the provider with chain data
145
+ const cacheEntry = {
146
+ provider,
147
+ chainData,
148
+ createdAt: Date.now(),
149
+ chainId
150
+ };
151
+ this.cache.set(cacheKey, cacheEntry, index$1.CacheTTL.PROVIDER);
152
+ return provider;
153
+ }
154
+ catch (error) {
155
+ // ✅ AUTH ERROR RECOVERY: Clear cache and retry once
156
+ if (index.ApiErrorDetector.isAuthError(error)) {
157
+ this.cache.delete(cacheKey);
158
+ // Retry once with fresh instance
159
+ const { provider, chainData } = await this.createProviderInstance(chainId);
160
+ const cacheEntry = {
161
+ provider,
162
+ chainData,
163
+ createdAt: Date.now(),
164
+ chainId
165
+ };
166
+ this.cache.set(cacheKey, cacheEntry, index$1.CacheTTL.PROVIDER);
167
+ return provider;
168
+ }
169
+ throw error;
170
+ }
171
+ }
172
+ async createProviderInstance(chainId) {
173
+ const chainData = await this.getChainDataWithCache(chainId);
174
+ if (!chainData) {
175
+ throw new Error(`Chain data not found for chainId: ${chainId}`);
176
+ }
177
+ const provider = await getWeb3ProviderWithRetry(chainData);
178
+ return { provider, chainData };
179
+ }
180
+ async getChainDataWithCache(chainId) {
181
+ const cacheKey = `chainData:${chainId}`;
182
+ // First check if we have it in the provider cache (includes token validation)
183
+ const providerCached = this.cache.get(`provider:${chainId}`);
184
+ if (providerCached && !this.checkIsTokenExpired(providerCached.chainData.authHeader)) {
185
+ return providerCached.chainData;
186
+ }
187
+ // Otherwise use getOrSet for chainData only
188
+ return this.cache.getOrSet(cacheKey, async () => {
189
+ const chainData = await this.web3ChainApi.getChainData(chainId);
190
+ if (!chainData) {
191
+ throw new Error(`Chain data not found for chainId: ${chainId}`);
192
+ }
193
+ return chainData;
194
+ }, index$1.CacheTTL.MEDIUM // 30 minutes for chain data
195
+ );
196
+ }
197
+ checkIsTokenExpired(authHeader) {
198
+ // NULL CHECK: Handle undefined case
199
+ if (!authHeader) {
200
+ return false; // No token means no expiration (public chains)
201
+ }
202
+ // FUNCTION CALL: Use imported function, not method
203
+ return index.isTokenExpired(authHeader);
204
+ }
205
+ /**
206
+ * Clear all cached providers and chain data
207
+ * Useful for logout scenarios or when authentication context changes
208
+ */
209
+ clearCache() {
210
+ this.cache.clear();
211
+ }
212
+ /**
213
+ * Clear cache for a specific chain
214
+ * Useful when a specific chain's authentication fails
215
+ */
216
+ clearCacheForChain(chainId) {
217
+ this.cache.delete(`provider:${chainId}`);
218
+ this.cache.delete(`chainData:${chainId}`);
219
+ }
220
+ }
221
+
222
+ exports.Web3ChainApi = Web3ChainApi;
223
+ exports.Web3ChainService = Web3ChainService;
224
+ //# sourceMappingURL=web3-chain-service-D68-0WaW.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web3-chain-service-D68-0WaW.cjs","sources":["../../src/web3-chain/api/web3-chain-api.ts","../../src/web3-chain/services/getWeb3FCD.service.ts","../../src/web3-chain/services/web3-chain-service.ts"],"sourcesContent":[null,null,null],"names":["FetchRequest","JsonRpcProvider","ApiErrorDetector","globalCacheService","CacheTTL","isTokenExpired"],"mappings":"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"}