@explorins/pers-sdk 1.6.41 → 1.6.43
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.
- package/dist/analytics.cjs +4 -0
- package/dist/analytics.cjs.map +1 -1
- package/dist/analytics.js +1 -1
- package/dist/business.cjs +4 -0
- package/dist/business.cjs.map +1 -1
- package/dist/business.js +1 -1
- package/dist/campaign.cjs +4 -0
- package/dist/campaign.cjs.map +1 -1
- package/dist/campaign.js +1 -1
- package/dist/chunks/{explorer.utils-DGmj4A0H.js → explorer.utils-BkS3k8hX.js} +45 -46
- package/dist/chunks/explorer.utils-BkS3k8hX.js.map +1 -0
- package/dist/chunks/{explorer.utils-PMiqibed.cjs → explorer.utils-Cx3wrqAj.cjs} +45 -46
- package/dist/chunks/explorer.utils-Cx3wrqAj.cjs.map +1 -0
- package/dist/chunks/{pers-sdk--FbpI2jX.js → pers-sdk-Nu2KgiJf.js} +148 -3
- package/dist/chunks/{pers-sdk--FbpI2jX.js.map → pers-sdk-Nu2KgiJf.js.map} +1 -1
- package/dist/chunks/{pers-sdk-LxJOa3Ce.cjs → pers-sdk-XbARV58g.cjs} +147 -2
- package/dist/chunks/pers-sdk-XbARV58g.cjs.map +1 -0
- package/dist/core.cjs +2 -2
- package/dist/core.js +2 -2
- package/dist/donation.cjs +4 -0
- package/dist/donation.cjs.map +1 -1
- package/dist/donation.js +1 -1
- package/dist/index.cjs +6 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -3
- package/dist/managers/index.d.ts +1 -1
- package/dist/managers/index.d.ts.map +1 -1
- package/dist/managers/web3-manager.d.ts +132 -0
- package/dist/managers/web3-manager.d.ts.map +1 -1
- package/dist/package.json +2 -2
- package/dist/payment.cjs +4 -0
- package/dist/payment.cjs.map +1 -1
- package/dist/payment.js +1 -1
- package/dist/redemption.cjs +4 -0
- package/dist/redemption.cjs.map +1 -1
- package/dist/redemption.js +1 -1
- package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts +2 -0
- package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts.map +1 -1
- package/dist/tenant.cjs +4 -0
- package/dist/tenant.cjs.map +1 -1
- package/dist/tenant.js +1 -1
- package/dist/token/models/index.d.ts +1 -1
- package/dist/token/models/index.d.ts.map +1 -1
- package/dist/token.cjs +4 -0
- package/dist/token.cjs.map +1 -1
- package/dist/token.js +1 -1
- package/dist/user-status.cjs +4 -0
- package/dist/user-status.cjs.map +1 -1
- package/dist/user-status.js +1 -1
- package/dist/user.cjs +4 -0
- package/dist/user.cjs.map +1 -1
- package/dist/user.js +1 -1
- package/dist/web3/application/web3-application.service.d.ts +13 -3
- package/dist/web3/application/web3-application.service.d.ts.map +1 -1
- package/dist/web3/domain/models/index.d.ts +11 -1
- package/dist/web3/domain/models/index.d.ts.map +1 -1
- package/dist/web3/infrastructure/api/ipfs-api.d.ts +13 -1
- package/dist/web3/infrastructure/api/ipfs-api.d.ts.map +1 -1
- package/dist/web3-chain.cjs +4 -0
- package/dist/web3-chain.cjs.map +1 -1
- package/dist/web3-chain.js +1 -1
- package/dist/web3.cjs +1 -1
- package/dist/web3.js +1 -1
- package/package.json +2 -2
- package/dist/chunks/explorer.utils-DGmj4A0H.js.map +0 -1
- package/dist/chunks/explorer.utils-PMiqibed.cjs.map +0 -1
- package/dist/chunks/pers-sdk-LxJOa3Ce.cjs.map +0 -1
package/dist/analytics.cjs
CHANGED
|
@@ -15,4 +15,8 @@ Object.defineProperty(exports, "ApiKeyType", {
|
|
|
15
15
|
enumerable: true,
|
|
16
16
|
get: function () { return persShared.ApiKeyType; }
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "NativeTokenTypes", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return persShared.NativeTokenTypes; }
|
|
21
|
+
});
|
|
18
22
|
//# sourceMappingURL=analytics.cjs.map
|
package/dist/analytics.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"analytics.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|
package/dist/analytics.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { A as AnalyticsApi, a as AnalyticsService } from './chunks/analytics-service-CxyrOwel.js';
|
|
2
|
-
export { AccountOwnerType, ApiKeyType } from '@explorins/pers-shared';
|
|
2
|
+
export { AccountOwnerType, ApiKeyType, NativeTokenTypes } from '@explorins/pers-shared';
|
|
3
3
|
//# sourceMappingURL=analytics.js.map
|
package/dist/business.cjs
CHANGED
|
@@ -15,4 +15,8 @@ Object.defineProperty(exports, "ApiKeyType", {
|
|
|
15
15
|
enumerable: true,
|
|
16
16
|
get: function () { return persShared.ApiKeyType; }
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "NativeTokenTypes", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return persShared.NativeTokenTypes; }
|
|
21
|
+
});
|
|
18
22
|
//# sourceMappingURL=business.cjs.map
|
package/dist/business.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"business.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"business.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|
package/dist/business.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { B as BusinessApi, a as BusinessService } from './chunks/business-service-8Xd3d5oY.js';
|
|
2
|
-
export { AccountOwnerType, ApiKeyType } from '@explorins/pers-shared';
|
|
2
|
+
export { AccountOwnerType, ApiKeyType, NativeTokenTypes } from '@explorins/pers-shared';
|
|
3
3
|
//# sourceMappingURL=business.js.map
|
package/dist/campaign.cjs
CHANGED
|
@@ -15,4 +15,8 @@ Object.defineProperty(exports, "ApiKeyType", {
|
|
|
15
15
|
enumerable: true,
|
|
16
16
|
get: function () { return persShared.ApiKeyType; }
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "NativeTokenTypes", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return persShared.NativeTokenTypes; }
|
|
21
|
+
});
|
|
18
22
|
//# sourceMappingURL=campaign.cjs.map
|
package/dist/campaign.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campaign.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"campaign.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|
package/dist/campaign.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { C as CampaignApi, a as CampaignService } from './chunks/campaign-service-CJPXgFBe.js';
|
|
2
|
-
export { AccountOwnerType, ApiKeyType } from '@explorins/pers-shared';
|
|
2
|
+
export { AccountOwnerType, ApiKeyType, NativeTokenTypes } from '@explorins/pers-shared';
|
|
3
3
|
//# sourceMappingURL=campaign.js.map
|
|
@@ -79,6 +79,17 @@ class IPFSInfrastructureApi {
|
|
|
79
79
|
}
|
|
80
80
|
return url;
|
|
81
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
|
+
*/
|
|
82
93
|
async fetchAndProcessMetadata(tokenUri, chainId) {
|
|
83
94
|
try {
|
|
84
95
|
const resolvedUri = await this.resolveIPFSUrl(tokenUri, chainId);
|
|
@@ -86,15 +97,25 @@ class IPFSInfrastructureApi {
|
|
|
86
97
|
if (!response.ok) {
|
|
87
98
|
throw new Error(`HTTP error! status: ${response.status}`);
|
|
88
99
|
}
|
|
89
|
-
const
|
|
90
|
-
//
|
|
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)
|
|
91
111
|
return {
|
|
92
|
-
name:
|
|
93
|
-
description:
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
|
98
119
|
};
|
|
99
120
|
}
|
|
100
121
|
catch (error) {
|
|
@@ -410,28 +431,6 @@ class ContractDomainService {
|
|
|
410
431
|
*/
|
|
411
432
|
class Web3ApplicationService {
|
|
412
433
|
constructor(web3Api, ipfsApi) {
|
|
413
|
-
// Type-safe metadata conversion methods for ERC-721/ERC-1155 standards
|
|
414
|
-
this.metadataMapper = {
|
|
415
|
-
fromERCStandard: (ercMetadata) => ({
|
|
416
|
-
name: ercMetadata.name || '',
|
|
417
|
-
description: ercMetadata.description || '',
|
|
418
|
-
imageUrl: ercMetadata.image || '',
|
|
419
|
-
externalUrl: ercMetadata.external_url,
|
|
420
|
-
animationUrl: ercMetadata.animation_url,
|
|
421
|
-
animationUrlConverted: undefined, // Will be set by IPFS conversion
|
|
422
|
-
attributes: ercMetadata.attributes || [],
|
|
423
|
-
...ercMetadata
|
|
424
|
-
}),
|
|
425
|
-
toERCStandard: (metadata) => ({
|
|
426
|
-
name: metadata.name,
|
|
427
|
-
description: metadata.description,
|
|
428
|
-
image: metadata.imageUrl,
|
|
429
|
-
animation_url: metadata.animationUrl,
|
|
430
|
-
external_url: metadata.externalUrl,
|
|
431
|
-
attributes: metadata.attributes,
|
|
432
|
-
...Object.fromEntries(Object.entries(metadata).filter(([key]) => !['name', 'description', 'imageUrl', 'animationUrl', 'externalUrl', 'attributes', 'animationUrlConverted'].includes(key)))
|
|
433
|
-
})
|
|
434
|
-
};
|
|
435
434
|
// Create domain services with injected infrastructure dependencies
|
|
436
435
|
this.contractDomainService = new ContractDomainService();
|
|
437
436
|
this.metadataDomainService = new MetadataDomainService(ipfsApi);
|
|
@@ -450,7 +449,15 @@ class Web3ApplicationService {
|
|
|
450
449
|
});
|
|
451
450
|
}
|
|
452
451
|
/**
|
|
453
|
-
* Get metadata for a specific token from on-chain
|
|
452
|
+
* Get metadata for a specific token from on-chain.
|
|
453
|
+
*
|
|
454
|
+
* Returns metadata with:
|
|
455
|
+
* - Normalized property names (imageUrl, animationUrl - SDK standard)
|
|
456
|
+
* - All IPFS URLs already resolved to HTTPS
|
|
457
|
+
* - Custom properties preserved from original metadata
|
|
458
|
+
*
|
|
459
|
+
* Note: Normalization happens at infrastructure layer (IPFS API),
|
|
460
|
+
* so no additional transformation needed here.
|
|
454
461
|
*/
|
|
455
462
|
async getTokenMetadata(request) {
|
|
456
463
|
const domainResult = await this.tokenDomainService.getTokenMetadata({
|
|
@@ -459,6 +466,7 @@ class Web3ApplicationService {
|
|
|
459
466
|
tokenId: request.tokenId || '',
|
|
460
467
|
chainId: request.chainId
|
|
461
468
|
});
|
|
469
|
+
// Metadata is already normalized at infrastructure layer
|
|
462
470
|
return domainResult.metadata;
|
|
463
471
|
}
|
|
464
472
|
/**
|
|
@@ -481,22 +489,13 @@ class Web3ApplicationService {
|
|
|
481
489
|
return this.metadataDomainService.resolveIPFSUrl(url, chainId);
|
|
482
490
|
}
|
|
483
491
|
/**
|
|
484
|
-
* Fetch and process metadata from URI with IPFS conversion
|
|
492
|
+
* Fetch and process metadata from any URI with IPFS conversion.
|
|
493
|
+
*
|
|
494
|
+
* Use this for ad-hoc metadata fetching when you have a tokenURI.
|
|
495
|
+
* Normalization happens at infrastructure layer.
|
|
485
496
|
*/
|
|
486
497
|
async fetchAndProcessMetadata(tokenUri, chainId) {
|
|
487
|
-
|
|
488
|
-
if (!domainMetadata)
|
|
489
|
-
return null;
|
|
490
|
-
// Convert from ERC token standard to our clean interface
|
|
491
|
-
const cleanMetadata = this.metadataMapper.fromERCStandard(domainMetadata);
|
|
492
|
-
// Add IPFS conversion if needed
|
|
493
|
-
if (cleanMetadata.animationUrl?.startsWith('ipfs://')) {
|
|
494
|
-
return {
|
|
495
|
-
...cleanMetadata,
|
|
496
|
-
animationUrlConverted: await this.resolveIPFSUrl(cleanMetadata.animationUrl, chainId)
|
|
497
|
-
};
|
|
498
|
-
}
|
|
499
|
-
return cleanMetadata;
|
|
498
|
+
return this.metadataDomainService.fetchAndProcessMetadata(tokenUri, chainId);
|
|
500
499
|
}
|
|
501
500
|
}
|
|
502
501
|
|
|
@@ -557,4 +556,4 @@ async function getExplorerUrlByChainId(getChainData, chainId, address, type) {
|
|
|
557
556
|
}
|
|
558
557
|
|
|
559
558
|
export { IPFSInfrastructureApi as I, Web3ApplicationService as W, Web3InfrastructureApi as a, getExplorerUrlByChainId as b, getExplorerUrl as g };
|
|
560
|
-
//# sourceMappingURL=explorer.utils-
|
|
559
|
+
//# sourceMappingURL=explorer.utils-BkS3k8hX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explorer.utils-BkS3k8hX.js","sources":["../../src/web3/infrastructure/api/web3-api.ts","../../src/web3/infrastructure/api/ipfs-api.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/utils/explorer.utils.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":[],"mappings":"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"}
|
|
@@ -81,6 +81,17 @@ class IPFSInfrastructureApi {
|
|
|
81
81
|
}
|
|
82
82
|
return url;
|
|
83
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Fetch metadata from tokenURI, resolve all IPFS URLs, and normalize to SDK format.
|
|
86
|
+
*
|
|
87
|
+
* NORMALIZATION BOUNDARY: This is the single place where ERC metadata standard
|
|
88
|
+
* (snake_case: image, animation_url) is converted to SDK format (camelCase: imageUrl, animationUrl).
|
|
89
|
+
* All downstream consumers receive normalized SDK format with resolved HTTPS URLs.
|
|
90
|
+
*
|
|
91
|
+
* @param tokenUri - Token URI (can be ipfs:// or https://)
|
|
92
|
+
* @param chainId - Chain ID for IPFS gateway selection
|
|
93
|
+
* @returns Normalized TokenMetadata with resolved HTTPS URLs, or null on error
|
|
94
|
+
*/
|
|
84
95
|
async fetchAndProcessMetadata(tokenUri, chainId) {
|
|
85
96
|
try {
|
|
86
97
|
const resolvedUri = await this.resolveIPFSUrl(tokenUri, chainId);
|
|
@@ -88,15 +99,25 @@ class IPFSInfrastructureApi {
|
|
|
88
99
|
if (!response.ok) {
|
|
89
100
|
throw new Error(`HTTP error! status: ${response.status}`);
|
|
90
101
|
}
|
|
91
|
-
const
|
|
92
|
-
//
|
|
102
|
+
const rawMetadata = await response.json();
|
|
103
|
+
// Resolve IPFS URLs for media fields
|
|
104
|
+
const resolvedImageUrl = rawMetadata.image
|
|
105
|
+
? await this.resolveIPFSUrl(rawMetadata.image, chainId)
|
|
106
|
+
: '';
|
|
107
|
+
const resolvedAnimationUrl = rawMetadata.animation_url
|
|
108
|
+
? await this.resolveIPFSUrl(rawMetadata.animation_url, chainId)
|
|
109
|
+
: undefined;
|
|
110
|
+
// Extract custom properties (anything not in ERC standard)
|
|
111
|
+
const customProperties = Object.fromEntries(Object.entries(rawMetadata).filter(([key]) => !['name', 'description', 'image', 'animation_url', 'external_url', 'attributes'].includes(key)));
|
|
112
|
+
// Return normalized SDK format (typed as TokenMetadata)
|
|
93
113
|
return {
|
|
94
|
-
name:
|
|
95
|
-
description:
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
114
|
+
name: rawMetadata.name || '',
|
|
115
|
+
description: rawMetadata.description || '',
|
|
116
|
+
imageUrl: resolvedImageUrl,
|
|
117
|
+
animationUrl: resolvedAnimationUrl,
|
|
118
|
+
externalUrl: rawMetadata.external_url || undefined,
|
|
119
|
+
attributes: rawMetadata.attributes || [],
|
|
120
|
+
...customProperties
|
|
100
121
|
};
|
|
101
122
|
}
|
|
102
123
|
catch (error) {
|
|
@@ -412,28 +433,6 @@ class ContractDomainService {
|
|
|
412
433
|
*/
|
|
413
434
|
class Web3ApplicationService {
|
|
414
435
|
constructor(web3Api, ipfsApi) {
|
|
415
|
-
// Type-safe metadata conversion methods for ERC-721/ERC-1155 standards
|
|
416
|
-
this.metadataMapper = {
|
|
417
|
-
fromERCStandard: (ercMetadata) => ({
|
|
418
|
-
name: ercMetadata.name || '',
|
|
419
|
-
description: ercMetadata.description || '',
|
|
420
|
-
imageUrl: ercMetadata.image || '',
|
|
421
|
-
externalUrl: ercMetadata.external_url,
|
|
422
|
-
animationUrl: ercMetadata.animation_url,
|
|
423
|
-
animationUrlConverted: undefined, // Will be set by IPFS conversion
|
|
424
|
-
attributes: ercMetadata.attributes || [],
|
|
425
|
-
...ercMetadata
|
|
426
|
-
}),
|
|
427
|
-
toERCStandard: (metadata) => ({
|
|
428
|
-
name: metadata.name,
|
|
429
|
-
description: metadata.description,
|
|
430
|
-
image: metadata.imageUrl,
|
|
431
|
-
animation_url: metadata.animationUrl,
|
|
432
|
-
external_url: metadata.externalUrl,
|
|
433
|
-
attributes: metadata.attributes,
|
|
434
|
-
...Object.fromEntries(Object.entries(metadata).filter(([key]) => !['name', 'description', 'imageUrl', 'animationUrl', 'externalUrl', 'attributes', 'animationUrlConverted'].includes(key)))
|
|
435
|
-
})
|
|
436
|
-
};
|
|
437
436
|
// Create domain services with injected infrastructure dependencies
|
|
438
437
|
this.contractDomainService = new ContractDomainService();
|
|
439
438
|
this.metadataDomainService = new MetadataDomainService(ipfsApi);
|
|
@@ -452,7 +451,15 @@ class Web3ApplicationService {
|
|
|
452
451
|
});
|
|
453
452
|
}
|
|
454
453
|
/**
|
|
455
|
-
* Get metadata for a specific token from on-chain
|
|
454
|
+
* Get metadata for a specific token from on-chain.
|
|
455
|
+
*
|
|
456
|
+
* Returns metadata with:
|
|
457
|
+
* - Normalized property names (imageUrl, animationUrl - SDK standard)
|
|
458
|
+
* - All IPFS URLs already resolved to HTTPS
|
|
459
|
+
* - Custom properties preserved from original metadata
|
|
460
|
+
*
|
|
461
|
+
* Note: Normalization happens at infrastructure layer (IPFS API),
|
|
462
|
+
* so no additional transformation needed here.
|
|
456
463
|
*/
|
|
457
464
|
async getTokenMetadata(request) {
|
|
458
465
|
const domainResult = await this.tokenDomainService.getTokenMetadata({
|
|
@@ -461,6 +468,7 @@ class Web3ApplicationService {
|
|
|
461
468
|
tokenId: request.tokenId || '',
|
|
462
469
|
chainId: request.chainId
|
|
463
470
|
});
|
|
471
|
+
// Metadata is already normalized at infrastructure layer
|
|
464
472
|
return domainResult.metadata;
|
|
465
473
|
}
|
|
466
474
|
/**
|
|
@@ -483,22 +491,13 @@ class Web3ApplicationService {
|
|
|
483
491
|
return this.metadataDomainService.resolveIPFSUrl(url, chainId);
|
|
484
492
|
}
|
|
485
493
|
/**
|
|
486
|
-
* Fetch and process metadata from URI with IPFS conversion
|
|
494
|
+
* Fetch and process metadata from any URI with IPFS conversion.
|
|
495
|
+
*
|
|
496
|
+
* Use this for ad-hoc metadata fetching when you have a tokenURI.
|
|
497
|
+
* Normalization happens at infrastructure layer.
|
|
487
498
|
*/
|
|
488
499
|
async fetchAndProcessMetadata(tokenUri, chainId) {
|
|
489
|
-
|
|
490
|
-
if (!domainMetadata)
|
|
491
|
-
return null;
|
|
492
|
-
// Convert from ERC token standard to our clean interface
|
|
493
|
-
const cleanMetadata = this.metadataMapper.fromERCStandard(domainMetadata);
|
|
494
|
-
// Add IPFS conversion if needed
|
|
495
|
-
if (cleanMetadata.animationUrl?.startsWith('ipfs://')) {
|
|
496
|
-
return {
|
|
497
|
-
...cleanMetadata,
|
|
498
|
-
animationUrlConverted: await this.resolveIPFSUrl(cleanMetadata.animationUrl, chainId)
|
|
499
|
-
};
|
|
500
|
-
}
|
|
501
|
-
return cleanMetadata;
|
|
500
|
+
return this.metadataDomainService.fetchAndProcessMetadata(tokenUri, chainId);
|
|
502
501
|
}
|
|
503
502
|
}
|
|
504
503
|
|
|
@@ -563,4 +562,4 @@ exports.Web3ApplicationService = Web3ApplicationService;
|
|
|
563
562
|
exports.Web3InfrastructureApi = Web3InfrastructureApi;
|
|
564
563
|
exports.getExplorerUrl = getExplorerUrl;
|
|
565
564
|
exports.getExplorerUrlByChainId = getExplorerUrlByChainId;
|
|
566
|
-
//# sourceMappingURL=explorer.utils-
|
|
565
|
+
//# sourceMappingURL=explorer.utils-Cx3wrqAj.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explorer.utils-Cx3wrqAj.cjs","sources":["../../src/web3/infrastructure/api/web3-api.ts","../../src/web3/infrastructure/api/ipfs-api.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/utils/explorer.utils.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["createSafeContract","getAccountTokenBalance","getTokenUri","getTokenOfOwnerByIndex","globalCacheService","CacheTTL","convertAbiToInterface"],"mappings":";;;;;AASA;;;AAGG;MACU,qBAAqB,CAAA;AAEhC,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAAqB;IAEzD,MAAM,eAAe,CAAC,OAMrB,EAAA;AACC,QAAA,IAAI;AACF,YAAA,IAAG,OAAO,CAAC,OAAO,KAAK,IAAI;gBAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzE,YAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,OAAO,CAAC,OAAO,CAAC;AAE9F,YAAA,MAAM,QAAQ,GAAGA,yBAAkB,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC;AAEzF,YAAA,OAAO,MAAMC,6BAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC;QACxF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,OAAO,CAAC,cAAc,CAAA,KAAA,EAAQ,OAAO,CAAC,eAAe,CAAA,aAAA,EAAgB,OAAO,CAAC,OAAO,qBAAqB,EAAE,KAAK,CAAC;AAClK,YAAA,OAAO,CAAC;QACV;IACF;IAEA,MAAM,WAAW,CAAC,OAKjB,EAAA;AACC,QAAA,IAAI;AACF,YAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,OAAO,CAAC,OAAO,CAAC;AAC9F,YAAA,MAAM,QAAQ,GAAGD,yBAAkB,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,GAAU,EAAE,cAAqB,CAAC;YAEvG,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YACvC,MAAM,QAAQ,GAAG,MAAME,kBAAW,CAAC,QAAQ,EAAE,OAAO,CAAC;AAErD,YAAA,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,CAAA,oCAAA,EAAuC,OAAO,CAAC,OAAO,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC;AAC/E,YAAA,MAAM,KAAK;QACb;IACF;IAEA,MAAM,sBAAsB,CAAC,OAM5B,EAAA;AACC,QAAA,IAAI;AACF,YAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,OAAO,CAAC,OAAO,CAAC;AAC9F,YAAA,MAAM,aAAa,GAAGF,yBAAkB,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,GAAU,EAAE,cAAqB,CAAC;AAE5G,YAAA,MAAM,OAAO,GAAG,MAAMG,6BAAsB,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC;AACvG,YAAA,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,CAAA,6BAAA,EAAgC,OAAO,CAAC,UAAU,CAAA,KAAA,EAAQ,OAAO,CAAC,cAAc,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC;AACzG,YAAA,MAAM,KAAK;QACb;IACF;AACD;;ACvED;;;AAGG;MACU,qBAAqB,CAAA;AAIhC,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAHnB,IAAA,CAAA,wBAAwB,GAAG,qBAAqB;AACzD,QAAA,IAAA,CAAA,KAAK,GAAGC,wBAAkB,CAAC,eAAe,CAAC,MAAM,CAAC;IAED;IAEzD,MAAM,oBAAoB,CAAC,OAAe,EAAA;AACxC,QAAA,MAAM,QAAQ,GAAG,CAAA,QAAA,EAAW,OAAO,EAAE;QAErC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,QAAQ,EACR,YAAW;AACT,YAAA,IAAI;gBACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,OAAO,CAAC;AAC5E,gBAAA,OAAO,SAAS,CAAC,iBAAiB,IAAI,IAAI,CAAC,wBAAwB;YACrE;YAAE,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,IAAI,CAAC,CAAA,qCAAA,EAAwC,OAAO,CAAA,6BAAA,CAA+B,EAAE,KAAK,CAAC;gBACnG,OAAO,IAAI,CAAC,wBAAwB;YACtC;AACF,QAAA,CAAC,EACDC,cAAQ,CAAC,OAAO,CACjB;IACH;AAEA,IAAA,MAAM,cAAc,CAAC,GAAW,EAAE,OAAe,EAAA;AAC/C,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;YACxD,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAA,QAAA,EAAW,OAAO,CAAA,MAAA,CAAQ,CAAC;QAC3D;AACA,QAAA,OAAO,GAAG;IACZ;AAEA;;;;;;;;;;AAUG;AACH,IAAA,MAAM,uBAAuB,CAAC,QAAgB,EAAE,OAAe,EAAA;AAC7D,QAAA,IAAI;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC;AAChE,YAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC;AACzC,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,CAAA,oBAAA,EAAuB,QAAQ,CAAC,MAAM,CAAA,CAAE,CAAC;YAC3D;AAEA,YAAA,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;;AAGzC,YAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC;kBACjC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO;kBACpD,EAAE;AACN,YAAA,MAAM,oBAAoB,GAAG,WAAW,CAAC;kBACrC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO;kBAC5D,SAAS;;AAGb,YAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CACzC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KACvC,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC/F,CACF;;YAGD,OAAO;AACL,gBAAA,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,EAAE;AAC5B,gBAAA,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,EAAE;AAC1C,gBAAA,QAAQ,EAAE,gBAAgB;AAC1B,gBAAA,YAAY,EAAE,oBAAoB;AAClC,gBAAA,WAAW,EAAE,WAAW,CAAC,YAAY,IAAI,SAAS;AAClD,gBAAA,UAAU,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE;AACxC,gBAAA,GAAG;aACa;QACpB;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC;AAChD,YAAA,OAAO,IAAI;QACb;IACF;IAEA,MAAM,YAAY,CAAC,GAAW,EAAA;AAC5B,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC;AAEjC,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,CAAA,qBAAA,EAAwB,GAAG,CAAA,EAAA,EAAK,QAAQ,CAAC,UAAU,CAAA,CAAE,CAAC;YACxE;AAEA,YAAA,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE;QAC9B;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,CAAA,wBAAA,EAA2B,GAAG,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC;AACvD,YAAA,MAAM,KAAK;QACb;IACF;AAEA;;AAEG;IACI,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;IACpB;AACD;;ACxGD;AAEA;;AAEG;MACU,kBAAkB,CAAA;AAG7B,IAAA,WAAA,CACU,OAA8B,EAC9B,eAAsC,EACtC,eAAsC,EAAA;QAFtC,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,eAAe,GAAf,eAAe;AALjB,QAAA,IAAA,CAAA,KAAK,GAAGD,wBAAkB,CAAC,eAAe,CAAC,cAAc,CAAC;IAOlE;IAEA,MAAM,eAAe,CAAC,MAMrB,EAAA;QACC,MAAM,GAAG,GAAGE,4BAAqB,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7C,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAC,GAAG,MAAM,EAAE,GAAG,EAAC,CAAC;QAEpE,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO;YACP,UAAU,EAAE,OAAO,GAAG,CAAC;AACvB,YAAA,QAAQ,EAAE;SACX;IACH;IAEA,MAAM,gBAAgB,CAAC,MAKtB,EAAA;AAKC,QAAA,MAAM,QAAQ,GAAG,CAAA,SAAA,EAAY,MAAM,CAAC,eAAe,CAAA,CAAA,EAAI,MAAM,CAAC,OAAO,CAAA,CAAA,EAAI,MAAM,CAAC,OAAO,EAAE;QAEzF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAW;AAC9C,YAAA,IAAI;gBACF,MAAM,GAAG,GAAGA,4BAAqB,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7C,gBAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAC,GAAG,MAAM,EAAE,GAAG,EAAC,CAAC;gBAEjE,MAAM,QAAQ,GAAG;AACf,sBAAE,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO;sBAC3E,IAAI;gBAER,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;YACxD;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC;AACtD,gBAAA,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;YACpE;AACF,QAAA,CAAC,EAAED,cAAQ,CAAC,QAAQ,CAAC;IACvB;IAEA,MAAM,mBAAmB,CAAC,MAMzB,EAAA;QACC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,EAAC,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM;AAC7B,SAAA,CAAC;QAEF,OAAO;AACL,YAAA,GAAG,aAAa;YAChB,QAAQ,EAAE,cAAc,CAAC;SAC1B;IACH;IAEA,MAAM,uBAAuB,CAAC,MAM7B,EAAA;;AAEC,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,EAAC,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;QACzD;;AAGA,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;IACzC;IAEA,MAAM,kBAAkB,CAAC,MAQxB,EAAA;;QAEC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;YACrD,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,2CAA2C,CAAC;QAClF;AAEA,QAAA,IAAI;YACF,MAAM,GAAG,GAAGC,4BAAqB,CAAC,MAAM,CAAC,GAAG,CAAC;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC;AAC1D,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;;AAGvD,YAAA,IAAI,QAAQ,CAAC,SAAS,EAAE;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;oBAC5B,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,+CAA+C,CAAC;gBACtF;AACA,gBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC;YAC/E;;AAGA,YAAA,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACrB,gBAAA,IAAI,QAAQ,CAAC,cAAc,EAAE;AAC3B,oBAAA,MAAM,EAAC,QAAQ,EAAE,SAAS,EAAC,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC;AAE7E,oBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,wBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,0BAA0B,GAAG,iBAAiB,CAAC;oBACjG;AAEA,oBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;gBACvE;AAAO,qBAAA,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;AAClC,oBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;gBAC9E;qBAAO;oBACL,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,yDAAyD,CAAC;gBAChG;YACF;AAEA,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAA,oCAAA,EAAuC,QAAQ,CAAC,QAAQ,cAAc,QAAQ,CAAC,SAAS,CAAA,CAAA,CAAG,CAAC;QAClI;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,eAAe;AACxE,YAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC;YACnD,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAA,6BAAA,EAAgC,OAAO,CAAA,CAAE,CAAC;QAChF;IACF;AAEA;;AAEG;AACK,IAAA,MAAM,uBAAuB,CAAC,MAKrC,EAAE,GAAc,EAAA;AACf,QAAA,MAAM,iBAAiB,GAAG,CAAA,UAAA,EAAa,MAAM,CAAC,eAAe,CAAA,CAAA,EAAI,MAAM,CAAC,cAAc,CAAA,CAAA,EAAI,MAAM,CAAC,OAAO,EAAE;;QAG1G,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;AACxD,YAAA,GAAG,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE;AAC1B,SAAA,CAAC;AAEF,QAAA,IAAI,cAAc,KAAK,CAAC,EAAE;;AAExB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACpC,OAAO,EAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAC;QACzC;;QAGA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2D,iBAAiB,CAAC;AAC1G,QAAA,MAAM,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,QAAQ;AAElE,QAAA,IAAI,MAAM,IAAI,QAAQ,GAAGD,cAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,KAAK,cAAc,EAAE;YAC5E,OAAO,EAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAC;QACrD;;AAGA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,cAAc,EAAE,cAAc,EAAE,GAAG,CAAC;AACnF,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC;;QAG5E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAC,EAAEA,cAAQ,CAAC,KAAK,CAAC;AAE7G,QAAA,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAC;IACrC;AAEQ,IAAA,MAAM,wBAAwB,CAAC,MAItC,EAAE,GAAc,EAAE,SAAiB,EAAA;;AAElC,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;AACxD,YAAA,MAAM,mBAAmB,GAAG,CAAA,YAAA,EAAe,MAAM,CAAC,eAAe,CAAA,CAAA,EAAI,MAAM,CAAC,cAAc,IAAI,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,OAAO,EAAE;AAEnH,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,mBAAmB,EACnB,MAAM,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;AACxC,gBAAA,GAAG,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE;AAC7B,aAAA,CAAC,CAAC,KAAK,CAAC,KAAK,IAAG;;AAEf,gBAAA,OAAO,IAAI;AACb,YAAA,CAAC,CAAC,EACFA,cAAQ,CAAC,KAAK;aACf;AACH,QAAA,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3C,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAmB,EAAE,KAAK,IAAI,CAAC;IAC1D;IAEQ,MAAM,iBAAiB,CAAC,MAK/B,EAAE,QAAkB,EAAE,SAAiB,EAAE,aAAqC,EAAA;QAC7E,MAAM,MAAM,GAAmB,EAAE;QACjC,MAAM,MAAM,GAAa,EAAE;;AAG3B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE;AACnD,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;;YAG9C,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,IAAG;AAC1C,gBAAA,IAAI,aAAa,KAAK,SAAS,EAAE;;oBAE/B,OAAO,OAAO,CAAC,OAAO,CAAC;wBACrB,OAAO;AACP,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,UAAU,EAAE,IAAI;AAChB,wBAAA,QAAQ,EAAE;AACX,qBAAA,CAAC;gBACJ;qBAAO;;oBAEL,OAAO,IAAI,CAAC,eAAe,CAAC,EAAC,GAAG,MAAM,EAAE,OAAO,EAAC;yBAC7C,KAAK,CAAC,KAAK,IAAG;wBACb,MAAM,CAAC,IAAI,CAAC,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;AAC3C,wBAAA,OAAO,IAAI;AACb,oBAAA,CAAC,CAAC;gBACN;AACF,YAAA,CAAC,CAAC;YAEF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;AACzD,YAAA,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,KAC9C,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,CACnC;;AAGD,YAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,gBAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,IAC5C,IAAI,CAAC,gBAAgB,CAAC;oBACpB,eAAe,EAAE,MAAM,CAAC,eAAe;oBACvC,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,OAAO,EAAE,KAAK,CAAC,OAAQ;oBACvB,OAAO,EAAE,MAAM,CAAC;iBACjB;AACA,qBAAA,IAAI,CAAC,QAAQ,KAAK;oBACjB,OAAO,EAAE,KAAK,CAAC,OAAQ;oBACvB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,QAAQ,EAAE,QAAQ,CAAC;AACH,iBAAA,CAAA;qBACjB,KAAK,CAAC,KAAK,IAAG;AACb,oBAAA,OAAO,CAAC,IAAI,CAAC,CAAA,0BAAA,EAA6B,KAAK,CAAC,OAAO,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC,OAAO,CAAC;oBAC1E,OAAO;wBACL,OAAO,EAAE,KAAK,CAAC,OAAQ;wBACvB,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,UAAU,EAAE,KAAK,CAAC,UAAU;AAC5B,wBAAA,QAAQ,EAAE;qBACK;gBACnB,CAAC,CAAC,CACH;gBAED,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACvD,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;YAC7B;QACF;QAEA,OAAO;YACL,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,eAAe,EAAE,MAAM,CAAC,eAAe;AACvC,YAAA,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACnE,eAAe,EAAE,MAAM,CAAC,MAAM;YAC9B,MAAM;AACN,YAAA,IAAI,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAA,EAAG,MAAM,CAAC,MAAM,wBAAwB,GAAG;SACtE;IACH;IAEQ,eAAe,CAAC,MAGvB,EAAE,IAAa,EAAA;QACd,OAAO;YACL,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,eAAe,EAAE,MAAM,CAAC,eAAe;AACvC,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,eAAe,EAAE,CAAC;AAClB,YAAA,MAAM,EAAE,EAAE;YACV;SACD;IACH;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;IACpB;AACD;;AC1TD;;AAEG;MACU,qBAAqB,CAAA;AAGhC,IAAA,WAAA,CAAoB,OAA8B,EAAA;QAA9B,IAAA,CAAA,OAAO,GAAP,OAAO;AAFnB,QAAA,IAAA,CAAA,KAAK,GAAGD,wBAAkB,CAAC,eAAe,CAAC,UAAU,CAAC;IAET;AAErD,IAAA,MAAM,uBAAuB,CAAC,QAAgB,EAAE,OAAe,EAAA;AAC7D,QAAA,MAAM,QAAQ,GAAG,CAAA,MAAA,EAAS,QAAQ,CAAA,CAAA,EAAI,OAAO,EAAE;QAE/C,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,QAAQ,EACR,YAAW;AACT,YAAA,IAAI;gBACF,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC;YACtE;YAAE,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,CAAC,CAAA,4BAAA,EAA+B,QAAQ,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC;AAChE,gBAAA,OAAO,IAAI;YACb;AACF,QAAA,CAAC,EACDC,cAAQ,CAAC,QAAQ,CAClB;IACH;AAEA,IAAA,MAAM,cAAc,CAAC,GAAW,EAAE,OAAe,EAAA;AAC/C,QAAA,MAAM,QAAQ,GAAG,CAAA,QAAA,EAAW,GAAG,CAAA,CAAA,EAAI,OAAO,EAAE;QAE5C,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,QAAQ,EACR,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,EAC/CA,cAAQ,CAAC,OAAO,CACjB;IACH;AAEA;;AAEG;IACI,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;IACpB;AACD;;AC1CD;;AAEG;MACU,qBAAqB,CAAA;AAChC,IAAA,WAAA,GAAA,EAAe;AAEf,IAAA,eAAe,CAAC,GAAa,EAAA;AAU3B,QAAA,MAAM,QAAQ,GAAGC,4BAAqB,CAAC,GAAG,CAAC;AAC3C,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,IAAK,IAAY,CAAC,IAAI,CAAC;;QAG3G,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;QAChD,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;AACxD,QAAA,MAAM,QAAQ,GAAG,UAAU,IAAI,WAAW,IAAI,eAAe;;QAG7D,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC5D,MAAM,wBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AACtC,QAAA,MAAM,SAAS,GAAG,iBAAiB,IAAI,wBAAwB,IAAI,MAAM;QAEzE,OAAO;AACL,YAAA,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;YACnF,UAAU;AACV,YAAA,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC3C,WAAW;AACX,YAAA,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC7E,YAAA,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YACvC,QAAQ;YACR;SACD;IACH;AACD;;ACRD;;;;AAIG;MACU,sBAAsB,CAAA;IAKjC,WAAA,CACE,OAA8B,EAC9B,OAA8B,EAAA;;AAG9B,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,qBAAqB,EAAE;QACxD,IAAI,CAAC,qBAAqB,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC;AAC/D,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAC9C,OAAO,EACP,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,qBAAqB,CAC3B;IACH;AAEA;;AAEG;IACH,MAAM,uBAAuB,CAAC,OAA4B,EAAA;AACxD,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC;AACrD,YAAA,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE;YAC5C,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,GAAG,EAAE,OAAO,CAAC,GAAG;AAChB,YAAA,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,OAAO,EAAE,OAAO,CAAC;AAClB,SAAA,CAAC;IACJ;AAEA;;;;;;;;;;AAUG;IACH,MAAM,gBAAgB,CAAC,OAA4B,EAAA;QACjD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;YAClE,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,GAAG,EAAE,OAAO,CAAC,GAAG;AAChB,YAAA,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,OAAO,EAAE,OAAO,CAAC;AAClB,SAAA,CAAC;;QAGF,OAAO,YAAY,CAAC,QAAQ;IAC9B;AAEA;;AAEG;IACH,MAAM,kBAAkB,CAAC,OAA+B,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC;AAChD,YAAA,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE;YAC5C,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,OAAO,CAAC;AACnB,SAAA,CAAC;IACJ;AAEA;;AAEG;AACH,IAAA,MAAM,cAAc,CAAC,GAAW,EAAE,OAAe,EAAA;QAC/C,OAAO,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC;IAChE;AAEA;;;;;AAKG;AACH,IAAA,MAAM,uBAAuB,CAAC,QAAgB,EAAE,OAAe,EAAA;QAC7D,OAAO,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC9E;AACD;;AC7HD;;;;;;;AAOG;SACa,cAAc,CAC5B,SAA2B,EAC3B,OAAe,EACf,IAAsB,EAAA;AAEtB,IAAA,IAAI,SAAS,EAAE,WAAW,EAAE;QAC1B,OAAO,CAAA,EAAG,SAAS,CAAC,WAAW,IAAI,IAAI,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE;IACtD;;AAGA,IAAA,MAAM,OAAO,GAAG,SAAS,EAAE,OAAO;IAClC,IAAI,GAAG,GAAG,EAAE;IACZ,QAAQ,OAAO;AACb,QAAA,KAAK,CAAC;AACJ,YAAA,GAAG,GAAG,CAAA,qBAAA,EAAwB,IAAI,CAAA,CAAA,EAAI,OAAO,EAAE;YAC/C;AACF,QAAA,KAAK,CAAC;AACJ,YAAA,GAAG,GAAG,CAAA,6BAAA,EAAgC,IAAI,CAAA,CAAA,EAAI,OAAO,EAAE;YACvD;AACF,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,GAAG,CAAA,oBAAA,EAAuB,IAAI,CAAA,CAAA,EAAI,OAAO,EAAE;YAC9C;AACF,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,GAAG,CAAA,4BAAA,EAA+B,IAAI,CAAA,CAAA,EAAI,OAAO,EAAE;YACtD;AACF,QAAA,KAAK,GAAG;AACN,YAAA,GAAG,GAAG,CAAA,wCAAA,EAA2C,IAAI,CAAA,CAAA,EAAI,OAAO,EAAE;YAClE;AACF,QAAA,KAAK,KAAK;AACR,YAAA,GAAG,GAAG,CAAA,uCAAA,EAA0C,IAAI,CAAA,CAAA,EAAI,OAAO,EAAE;YACjE;AACF,QAAA,KAAK,KAAK;AACR,YAAA,GAAG,GAAG,CAAA,4BAAA,EAA+B,IAAI,CAAA,CAAA,EAAI,OAAO,EAAE;YACtD;AACF,QAAA;AACE,YAAA,GAAG,GAAG,CAAA,qBAAA,EAAwB,IAAI,CAAA,CAAA,EAAI,OAAO,EAAE;;AAEnD,IAAA,OAAO,GAAG;AACZ;AAEA;;;;;;;;AAQG;AACI,eAAe,uBAAuB,CAC3C,YAA4D,EAC5D,OAAe,EACf,OAAe,EACf,IAAsB,EAAA;AAEtB,IAAA,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC;IAC7C,OAAO,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC;AACjD;;;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AccountOwnerType } from '@explorins/pers-shared';
|
|
1
|
+
import { AccountOwnerType, NativeTokenTypes } from '@explorins/pers-shared';
|
|
2
2
|
import { i as isTokenExpired, E as ErrorUtils, A as AuthenticationError, P as PersApiError, a as Web3ChainService, W as Web3ChainApi } from './web3-chain-service-JRSwxr-s.js';
|
|
3
3
|
import { a as UserService, U as UserApi } from './user-service-D6mTa_WZ.js';
|
|
4
4
|
import { createUserStatusSDK } from '../user-status.js';
|
|
@@ -11,7 +11,7 @@ import { a as PaymentService, P as PurchaseApi } from './payment-service-DfCBFos
|
|
|
11
11
|
import { a as TenantService, T as TenantApi } from './tenant-service-DxtHAlaa.js';
|
|
12
12
|
import { a as AnalyticsService, A as AnalyticsApi } from './analytics-service-CxyrOwel.js';
|
|
13
13
|
import { a as DonationService, D as DonationApi } from './donation-service-CyJS4DIZ.js';
|
|
14
|
-
import { a as Web3InfrastructureApi, I as IPFSInfrastructureApi, W as Web3ApplicationService, b as getExplorerUrlByChainId } from './explorer.utils-
|
|
14
|
+
import { a as Web3InfrastructureApi, I as IPFSInfrastructureApi, W as Web3ApplicationService, b as getExplorerUrlByChainId } from './explorer.utils-BkS3k8hX.js';
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* PERS SDK Configuration interfaces and utilities
|
|
@@ -5802,6 +5802,37 @@ class DonationManager {
|
|
|
5802
5802
|
*
|
|
5803
5803
|
* Provides a simplified API for common Web3 blockchain tasks while maintaining
|
|
5804
5804
|
* access to the full Web3 SDK for advanced use cases.
|
|
5805
|
+
*
|
|
5806
|
+
* ## ERC-1155 Token Handling
|
|
5807
|
+
*
|
|
5808
|
+
* ERC-1155 tokens require specific tokenIds to query balances (unlike ERC-721 which
|
|
5809
|
+
* supports enumeration). When working with ERC-1155 reward tokens:
|
|
5810
|
+
*
|
|
5811
|
+
* 1. Use `getTokenCollection()` with `tokenIds` extracted from `token.metadata`
|
|
5812
|
+
* 2. Each metadata item has `tokenMetadataIncrementalId` which is the on-chain tokenId
|
|
5813
|
+
*
|
|
5814
|
+
* @example ERC-1155 Reward Token Balance
|
|
5815
|
+
* ```typescript
|
|
5816
|
+
* // Get reward token definition (includes metadata with tokenIds)
|
|
5817
|
+
* const rewardTokens = await sdk.tokens.getRewardTokens();
|
|
5818
|
+
* const rewardToken = rewardTokens[0];
|
|
5819
|
+
*
|
|
5820
|
+
* // Extract tokenIds from metadata for ERC-1155
|
|
5821
|
+
* const tokenIds = rewardToken.metadata?.map(
|
|
5822
|
+
* meta => meta.tokenMetadataIncrementalId.toString()
|
|
5823
|
+
* );
|
|
5824
|
+
*
|
|
5825
|
+
* // Get user's owned tokens
|
|
5826
|
+
* const collection = await sdk.web3.getTokenCollection({
|
|
5827
|
+
* accountAddress: walletAddress,
|
|
5828
|
+
* contractAddress: rewardToken.contractAddress,
|
|
5829
|
+
* abi: rewardToken.abi,
|
|
5830
|
+
* chainId: rewardToken.chainId,
|
|
5831
|
+
* tokenIds: tokenIds // Required for ERC-1155!
|
|
5832
|
+
* });
|
|
5833
|
+
*
|
|
5834
|
+
* const ownedTokens = collection.tokens.filter(t => t.hasBalance);
|
|
5835
|
+
* ```
|
|
5805
5836
|
*/
|
|
5806
5837
|
class Web3Manager {
|
|
5807
5838
|
constructor(apiClient) {
|
|
@@ -5889,6 +5920,120 @@ class Web3Manager {
|
|
|
5889
5920
|
getWeb3ApplicationService() {
|
|
5890
5921
|
return this.web3ApplicationService;
|
|
5891
5922
|
}
|
|
5923
|
+
// ==========================================
|
|
5924
|
+
// HELPER METHODS
|
|
5925
|
+
// ==========================================
|
|
5926
|
+
/**
|
|
5927
|
+
* Extract tokenIds from a TokenDTO for use with ERC-1155 contracts.
|
|
5928
|
+
*
|
|
5929
|
+
* ERC-1155 tokens require specific tokenIds to query balances. This helper
|
|
5930
|
+
* extracts the `tokenMetadataIncrementalId` from each metadata entry.
|
|
5931
|
+
*
|
|
5932
|
+
* @param token - Token definition containing metadata array
|
|
5933
|
+
* @returns Array of tokenId strings, or undefined if no metadata
|
|
5934
|
+
*
|
|
5935
|
+
* @example
|
|
5936
|
+
* ```typescript
|
|
5937
|
+
* const rewardToken = await sdk.tokens.getRewardTokens()[0];
|
|
5938
|
+
* const tokenIds = sdk.web3.extractTokenIds(rewardToken);
|
|
5939
|
+
*
|
|
5940
|
+
* if (tokenIds) {
|
|
5941
|
+
* const collection = await sdk.web3.getTokenCollection({
|
|
5942
|
+
* accountAddress: walletAddress,
|
|
5943
|
+
* contractAddress: rewardToken.contractAddress,
|
|
5944
|
+
* abi: rewardToken.abi,
|
|
5945
|
+
* chainId: rewardToken.chainId,
|
|
5946
|
+
* tokenIds: tokenIds
|
|
5947
|
+
* });
|
|
5948
|
+
* }
|
|
5949
|
+
* ```
|
|
5950
|
+
*/
|
|
5951
|
+
extractTokenIds(token) {
|
|
5952
|
+
if (!token.metadata || token.metadata.length === 0) {
|
|
5953
|
+
return undefined;
|
|
5954
|
+
}
|
|
5955
|
+
return token.metadata.map(meta => meta.tokenMetadataIncrementalId.toString());
|
|
5956
|
+
}
|
|
5957
|
+
/**
|
|
5958
|
+
* Get user's owned tokens from a specific token contract.
|
|
5959
|
+
*
|
|
5960
|
+
* This is a convenience method that automatically handles:
|
|
5961
|
+
* - ERC-1155 tokenId extraction from metadata
|
|
5962
|
+
* - Building the collection request
|
|
5963
|
+
* - Filtering to only tokens with balance > 0
|
|
5964
|
+
*
|
|
5965
|
+
* @param walletAddress - User's wallet address
|
|
5966
|
+
* @param token - Token definition (from getRewardTokens, getStatusTokens, etc.)
|
|
5967
|
+
* @param maxTokens - Maximum tokens to retrieve (default: 50)
|
|
5968
|
+
* @returns Promise resolving to collection result with owned tokens
|
|
5969
|
+
*
|
|
5970
|
+
* @example
|
|
5971
|
+
* ```typescript
|
|
5972
|
+
* const rewardTokens = await sdk.tokens.getRewardTokens();
|
|
5973
|
+
* const rewardToken = rewardTokens[0];
|
|
5974
|
+
*
|
|
5975
|
+
* const result = await sdk.web3.getUserOwnedTokensFromContract(
|
|
5976
|
+
* walletAddress,
|
|
5977
|
+
* rewardToken
|
|
5978
|
+
* );
|
|
5979
|
+
*
|
|
5980
|
+
* console.log(`User owns ${result.ownedTokens.length} reward tokens`);
|
|
5981
|
+
* result.ownedTokens.forEach(token => {
|
|
5982
|
+
* console.log(`- TokenId ${token.tokenId}: ${token.balance} owned`);
|
|
5983
|
+
* console.log(` Name: ${token.metadata?.name}`);
|
|
5984
|
+
* });
|
|
5985
|
+
* ```
|
|
5986
|
+
*/
|
|
5987
|
+
async getUserOwnedTokensFromContract(walletAddress, token, maxTokens = 50) {
|
|
5988
|
+
// For ERC-1155, extract tokenIds from metadata
|
|
5989
|
+
const tokenIds = token.type === NativeTokenTypes.ERC1155 ? this.extractTokenIds(token) : undefined;
|
|
5990
|
+
const collection = await this.getTokenCollection({
|
|
5991
|
+
accountAddress: walletAddress,
|
|
5992
|
+
contractAddress: token.contractAddress,
|
|
5993
|
+
abi: token.abi,
|
|
5994
|
+
chainId: token.chainId,
|
|
5995
|
+
tokenIds,
|
|
5996
|
+
maxTokens
|
|
5997
|
+
});
|
|
5998
|
+
// Filter to only owned tokens (hasBalance: true)
|
|
5999
|
+
// For ERC721, include all since they're enumerated
|
|
6000
|
+
const ownedTokens = token.type === NativeTokenTypes.ERC721
|
|
6001
|
+
? collection.tokens
|
|
6002
|
+
: collection.tokens.filter(t => t.hasBalance);
|
|
6003
|
+
return {
|
|
6004
|
+
token,
|
|
6005
|
+
ownedTokens,
|
|
6006
|
+
totalOwned: ownedTokens.length
|
|
6007
|
+
};
|
|
6008
|
+
}
|
|
6009
|
+
/**
|
|
6010
|
+
* Build a TokenCollectionRequest from a TokenDTO.
|
|
6011
|
+
*
|
|
6012
|
+
* Automatically handles ERC-1155 tokenId extraction from metadata.
|
|
6013
|
+
* Use this when you need more control over the request than
|
|
6014
|
+
* `getUserOwnedTokensFromContract` provides.
|
|
6015
|
+
*
|
|
6016
|
+
* @param walletAddress - User's wallet address
|
|
6017
|
+
* @param token - Token definition
|
|
6018
|
+
* @param maxTokens - Maximum tokens to retrieve
|
|
6019
|
+
* @returns TokenCollectionRequest ready for getTokenCollection()
|
|
6020
|
+
*
|
|
6021
|
+
* @example
|
|
6022
|
+
* ```typescript
|
|
6023
|
+
* const request = sdk.web3.buildCollectionRequest(walletAddress, rewardToken);
|
|
6024
|
+
* const collection = await sdk.web3.getTokenCollection(request);
|
|
6025
|
+
* ```
|
|
6026
|
+
*/
|
|
6027
|
+
buildCollectionRequest(walletAddress, token, maxTokens = 50) {
|
|
6028
|
+
return {
|
|
6029
|
+
accountAddress: walletAddress,
|
|
6030
|
+
contractAddress: token.contractAddress,
|
|
6031
|
+
abi: token.abi,
|
|
6032
|
+
chainId: token.chainId,
|
|
6033
|
+
tokenIds: token.type === NativeTokenTypes.ERC1155 ? this.extractTokenIds(token) : undefined,
|
|
6034
|
+
maxTokens
|
|
6035
|
+
};
|
|
6036
|
+
}
|
|
5892
6037
|
}
|
|
5893
6038
|
|
|
5894
6039
|
/**
|
|
@@ -6296,4 +6441,4 @@ function createPersSDK(httpClient, config) {
|
|
|
6296
6441
|
}
|
|
6297
6442
|
|
|
6298
6443
|
export { AuthStatus as A, BusinessManager as B, CampaignManager as C, DefaultAuthProvider as D, FileManager as F, IndexedDBTokenStorage as I, LocalStorageTokenStorage as L, MemoryTokenStorage as M, PersSDK as P, RedemptionManager as R, TokenManager as T, UserManager as U, WebDPoPCryptoProvider as W, AuthTokenManager as a, AUTH_STORAGE_KEYS as b, createPersSDK as c, DPOP_STORAGE_KEYS as d, PersApiClient as e, DEFAULT_PERS_CONFIG as f, buildApiRoot as g, detectEnvironment as h, environment as i, AuthApi as j, AuthService as k, DPoPManager as l, mergeWithDefaults as m, AuthManager as n, UserStatusManager as o, TransactionManager as p, PurchaseManager as q, TenantManager as r, ApiKeyManager as s, AnalyticsManager as t, DonationManager as u, Web3Manager as v, warnIfProblematicEnvironment as w, FileApi as x, FileService as y, ApiKeyApi as z };
|
|
6299
|
-
//# sourceMappingURL=pers-sdk
|
|
6444
|
+
//# sourceMappingURL=pers-sdk-Nu2KgiJf.js.map
|