@explorins/pers-sdk 2.0.7 → 2.0.11

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 (171) hide show
  1. package/README.md +113 -59
  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-DYnIZvcx.js} +12 -291
  35. package/dist/chunks/pers-sdk-DYnIZvcx.js.map +1 -0
  36. package/dist/chunks/{pers-sdk-h-uoLpBx.cjs → pers-sdk-Dr9W8stD.cjs} +38 -318
  37. package/dist/chunks/pers-sdk-Dr9W8stD.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-request.builder-DrqTWcyC.cjs → transaction-request.builder-BwWmfHXm.cjs} +6 -6
  47. package/dist/chunks/{transaction-request.builder-DrqTWcyC.cjs.map → transaction-request.builder-BwWmfHXm.cjs.map} +1 -1
  48. package/dist/chunks/{transaction-request.builder-DltmruUC.js → transaction-request.builder-C1FPWmYN.js} +6 -6
  49. package/dist/chunks/{transaction-request.builder-DltmruUC.js.map → transaction-request.builder-C1FPWmYN.js.map} +1 -1
  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.cjs +18 -21
  59. package/dist/core.cjs.map +1 -1
  60. package/dist/core.js +10 -12
  61. package/dist/core.js.map +1 -1
  62. package/dist/donation/index.d.ts +0 -1
  63. package/dist/donation/index.d.ts.map +1 -1
  64. package/dist/donation.cjs +48 -29
  65. package/dist/donation.cjs.map +1 -1
  66. package/dist/donation.js +50 -3
  67. package/dist/donation.js.map +1 -1
  68. package/dist/index.cjs +43 -69
  69. package/dist/index.cjs.map +1 -1
  70. package/dist/index.d.ts +1 -3
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +13 -15
  73. package/dist/index.js.map +1 -1
  74. package/dist/managers/analytics-manager.d.ts +1 -1
  75. package/dist/managers/index.d.ts +0 -1
  76. package/dist/managers/index.d.ts.map +1 -1
  77. package/dist/managers/web3-manager.d.ts +1 -1
  78. package/dist/managers/web3-manager.d.ts.map +1 -1
  79. package/dist/node.cjs +10 -13
  80. package/dist/node.cjs.map +1 -1
  81. package/dist/node.js +10 -13
  82. package/dist/node.js.map +1 -1
  83. package/dist/package.json +4 -10
  84. package/dist/payment/index.d.ts +0 -1
  85. package/dist/payment/index.d.ts.map +1 -1
  86. package/dist/payment.cjs +5 -232
  87. package/dist/payment.cjs.map +1 -1
  88. package/dist/payment.js +3 -210
  89. package/dist/payment.js.map +1 -1
  90. package/dist/pers-sdk.d.ts +1 -13
  91. package/dist/pers-sdk.d.ts.map +1 -1
  92. package/dist/redemption/index.d.ts +0 -1
  93. package/dist/redemption/index.d.ts.map +1 -1
  94. package/dist/redemption/services/redemption-service.d.ts +1 -2
  95. package/dist/redemption/services/redemption-service.d.ts.map +1 -1
  96. package/dist/redemption.cjs +5 -360
  97. package/dist/redemption.cjs.map +1 -1
  98. package/dist/redemption.js +3 -338
  99. package/dist/redemption.js.map +1 -1
  100. package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts +15 -21
  101. package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts.map +1 -1
  102. package/dist/tenant/index.d.ts +0 -1
  103. package/dist/tenant/index.d.ts.map +1 -1
  104. package/dist/tenant.cjs +5 -184
  105. package/dist/tenant.cjs.map +1 -1
  106. package/dist/tenant.js +3 -162
  107. package/dist/tenant.js.map +1 -1
  108. package/dist/token/index.d.ts +0 -1
  109. package/dist/token/index.d.ts.map +1 -1
  110. package/dist/token.cjs +1 -25
  111. package/dist/token.cjs.map +1 -1
  112. package/dist/token.js +1 -1
  113. package/dist/transaction/models/transaction-request.builder.d.ts +4 -4
  114. package/dist/transaction/models/transaction-request.builder.d.ts.map +1 -1
  115. package/dist/transaction.cjs +1 -1
  116. package/dist/transaction.js +1 -1
  117. package/dist/user/index.d.ts +0 -1
  118. package/dist/user/index.d.ts.map +1 -1
  119. package/dist/user-status/index.d.ts +0 -1
  120. package/dist/user-status/index.d.ts.map +1 -1
  121. package/dist/user-status.cjs +0 -25
  122. package/dist/user-status.cjs.map +1 -1
  123. package/dist/user-status.js +0 -1
  124. package/dist/user-status.js.map +1 -1
  125. package/dist/user.cjs +209 -29
  126. package/dist/user.cjs.map +1 -1
  127. package/dist/user.js +211 -3
  128. package/dist/user.js.map +1 -1
  129. package/dist/web3/index.d.ts +1 -0
  130. package/dist/web3/index.d.ts.map +1 -1
  131. package/dist/web3-chain/index.d.ts +0 -1
  132. package/dist/web3-chain/index.d.ts.map +1 -1
  133. package/dist/web3-chain.cjs +14 -29
  134. package/dist/web3-chain.cjs.map +1 -1
  135. package/dist/web3-chain.js +16 -3
  136. package/dist/web3-chain.js.map +1 -1
  137. package/dist/web3-manager.cjs +13 -0
  138. package/dist/web3-manager.cjs.map +1 -0
  139. package/dist/web3-manager.js +7 -0
  140. package/dist/web3-manager.js.map +1 -0
  141. package/dist/web3.cjs +10 -6
  142. package/dist/web3.cjs.map +1 -1
  143. package/dist/web3.js +4 -1
  144. package/dist/web3.js.map +1 -1
  145. package/package.json +4 -10
  146. package/dist/chunks/analytics-service-CitlimKJ.cjs +0 -49
  147. package/dist/chunks/analytics-service-CitlimKJ.cjs.map +0 -1
  148. package/dist/chunks/analytics-service-CxyrOwel.js +0 -46
  149. package/dist/chunks/analytics-service-CxyrOwel.js.map +0 -1
  150. package/dist/chunks/campaign-service-CdEz0jpP.cjs +0 -435
  151. package/dist/chunks/campaign-service-CdEz0jpP.cjs.map +0 -1
  152. package/dist/chunks/campaign-service-DrTAqFZM.js +0 -432
  153. package/dist/chunks/campaign-service-DrTAqFZM.js.map +0 -1
  154. package/dist/chunks/donation-service--6cnTvWq.cjs +0 -54
  155. package/dist/chunks/donation-service--6cnTvWq.cjs.map +0 -1
  156. package/dist/chunks/donation-service-xiXZ2Eto.js +0 -51
  157. package/dist/chunks/donation-service-xiXZ2Eto.js.map +0 -1
  158. package/dist/chunks/explorer.utils-BkS3k8hX.js.map +0 -1
  159. package/dist/chunks/explorer.utils-Cx3wrqAj.cjs.map +0 -1
  160. package/dist/chunks/index-BtDNXaFq.js +0 -13
  161. package/dist/chunks/index-BtDNXaFq.js.map +0 -1
  162. package/dist/chunks/index-CMk3Aqkk.cjs +0 -15
  163. package/dist/chunks/index-CMk3Aqkk.cjs.map +0 -1
  164. package/dist/chunks/pers-sdk-JIExM712.js.map +0 -1
  165. package/dist/chunks/pers-sdk-h-uoLpBx.cjs.map +0 -1
  166. package/dist/chunks/user-service-BGP3SZpk.js +0 -212
  167. package/dist/chunks/user-service-BGP3SZpk.js.map +0 -1
  168. package/dist/chunks/user-service-gITOx4qj.cjs +0 -215
  169. package/dist/chunks/user-service-gITOx4qj.cjs.map +0 -1
  170. package/dist/chunks/web3-chain-service-BeBjALg2.cjs.map +0 -1
  171. package/dist/chunks/web3-chain-service-DKHCnHQX.js.map +0 -1
@@ -1,148 +1,7 @@
1
- import { createSafeContract, getAccountTokenBalance, getTokenUri, getTokenOfOwnerByIndex, convertAbiToInterface } from '@explorins/web3-ts/ethers';
1
+ import { convertAbiToInterface, createSafeContract, getAccountTokenBalance, getTokenUri, getTokenOfOwnerByIndex } from '@explorins/web3-ts/ethers';
2
2
  import { g as globalCacheService, C as CacheTTL } from './index-DBLskLuH.js';
3
-
4
- /**
5
- * Web3InfrastructureApi - Infrastructure implementation for blockchain operations
6
- * Uses @explorins/web3-ts for Web3 interactions
7
- */
8
- class Web3InfrastructureApi {
9
- constructor(web3ChainService) {
10
- this.web3ChainService = web3ChainService;
11
- }
12
- async getTokenBalance(request) {
13
- try {
14
- if (request.tokenId !== null)
15
- request.tokenId = request.tokenId.toString();
16
- const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
17
- const contract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
18
- return await getAccountTokenBalance(contract, request.accountAddress, request.tokenId);
19
- }
20
- catch (error) {
21
- console.error(`Failed to get token balance for ${request.accountAddress} for ${request.contractAddress} and tokenId ${request.tokenId}, return 0 instead:`, error);
22
- return 0;
23
- }
24
- }
25
- async getTokenUri(request) {
26
- try {
27
- const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
28
- const contract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
29
- const tokenId = Number(request.tokenId);
30
- const tokenUri = await getTokenUri(contract, tokenId);
31
- return String(tokenUri);
32
- }
33
- catch (error) {
34
- console.error(`Failed to get token URI for tokenId ${request.tokenId}:`, error);
35
- throw error;
36
- }
37
- }
38
- async getTokenOfOwnerByIndex(request) {
39
- try {
40
- const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
41
- const tokenContract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
42
- const tokenId = await getTokenOfOwnerByIndex(tokenContract, request.accountAddress, request.tokenIndex);
43
- return String(tokenId);
44
- }
45
- catch (error) {
46
- console.error(`Failed to get token by index ${request.tokenIndex} for ${request.accountAddress}:`, error);
47
- throw error;
48
- }
49
- }
50
- }
51
-
52
- /**
53
- * IPFSInfrastructureApi - Infrastructure implementation for IPFS operations
54
- * Uses Web3ChainService for IPFS gateway resolution with centralized caching
55
- */
56
- class IPFSInfrastructureApi {
57
- constructor(web3ChainService) {
58
- this.web3ChainService = web3ChainService;
59
- this.defaultIpfsGatewayDomain = 'pers.mypinata.cloud';
60
- this.cache = globalCacheService.createNamespace('ipfs');
61
- }
62
- async getIpfsGatewayDomain(chainId) {
63
- const cacheKey = `gateway:${chainId}`;
64
- return this.cache.getOrSet(cacheKey, async () => {
65
- try {
66
- const chainData = await this.web3ChainService.getChainDataWithCache(chainId);
67
- return chainData.ipfsGatewayDomain || this.defaultIpfsGatewayDomain;
68
- }
69
- catch (error) {
70
- console.warn(`Failed to get chain data for chainId ${chainId}, using default IPFS gateway:`, error);
71
- return this.defaultIpfsGatewayDomain;
72
- }
73
- }, CacheTTL.GATEWAY);
74
- }
75
- async resolveIPFSUrl(url, chainId) {
76
- if (url.startsWith('ipfs://')) {
77
- const gateway = await this.getIpfsGatewayDomain(chainId);
78
- return url.replace('ipfs://', `https://${gateway}/ipfs/`);
79
- }
80
- return url;
81
- }
82
- /**
83
- * Fetch metadata from tokenURI, resolve all IPFS URLs, and normalize to SDK format.
84
- *
85
- * NORMALIZATION BOUNDARY: This is the single place where ERC metadata standard
86
- * (snake_case: image, animation_url) is converted to SDK format (camelCase: imageUrl, animationUrl).
87
- * All downstream consumers receive normalized SDK format with resolved HTTPS URLs.
88
- *
89
- * @param tokenUri - Token URI (can be ipfs:// or https://)
90
- * @param chainId - Chain ID for IPFS gateway selection
91
- * @returns Normalized TokenMetadata with resolved HTTPS URLs, or null on error
92
- */
93
- async fetchAndProcessMetadata(tokenUri, chainId) {
94
- try {
95
- const resolvedUri = await this.resolveIPFSUrl(tokenUri, chainId);
96
- const response = await fetch(resolvedUri);
97
- if (!response.ok) {
98
- throw new Error(`HTTP error! status: ${response.status}`);
99
- }
100
- const rawMetadata = await response.json();
101
- // Resolve IPFS URLs for media fields
102
- const resolvedImageUrl = rawMetadata.image
103
- ? await this.resolveIPFSUrl(rawMetadata.image, chainId)
104
- : '';
105
- const resolvedAnimationUrl = rawMetadata.animation_url
106
- ? await this.resolveIPFSUrl(rawMetadata.animation_url, chainId)
107
- : undefined;
108
- // Extract custom properties (anything not in ERC standard)
109
- const customProperties = Object.fromEntries(Object.entries(rawMetadata).filter(([key]) => !['name', 'description', 'image', 'animation_url', 'external_url', 'attributes'].includes(key)));
110
- // Return normalized SDK format (typed as TokenMetadata)
111
- return {
112
- name: rawMetadata.name || '',
113
- description: rawMetadata.description || '',
114
- imageUrl: resolvedImageUrl,
115
- animationUrl: resolvedAnimationUrl,
116
- externalUrl: rawMetadata.external_url || undefined,
117
- attributes: rawMetadata.attributes || [],
118
- ...customProperties
119
- };
120
- }
121
- catch (error) {
122
- console.error('Error fetching metadata:', error);
123
- return null;
124
- }
125
- }
126
- async fetchFromUrl(url) {
127
- try {
128
- const response = await fetch(url);
129
- if (!response.ok) {
130
- throw new Error(`Failed to fetch from ${url}: ${response.statusText}`);
131
- }
132
- return await response.json();
133
- }
134
- catch (error) {
135
- console.error(`Error fetching from URL ${url}:`, error);
136
- throw error;
137
- }
138
- }
139
- /**
140
- * Clear IPFS cache for this service
141
- */
142
- clearCache() {
143
- this.cache.clear();
144
- }
145
- }
3
+ import { a as Web3ChainService, W as Web3ChainApi } from './web3-chain-service-DuvxmKSj.js';
4
+ import { NativeTokenTypes } from '@explorins/pers-shared';
146
5
 
147
6
  // type ContractAnalysis = ReturnType<ContractDomainService['analyzeContract']>;
148
7
  /**
@@ -499,6 +358,149 @@ class Web3ApplicationService {
499
358
  }
500
359
  }
501
360
 
361
+ /**
362
+ * Web3InfrastructureApi - Infrastructure implementation for blockchain operations
363
+ * Uses @explorins/web3-ts for Web3 interactions
364
+ */
365
+ class Web3InfrastructureApi {
366
+ constructor(web3ChainService) {
367
+ this.web3ChainService = web3ChainService;
368
+ }
369
+ async getTokenBalance(request) {
370
+ try {
371
+ if (request.tokenId !== null)
372
+ request.tokenId = request.tokenId.toString();
373
+ const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
374
+ const contract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
375
+ return await getAccountTokenBalance(contract, request.accountAddress, request.tokenId);
376
+ }
377
+ catch (error) {
378
+ console.error(`Failed to get token balance for ${request.accountAddress} for ${request.contractAddress} and tokenId ${request.tokenId}, return 0 instead:`, error);
379
+ return 0;
380
+ }
381
+ }
382
+ async getTokenUri(request) {
383
+ try {
384
+ const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
385
+ const contract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
386
+ const tokenId = Number(request.tokenId);
387
+ const tokenUri = await getTokenUri(contract, tokenId);
388
+ return String(tokenUri);
389
+ }
390
+ catch (error) {
391
+ console.error(`Failed to get token URI for tokenId ${request.tokenId}:`, error);
392
+ throw error;
393
+ }
394
+ }
395
+ async getTokenOfOwnerByIndex(request) {
396
+ try {
397
+ const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
398
+ const tokenContract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
399
+ const tokenId = await getTokenOfOwnerByIndex(tokenContract, request.accountAddress, request.tokenIndex);
400
+ return String(tokenId);
401
+ }
402
+ catch (error) {
403
+ console.error(`Failed to get token by index ${request.tokenIndex} for ${request.accountAddress}:`, error);
404
+ throw error;
405
+ }
406
+ }
407
+ }
408
+
409
+ /**
410
+ * IPFSInfrastructureApi - Infrastructure implementation for IPFS operations
411
+ * Uses Web3ChainService for IPFS gateway resolution with centralized caching
412
+ */
413
+ class IPFSInfrastructureApi {
414
+ constructor(web3ChainService) {
415
+ this.web3ChainService = web3ChainService;
416
+ this.defaultIpfsGatewayDomain = 'pers.mypinata.cloud';
417
+ this.cache = globalCacheService.createNamespace('ipfs');
418
+ }
419
+ async getIpfsGatewayDomain(chainId) {
420
+ const cacheKey = `gateway:${chainId}`;
421
+ return this.cache.getOrSet(cacheKey, async () => {
422
+ try {
423
+ const chainData = await this.web3ChainService.getChainDataWithCache(chainId);
424
+ return chainData.ipfsGatewayDomain || this.defaultIpfsGatewayDomain;
425
+ }
426
+ catch (error) {
427
+ console.warn(`Failed to get chain data for chainId ${chainId}, using default IPFS gateway:`, error);
428
+ return this.defaultIpfsGatewayDomain;
429
+ }
430
+ }, CacheTTL.GATEWAY);
431
+ }
432
+ async resolveIPFSUrl(url, chainId) {
433
+ if (url.startsWith('ipfs://')) {
434
+ const gateway = await this.getIpfsGatewayDomain(chainId);
435
+ return url.replace('ipfs://', `https://${gateway}/ipfs/`);
436
+ }
437
+ return url;
438
+ }
439
+ /**
440
+ * Fetch metadata from tokenURI, resolve all IPFS URLs, and normalize to SDK format.
441
+ *
442
+ * NORMALIZATION BOUNDARY: This is the single place where ERC metadata standard
443
+ * (snake_case: image, animation_url) is converted to SDK format (camelCase: imageUrl, animationUrl).
444
+ * All downstream consumers receive normalized SDK format with resolved HTTPS URLs.
445
+ *
446
+ * @param tokenUri - Token URI (can be ipfs:// or https://)
447
+ * @param chainId - Chain ID for IPFS gateway selection
448
+ * @returns Normalized TokenMetadata with resolved HTTPS URLs, or null on error
449
+ */
450
+ async fetchAndProcessMetadata(tokenUri, chainId) {
451
+ try {
452
+ const resolvedUri = await this.resolveIPFSUrl(tokenUri, chainId);
453
+ const response = await fetch(resolvedUri);
454
+ if (!response.ok) {
455
+ throw new Error(`HTTP error! status: ${response.status}`);
456
+ }
457
+ const rawMetadata = await response.json();
458
+ // Resolve IPFS URLs for media fields
459
+ const resolvedImageUrl = rawMetadata.image
460
+ ? await this.resolveIPFSUrl(rawMetadata.image, chainId)
461
+ : '';
462
+ const resolvedAnimationUrl = rawMetadata.animation_url
463
+ ? await this.resolveIPFSUrl(rawMetadata.animation_url, chainId)
464
+ : undefined;
465
+ // Extract custom properties (anything not in ERC standard)
466
+ const customProperties = Object.fromEntries(Object.entries(rawMetadata).filter(([key]) => !['name', 'description', 'image', 'animation_url', 'external_url', 'attributes'].includes(key)));
467
+ // Return normalized SDK format (typed as TokenMetadata)
468
+ return {
469
+ name: rawMetadata.name || '',
470
+ description: rawMetadata.description || '',
471
+ imageUrl: resolvedImageUrl,
472
+ animationUrl: resolvedAnimationUrl,
473
+ externalUrl: rawMetadata.external_url || undefined,
474
+ attributes: rawMetadata.attributes || [],
475
+ ...customProperties
476
+ };
477
+ }
478
+ catch (error) {
479
+ console.error('Error fetching metadata:', error);
480
+ return null;
481
+ }
482
+ }
483
+ async fetchFromUrl(url) {
484
+ try {
485
+ const response = await fetch(url);
486
+ if (!response.ok) {
487
+ throw new Error(`Failed to fetch from ${url}: ${response.statusText}`);
488
+ }
489
+ return await response.json();
490
+ }
491
+ catch (error) {
492
+ console.error(`Error fetching from URL ${url}:`, error);
493
+ throw error;
494
+ }
495
+ }
496
+ /**
497
+ * Clear IPFS cache for this service
498
+ */
499
+ clearCache() {
500
+ this.cache.clear();
501
+ }
502
+ }
503
+
502
504
  /**
503
505
  * Generate explorer URL for a given address or transaction
504
506
  *
@@ -555,5 +557,269 @@ async function getExplorerUrlByChainId(getChainData, chainId, address, type) {
555
557
  return getExplorerUrl(chainData, address, type);
556
558
  }
557
559
 
558
- export { IPFSInfrastructureApi as I, Web3ApplicationService as W, Web3InfrastructureApi as a, getExplorerUrlByChainId as b, getExplorerUrl as g };
559
- //# sourceMappingURL=explorer.utils-BkS3k8hX.js.map
560
+ /**
561
+ * Web3 Manager - Clean, high-level interface for Web3 operations
562
+ *
563
+ * Provides a simplified API for common Web3 blockchain tasks while maintaining
564
+ * access to the full Web3 SDK for advanced use cases.
565
+ *
566
+ * ## Supported Token Standards
567
+ *
568
+ * - **ERC-20**: Fungible tokens (credits, points). Query balance with `getTokenBalance()`.
569
+ * - **ERC-721**: Non-fungible tokens (unique NFTs). Supports enumeration - no tokenIds needed.
570
+ * - **ERC-1155**: Multi-token standard (rewards, collectibles). Requires specific tokenIds.
571
+ *
572
+ * ## Recommended: Use Helper Methods
573
+ *
574
+ * For most use cases, use `getAccountOwnedTokensFromContract()` which automatically
575
+ * handles token type detection and tokenId extraction:
576
+ *
577
+ * ```typescript
578
+ * const result = await sdk.web3.getAccountOwnedTokensFromContract(walletAddress, token);
579
+ * console.log(`Wallet owns ${result.totalOwned} tokens`);
580
+ * ```
581
+ *
582
+ * ## Manual Approach (Advanced)
583
+ *
584
+ * For ERC-1155 tokens, tokenIds are extracted from `token.metadata[].tokenMetadataIncrementalId`:
585
+ *
586
+ * ```typescript
587
+ * const tokenIds = token.metadata?.map(meta => meta.tokenMetadataIncrementalId.toString());
588
+ * const collection = await sdk.web3.getTokenCollection({
589
+ * accountAddress: walletAddress,
590
+ * contractAddress: token.contractAddress,
591
+ * abi: token.abi,
592
+ * chainId: token.chainId,
593
+ * tokenIds // Required for ERC-1155, optional for ERC-721
594
+ * });
595
+ * ```
596
+ */
597
+ class Web3Manager {
598
+ // TODO: Add PersEventEmitter support for blockchain events
599
+ // When ready, add:
600
+ // 1. constructor param: private events?: PersEventEmitter
601
+ // 2. Subscribe to contract events (Transfer, Approval, etc.)
602
+ // 3. Emit via: this.events?.emitSuccess({ domain: 'web3', type: 'NFT_TRANSFERRED', ... })
603
+ // 4. Filter to only user's address (not all transfers)
604
+ // 5. Add cleanup for event listeners on SDK destroy
605
+ constructor(apiClient) {
606
+ this.apiClient = apiClient;
607
+ // Initialize Web3 Chain service
608
+ const web3ChainApi = new Web3ChainApi(apiClient);
609
+ this.web3ChainService = new Web3ChainService(web3ChainApi);
610
+ // Initialize Web3 Application service
611
+ const web3InfrastructureApi = new Web3InfrastructureApi(this.web3ChainService);
612
+ const ipfsInfrastructureApi = new IPFSInfrastructureApi(this.web3ChainService);
613
+ this.web3ApplicationService = new Web3ApplicationService(web3InfrastructureApi, ipfsInfrastructureApi);
614
+ }
615
+ /**
616
+ * Get token balance for a specific token
617
+ *
618
+ * @param request - Token balance request parameters
619
+ * @returns Promise resolving to token balance
620
+ */
621
+ async getTokenBalance(request) {
622
+ return this.web3ApplicationService.getSpecificTokenBalance(request);
623
+ }
624
+ /**
625
+ * Get token metadata
626
+ *
627
+ * @param request - Token metadata request parameters
628
+ * @returns Promise resolving to token metadata or null if not found
629
+ */
630
+ async getTokenMetadata(request) {
631
+ return this.web3ApplicationService.getTokenMetadata(request);
632
+ }
633
+ /**
634
+ * Get token collection
635
+ *
636
+ * @param request - Token collection request parameters
637
+ * @returns Promise resolving to token collection
638
+ */
639
+ async getTokenCollection(request) {
640
+ return this.web3ApplicationService.getTokenCollection(request);
641
+ }
642
+ /**
643
+ * Resolve IPFS URL to accessible URL
644
+ *
645
+ * @param url - IPFS URL to resolve
646
+ * @param chainId - Chain ID for context
647
+ * @returns Promise resolving to accessible URL
648
+ */
649
+ async resolveIPFSUrl(url, chainId) {
650
+ return this.web3ApplicationService.resolveIPFSUrl(url, chainId);
651
+ }
652
+ /**
653
+ * Fetch and process token metadata
654
+ *
655
+ * @param tokenUri - Token URI to fetch metadata from
656
+ * @param chainId - Chain ID for context
657
+ * @returns Promise resolving to processed metadata or null if not found
658
+ */
659
+ async fetchAndProcessMetadata(tokenUri, chainId) {
660
+ return this.web3ApplicationService.fetchAndProcessMetadata(tokenUri, chainId);
661
+ }
662
+ /**
663
+ * Get blockchain chain data by chain ID
664
+ *
665
+ * @param chainId - Chain ID to get data for
666
+ * @returns Promise resolving to chain data or null if not found
667
+ */
668
+ async getChainDataById(chainId) {
669
+ return this.web3ChainService.getChainDataWithCache(chainId);
670
+ }
671
+ /**
672
+ * Get explorer URL for a given address or transaction
673
+ *
674
+ * @param chainId - Chain ID to get explorer URL for
675
+ * @param address - Address or transaction hash
676
+ * @param type - Type of explorer URL ('address' or 'tx')
677
+ * @returns Promise resolving to explorer URL
678
+ */
679
+ async getExplorerUrl(chainId, address, type) {
680
+ return getExplorerUrlByChainId((id) => this.getChainDataById(id), chainId, address, type);
681
+ }
682
+ /**
683
+ * Get the full Web3 SDK for advanced operations
684
+ *
685
+ * @returns Web3SDK instance
686
+ */
687
+ getWeb3ApplicationService() {
688
+ return this.web3ApplicationService;
689
+ }
690
+ // ==========================================
691
+ // HELPER METHODS
692
+ // ==========================================
693
+ /**
694
+ * Extract tokenIds from a TokenDTO's metadata.
695
+ *
696
+ * Extracts `tokenMetadataIncrementalId` from each metadata entry. This is
697
+ * particularly useful for ERC-1155 tokens which require specific tokenIds
698
+ * to query balances, but works with any token that has metadata.
699
+ *
700
+ * **Note:** For most use cases, prefer `getAccountOwnedTokensFromContract()`
701
+ * which handles tokenId extraction automatically.
702
+ *
703
+ * @param token - Token definition containing metadata array
704
+ * @returns Array of tokenId strings, or undefined if no metadata
705
+ *
706
+ * @example Manual token collection request
707
+ * ```typescript
708
+ * const rewardToken = (await sdk.tokens.getRewardTokens())[0];
709
+ * const tokenIds = sdk.web3.extractTokenIds(rewardToken);
710
+ *
711
+ * if (tokenIds) {
712
+ * const collection = await sdk.web3.getTokenCollection({
713
+ * accountAddress: walletAddress,
714
+ * contractAddress: rewardToken.contractAddress,
715
+ * abi: rewardToken.abi,
716
+ * chainId: rewardToken.chainId,
717
+ * tokenIds
718
+ * });
719
+ * }
720
+ * ```
721
+ *
722
+ * @see {@link getAccountOwnedTokensFromContract} - Recommended helper that handles this automatically
723
+ */
724
+ extractTokenIds(token) {
725
+ if (!token.metadata || token.metadata.length === 0) {
726
+ return undefined;
727
+ }
728
+ return token.metadata.map(meta => meta.tokenMetadataIncrementalId.toString());
729
+ }
730
+ /**
731
+ * Get owned tokens from a specific token contract for any blockchain address.
732
+ *
733
+ * **Recommended method** for querying token balances. Automatically handles:
734
+ * - Token type detection (ERC-20, ERC-721, ERC-1155)
735
+ * - TokenId extraction from metadata (uses `extractTokenIds()` internally for ERC-1155)
736
+ * - Building the collection request
737
+ * - Filtering to only tokens with balance > 0
738
+ *
739
+ * Works with any valid blockchain address - can query user wallets, external
740
+ * wallets, contract addresses, or any other address holding tokens.
741
+ *
742
+ * @param accountAddress - Any valid blockchain address (wallet, contract, etc.)
743
+ * @param token - Token definition (from getRewardTokens, getStatusTokens, etc.)
744
+ * @param maxTokens - Maximum tokens to retrieve (default: 50)
745
+ * @returns Promise resolving to collection result with owned tokens
746
+ *
747
+ * @example Query user's wallet
748
+ * ```typescript
749
+ * const userWallet = user.wallets[0].address;
750
+ * const result = await sdk.web3.getAccountOwnedTokensFromContract(userWallet, rewardToken);
751
+ * console.log(`User owns ${result.totalOwned} tokens`);
752
+ * ```
753
+ *
754
+ * @example Query any external wallet
755
+ * ```typescript
756
+ * const externalWallet = '0x1234...abcd';
757
+ * const result = await sdk.web3.getAccountOwnedTokensFromContract(externalWallet, rewardToken);
758
+ * console.log(`Wallet owns ${result.totalOwned} tokens`);
759
+ * ```
760
+ *
761
+ * @see {@link extractTokenIds} - Low-level helper used internally for ERC-1155
762
+ * @see {@link buildCollectionRequest} - For manual request building
763
+ */
764
+ async getAccountOwnedTokensFromContract(accountAddress, token, maxTokens = 50) {
765
+ // For ERC-1155, extract tokenIds from metadata
766
+ const tokenIds = token.type === NativeTokenTypes.ERC1155 ? this.extractTokenIds(token) : undefined;
767
+ const collection = await this.getTokenCollection({
768
+ accountAddress: accountAddress,
769
+ contractAddress: token.contractAddress,
770
+ abi: token.abi,
771
+ chainId: token.chainId,
772
+ tokenIds,
773
+ maxTokens
774
+ });
775
+ // Filter to only owned tokens (hasBalance: true)
776
+ // For ERC721, include all since they're enumerated
777
+ const ownedTokens = token.type === NativeTokenTypes.ERC721
778
+ ? collection.tokens
779
+ : collection.tokens.filter(t => t.hasBalance);
780
+ // Calculate total owned:
781
+ // - ERC-1155: sum balances (can own multiple copies of same tokenId)
782
+ // - ERC-721: count unique tokens (each token is unique, balance always 1)
783
+ const totalOwned = token.type === NativeTokenTypes.ERC1155
784
+ ? ownedTokens.reduce((sum, t) => sum + (t.balance || 0), 0)
785
+ : ownedTokens.length;
786
+ return {
787
+ token,
788
+ ownedTokens,
789
+ totalOwned
790
+ };
791
+ }
792
+ /**
793
+ * Build a TokenCollectionRequest from a TokenDTO.
794
+ *
795
+ * Automatically handles ERC-1155 tokenId extraction from metadata.
796
+ * Use this when you need more control over the request than
797
+ * `getAccountOwnedTokensFromContract` provides.
798
+ *
799
+ * Works with any valid blockchain address - user wallets, external wallets, etc.
800
+ *
801
+ * @param accountAddress - Any valid blockchain address (wallet, contract, etc.)
802
+ * @param token - Token definition
803
+ * @param maxTokens - Maximum tokens to retrieve
804
+ * @returns TokenCollectionRequest ready for getTokenCollection()
805
+ *
806
+ * @example
807
+ * ```typescript
808
+ * const request = sdk.web3.buildCollectionRequest(walletAddress, rewardToken);
809
+ * const collection = await sdk.web3.getTokenCollection(request);
810
+ * ```
811
+ */
812
+ buildCollectionRequest(accountAddress, token, maxTokens = 50) {
813
+ return {
814
+ accountAddress: accountAddress,
815
+ contractAddress: token.contractAddress,
816
+ abi: token.abi,
817
+ chainId: token.chainId,
818
+ tokenIds: token.type === NativeTokenTypes.ERC1155 ? this.extractTokenIds(token) : undefined,
819
+ maxTokens
820
+ };
821
+ }
822
+ }
823
+
824
+ export { IPFSInfrastructureApi as I, Web3Manager as W, Web3ApplicationService as a, Web3InfrastructureApi as b, getExplorerUrlByChainId as c, getExplorerUrl as g };
825
+ //# sourceMappingURL=web3-manager-OExwBWB7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web3-manager-OExwBWB7.js","sources":["../../src/web3/domain/services/token-domain.service.ts","../../src/web3/domain/services/metadata-domain.service.ts","../../src/web3/domain/services/contract-domain.service.ts","../../src/web3/application/web3-application.service.ts","../../src/web3/infrastructure/api/web3-api.ts","../../src/web3/infrastructure/api/ipfs-api.ts","../../src/web3/utils/explorer.utils.ts","../../src/managers/web3-manager.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}