@explorins/pers-sdk 1.5.2 → 1.6.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 (69) hide show
  1. package/dist/chunks/index-BfOoX87y.cjs +337 -0
  2. package/dist/chunks/index-BfOoX87y.cjs.map +1 -0
  3. package/dist/chunks/index-BhROn6lx.js +559 -0
  4. package/dist/chunks/index-BhROn6lx.js.map +1 -0
  5. package/dist/chunks/index-CM21r58m.js +331 -0
  6. package/dist/chunks/index-CM21r58m.js.map +1 -0
  7. package/dist/chunks/index-STUUgDTj.cjs +567 -0
  8. package/dist/chunks/index-STUUgDTj.cjs.map +1 -0
  9. package/dist/chunks/{pers-sdk-CI2YXKb_.cjs → pers-sdk-CJ9A-gdp.cjs} +390 -18
  10. package/dist/chunks/pers-sdk-CJ9A-gdp.cjs.map +1 -0
  11. package/dist/chunks/{pers-sdk-CVSAFBLh.js → pers-sdk-DCoIoQD2.js} +384 -18
  12. package/dist/chunks/pers-sdk-DCoIoQD2.js.map +1 -0
  13. package/dist/core.cjs +13 -6
  14. package/dist/core.cjs.map +1 -1
  15. package/dist/core.js +6 -2
  16. package/dist/core.js.map +1 -1
  17. package/dist/file/api/file-api.d.ts +35 -0
  18. package/dist/file/api/file-api.d.ts.map +1 -0
  19. package/dist/file/api/index.d.ts +2 -0
  20. package/dist/file/api/index.d.ts.map +1 -0
  21. package/dist/file/index.d.ts +9 -0
  22. package/dist/file/index.d.ts.map +1 -0
  23. package/dist/file/models/index.d.ts +26 -0
  24. package/dist/file/models/index.d.ts.map +1 -0
  25. package/dist/file/services/file-service.d.ts +57 -0
  26. package/dist/file/services/file-service.d.ts.map +1 -0
  27. package/dist/file/services/index.d.ts +2 -0
  28. package/dist/file/services/index.d.ts.map +1 -0
  29. package/dist/index.cjs +18 -14
  30. package/dist/index.cjs.map +1 -1
  31. package/dist/index.d.ts +1 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +4 -6
  34. package/dist/index.js.map +1 -1
  35. package/dist/managers/file-manager.d.ts +55 -0
  36. package/dist/managers/file-manager.d.ts.map +1 -0
  37. package/dist/managers/index.d.ts +4 -1
  38. package/dist/managers/index.d.ts.map +1 -1
  39. package/dist/managers/{payment-manager.d.ts → purchase-manager.d.ts} +6 -6
  40. package/dist/managers/purchase-manager.d.ts.map +1 -0
  41. package/dist/managers/tenant-manager.d.ts +8 -0
  42. package/dist/managers/tenant-manager.d.ts.map +1 -1
  43. package/dist/managers/user-status-manager.d.ts +40 -0
  44. package/dist/managers/user-status-manager.d.ts.map +1 -0
  45. package/dist/managers/web3-manager.d.ts +58 -0
  46. package/dist/managers/web3-manager.d.ts.map +1 -0
  47. package/dist/package.json +1 -1
  48. package/dist/pers-sdk.d.ts +44 -8
  49. package/dist/pers-sdk.d.ts.map +1 -1
  50. package/dist/web3-chain.cjs +8 -307
  51. package/dist/web3-chain.cjs.map +1 -1
  52. package/dist/web3-chain.js +2 -305
  53. package/dist/web3-chain.js.map +1 -1
  54. package/dist/web3.cjs +7 -516
  55. package/dist/web3.cjs.map +1 -1
  56. package/dist/web3.js +3 -516
  57. package/dist/web3.js.map +1 -1
  58. package/package.json +1 -1
  59. package/dist/chunks/environment-C2AkkLPd.js +0 -46
  60. package/dist/chunks/environment-C2AkkLPd.js.map +0 -1
  61. package/dist/chunks/environment-CRROnwAY.cjs +0 -50
  62. package/dist/chunks/environment-CRROnwAY.cjs.map +0 -1
  63. package/dist/chunks/jwt.function-BYiyl-z_.cjs +0 -25
  64. package/dist/chunks/jwt.function-BYiyl-z_.cjs.map +0 -1
  65. package/dist/chunks/jwt.function-d6jPtBqI.js +0 -23
  66. package/dist/chunks/jwt.function-d6jPtBqI.js.map +0 -1
  67. package/dist/chunks/pers-sdk-CI2YXKb_.cjs.map +0 -1
  68. package/dist/chunks/pers-sdk-CVSAFBLh.js.map +0 -1
  69. package/dist/managers/payment-manager.d.ts.map +0 -1
@@ -0,0 +1,559 @@
1
+ import { c as createWeb3ChainSDK } from './index-CM21r58m.js';
2
+ import { convertAbiToInterface, createSafeContract, getAccountTokenBalance, getTokenUri, getTokenOfOwnerByIndex } from '@explorins/web3-ts/ethers';
3
+
4
+ /**
5
+ * Environment Detection Utility
6
+ *
7
+ * Detects the runtime environment to handle platform-specific behaviors
8
+ * for bundling and module resolution.
9
+ */
10
+ /**
11
+ * Detects the current runtime environment
12
+ */
13
+ function detectEnvironment() {
14
+ const isNode = typeof process !== 'undefined' &&
15
+ process.versions != null &&
16
+ process.versions.node != null &&
17
+ typeof globalThis.window === 'undefined';
18
+ const isBrowser = typeof globalThis.window !== 'undefined' &&
19
+ typeof globalThis.document !== 'undefined';
20
+ const isReactNative = typeof globalThis.navigator !== 'undefined' &&
21
+ typeof globalThis.navigator.product === 'string' &&
22
+ globalThis.navigator.product.toLowerCase() === 'reactnative';
23
+ const isWeb = isBrowser || isReactNative;
24
+ // Node.js streams: Only native in Node.js, need polyfills or avoidance in web
25
+ const needsNodeStreamPolyfills = isWeb;
26
+ return {
27
+ isNode,
28
+ isBrowser,
29
+ isReactNative,
30
+ isWeb,
31
+ needsNodeStreamPolyfills
32
+ };
33
+ }
34
+ /**
35
+ * Global environment info (cached)
36
+ */
37
+ const environment = detectEnvironment();
38
+ /**
39
+ * Warns if we're in an environment that might have bundling issues
40
+ */
41
+ function warnIfProblematicEnvironment(feature) {
42
+ if (environment.needsNodeStreamPolyfills) {
43
+ console.warn(`[PERS SDK] ${feature} may require additional polyfills in web environments. ` +
44
+ `If you encounter 'readable-stream' errors, ensure proper polyfills are configured.`);
45
+ }
46
+ }
47
+
48
+ /**
49
+ * TokenDomainService - Domain service for token operations
50
+ * Implements business logic for token balance, metadata, and collection operations
51
+ */
52
+ class TokenDomainService {
53
+ constructor(web3Api, metadataService, contractService) {
54
+ this.web3Api = web3Api;
55
+ this.metadataService = metadataService;
56
+ this.contractService = contractService;
57
+ }
58
+ async getTokenBalance(request) {
59
+ const balance = await this.web3Api.getTokenBalance({
60
+ accountAddress: request.accountAddress,
61
+ contractAddress: request.contractAddress,
62
+ abi: convertAbiToInterface(request.abi),
63
+ tokenId: request.tokenId,
64
+ chainId: request.chainId
65
+ });
66
+ return {
67
+ tokenId: request.tokenId,
68
+ balance,
69
+ hasBalance: balance > 0,
70
+ metadata: null
71
+ };
72
+ }
73
+ async getTokenWithMetadata(params) {
74
+ try {
75
+ const balance = await this.web3Api.getTokenBalance({
76
+ accountAddress: params.accountAddress,
77
+ contractAddress: params.contractAddress,
78
+ abi: convertAbiToInterface(params.abi),
79
+ tokenId: params.tokenId,
80
+ chainId: params.chainId
81
+ });
82
+ let metadata = null;
83
+ if (balance > 0) {
84
+ const tokenUri = await this.web3Api.getTokenUri({
85
+ contractAddress: params.contractAddress,
86
+ abi: convertAbiToInterface(params.abi),
87
+ tokenId: params.tokenId,
88
+ chainId: params.chainId
89
+ });
90
+ if (tokenUri) {
91
+ metadata = await this.metadataService.fetchAndProcessMetadata(tokenUri, params.chainId);
92
+ }
93
+ }
94
+ return {
95
+ tokenId: params.tokenId,
96
+ balance,
97
+ hasBalance: balance > 0,
98
+ metadata
99
+ };
100
+ }
101
+ catch (error) {
102
+ console.error('Error getting token with metadata:', error);
103
+ return {
104
+ tokenId: params.tokenId,
105
+ balance: 0,
106
+ hasBalance: false,
107
+ metadata: null
108
+ };
109
+ }
110
+ }
111
+ async getTokenCollection(params) {
112
+ params.abi = convertAbiToInterface(params.abi);
113
+ try {
114
+ const contractAnalysis = this.contractService.analyzeContract(params.abi);
115
+ const tokens = [];
116
+ if (!contractAnalysis.hasEnumeration && !contractAnalysis.isERC1155) {
117
+ console.warn('Contract does not support enumeration, cannot retrieve full collection');
118
+ return {
119
+ accountAddress: params.accountAddress,
120
+ contractAddress: params.contractAddress,
121
+ totalBalance: 0,
122
+ tokensRetrieved: 0,
123
+ tokens: [],
124
+ note: 'Contract does not support enumeration'
125
+ };
126
+ }
127
+ else if (contractAnalysis.isERC1155) {
128
+ const tokenIdsToProcess = params.tokenIds || [];
129
+ if (tokenIdsToProcess.length > 0) {
130
+ for (const tokenId of tokenIdsToProcess) {
131
+ const tokenBalance = await this.getTokenWithMetadata({
132
+ accountAddress: params.accountAddress,
133
+ contractAddress: params.contractAddress,
134
+ abi: params.abi,
135
+ tokenId,
136
+ chainId: params.chainId
137
+ });
138
+ tokens.push(tokenBalance);
139
+ }
140
+ }
141
+ console.log('ERC-1155 User balances:', tokens);
142
+ // ERC-1155: Cannot enumerate without knowing token IDs
143
+ // Would need to use events or provide specific token IDs
144
+ console.warn('ERC-1155 collection retrieval requires specific token IDs or event analysis');
145
+ return {
146
+ accountAddress: params.accountAddress,
147
+ contractAddress: params.contractAddress,
148
+ totalBalance: 0,
149
+ tokensRetrieved: 0,
150
+ tokens: tokens,
151
+ note: 'ERC-1155 collection retrieval requires specific token IDs. Use getTokenWithMetadata() for individual tokens.'
152
+ };
153
+ }
154
+ // Handle different token standards
155
+ if (contractAnalysis.isERC721) {
156
+ // ERC-721: Get user's total balance and enumerate through tokens
157
+ const userBalance = await this.web3Api.getTokenBalance({
158
+ accountAddress: params.accountAddress,
159
+ contractAddress: params.contractAddress,
160
+ abi: params.abi,
161
+ tokenId: null, // null for ERC-721 total balance
162
+ chainId: params.chainId
163
+ });
164
+ console.log(`ERC-721 User balance for ${params.accountAddress}:`, userBalance);
165
+ if (userBalance === 0) {
166
+ return {
167
+ accountAddress: params.accountAddress,
168
+ contractAddress: params.contractAddress,
169
+ totalBalance: 0,
170
+ tokensRetrieved: 0,
171
+ tokens: []
172
+ };
173
+ }
174
+ // Enumerate through user's tokens
175
+ const maxTokens = params.maxTokens || userBalance;
176
+ const tokensToRetrieve = Math.min(maxTokens, userBalance);
177
+ for (let i = 0; i < tokensToRetrieve; i++) {
178
+ try {
179
+ const tokenId = await this.web3Api.getTokenOfOwnerByIndex({
180
+ contractAddress: params.contractAddress,
181
+ abi: params.abi,
182
+ accountAddress: params.accountAddress,
183
+ tokenIndex: i,
184
+ chainId: params.chainId
185
+ });
186
+ const tokenWithMetadata = await this.getTokenWithMetadata({
187
+ accountAddress: params.accountAddress,
188
+ contractAddress: params.contractAddress,
189
+ abi: params.abi,
190
+ tokenId,
191
+ chainId: params.chainId
192
+ });
193
+ if (tokenWithMetadata.hasBalance) {
194
+ tokens.push(tokenWithMetadata);
195
+ }
196
+ }
197
+ catch (error) {
198
+ console.warn(`Error retrieving ERC-721 token at index ${i}:`, error);
199
+ continue;
200
+ }
201
+ }
202
+ }
203
+ else {
204
+ // Unknown standard
205
+ return {
206
+ accountAddress: params.accountAddress,
207
+ contractAddress: params.contractAddress,
208
+ totalBalance: 0,
209
+ tokensRetrieved: 0,
210
+ tokens: [],
211
+ note: 'Unsupported token standard for collection retrieval'
212
+ };
213
+ }
214
+ // Calculate total balance based on retrieved tokens
215
+ let totalBalance = 0;
216
+ if (contractAnalysis.isERC721) {
217
+ // For ERC-721, total balance is the number of unique tokens owned
218
+ totalBalance = tokens.length;
219
+ }
220
+ else {
221
+ // For other standards, sum up individual token balances
222
+ totalBalance = tokens.reduce((sum, token) => sum + token.balance, 0);
223
+ }
224
+ return {
225
+ accountAddress: params.accountAddress,
226
+ contractAddress: params.contractAddress,
227
+ totalBalance,
228
+ tokensRetrieved: tokens.length,
229
+ tokens
230
+ };
231
+ }
232
+ catch (error) {
233
+ console.error('Error getting token collection:', error);
234
+ return {
235
+ accountAddress: params.accountAddress,
236
+ contractAddress: params.contractAddress,
237
+ totalBalance: 0,
238
+ tokensRetrieved: 0,
239
+ tokens: [],
240
+ note: 'Error retrieving collection'
241
+ };
242
+ }
243
+ }
244
+ async getTokenMetadata(params) {
245
+ params.abi = convertAbiToInterface(params.abi);
246
+ try {
247
+ const tokenUri = await this.web3Api.getTokenUri({
248
+ contractAddress: params.contractAddress,
249
+ abi: params.abi,
250
+ tokenId: params.tokenId,
251
+ chainId: params.chainId
252
+ });
253
+ let metadata = null;
254
+ if (tokenUri) {
255
+ metadata = await this.metadataService.fetchAndProcessMetadata(tokenUri, params.chainId);
256
+ }
257
+ return {
258
+ tokenId: params.tokenId,
259
+ tokenUri,
260
+ metadata
261
+ };
262
+ }
263
+ catch (error) {
264
+ console.error('Error getting token metadata:', error);
265
+ return {
266
+ tokenId: params.tokenId,
267
+ tokenUri: null,
268
+ metadata: null
269
+ };
270
+ }
271
+ }
272
+ }
273
+
274
+ /**
275
+ * MetadataDomainService - Clean IPFS metadata resolution
276
+ */
277
+ class MetadataDomainService {
278
+ constructor(ipfsApi) {
279
+ this.ipfsApi = ipfsApi;
280
+ }
281
+ async fetchAndProcessMetadata(tokenUri, chainId) {
282
+ return this.ipfsApi.fetchAndProcessMetadata(tokenUri, chainId);
283
+ }
284
+ async resolveIPFSUrl(url, chainId) {
285
+ return this.ipfsApi.resolveIPFSUrl(url, chainId);
286
+ }
287
+ }
288
+
289
+ /**
290
+ * ContractDomainService - Clean contract analysis without external dependencies
291
+ */
292
+ class ContractDomainService {
293
+ constructor() { }
294
+ analyzeContract(abi) {
295
+ abi = convertAbiToInterface(abi);
296
+ const methods = abi.fragments.filter(item => item.type === 'function').map(item => item.name);
297
+ // ERC-721 detection
298
+ const hasOwnerOf = methods.includes('ownerOf');
299
+ const hasTokenURI = methods.includes('tokenURI');
300
+ const hasTransferFrom = methods.includes('transferFrom');
301
+ const isERC721 = hasOwnerOf && hasTokenURI && hasTransferFrom;
302
+ // ERC-1155 detection
303
+ const hasBalanceOfBatch = methods.includes('balanceOfBatch');
304
+ const hasSafeBatchTransferFrom = methods.includes('safeBatchTransferFrom');
305
+ const hasURI = methods.includes('uri');
306
+ const isERC1155 = hasBalanceOfBatch && hasSafeBatchTransferFrom && hasURI;
307
+ return {
308
+ hasEnumeration: methods.includes('tokenByIndex') && methods.includes('totalSupply'),
309
+ hasOwnerOf,
310
+ hasBalanceOf: methods.includes('balanceOf'),
311
+ hasTokenURI,
312
+ hasTransfer: methods.includes('transfer') || methods.includes('transferFrom'),
313
+ hasApprove: methods.includes('approve'),
314
+ isERC721,
315
+ isERC1155
316
+ };
317
+ }
318
+ }
319
+
320
+ /**
321
+ * Web3ApplicationService - Application layer entrance point
322
+ * Orchestrates domain services and provides clean public interface
323
+ * Simplified architecture with concrete classes
324
+ */
325
+ class Web3ApplicationService {
326
+ constructor(web3Api, ipfsApi) {
327
+ // Type-safe metadata conversion methods for ERC-721/ERC-1155 standards
328
+ this.metadataMapper = {
329
+ fromERCStandard: (ercMetadata) => ({
330
+ name: ercMetadata.name || '',
331
+ description: ercMetadata.description || '',
332
+ imageUrl: ercMetadata.image || '',
333
+ externalUrl: ercMetadata.external_url,
334
+ animationUrl: ercMetadata.animation_url,
335
+ animationUrlConverted: undefined, // Will be set by IPFS conversion
336
+ attributes: ercMetadata.attributes || [],
337
+ ...ercMetadata
338
+ }),
339
+ toERCStandard: (metadata) => ({
340
+ name: metadata.name,
341
+ description: metadata.description,
342
+ image: metadata.imageUrl,
343
+ animation_url: metadata.animationUrl,
344
+ external_url: metadata.externalUrl,
345
+ attributes: metadata.attributes,
346
+ ...Object.fromEntries(Object.entries(metadata).filter(([key]) => !['name', 'description', 'imageUrl', 'animationUrl', 'externalUrl', 'attributes', 'animationUrlConverted'].includes(key)))
347
+ })
348
+ };
349
+ // Create domain services with injected infrastructure dependencies
350
+ this.contractDomainService = new ContractDomainService();
351
+ this.metadataDomainService = new MetadataDomainService(ipfsApi);
352
+ this.tokenDomainService = new TokenDomainService(web3Api, this.metadataDomainService, this.contractDomainService);
353
+ }
354
+ /**
355
+ * Get balance and metadata for a specific token
356
+ */
357
+ async getSpecificTokenBalance(request) {
358
+ if (!request.tokenId) {
359
+ return this.tokenDomainService.getTokenBalance({
360
+ accountAddress: request.accountAddress || '',
361
+ contractAddress: request.contractAddress,
362
+ abi: request.abi,
363
+ tokenId: '',
364
+ chainId: request.chainId
365
+ });
366
+ }
367
+ return this.tokenDomainService.getTokenWithMetadata({
368
+ accountAddress: request.accountAddress || '',
369
+ contractAddress: request.contractAddress,
370
+ abi: request.abi,
371
+ tokenId: request.tokenId || '',
372
+ chainId: request.chainId
373
+ });
374
+ }
375
+ /**
376
+ * Get metadata for a specific token from on-chain
377
+ */
378
+ async getTokenMetadata(request) {
379
+ const domainResult = await this.tokenDomainService.getTokenMetadata({
380
+ contractAddress: request.contractAddress,
381
+ abi: request.abi,
382
+ tokenId: request.tokenId || '',
383
+ chainId: request.chainId
384
+ });
385
+ return domainResult.metadata;
386
+ }
387
+ /**
388
+ * Retrieve entire collection of tokens with balance and metadata
389
+ */
390
+ async getTokenCollection(request) {
391
+ return this.tokenDomainService.getTokenCollection({
392
+ accountAddress: request.accountAddress || '',
393
+ contractAddress: request.contractAddress,
394
+ abi: request.abi,
395
+ chainId: request.chainId,
396
+ maxTokens: request.maxTokens,
397
+ tokenIds: request.tokenIds
398
+ });
399
+ }
400
+ /**
401
+ * Resolve IPFS URLs to HTTPS if needed
402
+ */
403
+ async resolveIPFSUrl(url, chainId) {
404
+ return this.metadataDomainService.resolveIPFSUrl(url, chainId);
405
+ }
406
+ /**
407
+ * Fetch and process metadata from URI with IPFS conversion
408
+ */
409
+ async fetchAndProcessMetadata(tokenUri, chainId) {
410
+ const domainMetadata = await this.metadataDomainService.fetchAndProcessMetadata(tokenUri, chainId);
411
+ if (!domainMetadata)
412
+ return null;
413
+ // Convert from ERC token standard to our clean interface
414
+ const cleanMetadata = this.metadataMapper.fromERCStandard(domainMetadata);
415
+ // Add IPFS conversion if needed
416
+ if (cleanMetadata.animationUrl?.startsWith('ipfs://')) {
417
+ return {
418
+ ...cleanMetadata,
419
+ animationUrlConverted: await this.resolveIPFSUrl(cleanMetadata.animationUrl, chainId)
420
+ };
421
+ }
422
+ return cleanMetadata;
423
+ }
424
+ }
425
+
426
+ /**
427
+ * Web3InfrastructureApi - Infrastructure implementation for blockchain operations
428
+ * Uses @explorins/web3-ts for Web3 interactions
429
+ */
430
+ class Web3InfrastructureApi {
431
+ constructor(web3ChainService) {
432
+ this.web3ChainService = web3ChainService;
433
+ }
434
+ async getTokenBalance(request) {
435
+ try {
436
+ if (request.tokenId !== null)
437
+ request.tokenId = request.tokenId.toString();
438
+ const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
439
+ console.log(`[getTokenBalance] Ethers provider obtained, creating contract instance...`, ethersProvider);
440
+ const contract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
441
+ return await getAccountTokenBalance(contract, request.accountAddress, request.tokenId);
442
+ }
443
+ catch (error) {
444
+ console.error(`Failed to get token balance for ${request.accountAddress} for ${request.contractAddress} and tokenId ${request.tokenId}, return 0 instead:`, error);
445
+ return 0;
446
+ }
447
+ }
448
+ async getTokenUri(request) {
449
+ try {
450
+ const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
451
+ const contract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
452
+ const tokenId = Number(request.tokenId);
453
+ const tokenUri = await getTokenUri(contract, tokenId);
454
+ return String(tokenUri);
455
+ }
456
+ catch (error) {
457
+ console.error(`Failed to get token URI for tokenId ${request.tokenId}:`, error);
458
+ throw error;
459
+ }
460
+ }
461
+ async getTokenOfOwnerByIndex(request) {
462
+ try {
463
+ const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
464
+ const tokenContract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
465
+ const tokenId = await getTokenOfOwnerByIndex(tokenContract, request.accountAddress, request.tokenIndex);
466
+ return String(tokenId);
467
+ }
468
+ catch (error) {
469
+ console.error(`Failed to get token by index ${request.tokenIndex} for ${request.accountAddress}:`, error);
470
+ throw error;
471
+ }
472
+ }
473
+ }
474
+
475
+ /**
476
+ * IPFSInfrastructureApi - Infrastructure implementation for IPFS operations
477
+ * Uses Web3ChainService for IPFS gateway resolution
478
+ */
479
+ class IPFSInfrastructureApi {
480
+ constructor(web3ChainService) {
481
+ this.web3ChainService = web3ChainService;
482
+ this.defaultIpfsGatewayDomain = 'pers.mypinata.cloud';
483
+ }
484
+ async getIpfsGatewayDomain(chainId) {
485
+ try {
486
+ const chainData = await this.web3ChainService.getChainDataWithCache(chainId);
487
+ return chainData.ipfsGatewayDomain || this.defaultIpfsGatewayDomain;
488
+ }
489
+ catch (error) {
490
+ console.warn(`Failed to get chain data for chainId ${chainId}, using default IPFS gateway:`, error);
491
+ return this.defaultIpfsGatewayDomain;
492
+ }
493
+ }
494
+ async resolveIPFSUrl(url, chainId) {
495
+ if (url.startsWith('ipfs://')) {
496
+ const gateway = await this.getIpfsGatewayDomain(chainId);
497
+ return url.replace('ipfs://', `https://${gateway}/ipfs/`);
498
+ }
499
+ return url;
500
+ }
501
+ async fetchAndProcessMetadata(tokenUri, chainId) {
502
+ try {
503
+ const resolvedUri = await this.resolveIPFSUrl(tokenUri, chainId);
504
+ const response = await fetch(resolvedUri);
505
+ if (!response.ok) {
506
+ throw new Error(`HTTP error! status: ${response.status}`);
507
+ }
508
+ const metadata = await response.json();
509
+ // Process and return clean metadata
510
+ return {
511
+ name: metadata.name || '',
512
+ description: metadata.description || '',
513
+ image: metadata.image ? await this.resolveIPFSUrl(metadata.image, chainId) : '',
514
+ attributes: metadata.attributes || [],
515
+ animation_url: metadata.animation_url ? await this.resolveIPFSUrl(metadata.animation_url, chainId) : undefined,
516
+ external_url: metadata.external_url || undefined
517
+ };
518
+ }
519
+ catch (error) {
520
+ console.error('Error fetching metadata:', error);
521
+ return null;
522
+ }
523
+ }
524
+ async fetchFromUrl(url) {
525
+ try {
526
+ const response = await fetch(url);
527
+ if (!response.ok) {
528
+ throw new Error(`Failed to fetch from ${url}: ${response.statusText}`);
529
+ }
530
+ return await response.json();
531
+ }
532
+ catch (error) {
533
+ console.error(`Error fetching from URL ${url}:`, error);
534
+ throw error;
535
+ }
536
+ }
537
+ }
538
+
539
+ function createWeb3SDK(apiClient) {
540
+ // Warn about potential bundling issues in web environments
541
+ warnIfProblematicEnvironment('Web3 functionality');
542
+ const web3ChainSDK = createWeb3ChainSDK(apiClient);
543
+ // Create Web3ApplicationService - main entry point for all Web3 operations
544
+ const web3InfrastructureApi = new Web3InfrastructureApi(web3ChainSDK.service);
545
+ const ipfsInfrastructureApi = new IPFSInfrastructureApi(web3ChainSDK.service);
546
+ const web3ApplicationService = new Web3ApplicationService(web3InfrastructureApi, ipfsInfrastructureApi);
547
+ // Clean SDK - all functions route through Web3ApplicationService
548
+ return {
549
+ getTokenBalance: (request) => web3ApplicationService.getSpecificTokenBalance(request),
550
+ getTokenMetadata: (request) => web3ApplicationService.getTokenMetadata(request),
551
+ getTokenCollection: (request) => web3ApplicationService.getTokenCollection(request),
552
+ resolveIPFSUrl: (url, chainId) => web3ApplicationService.resolveIPFSUrl(url, chainId),
553
+ fetchAndProcessMetadata: (tokenUri, chainId) => web3ApplicationService.fetchAndProcessMetadata(tokenUri, chainId),
554
+ applicationService: web3ApplicationService
555
+ };
556
+ }
557
+
558
+ export { IPFSInfrastructureApi as I, Web3ApplicationService as W, Web3InfrastructureApi as a, createWeb3SDK as c, detectEnvironment as d, environment as e, warnIfProblematicEnvironment as w };
559
+ //# sourceMappingURL=index-BhROn6lx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BhROn6lx.js","sources":["../../src/core/environment.ts","../../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/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}