@explorins/pers-sdk 2.0.11 → 2.1.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 (56) hide show
  1. package/README.md +2 -2
  2. package/dist/chunks/{pers-sdk-Dr9W8stD.cjs → pers-sdk-D5lE9ZFW.cjs} +69 -6
  3. package/dist/chunks/pers-sdk-D5lE9ZFW.cjs.map +1 -0
  4. package/dist/chunks/{pers-sdk-DYnIZvcx.js → pers-sdk-DnLw822h.js} +67 -4
  5. package/dist/chunks/pers-sdk-DnLw822h.js.map +1 -0
  6. package/dist/chunks/{transaction-service-BcJfyCcq.cjs → transaction-request.builder-BpgtuMMq.cjs} +353 -1
  7. package/dist/chunks/transaction-request.builder-BpgtuMMq.cjs.map +1 -0
  8. package/dist/chunks/{transaction-service-CnOD3scu.js → transaction-request.builder-C1vVVFto.js} +346 -3
  9. package/dist/chunks/transaction-request.builder-C1vVVFto.js.map +1 -0
  10. package/dist/chunks/web3-manager-C_cFaMCm.cjs.map +1 -1
  11. package/dist/chunks/web3-manager-OExwBWB7.js.map +1 -1
  12. package/dist/core/auth/auth-status.d.ts +5 -1
  13. package/dist/core/auth/auth-status.d.ts.map +1 -1
  14. package/dist/core/events/event-types.d.ts +21 -1
  15. package/dist/core/events/event-types.d.ts.map +1 -1
  16. package/dist/core/events/index.d.ts +1 -1
  17. package/dist/core/events/index.d.ts.map +1 -1
  18. package/dist/core/pers-config.d.ts +18 -0
  19. package/dist/core/pers-config.d.ts.map +1 -1
  20. package/dist/core/version.d.ts +2 -2
  21. package/dist/core.cjs +2 -2
  22. package/dist/core.js +2 -2
  23. package/dist/index.cjs +7 -5
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.js +2 -3
  26. package/dist/index.js.map +1 -1
  27. package/dist/managers/web3-manager.d.ts +1 -12
  28. package/dist/managers/web3-manager.d.ts.map +1 -1
  29. package/dist/node.cjs +2 -2
  30. package/dist/node.js +2 -2
  31. package/dist/package.json +1 -1
  32. package/dist/pers-sdk.d.ts +15 -0
  33. package/dist/pers-sdk.d.ts.map +1 -1
  34. package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts +25 -0
  35. package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts.map +1 -1
  36. package/dist/transaction/index.d.ts +2 -0
  37. package/dist/transaction/index.d.ts.map +1 -1
  38. package/dist/transaction/models/transaction-request.builder.d.ts +55 -5
  39. package/dist/transaction/models/transaction-request.builder.d.ts.map +1 -1
  40. package/dist/transaction.cjs +6 -4
  41. package/dist/transaction.cjs.map +1 -1
  42. package/dist/transaction.js +1 -2
  43. package/dist/transaction.js.map +1 -1
  44. package/dist/web3/application/web3-application.service.d.ts +12 -0
  45. package/dist/web3/application/web3-application.service.d.ts.map +1 -1
  46. package/dist/web3/index.d.ts +1 -1
  47. package/dist/web3/index.d.ts.map +1 -1
  48. package/package.json +1 -1
  49. package/dist/chunks/pers-sdk-DYnIZvcx.js.map +0 -1
  50. package/dist/chunks/pers-sdk-Dr9W8stD.cjs.map +0 -1
  51. package/dist/chunks/transaction-request.builder-BwWmfHXm.cjs +0 -303
  52. package/dist/chunks/transaction-request.builder-BwWmfHXm.cjs.map +0 -1
  53. package/dist/chunks/transaction-request.builder-C1FPWmYN.js +0 -296
  54. package/dist/chunks/transaction-request.builder-C1FPWmYN.js.map +0 -1
  55. package/dist/chunks/transaction-service-BcJfyCcq.cjs.map +0 -1
  56. package/dist/chunks/transaction-service-CnOD3scu.js.map +0 -1
@@ -368,6 +368,358 @@ class TransactionService {
368
368
  }
369
369
  }
370
370
 
371
+ /**
372
+ * Client-side transaction types extending backend Web3TransactionType
373
+ * Includes client-specific flows like pending submissions (POS flow)
374
+ *
375
+ * Pattern follows loyalty app: extend Web3TransactionType with client-side types
376
+ */
377
+ const ClientTransactionType = {
378
+ ...persShared.Web3TransactionType,
379
+ /** Transaction signed by user, pending business submission (POS QR flow) */
380
+ PENDING_SUBMISSION: 'PENDING_SUBMISSION',
381
+ };
382
+ /**
383
+ * Helper to extract deadline from transaction signing data
384
+ * Works with EIP-712 typed data structure from counterfactual wallet
385
+ *
386
+ * @param signingData - The signing data from TransactionSigningResult
387
+ * @returns Deadline timestamp in seconds, or null if not found
388
+ */
389
+ function extractDeadlineFromSigningData(signingData) {
390
+ if (!signingData || typeof signingData !== 'object')
391
+ return null;
392
+ const data = signingData;
393
+ // Check typedData.message.deadline (EIP-712 standard location)
394
+ if (data.typedData?.message?.deadline) {
395
+ return data.typedData.message.deadline;
396
+ }
397
+ // Check metadata.deadline (alternative location)
398
+ if (data.metadata?.deadline) {
399
+ return data.metadata.deadline;
400
+ }
401
+ return null;
402
+ }
403
+ /**
404
+ * Build pending transaction data for transfer to business
405
+ * Returns properly typed object ready for serialization (QR code, NFC, deep link, etc.)
406
+ *
407
+ * Pattern from loyalty app: scan.component.ts
408
+ *
409
+ * @param transactionId - Transaction ID from signing result
410
+ * @param signature - User's signature from WebAuthn
411
+ * @param transactionFormat - Format (e.g., 'EIP-712')
412
+ * @returns Typed object with txType set to PENDING_SUBMISSION
413
+ */
414
+ function buildPendingTransactionData(transactionId, signature, transactionFormat = 'EIP-712') {
415
+ return {
416
+ transactionId,
417
+ signature,
418
+ transactionFormat,
419
+ txType: ClientTransactionType.PENDING_SUBMISSION,
420
+ };
421
+ }
422
+ // ============================================================================
423
+ // SHARED HELPERS (internal)
424
+ // ============================================================================
425
+ function buildTokenSelector(data) {
426
+ return {
427
+ contractAddress: data.contractAddress,
428
+ chainId: data.chainId,
429
+ // Only include contractTokenId if it's not null (for NFTs)
430
+ ...(data.contractTokenId !== null && data.contractTokenId !== undefined && {
431
+ contractTokenId: String(data.contractTokenId)
432
+ })
433
+ };
434
+ }
435
+ function buildAccountSelector(data) {
436
+ return {
437
+ // ✅ Always prefer accountId and accountType when available
438
+ accountId: data.accountId,
439
+ accountType: data.accountType,
440
+ // ⚠️ Only use accountAddress as fallback if no account info available
441
+ ...((!data.accountId && data.accountAddress) && {
442
+ accountAddress: data.accountAddress
443
+ })
444
+ };
445
+ }
446
+ // ============================================================================
447
+ // PUBLIC FACTORY FUNCTIONS
448
+ // ============================================================================
449
+ /**
450
+ * 🎯 Build a MINT transaction request (admin/business endpoint)
451
+ * Creates tokens and assigns them to a recipient account
452
+ *
453
+ * @example
454
+ * ```typescript
455
+ * const request = buildMintRequest({
456
+ * amount: 100,
457
+ * contractAddress: '0x...',
458
+ * chainId: 137,
459
+ * recipientAccountId: 'user-123',
460
+ * recipientAccountType: AccountOwnerType.USER,
461
+ * engagedBusinessId: 'business-456' // optional: for tracking which business triggered the mint
462
+ * });
463
+ * ```
464
+ */
465
+ function buildMintRequest(data) {
466
+ return {
467
+ web3TransactionType: persShared.Web3TransactionType.MINT,
468
+ amount: Math.round(data.amount),
469
+ token: buildTokenSelector(data),
470
+ ...(data.recipientAccountId || data.recipientAccountType || data.recipientAccountAddress) && {
471
+ recipient: buildAccountSelector({
472
+ accountId: data.recipientAccountId,
473
+ accountType: data.recipientAccountType,
474
+ accountAddress: data.recipientAccountAddress
475
+ })
476
+ },
477
+ ...(data.engagedBusinessId && { engagedBusinessId: data.engagedBusinessId })
478
+ };
479
+ }
480
+ /**
481
+ * 🎯 Build a BURN transaction request
482
+ * For auth endpoint: sender is handled automatically by backend
483
+ * For admin endpoint: provide senderAccountId/Type to burn on behalf of user
484
+ *
485
+ * @example
486
+ * ```typescript
487
+ * // Auth endpoint (sender auto-resolved)
488
+ * const request = buildBurnRequest({
489
+ * amount: 50,
490
+ * contractAddress: '0x...',
491
+ * chainId: 137
492
+ * });
493
+ *
494
+ * // Admin endpoint (explicit sender)
495
+ * const request = buildBurnRequest({
496
+ * amount: 50,
497
+ * contractAddress: '0x...',
498
+ * chainId: 137,
499
+ * senderAccountId: 'user-123',
500
+ * senderAccountType: AccountOwnerType.USER
501
+ * });
502
+ *
503
+ * // POS burn (business submits on behalf of user)
504
+ * const request = buildBurnRequest({
505
+ * amount: 50,
506
+ * contractAddress: '0x...',
507
+ * chainId: 137,
508
+ * engagedBusinessId: 'business-456',
509
+ * authorizedSubmitterId: 'business-456',
510
+ * authorizedSubmitterType: AccountOwnerType.BUSINESS
511
+ * });
512
+ * ```
513
+ */
514
+ function buildBurnRequest(data) {
515
+ return {
516
+ web3TransactionType: persShared.Web3TransactionType.BURN,
517
+ amount: Math.round(data.amount),
518
+ token: buildTokenSelector(data),
519
+ // Only include sender if an identifier is provided (for admin burns)
520
+ ...(data.senderAccountId || data.senderAccountAddress) && {
521
+ sender: buildAccountSelector({
522
+ accountId: data.senderAccountId,
523
+ accountType: data.senderAccountType || persShared.AccountOwnerType.USER,
524
+ accountAddress: data.senderAccountAddress
525
+ })
526
+ },
527
+ // POS authorization fields
528
+ ...(data.engagedBusinessId && { engagedBusinessId: data.engagedBusinessId }),
529
+ ...(data.authorizedSubmitterId && { authorizedSubmitterId: data.authorizedSubmitterId }),
530
+ ...(data.authorizedSubmitterType && { authorizedSubmitterType: data.authorizedSubmitterType })
531
+ };
532
+ }
533
+ /**
534
+ * 🎯 Build a TRANSFER transaction request (business endpoint)
535
+ * Transfers tokens between accounts
536
+ *
537
+ * @example Basic Transfer
538
+ * ```typescript
539
+ * const request = buildTransferRequest({
540
+ * amount: 25,
541
+ * contractAddress: '0x...',
542
+ * chainId: 137,
543
+ * senderAccountId: 'user-123',
544
+ * senderAccountType: AccountOwnerType.USER,
545
+ * recipientAccountId: 'business-456',
546
+ * recipientAccountType: AccountOwnerType.BUSINESS
547
+ * });
548
+ * ```
549
+ *
550
+ * @example POS Flow (Business submits on behalf of User)
551
+ * ```typescript
552
+ * const request = buildTransferRequest({
553
+ * amount: 25,
554
+ * contractAddress: '0x...',
555
+ * chainId: 137,
556
+ * senderAccountId: 'user-123',
557
+ * senderAccountType: AccountOwnerType.USER,
558
+ * recipientAccountId: 'business-456',
559
+ * recipientAccountType: AccountOwnerType.BUSINESS,
560
+ * // POS authorization - allows business to submit the signed transaction
561
+ * engagedBusinessId: 'business-456',
562
+ * authorizedSubmitterId: 'business-456',
563
+ * authorizedSubmitterType: AccountOwnerType.BUSINESS
564
+ * });
565
+ * ```
566
+ */
567
+ function buildTransferRequest(data) {
568
+ return {
569
+ web3TransactionType: persShared.Web3TransactionType.TRANSFER,
570
+ amount: Math.round(data.amount),
571
+ token: buildTokenSelector(data),
572
+ ...(data.senderAccountId || data.senderAccountType || data.senderAccountAddress) && {
573
+ sender: buildAccountSelector({
574
+ accountId: data.senderAccountId,
575
+ accountType: data.senderAccountType,
576
+ accountAddress: data.senderAccountAddress
577
+ })
578
+ },
579
+ ...(data.recipientAccountId || data.recipientAccountType || data.recipientAccountAddress) && {
580
+ recipient: buildAccountSelector({
581
+ accountId: data.recipientAccountId,
582
+ accountType: data.recipientAccountType,
583
+ accountAddress: data.recipientAccountAddress
584
+ })
585
+ },
586
+ // POS authorization fields
587
+ ...(data.engagedBusinessId && { engagedBusinessId: data.engagedBusinessId }),
588
+ ...(data.authorizedSubmitterId && { authorizedSubmitterId: data.authorizedSubmitterId }),
589
+ ...(data.authorizedSubmitterType && { authorizedSubmitterType: data.authorizedSubmitterType })
590
+ };
591
+ }
592
+ /**
593
+ * 🎯 Build a transaction submission request from QR code parameters
594
+ * Handles the logic of mapping signature to the correct field based on transaction format.
595
+ *
596
+ * @example
597
+ * ```typescript
598
+ * const request = buildSubmissionRequest({
599
+ * transactionId: 'tx-123',
600
+ * transactionFormat: 'EIP-712',
601
+ * signature: '0x...'
602
+ * });
603
+ * ```
604
+ */
605
+ function buildSubmissionRequest(params) {
606
+ return {
607
+ transactionId: params.transactionId,
608
+ type: params.transactionFormat,
609
+ signature: params.transactionFormat === 'EIP-712' ? params.signature : undefined,
610
+ signedTransaction: params.transactionFormat !== 'EIP-712' ? params.signature : undefined,
611
+ };
612
+ }
613
+ /**
614
+ * 🎯 Build a POS TRANSFER transaction request
615
+ * Convenience function for POS (Point of Sale) scenarios where a business
616
+ * submits a transaction on behalf of a user.
617
+ *
618
+ * This sets up the authorization fields correctly so the business can submit
619
+ * the user-signed transaction.
620
+ *
621
+ * @example POS Flow
622
+ * ```typescript
623
+ * // Step 1: Create POS transaction (user to business)
624
+ * const request = buildPOSTransferRequest({
625
+ * amount: 100,
626
+ * contractAddress: '0x...',
627
+ * chainId: 137,
628
+ * userId: 'user-123',
629
+ * businessId: 'business-456'
630
+ * });
631
+ *
632
+ * // Step 2: Prepare and get signing data
633
+ * const response = await sdk.transactions.prepareClientSignedTransaction(request);
634
+ *
635
+ * // Step 3: User signs the transaction
636
+ * const signature = await userWallet.signTypedData(response.signingData);
637
+ *
638
+ * // Step 4: Business submits the signed transaction
639
+ * await sdk.transactions.submitSignedTransaction({
640
+ * transactionId: response.transaction.id,
641
+ * type: 'EIP_712',
642
+ * signature
643
+ * });
644
+ * ```
645
+ */
646
+ function buildPOSTransferRequest(data) {
647
+ return buildTransferRequest({
648
+ amount: data.amount,
649
+ contractAddress: data.contractAddress,
650
+ contractTokenId: data.contractTokenId,
651
+ chainId: data.chainId,
652
+ senderAccountId: data.userId,
653
+ senderAccountType: persShared.AccountOwnerType.USER,
654
+ senderAccountAddress: data.userAccountAddress,
655
+ recipientAccountId: data.businessId,
656
+ recipientAccountType: persShared.AccountOwnerType.BUSINESS,
657
+ recipientAccountAddress: data.businessAccountAddress,
658
+ // POS authorization - business is engaged and authorized to submit
659
+ engagedBusinessId: data.businessId,
660
+ authorizedSubmitterId: data.businessId,
661
+ authorizedSubmitterType: persShared.AccountOwnerType.BUSINESS
662
+ });
663
+ }
664
+ /**
665
+ * 🎯 Build a POS BURN transaction request
666
+ * Convenience function for POS scenarios where a business facilitates
667
+ * a user burning tokens (e.g., redeeming rewards at point of sale).
668
+ *
669
+ * This sets up the authorization fields correctly so the business can submit
670
+ * the user-signed burn transaction.
671
+ *
672
+ * @example POS Burn Flow
673
+ * ```typescript
674
+ * // Step 1: Create POS burn transaction
675
+ * const request = buildPOSBurnRequest({
676
+ * amount: 1,
677
+ * contractAddress: '0x...',
678
+ * contractTokenId: '123', // NFT token ID
679
+ * chainId: 137,
680
+ * userId: 'user-123',
681
+ * businessId: 'business-456'
682
+ * });
683
+ *
684
+ * // Step 2: Prepare and get signing data
685
+ * const response = await sdk.transactions.prepareClientSignedTransaction(request);
686
+ *
687
+ * // Step 3: User signs the transaction
688
+ * const signature = await userWallet.signTypedData(response.signingData);
689
+ *
690
+ * // Step 4: Business submits the signed transaction
691
+ * await sdk.transactions.submitSignedTransaction({
692
+ * transactionId: response.transaction.id,
693
+ * type: 'EIP_712',
694
+ * signature
695
+ * });
696
+ * ```
697
+ */
698
+ function buildPOSBurnRequest(data) {
699
+ return buildBurnRequest({
700
+ amount: data.amount,
701
+ contractAddress: data.contractAddress,
702
+ contractTokenId: data.contractTokenId,
703
+ chainId: data.chainId,
704
+ senderAccountId: data.userId,
705
+ senderAccountType: persShared.AccountOwnerType.USER,
706
+ senderAccountAddress: data.userAccountAddress,
707
+ // POS authorization - business is engaged and authorized to submit
708
+ engagedBusinessId: data.businessId,
709
+ authorizedSubmitterId: data.businessId,
710
+ authorizedSubmitterType: persShared.AccountOwnerType.BUSINESS
711
+ });
712
+ }
713
+
714
+ exports.ClientTransactionType = ClientTransactionType;
371
715
  exports.TransactionApi = TransactionApi;
372
716
  exports.TransactionService = TransactionService;
373
- //# sourceMappingURL=transaction-service-BcJfyCcq.cjs.map
717
+ exports.buildBurnRequest = buildBurnRequest;
718
+ exports.buildMintRequest = buildMintRequest;
719
+ exports.buildPOSBurnRequest = buildPOSBurnRequest;
720
+ exports.buildPOSTransferRequest = buildPOSTransferRequest;
721
+ exports.buildPendingTransactionData = buildPendingTransactionData;
722
+ exports.buildSubmissionRequest = buildSubmissionRequest;
723
+ exports.buildTransferRequest = buildTransferRequest;
724
+ exports.extractDeadlineFromSigningData = extractDeadlineFromSigningData;
725
+ //# sourceMappingURL=transaction-request.builder-BpgtuMMq.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-request.builder-BpgtuMMq.cjs","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":["buildPaginationParams","TransactionRole","Web3TransactionType","AccountOwnerType"],"mappings":"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"}