@explorins/pers-sdk 2.1.39 → 2.1.42
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/chunks/{pers-sdk-Cwlrl8jb.cjs → pers-sdk-DeFxjuRB.cjs} +5 -4
- package/dist/chunks/pers-sdk-DeFxjuRB.cjs.map +1 -0
- package/dist/chunks/{pers-sdk-CNIfzWYX.js → pers-sdk-DxYmXQcW.js} +6 -5
- package/dist/chunks/pers-sdk-DxYmXQcW.js.map +1 -0
- package/dist/chunks/{web3-manager-Dvcq4xmn.js → web3-manager-B-IsluxI.js} +770 -34
- package/dist/chunks/web3-manager-B-IsluxI.js.map +1 -0
- package/dist/chunks/{web3-manager-C-JflQ86.cjs → web3-manager-NJaeBrci.cjs} +770 -32
- package/dist/chunks/web3-manager-NJaeBrci.cjs.map +1 -0
- package/dist/core.cjs +1 -1
- package/dist/core.js +1 -1
- package/dist/index.cjs +140 -26
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +82 -2
- package/dist/index.js.map +1 -1
- package/dist/managers/token-manager.d.ts +3 -1
- package/dist/managers/token-manager.d.ts.map +1 -1
- package/dist/managers/web3-manager.d.ts +69 -1
- package/dist/managers/web3-manager.d.ts.map +1 -1
- package/dist/node.cjs +1 -1
- package/dist/node.js +1 -1
- package/dist/package.json +3 -3
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/utils/image-url-utils.d.ts +76 -0
- package/dist/shared/utils/image-url-utils.d.ts.map +1 -0
- package/dist/web3/domain/services/balance-manager.d.ts +160 -0
- package/dist/web3/domain/services/balance-manager.d.ts.map +1 -0
- package/dist/web3/domain/services/index.d.ts +2 -0
- package/dist/web3/domain/services/index.d.ts.map +1 -1
- package/dist/web3/domain/services/token-collection-manager.d.ts +155 -0
- package/dist/web3/domain/services/token-collection-manager.d.ts.map +1 -0
- package/dist/web3/domain/services/token-domain.service.d.ts.map +1 -1
- package/dist/web3/index.d.ts +1 -0
- package/dist/web3/index.d.ts.map +1 -1
- package/dist/web3/infrastructure/api/web3-api.d.ts +16 -0
- package/dist/web3/infrastructure/api/web3-api.d.ts.map +1 -1
- package/dist/web3-manager.cjs +1 -1
- package/dist/web3-manager.js +1 -1
- package/dist/web3.cjs +4 -2
- package/dist/web3.cjs.map +1 -1
- package/dist/web3.js +2 -2
- package/package.json +3 -3
- package/dist/chunks/pers-sdk-CNIfzWYX.js.map +0 -1
- package/dist/chunks/pers-sdk-Cwlrl8jb.cjs.map +0 -1
- package/dist/chunks/web3-manager-C-JflQ86.cjs.map +0 -1
- package/dist/chunks/web3-manager-Dvcq4xmn.js.map +0 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { ImageCdnOptions } from '@explorins/pers-shared';
|
|
2
|
+
/**
|
|
3
|
+
* Image URL Utilities
|
|
4
|
+
*
|
|
5
|
+
* Centralized helper for building optimized image URLs.
|
|
6
|
+
* Handles IPFS resolution and CDN optimization in one call.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { buildImageUrl } from '@explorins/pers-sdk';
|
|
11
|
+
*
|
|
12
|
+
* // IPFS with CDN preset
|
|
13
|
+
* const thumbUrl = buildImageUrl('ipfs://Qm...', { preset: 'thumb' }, 'cdn.example.com');
|
|
14
|
+
*
|
|
15
|
+
* // HTTP URL with CDN preset (no gateway needed)
|
|
16
|
+
* const cardUrl = buildImageUrl('https://example.com/photo.jpg', { preset: 'card' });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export { buildImageCdnUrl, isValidPreset, getPresetDimensions, isSupportedImageFormat, IMAGE_CDN_PRESETS, IMAGE_CDN_DEFAULT_QUALITY, IMAGE_CDN_DEFAULT_FIT, IMAGE_CDN_DEFAULT_FORMAT, IMAGE_CDN_MAX_DIMENSION, } from '@explorins/pers-shared';
|
|
20
|
+
export type { ImageCdnOptions, ImagePreset, ImageFit, ImageFormat, ImagePresetConfig, } from '@explorins/pers-shared';
|
|
21
|
+
/**
|
|
22
|
+
* Build optimized image URL with automatic IPFS resolution and CDN options
|
|
23
|
+
*
|
|
24
|
+
* Single entry point for all image URL building:
|
|
25
|
+
* - IPFS URIs → resolved via gateway + CDN options applied
|
|
26
|
+
* - HTTP URLs → CDN options applied directly
|
|
27
|
+
*
|
|
28
|
+
* @param url - Image URL (ipfs://, https://, or any URL)
|
|
29
|
+
* @param options - CDN optimization options (preset, quality, format, fit)
|
|
30
|
+
* @param gateway - IPFS gateway domain (required for ipfs:// URLs)
|
|
31
|
+
* @returns Optimized URL with query parameters
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* // IPFS thumbnail
|
|
36
|
+
* buildImageUrl('ipfs://QmHash', { preset: 'thumb' }, 'cdn.example.com')
|
|
37
|
+
* // => 'https://cdn.example.com/ipfs/QmHash?preset=thumb'
|
|
38
|
+
*
|
|
39
|
+
* // IPFS hero with high quality
|
|
40
|
+
* buildImageUrl('ipfs://QmHash', { preset: 'hero', q: 95, fit: 'cover' }, 'cdn.example.com')
|
|
41
|
+
* // => 'https://cdn.example.com/ipfs/QmHash?preset=hero&q=95&fit=cover'
|
|
42
|
+
*
|
|
43
|
+
* // HTTP URL (gateway ignored)
|
|
44
|
+
* buildImageUrl('https://example.com/photo.jpg', { preset: 'card' })
|
|
45
|
+
* // => 'https://example.com/photo.jpg?preset=card'
|
|
46
|
+
*
|
|
47
|
+
* // No options - just IPFS resolution
|
|
48
|
+
* buildImageUrl('ipfs://QmHash', undefined, 'cdn.example.com')
|
|
49
|
+
* // => 'https://cdn.example.com/ipfs/QmHash'
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare function buildImageUrl(url: string, options?: ImageCdnOptions, gateway?: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Check if a URL is an IPFS URI
|
|
55
|
+
*
|
|
56
|
+
* @param url - URL to check
|
|
57
|
+
* @returns True if URL starts with ipfs://
|
|
58
|
+
*/
|
|
59
|
+
export declare function isIpfsUrl(url: string): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Extract CID from IPFS URI
|
|
62
|
+
*
|
|
63
|
+
* @param ipfsUri - IPFS URI (ipfs://Qm... or ipfs://baf...)
|
|
64
|
+
* @returns CID string, or null if not a valid IPFS URI
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* extractIpfsCid('ipfs://QmHash123')
|
|
69
|
+
* // => 'QmHash123'
|
|
70
|
+
*
|
|
71
|
+
* extractIpfsCid('https://example.com/image.jpg')
|
|
72
|
+
* // => null
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export declare function extractIpfsCid(ipfsUri: string): string | null;
|
|
76
|
+
//# sourceMappingURL=image-url-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-url-utils.d.ts","sourceRoot":"","sources":["../../../src/shared/utils/image-url-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE3E;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACV,eAAe,EACf,WAAW,EACX,QAAQ,EACR,WAAW,EACX,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAiBR;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7D"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BalanceManager - Auto-refresh ERC-20 token balances on wallet events
|
|
3
|
+
*
|
|
4
|
+
* This manager provides:
|
|
5
|
+
* 1. Cached balance storage with automatic refresh
|
|
6
|
+
* 2. Auto-subscription to wallet events (transfers)
|
|
7
|
+
* 3. Targeted invalidation based on contract address
|
|
8
|
+
* 4. Subscriber pattern for reactive updates
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // Get from SDK
|
|
13
|
+
* const manager = sdk.tokens.balanceManager;
|
|
14
|
+
*
|
|
15
|
+
* // Subscribe to balance updates
|
|
16
|
+
* const unsubscribe = manager.subscribe((balance, contractAddress) => {
|
|
17
|
+
* console.log(`Balance updated for ${contractAddress}: ${balance}`);
|
|
18
|
+
* updateUI(balance);
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Fetch balance (auto-cached, auto-refreshed on wallet events)
|
|
22
|
+
* const balance = await manager.getBalance({
|
|
23
|
+
* accountAddress: '0x...',
|
|
24
|
+
* contractAddress: '0x...',
|
|
25
|
+
* abi: contractAbi,
|
|
26
|
+
* chainId: 39123
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* // Manual refresh
|
|
30
|
+
* await manager.refreshBalance(contractAddress);
|
|
31
|
+
*
|
|
32
|
+
* // Cleanup
|
|
33
|
+
* unsubscribe();
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
import type { TokenBalance } from '../models';
|
|
37
|
+
import type { TokenDomainService } from './token-domain.service';
|
|
38
|
+
import type { PersEventEmitter } from '../../../core/events';
|
|
39
|
+
import type { AbiInput } from '../../application/web3-application.service';
|
|
40
|
+
/**
|
|
41
|
+
* Parameters for fetching a token balance
|
|
42
|
+
*/
|
|
43
|
+
export interface BalanceParams {
|
|
44
|
+
accountAddress: string;
|
|
45
|
+
contractAddress: string;
|
|
46
|
+
abi: AbiInput;
|
|
47
|
+
chainId: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Handler for balance change events
|
|
51
|
+
*/
|
|
52
|
+
export type BalanceChangeHandler = (balance: TokenBalance, contractAddress: string, event: {
|
|
53
|
+
type: 'refresh' | 'wallet_event';
|
|
54
|
+
source?: string;
|
|
55
|
+
}) => void;
|
|
56
|
+
/**
|
|
57
|
+
* Configuration for BalanceManager
|
|
58
|
+
*/
|
|
59
|
+
export interface BalanceManagerConfig {
|
|
60
|
+
/** Enable auto-refresh on wallet events (default: true) */
|
|
61
|
+
autoRefreshOnWalletEvents?: boolean;
|
|
62
|
+
/** Debounce time for wallet events in ms (default: 500) */
|
|
63
|
+
eventDebounceMs?: number;
|
|
64
|
+
/** Enable debug logging (default: false) */
|
|
65
|
+
debug?: boolean;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Manages ERC-20 token balances with automatic refresh on wallet events
|
|
69
|
+
*/
|
|
70
|
+
export declare class BalanceManager {
|
|
71
|
+
private tokenService;
|
|
72
|
+
private eventEmitter?;
|
|
73
|
+
private balances;
|
|
74
|
+
private handlers;
|
|
75
|
+
private eventUnsubscribe?;
|
|
76
|
+
private pendingRefresh;
|
|
77
|
+
private config;
|
|
78
|
+
constructor(tokenService: TokenDomainService, eventEmitter?: PersEventEmitter | undefined, config?: BalanceManagerConfig);
|
|
79
|
+
/**
|
|
80
|
+
* Subscribe to wallet events for auto-refresh
|
|
81
|
+
*/
|
|
82
|
+
private setupEventSubscription;
|
|
83
|
+
/**
|
|
84
|
+
* Get a token balance (cached, auto-refreshed on wallet events)
|
|
85
|
+
*
|
|
86
|
+
* @param params - Balance parameters
|
|
87
|
+
* @returns Promise resolving to the token balance
|
|
88
|
+
*/
|
|
89
|
+
getBalance(params: BalanceParams): Promise<TokenBalance>;
|
|
90
|
+
/**
|
|
91
|
+
* Force refresh a specific balance
|
|
92
|
+
*
|
|
93
|
+
* @param contractAddress - Contract address to refresh
|
|
94
|
+
* @param accountAddress - Account address to refresh (optional, refreshes all if not provided)
|
|
95
|
+
* @returns Promise that resolves when refresh is complete
|
|
96
|
+
*/
|
|
97
|
+
refreshBalance(contractAddress: string, accountAddress?: string): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Force refresh all tracked balances
|
|
100
|
+
*
|
|
101
|
+
* @returns Promise that resolves when all refreshes are complete
|
|
102
|
+
*/
|
|
103
|
+
refreshAll(): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Subscribe to balance change events
|
|
106
|
+
*
|
|
107
|
+
* @param handler - Callback when any tracked balance changes
|
|
108
|
+
* @returns Unsubscribe function
|
|
109
|
+
*/
|
|
110
|
+
subscribe(handler: BalanceChangeHandler): () => void;
|
|
111
|
+
/**
|
|
112
|
+
* Get all currently tracked balances
|
|
113
|
+
*/
|
|
114
|
+
getTrackedBalances(): Array<{
|
|
115
|
+
contractAddress: string;
|
|
116
|
+
accountAddress: string;
|
|
117
|
+
balance: TokenBalance | null;
|
|
118
|
+
}>;
|
|
119
|
+
/**
|
|
120
|
+
* Check if a balance is currently being tracked
|
|
121
|
+
*/
|
|
122
|
+
isTracking(contractAddress: string, accountAddress: string): boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Clear tracking for a specific balance
|
|
125
|
+
*/
|
|
126
|
+
untrack(contractAddress: string, accountAddress?: string): void;
|
|
127
|
+
/**
|
|
128
|
+
* Clear all tracked balances
|
|
129
|
+
*/
|
|
130
|
+
clearAll(): void;
|
|
131
|
+
/**
|
|
132
|
+
* Handle wallet events (with debouncing)
|
|
133
|
+
*/
|
|
134
|
+
private handleWalletEvent;
|
|
135
|
+
/**
|
|
136
|
+
* Fetch and cache a balance
|
|
137
|
+
*/
|
|
138
|
+
private fetchAndCache;
|
|
139
|
+
/**
|
|
140
|
+
* Refresh a cached entry and notify handlers
|
|
141
|
+
*/
|
|
142
|
+
private refreshEntry;
|
|
143
|
+
/**
|
|
144
|
+
* Generate cache key from params
|
|
145
|
+
*/
|
|
146
|
+
private getCacheKey;
|
|
147
|
+
/**
|
|
148
|
+
* Create empty balance placeholder
|
|
149
|
+
*/
|
|
150
|
+
private emptyBalance;
|
|
151
|
+
/**
|
|
152
|
+
* Debug logging
|
|
153
|
+
*/
|
|
154
|
+
private log;
|
|
155
|
+
/**
|
|
156
|
+
* Cleanup resources
|
|
157
|
+
*/
|
|
158
|
+
destroy(): void;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=balance-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance-manager.d.ts","sourceRoot":"","sources":["../../../../src/web3/domain/services/balance-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,QAAQ,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,OAAO,EAAE,YAAY,EACrB,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE;IAAE,IAAI,EAAE,SAAS,GAAG,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KACzD,IAAI,CAAC;AAaV;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,cAAc;IAQvB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY,CAAC;IARvB,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,gBAAgB,CAAC,CAAa;IACtC,OAAO,CAAC,cAAc,CAA0C;IAChE,OAAO,CAAC,MAAM,CAAiC;gBAGrC,YAAY,EAAE,kBAAkB,EAChC,YAAY,CAAC,8BAAkB,EACvC,MAAM,CAAC,EAAE,oBAAoB;IAa/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAc9B;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAc9D;;;;;;OAMG;IACG,cAAc,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrF;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAKpD;;OAEG;IACH,kBAAkB,IAAI,KAAK,CAAC;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;KAAE,CAAC;IAQ9G;;OAEG;IACH,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO;IAKpE;;OAEG;IACH,OAAO,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAkB/D;;OAEG;IACH,QAAQ,IAAI,IAAI;IAKhB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;OAEG;YACW,aAAa;IAuC3B;;OAEG;YACW,YAAY;IAyC1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;IACH,OAAO,CAAC,GAAG;IAMX;;OAEG;IACH,OAAO,IAAI,IAAI;CAgBhB"}
|
|
@@ -5,4 +5,6 @@
|
|
|
5
5
|
export { TokenDomainService } from './token-domain.service';
|
|
6
6
|
export { MetadataDomainService } from './metadata-domain.service';
|
|
7
7
|
export { ContractDomainService } from './contract-domain.service';
|
|
8
|
+
export { TokenCollectionManager, type CollectionParams, type CollectionChangeHandler, type TokenCollectionManagerConfig } from './token-collection-manager';
|
|
9
|
+
export { BalanceManager, type BalanceParams, type BalanceChangeHandler, type BalanceManagerConfig } from './balance-manager';
|
|
8
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/web3/domain/services/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/web3/domain/services/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EACL,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TokenCollectionManager - Auto-refresh token collections on wallet events
|
|
3
|
+
*
|
|
4
|
+
* This manager provides:
|
|
5
|
+
* 1. Cached token collection storage with automatic refresh
|
|
6
|
+
* 2. Auto-subscription to wallet events (transfers, mints, burns)
|
|
7
|
+
* 3. Targeted invalidation based on contract address
|
|
8
|
+
* 4. Subscriber pattern for reactive updates
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // Get from SDK
|
|
13
|
+
* const manager = sdk.tokens.collectionManager;
|
|
14
|
+
*
|
|
15
|
+
* // Subscribe to collection updates
|
|
16
|
+
* const unsubscribe = manager.subscribe((collection, contractAddress) => {
|
|
17
|
+
* console.log(`Collection updated for ${contractAddress}`);
|
|
18
|
+
* updateUI(collection);
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Fetch collection (auto-cached, auto-refreshed on wallet events)
|
|
22
|
+
* const collection = await manager.getCollection({
|
|
23
|
+
* accountAddress: '0x...',
|
|
24
|
+
* contractAddress: '0x...',
|
|
25
|
+
* abi: contractAbi,
|
|
26
|
+
* chainId: 39123,
|
|
27
|
+
* tokenIds: ['1', '2', '3']
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* // Cleanup
|
|
31
|
+
* unsubscribe();
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
import type { TokenCollection } from '../models';
|
|
35
|
+
import type { TokenDomainService } from './token-domain.service';
|
|
36
|
+
import type { PersEventEmitter } from '../../../core/events';
|
|
37
|
+
import type { AbiInput } from '../../application/web3-application.service';
|
|
38
|
+
/**
|
|
39
|
+
* Parameters for fetching a token collection
|
|
40
|
+
*/
|
|
41
|
+
export interface CollectionParams {
|
|
42
|
+
accountAddress: string;
|
|
43
|
+
contractAddress: string;
|
|
44
|
+
abi: AbiInput;
|
|
45
|
+
chainId: number;
|
|
46
|
+
tokenIds?: string[];
|
|
47
|
+
maxTokens?: number;
|
|
48
|
+
batchSize?: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Handler for collection change events
|
|
52
|
+
*/
|
|
53
|
+
export type CollectionChangeHandler = (collection: TokenCollection, contractAddress: string, event: {
|
|
54
|
+
type: 'refresh' | 'wallet_event';
|
|
55
|
+
source?: string;
|
|
56
|
+
}) => void;
|
|
57
|
+
/**
|
|
58
|
+
* Configuration for TokenCollectionManager
|
|
59
|
+
*/
|
|
60
|
+
export interface TokenCollectionManagerConfig {
|
|
61
|
+
/** Enable auto-refresh on wallet events (default: true) */
|
|
62
|
+
autoRefreshOnWalletEvents?: boolean;
|
|
63
|
+
/** Debounce time for wallet events in ms (default: 500) */
|
|
64
|
+
eventDebounceMs?: number;
|
|
65
|
+
/** Enable debug logging (default: false) */
|
|
66
|
+
debug?: boolean;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Manages token collections with automatic refresh on wallet events
|
|
70
|
+
*/
|
|
71
|
+
export declare class TokenCollectionManager {
|
|
72
|
+
private tokenService;
|
|
73
|
+
private eventEmitter?;
|
|
74
|
+
private collections;
|
|
75
|
+
private handlers;
|
|
76
|
+
private eventUnsubscribe?;
|
|
77
|
+
private pendingRefresh;
|
|
78
|
+
private config;
|
|
79
|
+
constructor(tokenService: TokenDomainService, eventEmitter?: PersEventEmitter | undefined, config?: TokenCollectionManagerConfig);
|
|
80
|
+
/**
|
|
81
|
+
* Subscribe to wallet events for auto-refresh
|
|
82
|
+
*/
|
|
83
|
+
private setupEventSubscription;
|
|
84
|
+
/**
|
|
85
|
+
* Get a token collection (cached, auto-refreshed on wallet events)
|
|
86
|
+
*
|
|
87
|
+
* @param params - Collection parameters
|
|
88
|
+
* @returns Promise resolving to the token collection
|
|
89
|
+
*/
|
|
90
|
+
getCollection(params: CollectionParams): Promise<TokenCollection>;
|
|
91
|
+
/**
|
|
92
|
+
* Force refresh a specific collection
|
|
93
|
+
*
|
|
94
|
+
* @param contractAddress - Contract address to refresh
|
|
95
|
+
* @param accountAddress - Account address to refresh
|
|
96
|
+
* @returns Promise that resolves when refresh is complete
|
|
97
|
+
*/
|
|
98
|
+
refreshCollection(contractAddress: string, accountAddress?: string): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* Subscribe to collection change events
|
|
101
|
+
*
|
|
102
|
+
* @param handler - Callback when any tracked collection changes
|
|
103
|
+
* @returns Unsubscribe function
|
|
104
|
+
*/
|
|
105
|
+
subscribe(handler: CollectionChangeHandler): () => void;
|
|
106
|
+
/**
|
|
107
|
+
* Get all currently tracked collections
|
|
108
|
+
*/
|
|
109
|
+
getTrackedCollections(): Array<{
|
|
110
|
+
contractAddress: string;
|
|
111
|
+
accountAddress: string;
|
|
112
|
+
collection: TokenCollection | null;
|
|
113
|
+
}>;
|
|
114
|
+
/**
|
|
115
|
+
* Check if a collection is currently being tracked
|
|
116
|
+
*/
|
|
117
|
+
isTracking(contractAddress: string, accountAddress: string): boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Clear tracking for a specific collection
|
|
120
|
+
*/
|
|
121
|
+
untrack(contractAddress: string, accountAddress?: string): void;
|
|
122
|
+
/**
|
|
123
|
+
* Clear all tracked collections
|
|
124
|
+
*/
|
|
125
|
+
clearAll(): void;
|
|
126
|
+
/**
|
|
127
|
+
* Handle wallet events (with debouncing)
|
|
128
|
+
*/
|
|
129
|
+
private handleWalletEvent;
|
|
130
|
+
/**
|
|
131
|
+
* Fetch and cache a collection
|
|
132
|
+
*/
|
|
133
|
+
private fetchAndCache;
|
|
134
|
+
/**
|
|
135
|
+
* Refresh a cached entry and notify handlers
|
|
136
|
+
*/
|
|
137
|
+
private refreshEntry;
|
|
138
|
+
/**
|
|
139
|
+
* Generate cache key from params
|
|
140
|
+
*/
|
|
141
|
+
private getCacheKey;
|
|
142
|
+
/**
|
|
143
|
+
* Create empty collection placeholder
|
|
144
|
+
*/
|
|
145
|
+
private emptyCollection;
|
|
146
|
+
/**
|
|
147
|
+
* Debug logging
|
|
148
|
+
*/
|
|
149
|
+
private log;
|
|
150
|
+
/**
|
|
151
|
+
* Cleanup resources
|
|
152
|
+
*/
|
|
153
|
+
destroy(): void;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=token-collection-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-collection-manager.d.ts","sourceRoot":"","sources":["../../../../src/web3/domain/services/token-collection-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,QAAQ,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CACpC,UAAU,EAAE,eAAe,EAC3B,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE;IAAE,IAAI,EAAE,SAAS,GAAG,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KACzD,IAAI,CAAC;AAaV;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,2DAA2D;IAC3D,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,sBAAsB;IAQ/B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY,CAAC;IARvB,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,gBAAgB,CAAC,CAAa;IACtC,OAAO,CAAC,cAAc,CAA0C;IAChE,OAAO,CAAC,MAAM,CAAyC;gBAG7C,YAAY,EAAE,kBAAkB,EAChC,YAAY,CAAC,8BAAkB,EACvC,MAAM,CAAC,EAAE,4BAA4B;IAavC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAc9B;;;;;OAKG;IACG,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAcvE;;;;;;OAMG;IACG,iBAAiB,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxF;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,IAAI;IAKvD;;OAEG;IACH,qBAAqB,IAAI,KAAK,CAAC;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CAAC;IAQvH;;OAEG;IACH,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO;IAKpE;;OAEG;IACH,OAAO,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAgB/D;;OAEG;IACH,QAAQ,IAAI,IAAI;IAKhB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;OAEG;YACW,aAAa;IAoC3B;;OAEG;YACW,YAAY;IAsC1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,GAAG;IAMX;;OAEG;IACH,OAAO,IAAI,IAAI;CAgBhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-domain.service.d.ts","sourceRoot":"","sources":["../../../../src/web3/domain/services/token-domain.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAK3E;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,eAAe;IALzB,OAAO,CAAC,KAAK,CAAsD;gBAGzD,OAAO,EAAE,qBAAqB,EAC9B,eAAe,EAAE,qBAAqB,EACtC,eAAe,EAAE,qBAAqB;IAI1C,eAAe,CAAC,MAAM,EAAE;QAC5B,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,GAAG,EAAE,QAAQ,CAAC;QACd,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,YAAY,CAAC;IAYnB,gBAAgB,CAAC,MAAM,EAAE;QAC7B,eAAe,EAAE,MAAM,CAAC;QACxB,GAAG,EAAE,QAAQ,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;KAChC,CAAC;IAoBI,mBAAmB,CAAC,MAAM,EAAE;QAChC,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,GAAG,EAAE,QAAQ,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,YAAY,CAAC;IAYnB,uBAAuB,CAAC,MAAM,EAAE;QACpC,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,GAAG,EAAE,QAAQ,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,YAAY,CAAC;IAUnB,kBAAkB,CAAC,MAAM,EAAE;QAC/B,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,GAAG,EAAE,QAAQ,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"token-domain.service.d.ts","sourceRoot":"","sources":["../../../../src/web3/domain/services/token-domain.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAK3E;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,eAAe;IALzB,OAAO,CAAC,KAAK,CAAsD;gBAGzD,OAAO,EAAE,qBAAqB,EAC9B,eAAe,EAAE,qBAAqB,EACtC,eAAe,EAAE,qBAAqB;IAI1C,eAAe,CAAC,MAAM,EAAE;QAC5B,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,GAAG,EAAE,QAAQ,CAAC;QACd,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,YAAY,CAAC;IAYnB,gBAAgB,CAAC,MAAM,EAAE;QAC7B,eAAe,EAAE,MAAM,CAAC;QACxB,GAAG,EAAE,QAAQ,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;KAChC,CAAC;IAoBI,mBAAmB,CAAC,MAAM,EAAE;QAChC,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,GAAG,EAAE,QAAQ,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,YAAY,CAAC;IAYnB,uBAAuB,CAAC,MAAM,EAAE;QACpC,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,GAAG,EAAE,QAAQ,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,YAAY,CAAC;IAUnB,kBAAkB,CAAC,MAAM,EAAE;QAC/B,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,GAAG,EAAE,QAAQ,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,eAAe,CAAC;IAyD5B;;OAEG;YACW,wBAAwB;YAexB,iBAAiB;IA4F/B,OAAO,CAAC,eAAe;IAcvB,UAAU,IAAI,IAAI;CAGnB"}
|
package/dist/web3/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { Web3Manager } from '../managers/web3-manager';
|
|
2
2
|
export type { TokenBalanceRequest, TokenBalance, TokenMetadata, TokenCollection, TokenCollectionRequest, AbiInput, AccountOwnedTokensResult } from './application/web3-application.service';
|
|
3
3
|
export type { MetadataMapper } from './domain/models';
|
|
4
|
+
export { TokenCollectionManager, BalanceManager, type CollectionParams, type CollectionChangeHandler, type TokenCollectionManagerConfig, type BalanceParams, type BalanceChangeHandler, type BalanceManagerConfig } from './domain/services';
|
|
4
5
|
export * from './infrastructure';
|
|
5
6
|
export { Web3ApplicationService } from './application';
|
|
6
7
|
export * from './utils/explorer.utils';
|
package/dist/web3/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web3/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,QAAQ,EACR,wBAAwB,EACzB,MAAM,wCAAwC,CAAC;AAGhD,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web3/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,QAAQ,EACR,wBAAwB,EACzB,MAAM,wCAAwC,CAAC;AAGhD,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAE3B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,cAAc,wBAAwB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Interface } from 'ethers';
|
|
2
2
|
import { Web3ChainService } from '../../../web3-chain/services/web3-chain-service';
|
|
3
|
+
import { type BatchBalanceResult } from '@explorins/web3-ts/ethers';
|
|
3
4
|
/**
|
|
4
5
|
* Web3InfrastructureApi - Infrastructure implementation for blockchain operations
|
|
5
6
|
* Uses @explorins/web3-ts for Web3 interactions
|
|
@@ -14,6 +15,21 @@ export declare class Web3InfrastructureApi {
|
|
|
14
15
|
tokenId: string | null;
|
|
15
16
|
chainId: number;
|
|
16
17
|
}): Promise<number>;
|
|
18
|
+
/**
|
|
19
|
+
* Get multiple ERC-1155 token balances in a single RPC call using native balanceOfBatch.
|
|
20
|
+
* Falls back to individual calls if balanceOfBatch fails.
|
|
21
|
+
*
|
|
22
|
+
* @param request - Batch balance request
|
|
23
|
+
* @returns Array of balance results per tokenId
|
|
24
|
+
*/
|
|
25
|
+
getBatchTokenBalances(request: {
|
|
26
|
+
accountAddress: string;
|
|
27
|
+
contractAddress: string;
|
|
28
|
+
abi: Interface;
|
|
29
|
+
tokenIds: string[];
|
|
30
|
+
chainId: number;
|
|
31
|
+
isERC1155?: boolean;
|
|
32
|
+
}): Promise<BatchBalanceResult[]>;
|
|
17
33
|
getTokenUri(request: {
|
|
18
34
|
contractAddress: string;
|
|
19
35
|
abi: Interface;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web3-api.d.ts","sourceRoot":"","sources":["../../../../src/web3/infrastructure/api/web3-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;
|
|
1
|
+
{"version":3,"file":"web3-api.d.ts","sourceRoot":"","sources":["../../../../src/web3/infrastructure/api/web3-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AACnF,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AAEnC;;;GAGG;AACH,qBAAa,qBAAqB;IAEpB,OAAO,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAEhD,eAAe,CAAC,OAAO,EAAE;QAC7B,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,GAAG,EAAE,SAAS,CAAC;QACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,MAAM,CAAC;IAcnB;;;;;;OAMG;IACG,qBAAqB,CAAC,OAAO,EAAE;QACnC,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,GAAG,EAAE,SAAS,CAAC;QACf,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAyB3B,WAAW,CAAC,OAAO,EAAE;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,GAAG,EAAE,SAAS,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,MAAM,CAAC;IAeb,sBAAsB,CAAC,OAAO,EAAE;QACpC,eAAe,EAAE,MAAM,CAAC;QACxB,GAAG,EAAE,SAAS,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,MAAM,CAAC;CAYpB"}
|
package/dist/web3-manager.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var web3Manager = require('./chunks/web3-manager-
|
|
3
|
+
var web3Manager = require('./chunks/web3-manager-NJaeBrci.cjs');
|
|
4
4
|
require('./chunks/web3-chain-service-D6tBL0F7.cjs');
|
|
5
5
|
require('@explorins/web3-types');
|
|
6
6
|
require('./chunks/tenant-manager-DR5eSEJw.cjs');
|
package/dist/web3-manager.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { W as Web3Manager } from './chunks/web3-manager-
|
|
1
|
+
export { W as Web3Manager } from './chunks/web3-manager-B-IsluxI.js';
|
|
2
2
|
import './chunks/web3-chain-service-BWRmwmmJ.js';
|
|
3
3
|
import '@explorins/web3-types';
|
|
4
4
|
import './chunks/tenant-manager-xmYKBFGu.js';
|
package/dist/web3.cjs
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var web3Manager = require('./chunks/web3-manager-
|
|
3
|
+
var web3Manager = require('./chunks/web3-manager-NJaeBrci.cjs');
|
|
4
4
|
require('@explorins/web3-ts/ethers');
|
|
5
5
|
require('./chunks/index-C4K-jkRO.cjs');
|
|
6
|
-
require('@explorins/pers-shared');
|
|
7
6
|
require('./chunks/web3-chain-service-D6tBL0F7.cjs');
|
|
8
7
|
require('@explorins/web3-types');
|
|
9
8
|
require('./chunks/tenant-manager-DR5eSEJw.cjs');
|
|
10
9
|
require('./chunks/tenant-service-8vZWmTLV.cjs');
|
|
10
|
+
require('@explorins/pers-shared');
|
|
11
11
|
require('./chunks/pagination-utils-B2jRHMSO.cjs');
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
|
+
exports.BalanceManager = web3Manager.BalanceManager;
|
|
15
16
|
exports.IPFSInfrastructureApi = web3Manager.IPFSInfrastructureApi;
|
|
17
|
+
exports.TokenCollectionManager = web3Manager.TokenCollectionManager;
|
|
16
18
|
exports.Web3ApplicationService = web3Manager.Web3ApplicationService;
|
|
17
19
|
exports.Web3InfrastructureApi = web3Manager.Web3InfrastructureApi;
|
|
18
20
|
exports.Web3Manager = web3Manager.Web3Manager;
|
package/dist/web3.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web3.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web3.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/web3.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { I as IPFSInfrastructureApi, a as Web3ApplicationService, b as Web3InfrastructureApi, W as Web3Manager, g as getExplorerUrl, c as getExplorerUrlByChainId } from './chunks/web3-manager-
|
|
1
|
+
export { B as BalanceManager, I as IPFSInfrastructureApi, T as TokenCollectionManager, a as Web3ApplicationService, b as Web3InfrastructureApi, W as Web3Manager, g as getExplorerUrl, c as getExplorerUrlByChainId } from './chunks/web3-manager-B-IsluxI.js';
|
|
2
2
|
import '@explorins/web3-ts/ethers';
|
|
3
3
|
import './chunks/index--OssIds0.js';
|
|
4
|
-
import '@explorins/pers-shared';
|
|
5
4
|
import './chunks/web3-chain-service-BWRmwmmJ.js';
|
|
6
5
|
import '@explorins/web3-types';
|
|
7
6
|
import './chunks/tenant-manager-xmYKBFGu.js';
|
|
8
7
|
import './chunks/tenant-service-DlhdZAs9.js';
|
|
8
|
+
import '@explorins/pers-shared';
|
|
9
9
|
import './chunks/pagination-utils-9vQ-Npkr.js';
|
|
10
10
|
//# sourceMappingURL=web3.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@explorins/pers-sdk",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.42",
|
|
4
4
|
"description": "Platform-agnostic SDK for PERS (Phygital Experience Rewards System) - Core business logic and API integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -133,8 +133,8 @@
|
|
|
133
133
|
},
|
|
134
134
|
"dependencies": {
|
|
135
135
|
"@explorins/pers-sdk": "^2.1.32",
|
|
136
|
-
"@explorins/pers-shared": "^2.1.
|
|
137
|
-
"@explorins/web3-ts": "^0.3.
|
|
136
|
+
"@explorins/pers-shared": "^2.1.154",
|
|
137
|
+
"@explorins/web3-ts": "^0.3.88",
|
|
138
138
|
"@explorins/web3-types": "^1.2.0",
|
|
139
139
|
"ethers": "^6.15.0"
|
|
140
140
|
},
|