@gala-chain/launchpad-sdk 7.0.0-beta.5 → 7.0.0-beta.6
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/README.md +1 -1
- package/dist/LaunchpadSDK.d.ts +344 -1
- package/dist/LaunchpadSDK.d.ts.map +1 -1
- package/dist/api/dto/BondingCurveDTOs.d.ts +1 -1
- package/dist/bridge/BridgeService.d.ts.map +1 -1
- package/dist/bridge/constants/tokens.d.ts.map +1 -1
- package/dist/bridge/types/bridgeable-token.dto.d.ts +6 -2
- package/dist/bridge/types/bridgeable-token.dto.d.ts.map +1 -1
- package/dist/bridge/utils/tokenMetadataResolver.d.ts +2 -2
- package/dist/bridge/utils/tokenMetadataResolver.d.ts.map +1 -1
- package/dist/constants/version.generated.d.ts +1 -1
- package/dist/index.browser.d.ts +1 -2
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.esm.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/launchpad/strings-instructions.d.ts.map +1 -1
- package/dist/native.cjs +1 -1
- package/dist/native.esm.js +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react.cjs +1 -1
- package/dist/react.esm.js +1 -1
- package/dist/services/BridgeableTokenService.d.ts.map +1 -1
- package/dist/services/DexService.d.ts +8 -1
- package/dist/services/DexService.d.ts.map +1 -1
- package/dist/services/LaunchpadService.d.ts +7 -0
- package/dist/services/LaunchpadService.d.ts.map +1 -1
- package/dist/services/PoolService.d.ts +22 -0
- package/dist/services/PoolService.d.ts.map +1 -1
- package/dist/services/StreamWebSocketService.d.ts +10 -0
- package/dist/services/StreamWebSocketService.d.ts.map +1 -1
- package/dist/services/TokenClassKeyService.d.ts +0 -22
- package/dist/services/TokenClassKeyService.d.ts.map +1 -1
- package/dist/tokens/transfers.d.ts +6 -2
- package/dist/tokens/transfers.d.ts.map +1 -1
- package/dist/utils/data-transform-patterns.d.ts +1 -1
- package/dist/utils/data-transform-patterns.d.ts.map +1 -1
- package/dist/utils/delimiter-parser.d.ts +3 -2
- package/dist/utils/delimiter-parser.d.ts.map +1 -1
- package/dist/utils/token-format-converter.d.ts +15 -130
- package/dist/utils/token-format-converter.d.ts.map +1 -1
- package/dist/utils/token-instance-resolver.d.ts +5 -3
- package/dist/utils/token-instance-resolver.d.ts.map +1 -1
- package/dist/utils/token-parser.d.ts +2 -2
- package/dist/utils/token-parser.d.ts.map +1 -1
- package/dist/utils/tokenNormalizer.d.ts +2 -1
- package/dist/utils/tokenNormalizer.d.ts.map +1 -1
- package/dist/utils/validation.d.ts +0 -16
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/wallet/detection.d.ts.map +1 -1
- package/dist/wallet/index.d.ts +3 -4
- package/dist/wallet/index.d.ts.map +1 -1
- package/dist/wallet/types.d.ts +2 -2
- package/dist/wallet.cjs +1 -1
- package/dist/wallet.esm.js +1 -1
- package/package.json +160 -164
- package/LICENSE +0 -21
- package/dist/services/TokenMetadataService.d.ts +0 -509
- package/dist/services/TokenMetadataService.d.ts.map +0 -1
- package/dist/wallet/GalaChainConnectProvider.d.ts +0 -125
- package/dist/wallet/GalaChainConnectProvider.d.ts.map +0 -1
|
@@ -1,509 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TokenMetadataService - Authoritative Token Metadata Resolution
|
|
3
|
-
*
|
|
4
|
-
* Provides verified token metadata from GalaChain blockchain, including symbols,
|
|
5
|
-
* decimals, supply caps, and verification status. Uses time-based caching to
|
|
6
|
-
* minimize network calls while ensuring data freshness.
|
|
7
|
-
*
|
|
8
|
-
* ## Core Responsibility
|
|
9
|
-
*
|
|
10
|
-
* Fetch REAL token metadata from blockchain, never infer from strings:
|
|
11
|
-
* - **Symbol**: Official ticker (ANIME, GDOG, GALA)
|
|
12
|
-
* - **Decimals**: Precision (8 or 18 typically)
|
|
13
|
-
* - **Max Supply**: Token supply cap
|
|
14
|
-
* - **Verification**: Gala verification status
|
|
15
|
-
* - **Name**: Full token name
|
|
16
|
-
*
|
|
17
|
-
* ## Why This Matters
|
|
18
|
-
*
|
|
19
|
-
* **❌ WRONG: Inferring from format strings**
|
|
20
|
-
* ```typescript
|
|
21
|
-
* // DON'T DO THIS
|
|
22
|
-
* const symbol = tokenString.split('|')[2]; // Unreliable!
|
|
23
|
-
* const decimals = 18; // Guessing!
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* **✅ CORRECT: Query blockchain**
|
|
27
|
-
* ```typescript
|
|
28
|
-
* // DO THIS
|
|
29
|
-
* const metadata = await tokenMetadataService.resolveTokenMetadata('anime');
|
|
30
|
-
* const symbol = metadata.symbol; // "ANIME" (verified from chain)
|
|
31
|
-
* const decimals = metadata.decimals; // 8 (actual value from chain)
|
|
32
|
-
* ```
|
|
33
|
-
*
|
|
34
|
-
* ## Metadata Immutability
|
|
35
|
-
*
|
|
36
|
-
* **Critical Blockchain Property:**
|
|
37
|
-
* - Token metadata CANNOT be changed after creation
|
|
38
|
-
* - Maximizes trust and predictability
|
|
39
|
-
* - Enables aggressive caching (default 1 hour TTL)
|
|
40
|
-
* - Symbol, decimals, maxSupply are permanent
|
|
41
|
-
*
|
|
42
|
-
* ## Caching Strategy
|
|
43
|
-
*
|
|
44
|
-
* **Time-Based Expiry (default 1 hour):**
|
|
45
|
-
* - First request: Fetch from blockchain (~100ms)
|
|
46
|
-
* - Cached requests: In-memory read (~1ms)
|
|
47
|
-
* - Auto-refresh after TTL expires
|
|
48
|
-
* - Manual cache clearing available
|
|
49
|
-
*
|
|
50
|
-
* **Why Not Permanent Cache:**
|
|
51
|
-
* - New tokens may be created
|
|
52
|
-
* - Verification status can change
|
|
53
|
-
* - Conservative approach for safety
|
|
54
|
-
* - Configurable TTL for different use cases
|
|
55
|
-
*
|
|
56
|
-
* ## Decimals Importance
|
|
57
|
-
*
|
|
58
|
-
* **Amount Formatting:**
|
|
59
|
-
* ```typescript
|
|
60
|
-
* // On-chain amount: "100000000" (8 decimals)
|
|
61
|
-
* // User-friendly: "1.00" tokens
|
|
62
|
-
* // Conversion: amount / 10^decimals
|
|
63
|
-
*
|
|
64
|
-
* const metadata = await service.resolveTokenMetadata('anime');
|
|
65
|
-
* const onChainAmount = "100000000";
|
|
66
|
-
* const userAmount = Number(onChainAmount) / Math.pow(10, metadata.decimals);
|
|
67
|
-
* console.log(userAmount); // 1.0
|
|
68
|
-
* ```
|
|
69
|
-
*
|
|
70
|
-
* **Common Decimal Values:**
|
|
71
|
-
* - GALA: 8 decimals (Bitcoin-style precision)
|
|
72
|
-
* - GUSDC: 6 decimals (matches USDC standard)
|
|
73
|
-
* - WETH: 18 decimals (Ethereum standard)
|
|
74
|
-
* - Launchpad tokens: 8 decimals (default)
|
|
75
|
-
*
|
|
76
|
-
* @packageDocumentation
|
|
77
|
-
* @category Services
|
|
78
|
-
* @since 3.0.0
|
|
79
|
-
*/
|
|
80
|
-
import type { TokenClassKey as TokenClass } from '../types/common';
|
|
81
|
-
import { LoggerBase } from './BaseService';
|
|
82
|
-
/**
|
|
83
|
-
* Blockchain-verified token metadata from GalaChain
|
|
84
|
-
*
|
|
85
|
-
* Contains authoritative token properties fetched from the blockchain,
|
|
86
|
-
* distinct from bonding curve cache entries or bridge metadata.
|
|
87
|
-
*
|
|
88
|
-
* @since 6.10.0 - Renamed from TokenMetadata for clarity
|
|
89
|
-
*/
|
|
90
|
-
export interface BlockchainTokenMetadata {
|
|
91
|
-
/** Official token symbol from blockchain (e.g., "ANIME", "GALA") */
|
|
92
|
-
symbol: string;
|
|
93
|
-
/** Token full name (optional) */
|
|
94
|
-
name?: string;
|
|
95
|
-
/** Token decimal places (e.g., 8 for GALA, 18 for WETH) */
|
|
96
|
-
decimals: number;
|
|
97
|
-
/** Token collection (e.g., "Token", "GALA") */
|
|
98
|
-
collection: string;
|
|
99
|
-
/** Token category (e.g., "Unit") */
|
|
100
|
-
category: string;
|
|
101
|
-
/** Token type (e.g., "ANIME", "none") */
|
|
102
|
-
type: string;
|
|
103
|
-
/** Additional identifier (e.g., chain/address, "none") */
|
|
104
|
-
additionalKey: string;
|
|
105
|
-
/** Whether token is Gala-verified */
|
|
106
|
-
verified: boolean;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Internal cache structure for blockchain token metadata
|
|
110
|
-
* @internal
|
|
111
|
-
*/
|
|
112
|
-
export interface BlockchainTokenMetadataCache {
|
|
113
|
-
[key: string]: {
|
|
114
|
-
data: BlockchainTokenMetadata;
|
|
115
|
-
timestamp: number;
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
export declare class TokenMetadataService extends LoggerBase {
|
|
119
|
-
private cache;
|
|
120
|
-
private cacheExpiry;
|
|
121
|
-
constructor(debugMode?: boolean);
|
|
122
|
-
/**
|
|
123
|
-
* Resolve token metadata from GalaChain blockchain
|
|
124
|
-
*
|
|
125
|
-
* Queries GalaChain for authoritative token metadata including symbol, decimals,
|
|
126
|
-
* supply cap, and verification status. Uses time-based caching (default 1 hour)
|
|
127
|
-
* to minimize network calls while ensuring data freshness.
|
|
128
|
-
*
|
|
129
|
-
* ## Supported Input Formats
|
|
130
|
-
*
|
|
131
|
-
* **Simple Symbol:**
|
|
132
|
-
* ```typescript
|
|
133
|
-
* await service.resolveTokenMetadata('GALA');
|
|
134
|
-
* await service.resolveTokenMetadata('anime');
|
|
135
|
-
* ```
|
|
136
|
-
*
|
|
137
|
-
* **Full Format String:**
|
|
138
|
-
* ```typescript
|
|
139
|
-
* await service.resolveTokenMetadata('GALA|Unit|none|none');
|
|
140
|
-
* await service.resolveTokenMetadata('Token|Unit|ANIME|eth:0x...');
|
|
141
|
-
* ```
|
|
142
|
-
*
|
|
143
|
-
* **TokenClass Object:**
|
|
144
|
-
* ```typescript
|
|
145
|
-
* await service.resolveTokenMetadata({
|
|
146
|
-
* collection: 'Token',
|
|
147
|
-
* category: 'Unit',
|
|
148
|
-
* type: 'ANIME',
|
|
149
|
-
* additionalKey: 'eth:0x...'
|
|
150
|
-
* });
|
|
151
|
-
* ```
|
|
152
|
-
*
|
|
153
|
-
* ## Return Value
|
|
154
|
-
*
|
|
155
|
-
* ```typescript
|
|
156
|
-
* {
|
|
157
|
-
* symbol: "ANIME", // Official ticker
|
|
158
|
-
* decimals: 8, // Precision
|
|
159
|
-
* name: "Anime Token", // Full name
|
|
160
|
-
* maxSupply: "1000000000",// Supply cap
|
|
161
|
-
* verified: true, // Gala verification
|
|
162
|
-
* collection: "Token",
|
|
163
|
-
* category: "Unit",
|
|
164
|
-
* type: "ANIME",
|
|
165
|
-
* additionalKey: "eth:0x..."
|
|
166
|
-
* }
|
|
167
|
-
* ```
|
|
168
|
-
*
|
|
169
|
-
* ## Caching Behavior
|
|
170
|
-
*
|
|
171
|
-
* - **First request**: Fetch from blockchain (~100ms)
|
|
172
|
-
* - **Cached requests**: In-memory read (~1ms)
|
|
173
|
-
* - **Cache expiry**: 1 hour (configurable)
|
|
174
|
-
* - **Auto-refresh**: After TTL expires
|
|
175
|
-
*
|
|
176
|
-
* ## Why Use This vs String Parsing
|
|
177
|
-
*
|
|
178
|
-
* **❌ WRONG: Inferring from strings**
|
|
179
|
-
* ```typescript
|
|
180
|
-
* // Unreliable and error-prone!
|
|
181
|
-
* const parts = tokenString.split('|');
|
|
182
|
-
* const symbol = parts[2]; // Might be wrong!
|
|
183
|
-
* const decimals = 18; // Guessing!
|
|
184
|
-
* ```
|
|
185
|
-
*
|
|
186
|
-
* **✅ CORRECT: Query blockchain**
|
|
187
|
-
* ```typescript
|
|
188
|
-
* // Verified and accurate!
|
|
189
|
-
* const metadata = await service.resolveTokenMetadata('anime');
|
|
190
|
-
* const symbol = metadata.symbol; // "ANIME" (from chain)
|
|
191
|
-
* const decimals = metadata.decimals; // 8 (from chain)
|
|
192
|
-
* ```
|
|
193
|
-
*
|
|
194
|
-
* @param token Token reference (symbol, format string, or TokenClass object)
|
|
195
|
-
* @returns Verified token metadata from blockchain
|
|
196
|
-
*
|
|
197
|
-
* @example
|
|
198
|
-
* ```typescript
|
|
199
|
-
* // Resolve by symbol
|
|
200
|
-
* const metadata = await service.resolveTokenMetadata('anime');
|
|
201
|
-
* console.log('Symbol:', metadata.symbol); // "ANIME"
|
|
202
|
-
* console.log('Decimals:', metadata.decimals); // 8
|
|
203
|
-
*
|
|
204
|
-
* // Format on-chain amount for display
|
|
205
|
-
* const onChainAmount = "100000000"; // 8 zeros
|
|
206
|
-
* const userAmount = Number(onChainAmount) / Math.pow(10, metadata.decimals);
|
|
207
|
-
* console.log('User amount:', userAmount); // 1.0
|
|
208
|
-
* ```
|
|
209
|
-
*
|
|
210
|
-
* @category Metadata Resolution
|
|
211
|
-
* @since 3.0.0
|
|
212
|
-
*/
|
|
213
|
-
resolveTokenMetadata(token: string | TokenClass): BlockchainTokenMetadata;
|
|
214
|
-
/**
|
|
215
|
-
* Get token symbol from blockchain
|
|
216
|
-
*
|
|
217
|
-
* Convenience method that resolves full metadata and returns only the symbol.
|
|
218
|
-
* Uses the same caching as `resolveTokenMetadata()`.
|
|
219
|
-
*
|
|
220
|
-
* ## Why This Matters
|
|
221
|
-
*
|
|
222
|
-
* **✅ CORRECT approach (this method):**
|
|
223
|
-
* ```typescript
|
|
224
|
-
* const symbol = await service.getTokenSymbol('anime');
|
|
225
|
-
* console.log(symbol); // "ANIME" (verified from chain)
|
|
226
|
-
* ```
|
|
227
|
-
*
|
|
228
|
-
* **❌ WRONG approach (string parsing):**
|
|
229
|
-
* ```typescript
|
|
230
|
-
* const parts = tokenString.split('|');
|
|
231
|
-
* const symbol = parts[2]; // Unreliable! Might be type, not symbol!
|
|
232
|
-
* ```
|
|
233
|
-
*
|
|
234
|
-
* ## Symbol Use Cases
|
|
235
|
-
*
|
|
236
|
-
* - Display token ticker in UI
|
|
237
|
-
* - Trading pair notation (ANIME/GALA)
|
|
238
|
-
* - Portfolio listings
|
|
239
|
-
* - Search and filtering
|
|
240
|
-
*
|
|
241
|
-
* @param token Token reference (symbol, format string, or TokenClass)
|
|
242
|
-
* @returns Official token symbol from blockchain
|
|
243
|
-
*
|
|
244
|
-
* @example
|
|
245
|
-
* ```typescript
|
|
246
|
-
* const symbol = await service.getTokenSymbol('anime');
|
|
247
|
-
* console.log(`Trading ${symbol}/GALA`); // "Trading ANIME/GALA"
|
|
248
|
-
* ```
|
|
249
|
-
*
|
|
250
|
-
* @category Metadata Resolution
|
|
251
|
-
* @since 3.0.0
|
|
252
|
-
*/
|
|
253
|
-
getTokenSymbol(token: string | TokenClass): string;
|
|
254
|
-
/**
|
|
255
|
-
* Get token decimals from blockchain
|
|
256
|
-
*
|
|
257
|
-
* Convenience method that resolves full metadata and returns only the decimals.
|
|
258
|
-
* Critical for amount formatting and on-chain → user-friendly conversions.
|
|
259
|
-
*
|
|
260
|
-
* ## Decimals Usage
|
|
261
|
-
*
|
|
262
|
-
* **Amount Conversion:**
|
|
263
|
-
* ```typescript
|
|
264
|
-
* const decimals = await service.getTokenDecimals('anime');
|
|
265
|
-
* const onChainAmount = "100000000"; // 8 zeros
|
|
266
|
-
* const userAmount = Number(onChainAmount) / Math.pow(10, decimals);
|
|
267
|
-
* console.log(userAmount); // 1.0
|
|
268
|
-
* ```
|
|
269
|
-
*
|
|
270
|
-
* **Common Decimal Values:**
|
|
271
|
-
* - GALA: 8 decimals (Bitcoin-style)
|
|
272
|
-
* - GUSDC: 6 decimals (USDC standard)
|
|
273
|
-
* - WETH: 18 decimals (Ethereum standard)
|
|
274
|
-
* - Launchpad tokens: 8 decimals (default)
|
|
275
|
-
*
|
|
276
|
-
* ## Why Decimals Matter
|
|
277
|
-
*
|
|
278
|
-
* **Display Accuracy:**
|
|
279
|
-
* - 8 decimals: Can show 0.00000001 precision
|
|
280
|
-
* - 18 decimals: Can show 0.000000000000000001 precision
|
|
281
|
-
* - Wrong decimals = wrong amounts shown to users
|
|
282
|
-
*
|
|
283
|
-
* **Trading Precision:**
|
|
284
|
-
* - On-chain amounts are integers (no floating point)
|
|
285
|
-
* - Decimals define the scaling factor
|
|
286
|
-
* - 1 token = 10^decimals smallest units
|
|
287
|
-
*
|
|
288
|
-
* @param token Token reference (symbol, format string, or TokenClass)
|
|
289
|
-
* @returns Token decimal precision from blockchain
|
|
290
|
-
*
|
|
291
|
-
* @example
|
|
292
|
-
* ```typescript
|
|
293
|
-
* // Get decimals for amount formatting
|
|
294
|
-
* const decimals = await service.getTokenDecimals('anime');
|
|
295
|
-
* console.log('Decimals:', decimals); // 8
|
|
296
|
-
*
|
|
297
|
-
* // Convert on-chain to user-friendly
|
|
298
|
-
* function formatAmount(onChainAmount: string, decimals: number): string {
|
|
299
|
-
* const amount = Number(onChainAmount) / Math.pow(10, decimals);
|
|
300
|
-
* return amount.toFixed(decimals);
|
|
301
|
-
* }
|
|
302
|
-
*
|
|
303
|
-
* const formatted = formatAmount("100000000", decimals);
|
|
304
|
-
* console.log(formatted); // "1.00000000"
|
|
305
|
-
* ```
|
|
306
|
-
*
|
|
307
|
-
* @category Metadata Resolution
|
|
308
|
-
* @since 3.0.0
|
|
309
|
-
*/
|
|
310
|
-
getTokenDecimals(token: string | TokenClass): number;
|
|
311
|
-
/**
|
|
312
|
-
* Clear metadata cache to force fresh blockchain queries
|
|
313
|
-
*
|
|
314
|
-
* Removes cached metadata entries. Can clear entire cache or a specific token.
|
|
315
|
-
* Next request for cleared tokens will fetch fresh data from blockchain.
|
|
316
|
-
*
|
|
317
|
-
* ## Use Cases
|
|
318
|
-
*
|
|
319
|
-
* **Clear All:**
|
|
320
|
-
* - Testing scenarios (fresh state)
|
|
321
|
-
* - Memory management (rare)
|
|
322
|
-
* - Major blockchain upgrade events
|
|
323
|
-
*
|
|
324
|
-
* **Clear Specific:**
|
|
325
|
-
* - Token verification status changed
|
|
326
|
-
* - Suspected stale data
|
|
327
|
-
* - Debugging metadata issues
|
|
328
|
-
*
|
|
329
|
-
* ## When NOT to Clear
|
|
330
|
-
*
|
|
331
|
-
* **Metadata is immutable:**
|
|
332
|
-
* - Symbol never changes
|
|
333
|
-
* - Decimals never change
|
|
334
|
-
* - Max supply never changes
|
|
335
|
-
* - Cache clearing rarely needed
|
|
336
|
-
*
|
|
337
|
-
* **Performance impact:**
|
|
338
|
-
* - Next request requires blockchain call (~100ms)
|
|
339
|
-
* - Only clear if absolutely necessary
|
|
340
|
-
*
|
|
341
|
-
* @param tokenKey Optional token key to clear (clears all if omitted)
|
|
342
|
-
*
|
|
343
|
-
* @example
|
|
344
|
-
* ```typescript
|
|
345
|
-
* // Clear entire cache
|
|
346
|
-
* service.clearCache();
|
|
347
|
-
* console.log('All metadata cache cleared');
|
|
348
|
-
*
|
|
349
|
-
* // Clear specific token
|
|
350
|
-
* service.clearCache('anime');
|
|
351
|
-
* console.log('Cleared cache for anime token');
|
|
352
|
-
* ```
|
|
353
|
-
*
|
|
354
|
-
* @category Cache Management
|
|
355
|
-
* @since 3.0.0
|
|
356
|
-
*/
|
|
357
|
-
clearCache(tokenKey?: string): void;
|
|
358
|
-
/**
|
|
359
|
-
* Get cache statistics for monitoring and debugging
|
|
360
|
-
*
|
|
361
|
-
* Returns cache metrics including size and all cached token keys.
|
|
362
|
-
* Useful for monitoring cache health and verifying cache behavior.
|
|
363
|
-
*
|
|
364
|
-
* ## Metrics Provided
|
|
365
|
-
*
|
|
366
|
-
* - **size**: Number of cached tokens
|
|
367
|
-
* - **entries**: Array of all cached token keys
|
|
368
|
-
*
|
|
369
|
-
* ## Use Cases
|
|
370
|
-
*
|
|
371
|
-
* **Cache Monitoring:**
|
|
372
|
-
* ```typescript
|
|
373
|
-
* const stats = service.getCacheStats();
|
|
374
|
-
* console.log(`Cache size: ${stats.size} tokens`);
|
|
375
|
-
* console.log(`Memory: ~${stats.size * 0.5}KB`); // Rough estimate
|
|
376
|
-
* ```
|
|
377
|
-
*
|
|
378
|
-
* **Cache Health:**
|
|
379
|
-
* ```typescript
|
|
380
|
-
* // Monitor cache growth
|
|
381
|
-
* setInterval(() => {
|
|
382
|
-
* const stats = service.getCacheStats();
|
|
383
|
-
* if (stats.size > 500) {
|
|
384
|
-
* console.warn('Large metadata cache, consider clearing');
|
|
385
|
-
* }
|
|
386
|
-
* }, 300000); // Every 5 minutes
|
|
387
|
-
* ```
|
|
388
|
-
*
|
|
389
|
-
* **Debugging:**
|
|
390
|
-
* ```typescript
|
|
391
|
-
* const stats = service.getCacheStats();
|
|
392
|
-
* console.log('Cached tokens:', stats.entries);
|
|
393
|
-
* const hasAnime = stats.entries.includes('anime');
|
|
394
|
-
* console.log('Anime cached:', hasAnime);
|
|
395
|
-
* ```
|
|
396
|
-
*
|
|
397
|
-
* @returns Cache statistics with size and entry keys
|
|
398
|
-
*
|
|
399
|
-
* @example
|
|
400
|
-
* ```typescript
|
|
401
|
-
* const stats = service.getCacheStats();
|
|
402
|
-
* console.log('Cache size:', stats.size);
|
|
403
|
-
* console.log('Cached tokens:', stats.entries.join(', '));
|
|
404
|
-
* // Output: "anime, gala, gusdc"
|
|
405
|
-
* ```
|
|
406
|
-
*
|
|
407
|
-
* @category Cache Management
|
|
408
|
-
* @since 3.0.0
|
|
409
|
-
*/
|
|
410
|
-
getCacheStats(): {
|
|
411
|
-
size: number;
|
|
412
|
-
entries: string[];
|
|
413
|
-
};
|
|
414
|
-
/**
|
|
415
|
-
* Generate cache key from token reference
|
|
416
|
-
* @private
|
|
417
|
-
*/
|
|
418
|
-
private getCacheKey;
|
|
419
|
-
/**
|
|
420
|
-
* Extract metadata from token reference
|
|
421
|
-
*
|
|
422
|
-
* ⚠️ IMPORTANT: This is a PLACEHOLDER implementation
|
|
423
|
-
* In production, this should query GalaChainService.fetchTokenClassFromChain()
|
|
424
|
-
* to get REAL metadata from the blockchain.
|
|
425
|
-
* @private
|
|
426
|
-
*/
|
|
427
|
-
private extractMetadata;
|
|
428
|
-
/**
|
|
429
|
-
* Get known decimals for standard tokens
|
|
430
|
-
*
|
|
431
|
-
* ⚠️ HARDCODED VALUES - In production, query blockchain!
|
|
432
|
-
* @private
|
|
433
|
-
*/
|
|
434
|
-
private getDecimalsForToken;
|
|
435
|
-
/**
|
|
436
|
-
* Check if cache entry has expired
|
|
437
|
-
* @private
|
|
438
|
-
*/
|
|
439
|
-
private isCacheExpired;
|
|
440
|
-
/**
|
|
441
|
-
* Set cache expiry duration (time-to-live)
|
|
442
|
-
*
|
|
443
|
-
* Configures how long metadata remains cached before requiring refresh.
|
|
444
|
-
* Default is 1 hour (3,600,000ms). Adjust based on your application's
|
|
445
|
-
* requirements for data freshness vs. performance.
|
|
446
|
-
*
|
|
447
|
-
* ## Recommended TTL Values
|
|
448
|
-
*
|
|
449
|
-
* **Conservative (1 hour - default):**
|
|
450
|
-
* ```typescript
|
|
451
|
-
* service.setCacheExpiry(3600000); // 1 hour
|
|
452
|
-
* // Good balance of freshness and performance
|
|
453
|
-
* // Suitable for most applications
|
|
454
|
-
* ```
|
|
455
|
-
*
|
|
456
|
-
* **Aggressive (1 day):**
|
|
457
|
-
* ```typescript
|
|
458
|
-
* service.setCacheExpiry(86400000); // 24 hours
|
|
459
|
-
* // Maximum performance, minimal refreshes
|
|
460
|
-
* // Safe because metadata is immutable
|
|
461
|
-
* // Best for production apps
|
|
462
|
-
* ```
|
|
463
|
-
*
|
|
464
|
-
* **Fresh (5 minutes):**
|
|
465
|
-
* ```typescript
|
|
466
|
-
* service.setCacheExpiry(300000); // 5 minutes
|
|
467
|
-
* // Frequent refreshes for changing data
|
|
468
|
-
* // Use if verification status updates frequently
|
|
469
|
-
* ```
|
|
470
|
-
*
|
|
471
|
-
* **No Cache (for testing):**
|
|
472
|
-
* ```typescript
|
|
473
|
-
* service.setCacheExpiry(0); // Immediate expiry
|
|
474
|
-
* // Every request fetches from blockchain
|
|
475
|
-
* // Only use for testing/debugging
|
|
476
|
-
* ```
|
|
477
|
-
*
|
|
478
|
-
* ## Trade-offs
|
|
479
|
-
*
|
|
480
|
-
* **Longer TTL (hours/days):**
|
|
481
|
-
* - Pros: Better performance, fewer API calls
|
|
482
|
-
* - Cons: Slightly stale data (verification status)
|
|
483
|
-
* - Safe: Core metadata (symbol, decimals) never changes
|
|
484
|
-
*
|
|
485
|
-
* **Shorter TTL (minutes):**
|
|
486
|
-
* - Pros: Fresher data, catches status changes
|
|
487
|
-
* - Cons: More API calls, higher latency
|
|
488
|
-
* - Rare benefit: Metadata rarely changes
|
|
489
|
-
*
|
|
490
|
-
* @param ms Cache expiry in milliseconds (default: 3600000 = 1 hour)
|
|
491
|
-
*
|
|
492
|
-
* @example
|
|
493
|
-
* ```typescript
|
|
494
|
-
* // Production: Long cache (metadata immutable)
|
|
495
|
-
* service.setCacheExpiry(86400000); // 24 hours
|
|
496
|
-
*
|
|
497
|
-
* // Development: Short cache (debugging)
|
|
498
|
-
* service.setCacheExpiry(60000); // 1 minute
|
|
499
|
-
*
|
|
500
|
-
* // Testing: No cache
|
|
501
|
-
* service.setCacheExpiry(0); // Immediate expiry
|
|
502
|
-
* ```
|
|
503
|
-
*
|
|
504
|
-
* @category Cache Management
|
|
505
|
-
* @since 3.0.0
|
|
506
|
-
*/
|
|
507
|
-
setCacheExpiry(ms: number): void;
|
|
508
|
-
}
|
|
509
|
-
//# sourceMappingURL=TokenMetadataService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TokenMetadataService.d.ts","sourceRoot":"","sources":["../../src/services/TokenMetadataService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AAEH,OAAO,KAAK,EAAE,aAAa,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAInE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IACtC,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,IAAI,EAAE,uBAAuB,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,oBAAqB,SAAQ,UAAU;IAClD,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,WAAW,CAAmB;gBAE1B,SAAS,GAAE,OAAe;IAItC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0FG;IACH,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,uBAAuB;IA0BzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM;IAKlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuDG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM;IAKpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAUnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACH,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IAQpD;;;OAGG;IAEH,OAAO,CAAC,WAAW;IAenB;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAgEvB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAItB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAIjC"}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GalaChain Connect Provider
|
|
3
|
-
*
|
|
4
|
-
* Wraps @gala-chain/connect clients (BrowserConnectClient, TrustWalletConnectClient)
|
|
5
|
-
* for use with the WalletProvider interface. This is an optional integration that
|
|
6
|
-
* gracefully fails if @gala-chain/connect is not installed.
|
|
7
|
-
*
|
|
8
|
-
* @packageDocumentation
|
|
9
|
-
*/
|
|
10
|
-
import type { TypedDataDomain, TypedDataField, WalletProvider, WalletProviderType } from './types';
|
|
11
|
-
/**
|
|
12
|
-
* Interface for @gala-chain/connect client methods
|
|
13
|
-
*
|
|
14
|
-
* This interface defines the minimal set of methods we need from
|
|
15
|
-
* BrowserConnectClient or TrustWalletConnectClient
|
|
16
|
-
*/
|
|
17
|
-
export interface GalaChainConnectClient {
|
|
18
|
-
/** Signs a message and returns the signature */
|
|
19
|
-
signMessage(message: string): Promise<string>;
|
|
20
|
-
/** Gets the current account address (if connected) */
|
|
21
|
-
getAccount?(): Promise<string | null>;
|
|
22
|
-
/** Connect to the wallet - returns the connected address */
|
|
23
|
-
connect?(): Promise<string>;
|
|
24
|
-
/** Disconnect from the wallet (may return void or Promise<void>) */
|
|
25
|
-
disconnect?(): void | Promise<void>;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Wallet provider that wraps @gala-chain/connect clients
|
|
29
|
-
*
|
|
30
|
-
* This provider works with BrowserConnectClient (for MetaMask and generic EIP-1193
|
|
31
|
-
* providers) and TrustWalletConnectClient from the @gala-chain/connect library.
|
|
32
|
-
*
|
|
33
|
-
* Note: @gala-chain/connect must be installed as a peer dependency to use this provider.
|
|
34
|
-
*
|
|
35
|
-
* @example
|
|
36
|
-
* ```typescript
|
|
37
|
-
* import { GalaChainConnectProvider } from '@gala-chain/launchpad-sdk/wallet';
|
|
38
|
-
* import { BrowserConnectClient } from '@gala-chain/connect';
|
|
39
|
-
*
|
|
40
|
-
* // Create a @gala-chain/connect client
|
|
41
|
-
* const client = new BrowserConnectClient();
|
|
42
|
-
*
|
|
43
|
-
* // Wrap it with our provider
|
|
44
|
-
* const provider = new GalaChainConnectProvider(client);
|
|
45
|
-
*
|
|
46
|
-
* // Connect and use
|
|
47
|
-
* await provider.connect();
|
|
48
|
-
* const signature = await provider.signMessage('Hello');
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
export declare class GalaChainConnectProvider implements WalletProvider {
|
|
52
|
-
readonly providerType: WalletProviderType;
|
|
53
|
-
private readonly client;
|
|
54
|
-
private connectedAddress;
|
|
55
|
-
/**
|
|
56
|
-
* Creates a new GalaChainConnectProvider
|
|
57
|
-
*
|
|
58
|
-
* @param client - A @gala-chain/connect client (BrowserConnectClient or TrustWalletConnectClient)
|
|
59
|
-
* @throws WalletProviderError if client is not provided
|
|
60
|
-
*/
|
|
61
|
-
constructor(client: GalaChainConnectClient);
|
|
62
|
-
/**
|
|
63
|
-
* Creates a GalaChainConnectProvider with a new BrowserConnectClient
|
|
64
|
-
*
|
|
65
|
-
* @param provider - Optional EIP-1193 provider to pass to BrowserConnectClient
|
|
66
|
-
* @returns Promise resolving to the provider
|
|
67
|
-
* @throws WalletProviderError if @gala-chain/connect is not installed
|
|
68
|
-
*/
|
|
69
|
-
static createBrowserClient(provider?: unknown): Promise<GalaChainConnectProvider>;
|
|
70
|
-
/**
|
|
71
|
-
* Creates a GalaChainConnectProvider with a new TrustWalletConnectClient
|
|
72
|
-
*
|
|
73
|
-
* @returns Promise resolving to the provider
|
|
74
|
-
* @throws WalletProviderError if @gala-chain/connect is not installed
|
|
75
|
-
*/
|
|
76
|
-
static createTrustWalletClient(): Promise<GalaChainConnectProvider>;
|
|
77
|
-
/**
|
|
78
|
-
* Checks if @gala-chain/connect is available
|
|
79
|
-
*/
|
|
80
|
-
static isAvailable(): Promise<boolean>;
|
|
81
|
-
/**
|
|
82
|
-
* Ensures the provider is connected
|
|
83
|
-
*/
|
|
84
|
-
private ensureConnected;
|
|
85
|
-
/**
|
|
86
|
-
* Connects to the wallet
|
|
87
|
-
*/
|
|
88
|
-
connect(): Promise<string>;
|
|
89
|
-
/**
|
|
90
|
-
* Disconnects from the wallet
|
|
91
|
-
*/
|
|
92
|
-
disconnect(): Promise<void>;
|
|
93
|
-
/**
|
|
94
|
-
* Checks if connected
|
|
95
|
-
*/
|
|
96
|
-
isConnected(): boolean;
|
|
97
|
-
/**
|
|
98
|
-
* Signs a message using the @gala-chain/connect client
|
|
99
|
-
*/
|
|
100
|
-
signMessage(message: string): Promise<string>;
|
|
101
|
-
/**
|
|
102
|
-
* Signs typed data using EIP-712
|
|
103
|
-
*
|
|
104
|
-
* Note: @gala-chain/connect clients may not support typed data signing directly.
|
|
105
|
-
* This method attempts to use the underlying provider if available.
|
|
106
|
-
*/
|
|
107
|
-
signTypedData(domain: TypedDataDomain, types: Record<string, TypedDataField[]>, value: Record<string, unknown>): Promise<string>;
|
|
108
|
-
/**
|
|
109
|
-
* Gets the connected address
|
|
110
|
-
*/
|
|
111
|
-
getAddress(): Promise<string>;
|
|
112
|
-
/**
|
|
113
|
-
* Gets the address in Gala backend format
|
|
114
|
-
*/
|
|
115
|
-
getGalaAddress(): Promise<string>;
|
|
116
|
-
/**
|
|
117
|
-
* Private key is not accessible through @gala-chain/connect
|
|
118
|
-
*/
|
|
119
|
-
getPrivateKey(): Promise<string>;
|
|
120
|
-
/**
|
|
121
|
-
* Gets the underlying @gala-chain/connect client
|
|
122
|
-
*/
|
|
123
|
-
getClient(): GalaChainConnectClient;
|
|
124
|
-
}
|
|
125
|
-
//# sourceMappingURL=GalaChainConnectProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GalaChainConnectProvider.d.ts","sourceRoot":"","sources":["../../src/wallet/GalaChainConnectProvider.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAMjB;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9C,sDAAsD;IACtD,UAAU,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEtC,4DAA4D;IAC5D,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5B,oEAAoE;IACpE,UAAU,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AA2BD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,wBAAyB,YAAW,cAAc;IAC7D,SAAgB,YAAY,EAAE,kBAAkB,CAAc;IAE9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,gBAAgB,CAAuB;IAE/C;;;;;OAKG;gBACS,MAAM,EAAE,sBAAsB;IAmB1C;;;;;;OAMG;WACU,mBAAmB,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAqBvF;;;;;OAKG;WACU,uBAAuB,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAmBzE;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAM5C;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IA+ChC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBnD;;;;;OAKG;IACH,aAAa,CACX,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,EACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,MAAM,CAAC;IAalB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAKnC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvC;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAQhC;;OAEG;IACH,SAAS,IAAI,sBAAsB;CAGpC"}
|