@spacesops/wdk-react-native-core 1.0.0-beta.70 → 1.0.0-beta.72
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/services/transactionService.js +29 -8
- package/dist/services/transactionService.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/dist/utils/schemas.d.ts +35 -0
- package/dist/utils/schemas.js +2 -0
- package/dist/utils/schemas.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/services/transactionService.test.ts +47 -0
- package/src/services/transactionService.ts +38 -9
- package/src/types.ts +11 -0
- package/src/utils/schemas.ts +2 -0
|
@@ -11,8 +11,24 @@ import { delay, withTransientRetry } from '../utils/retryUtils';
|
|
|
11
11
|
function normalizeBaseUrl(baseUrl) {
|
|
12
12
|
return baseUrl.replace(/\/$/, '');
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Resolve the WDK Indexer `{token}` path segment, or null when this asset has no indexer history.
|
|
16
|
+
*
|
|
17
|
+
* The indexer only tracks select assets (e.g. `usdt`, `xaut`, `btc`). Native EVM gas tokens
|
|
18
|
+
* (`eth`, `matic`, …) are not valid and return 400 if requested.
|
|
19
|
+
*/
|
|
20
|
+
function indexerTokenSlugFromConfig(token) {
|
|
21
|
+
if (token.indexerToken) {
|
|
22
|
+
return token.indexerToken.toLowerCase();
|
|
23
|
+
}
|
|
24
|
+
if (token.address !== null) {
|
|
25
|
+
return token.symbol.toLowerCase();
|
|
26
|
+
}
|
|
27
|
+
// Native: only Bitcoin is indexed under `btc` today.
|
|
28
|
+
if (token.symbol.toLowerCase() === 'btc') {
|
|
29
|
+
return 'btc';
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
16
32
|
}
|
|
17
33
|
function transactionDedupeKey(tx) {
|
|
18
34
|
return [
|
|
@@ -103,6 +119,11 @@ export class TransactionService {
|
|
|
103
119
|
const deduped = new Map();
|
|
104
120
|
let isFirstNetwork = true;
|
|
105
121
|
for (const network of networks) {
|
|
122
|
+
const networkTokens = tokenConfigs[network];
|
|
123
|
+
const indexerBlockchain = networkTokens?.indexerBlockchain;
|
|
124
|
+
if (!indexerBlockchain) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
106
127
|
const address = addresses[network]?.[accountIndex];
|
|
107
128
|
if (!address) {
|
|
108
129
|
continue;
|
|
@@ -111,9 +132,6 @@ export class TransactionService {
|
|
|
111
132
|
await delay(BALANCE_FETCH_STAGGER_MS);
|
|
112
133
|
}
|
|
113
134
|
isFirstNetwork = false;
|
|
114
|
-
const networkTokens = tokenConfigs[network];
|
|
115
|
-
if (!networkTokens)
|
|
116
|
-
continue;
|
|
117
135
|
const tokens = [networkTokens.native, ...networkTokens.tokens];
|
|
118
136
|
for (let i = 0; i < tokens.length; i++) {
|
|
119
137
|
const token = tokens[i];
|
|
@@ -122,9 +140,12 @@ export class TransactionService {
|
|
|
122
140
|
if (i > 0) {
|
|
123
141
|
await delay(BALANCE_FETCH_INTRA_NETWORK_STAGGER_MS);
|
|
124
142
|
}
|
|
125
|
-
const tokenSlug =
|
|
143
|
+
const tokenSlug = indexerTokenSlugFromConfig(token);
|
|
144
|
+
if (!tokenSlug) {
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
126
147
|
try {
|
|
127
|
-
const transfers = await this.fetchTokenTransfers(
|
|
148
|
+
const transfers = await this.fetchTokenTransfers(indexerBlockchain, tokenSlug, address);
|
|
128
149
|
for (const tx of transfers) {
|
|
129
150
|
const withBlockchain = tx.blockchain
|
|
130
151
|
? tx
|
|
@@ -133,7 +154,7 @@ export class TransactionService {
|
|
|
133
154
|
}
|
|
134
155
|
}
|
|
135
156
|
catch (error) {
|
|
136
|
-
logError(`Failed to fetch token transfers for ${
|
|
157
|
+
logError(`Failed to fetch token transfers for ${indexerBlockchain}/${tokenSlug}:`, error);
|
|
137
158
|
}
|
|
138
159
|
}
|
|
139
160
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionService.js","sourceRoot":"","sources":["../../src/services/transactionService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,sCAAsC,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AACrG,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAS/D,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AACnC,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"transactionService.js","sourceRoot":"","sources":["../../src/services/transactionService.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -46,6 +46,12 @@ export interface TokenConfig {
|
|
|
46
46
|
decimals: number;
|
|
47
47
|
/** Token contract address (null for native tokens) */
|
|
48
48
|
address: string | null;
|
|
49
|
+
/**
|
|
50
|
+
* WDK Indexer token path segment for token-transfers.
|
|
51
|
+
* When omitted, ERC-20/jetton tokens use lowercase symbol; native gas tokens are skipped
|
|
52
|
+
* except Bitcoin (`btc`). Set explicitly to override or to enable native history when supported.
|
|
53
|
+
*/
|
|
54
|
+
indexerToken?: string;
|
|
49
55
|
}
|
|
50
56
|
/**
|
|
51
57
|
* Network Tokens
|
|
@@ -57,6 +63,11 @@ export interface NetworkTokens {
|
|
|
57
63
|
native: TokenConfig;
|
|
58
64
|
/** Array of ERC20 token configurations */
|
|
59
65
|
tokens: TokenConfig[];
|
|
66
|
+
/**
|
|
67
|
+
* WDK Indexer blockchain path segment for token-transfers on this network.
|
|
68
|
+
* When omitted, transaction history is not fetched from the indexer for this network.
|
|
69
|
+
*/
|
|
70
|
+
indexerBlockchain?: string;
|
|
60
71
|
}
|
|
61
72
|
/**
|
|
62
73
|
* Token Configurations
|
package/dist/utils/schemas.d.ts
CHANGED
|
@@ -126,16 +126,19 @@ export declare const tokenConfigSchema: z.ZodObject<{
|
|
|
126
126
|
name: z.ZodString;
|
|
127
127
|
decimals: z.ZodNumber;
|
|
128
128
|
address: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString, z.ZodString]>, z.ZodNull]>;
|
|
129
|
+
indexerToken: z.ZodOptional<z.ZodString>;
|
|
129
130
|
}, "strip", z.ZodTypeAny, {
|
|
130
131
|
symbol: string;
|
|
131
132
|
name: string;
|
|
132
133
|
decimals: number;
|
|
133
134
|
address: string | null;
|
|
135
|
+
indexerToken?: string | undefined;
|
|
134
136
|
}, {
|
|
135
137
|
symbol: string;
|
|
136
138
|
name: string;
|
|
137
139
|
decimals: number;
|
|
138
140
|
address: string | null;
|
|
141
|
+
indexerToken?: string | undefined;
|
|
139
142
|
}>;
|
|
140
143
|
/**
|
|
141
144
|
* Network tokens schema
|
|
@@ -146,59 +149,72 @@ export declare const networkTokensSchema: z.ZodObject<{
|
|
|
146
149
|
name: z.ZodString;
|
|
147
150
|
decimals: z.ZodNumber;
|
|
148
151
|
address: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString, z.ZodString]>, z.ZodNull]>;
|
|
152
|
+
indexerToken: z.ZodOptional<z.ZodString>;
|
|
149
153
|
}, "strip", z.ZodTypeAny, {
|
|
150
154
|
symbol: string;
|
|
151
155
|
name: string;
|
|
152
156
|
decimals: number;
|
|
153
157
|
address: string | null;
|
|
158
|
+
indexerToken?: string | undefined;
|
|
154
159
|
}, {
|
|
155
160
|
symbol: string;
|
|
156
161
|
name: string;
|
|
157
162
|
decimals: number;
|
|
158
163
|
address: string | null;
|
|
164
|
+
indexerToken?: string | undefined;
|
|
159
165
|
}>;
|
|
160
166
|
tokens: z.ZodArray<z.ZodObject<{
|
|
161
167
|
symbol: z.ZodString;
|
|
162
168
|
name: z.ZodString;
|
|
163
169
|
decimals: z.ZodNumber;
|
|
164
170
|
address: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString, z.ZodString]>, z.ZodNull]>;
|
|
171
|
+
indexerToken: z.ZodOptional<z.ZodString>;
|
|
165
172
|
}, "strip", z.ZodTypeAny, {
|
|
166
173
|
symbol: string;
|
|
167
174
|
name: string;
|
|
168
175
|
decimals: number;
|
|
169
176
|
address: string | null;
|
|
177
|
+
indexerToken?: string | undefined;
|
|
170
178
|
}, {
|
|
171
179
|
symbol: string;
|
|
172
180
|
name: string;
|
|
173
181
|
decimals: number;
|
|
174
182
|
address: string | null;
|
|
183
|
+
indexerToken?: string | undefined;
|
|
175
184
|
}>, "many">;
|
|
185
|
+
indexerBlockchain: z.ZodOptional<z.ZodString>;
|
|
176
186
|
}, "strip", z.ZodTypeAny, {
|
|
177
187
|
native: {
|
|
178
188
|
symbol: string;
|
|
179
189
|
name: string;
|
|
180
190
|
decimals: number;
|
|
181
191
|
address: string | null;
|
|
192
|
+
indexerToken?: string | undefined;
|
|
182
193
|
};
|
|
183
194
|
tokens: {
|
|
184
195
|
symbol: string;
|
|
185
196
|
name: string;
|
|
186
197
|
decimals: number;
|
|
187
198
|
address: string | null;
|
|
199
|
+
indexerToken?: string | undefined;
|
|
188
200
|
}[];
|
|
201
|
+
indexerBlockchain?: string | undefined;
|
|
189
202
|
}, {
|
|
190
203
|
native: {
|
|
191
204
|
symbol: string;
|
|
192
205
|
name: string;
|
|
193
206
|
decimals: number;
|
|
194
207
|
address: string | null;
|
|
208
|
+
indexerToken?: string | undefined;
|
|
195
209
|
};
|
|
196
210
|
tokens: {
|
|
197
211
|
symbol: string;
|
|
198
212
|
name: string;
|
|
199
213
|
decimals: number;
|
|
200
214
|
address: string | null;
|
|
215
|
+
indexerToken?: string | undefined;
|
|
201
216
|
}[];
|
|
217
|
+
indexerBlockchain?: string | undefined;
|
|
202
218
|
}>;
|
|
203
219
|
/**
|
|
204
220
|
* Token configurations schema
|
|
@@ -209,85 +225,104 @@ export declare const tokenConfigsSchema: z.ZodEffects<z.ZodRecord<z.ZodString, z
|
|
|
209
225
|
name: z.ZodString;
|
|
210
226
|
decimals: z.ZodNumber;
|
|
211
227
|
address: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString, z.ZodString]>, z.ZodNull]>;
|
|
228
|
+
indexerToken: z.ZodOptional<z.ZodString>;
|
|
212
229
|
}, "strip", z.ZodTypeAny, {
|
|
213
230
|
symbol: string;
|
|
214
231
|
name: string;
|
|
215
232
|
decimals: number;
|
|
216
233
|
address: string | null;
|
|
234
|
+
indexerToken?: string | undefined;
|
|
217
235
|
}, {
|
|
218
236
|
symbol: string;
|
|
219
237
|
name: string;
|
|
220
238
|
decimals: number;
|
|
221
239
|
address: string | null;
|
|
240
|
+
indexerToken?: string | undefined;
|
|
222
241
|
}>;
|
|
223
242
|
tokens: z.ZodArray<z.ZodObject<{
|
|
224
243
|
symbol: z.ZodString;
|
|
225
244
|
name: z.ZodString;
|
|
226
245
|
decimals: z.ZodNumber;
|
|
227
246
|
address: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString, z.ZodString]>, z.ZodNull]>;
|
|
247
|
+
indexerToken: z.ZodOptional<z.ZodString>;
|
|
228
248
|
}, "strip", z.ZodTypeAny, {
|
|
229
249
|
symbol: string;
|
|
230
250
|
name: string;
|
|
231
251
|
decimals: number;
|
|
232
252
|
address: string | null;
|
|
253
|
+
indexerToken?: string | undefined;
|
|
233
254
|
}, {
|
|
234
255
|
symbol: string;
|
|
235
256
|
name: string;
|
|
236
257
|
decimals: number;
|
|
237
258
|
address: string | null;
|
|
259
|
+
indexerToken?: string | undefined;
|
|
238
260
|
}>, "many">;
|
|
261
|
+
indexerBlockchain: z.ZodOptional<z.ZodString>;
|
|
239
262
|
}, "strip", z.ZodTypeAny, {
|
|
240
263
|
native: {
|
|
241
264
|
symbol: string;
|
|
242
265
|
name: string;
|
|
243
266
|
decimals: number;
|
|
244
267
|
address: string | null;
|
|
268
|
+
indexerToken?: string | undefined;
|
|
245
269
|
};
|
|
246
270
|
tokens: {
|
|
247
271
|
symbol: string;
|
|
248
272
|
name: string;
|
|
249
273
|
decimals: number;
|
|
250
274
|
address: string | null;
|
|
275
|
+
indexerToken?: string | undefined;
|
|
251
276
|
}[];
|
|
277
|
+
indexerBlockchain?: string | undefined;
|
|
252
278
|
}, {
|
|
253
279
|
native: {
|
|
254
280
|
symbol: string;
|
|
255
281
|
name: string;
|
|
256
282
|
decimals: number;
|
|
257
283
|
address: string | null;
|
|
284
|
+
indexerToken?: string | undefined;
|
|
258
285
|
};
|
|
259
286
|
tokens: {
|
|
260
287
|
symbol: string;
|
|
261
288
|
name: string;
|
|
262
289
|
decimals: number;
|
|
263
290
|
address: string | null;
|
|
291
|
+
indexerToken?: string | undefined;
|
|
264
292
|
}[];
|
|
293
|
+
indexerBlockchain?: string | undefined;
|
|
265
294
|
}>>, Record<string, {
|
|
266
295
|
native: {
|
|
267
296
|
symbol: string;
|
|
268
297
|
name: string;
|
|
269
298
|
decimals: number;
|
|
270
299
|
address: string | null;
|
|
300
|
+
indexerToken?: string | undefined;
|
|
271
301
|
};
|
|
272
302
|
tokens: {
|
|
273
303
|
symbol: string;
|
|
274
304
|
name: string;
|
|
275
305
|
decimals: number;
|
|
276
306
|
address: string | null;
|
|
307
|
+
indexerToken?: string | undefined;
|
|
277
308
|
}[];
|
|
309
|
+
indexerBlockchain?: string | undefined;
|
|
278
310
|
}>, Record<string, {
|
|
279
311
|
native: {
|
|
280
312
|
symbol: string;
|
|
281
313
|
name: string;
|
|
282
314
|
decimals: number;
|
|
283
315
|
address: string | null;
|
|
316
|
+
indexerToken?: string | undefined;
|
|
284
317
|
};
|
|
285
318
|
tokens: {
|
|
286
319
|
symbol: string;
|
|
287
320
|
name: string;
|
|
288
321
|
decimals: number;
|
|
289
322
|
address: string | null;
|
|
323
|
+
indexerToken?: string | undefined;
|
|
290
324
|
}[];
|
|
325
|
+
indexerBlockchain?: string | undefined;
|
|
291
326
|
}>>;
|
|
292
327
|
/**
|
|
293
328
|
* Account index schema
|
package/dist/utils/schemas.js
CHANGED
|
@@ -97,6 +97,7 @@ export const tokenConfigSchema = z.object({
|
|
|
97
97
|
name: z.string().min(1),
|
|
98
98
|
decimals: z.number().int().min(0).max(18),
|
|
99
99
|
address: z.union([tokenContractAddressSchema, z.null()]),
|
|
100
|
+
indexerToken: z.string().min(1).optional(),
|
|
100
101
|
});
|
|
101
102
|
/**
|
|
102
103
|
* Network tokens schema
|
|
@@ -104,6 +105,7 @@ export const tokenConfigSchema = z.object({
|
|
|
104
105
|
export const networkTokensSchema = z.object({
|
|
105
106
|
native: tokenConfigSchema,
|
|
106
107
|
tokens: z.array(tokenConfigSchema),
|
|
108
|
+
indexerBlockchain: z.string().min(1).optional(),
|
|
107
109
|
});
|
|
108
110
|
/**
|
|
109
111
|
* Token configurations schema
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/utils/schemas.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/utils/schemas.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spacesops/wdk-react-native-core",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.72",
|
|
4
4
|
"description": "Core functionality for React Native wallets - wallet management, balance fetching, and worklet operations",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -119,6 +119,7 @@ describe('TransactionService', () => {
|
|
|
119
119
|
|
|
120
120
|
const tokenConfigs = {
|
|
121
121
|
ethereum: {
|
|
122
|
+
indexerBlockchain: 'ethereum',
|
|
122
123
|
native: { address: null, symbol: 'ETH', name: 'Ethereum', decimals: 18 },
|
|
123
124
|
tokens: [
|
|
124
125
|
{
|
|
@@ -143,11 +144,56 @@ describe('TransactionService', () => {
|
|
|
143
144
|
tokenConfigs,
|
|
144
145
|
})
|
|
145
146
|
|
|
147
|
+
expect(mockFetch).toHaveBeenCalledTimes(2)
|
|
146
148
|
expect(list).toHaveLength(2)
|
|
147
149
|
expect(list[0].transactionHash).toBe('0x2')
|
|
148
150
|
expect(list[1].transactionHash).toBe('0x1')
|
|
149
151
|
})
|
|
150
152
|
|
|
153
|
+
it('skips networks without indexerBlockchain configured', async () => {
|
|
154
|
+
await TransactionService.fetchWalletTransactions({
|
|
155
|
+
addresses: { solana: { 0: 'SolWallet' } },
|
|
156
|
+
accountIndex: 0,
|
|
157
|
+
tokenConfigs: {
|
|
158
|
+
solana: {
|
|
159
|
+
native: { address: null, symbol: 'SOL', name: 'Solana', decimals: 9 },
|
|
160
|
+
tokens: [
|
|
161
|
+
{
|
|
162
|
+
address: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
|
|
163
|
+
symbol: 'USDT',
|
|
164
|
+
name: 'Tether USD',
|
|
165
|
+
decimals: 6,
|
|
166
|
+
},
|
|
167
|
+
],
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
})
|
|
171
|
+
|
|
172
|
+
expect(mockFetch).not.toHaveBeenCalled()
|
|
173
|
+
})
|
|
174
|
+
|
|
175
|
+
it('skips native gas tokens that the indexer does not track', async () => {
|
|
176
|
+
mockFetch.mockResolvedValueOnce({
|
|
177
|
+
ok: true,
|
|
178
|
+
status: 200,
|
|
179
|
+
json: async () => ({ transfers: [] }),
|
|
180
|
+
})
|
|
181
|
+
|
|
182
|
+
await TransactionService.fetchWalletTransactions({
|
|
183
|
+
addresses: { ethereum: { 0: '0xWallet' } },
|
|
184
|
+
accountIndex: 0,
|
|
185
|
+
tokenConfigs: {
|
|
186
|
+
ethereum: {
|
|
187
|
+
indexerBlockchain: 'ethereum',
|
|
188
|
+
native: { address: null, symbol: 'ETH', name: 'Ethereum', decimals: 18 },
|
|
189
|
+
tokens: [],
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
})
|
|
193
|
+
|
|
194
|
+
expect(mockFetch).not.toHaveBeenCalled()
|
|
195
|
+
})
|
|
196
|
+
|
|
151
197
|
it('resolveWalletTransactions returns empty when indexer not configured', async () => {
|
|
152
198
|
setIndexerConfig(null)
|
|
153
199
|
const list = await TransactionService.resolveWalletTransactions({
|
|
@@ -155,6 +201,7 @@ describe('TransactionService', () => {
|
|
|
155
201
|
accountIndex: 0,
|
|
156
202
|
tokenConfigs: {
|
|
157
203
|
ethereum: {
|
|
204
|
+
indexerBlockchain: 'ethereum',
|
|
158
205
|
native: { address: null, symbol: 'ETH', name: 'Ethereum', decimals: 18 },
|
|
159
206
|
tokens: [],
|
|
160
207
|
},
|
|
@@ -9,7 +9,7 @@ import { getIndexerConfig } from '../store/indexerConfigStore'
|
|
|
9
9
|
import { BALANCE_FETCH_INTRA_NETWORK_STAGGER_MS, BALANCE_FETCH_STAGGER_MS } from '../utils/constants'
|
|
10
10
|
import { logError, logWarn } from '../utils/logger'
|
|
11
11
|
import { delay, withTransientRetry } from '../utils/retryUtils'
|
|
12
|
-
import type { IndexerTokenTransfersResponse, TokenConfigs, WalletTransaction } from '../types'
|
|
12
|
+
import type { IndexerTokenTransfersResponse, TokenConfig, TokenConfigs, WalletTransaction } from '../types'
|
|
13
13
|
|
|
14
14
|
export interface FetchWalletTransactionsParams {
|
|
15
15
|
addresses: Record<string, Record<number, string>>
|
|
@@ -21,8 +21,27 @@ function normalizeBaseUrl(baseUrl: string): string {
|
|
|
21
21
|
return baseUrl.replace(/\/$/, '')
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Resolve the WDK Indexer `{token}` path segment, or null when this asset has no indexer history.
|
|
26
|
+
*
|
|
27
|
+
* The indexer only tracks select assets (e.g. `usdt`, `xaut`, `btc`). Native EVM gas tokens
|
|
28
|
+
* (`eth`, `matic`, …) are not valid and return 400 if requested.
|
|
29
|
+
*/
|
|
30
|
+
function indexerTokenSlugFromConfig(token: TokenConfig): string | null {
|
|
31
|
+
if (token.indexerToken) {
|
|
32
|
+
return token.indexerToken.toLowerCase()
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (token.address !== null) {
|
|
36
|
+
return token.symbol.toLowerCase()
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Native: only Bitcoin is indexed under `btc` today.
|
|
40
|
+
if (token.symbol.toLowerCase() === 'btc') {
|
|
41
|
+
return 'btc'
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return null
|
|
26
45
|
}
|
|
27
46
|
|
|
28
47
|
function transactionDedupeKey(tx: WalletTransaction): string {
|
|
@@ -137,6 +156,12 @@ export class TransactionService {
|
|
|
137
156
|
let isFirstNetwork = true
|
|
138
157
|
|
|
139
158
|
for (const network of networks) {
|
|
159
|
+
const networkTokens = tokenConfigs[network]
|
|
160
|
+
const indexerBlockchain = networkTokens?.indexerBlockchain
|
|
161
|
+
if (!indexerBlockchain) {
|
|
162
|
+
continue
|
|
163
|
+
}
|
|
164
|
+
|
|
140
165
|
const address = addresses[network]?.[accountIndex]
|
|
141
166
|
if (!address) {
|
|
142
167
|
continue
|
|
@@ -147,9 +172,6 @@ export class TransactionService {
|
|
|
147
172
|
}
|
|
148
173
|
isFirstNetwork = false
|
|
149
174
|
|
|
150
|
-
const networkTokens = tokenConfigs[network]
|
|
151
|
-
if (!networkTokens) continue
|
|
152
|
-
|
|
153
175
|
const tokens = [networkTokens.native, ...networkTokens.tokens]
|
|
154
176
|
for (let i = 0; i < tokens.length; i++) {
|
|
155
177
|
const token = tokens[i]
|
|
@@ -158,9 +180,16 @@ export class TransactionService {
|
|
|
158
180
|
await delay(BALANCE_FETCH_INTRA_NETWORK_STAGGER_MS)
|
|
159
181
|
}
|
|
160
182
|
|
|
161
|
-
const tokenSlug =
|
|
183
|
+
const tokenSlug = indexerTokenSlugFromConfig(token)
|
|
184
|
+
if (!tokenSlug) {
|
|
185
|
+
continue
|
|
186
|
+
}
|
|
162
187
|
try {
|
|
163
|
-
const transfers = await this.fetchTokenTransfers(
|
|
188
|
+
const transfers = await this.fetchTokenTransfers(
|
|
189
|
+
indexerBlockchain,
|
|
190
|
+
tokenSlug,
|
|
191
|
+
address
|
|
192
|
+
)
|
|
164
193
|
for (const tx of transfers) {
|
|
165
194
|
const withBlockchain = tx.blockchain
|
|
166
195
|
? tx
|
|
@@ -169,7 +198,7 @@ export class TransactionService {
|
|
|
169
198
|
}
|
|
170
199
|
} catch (error) {
|
|
171
200
|
logError(
|
|
172
|
-
`Failed to fetch token transfers for ${
|
|
201
|
+
`Failed to fetch token transfers for ${indexerBlockchain}/${tokenSlug}:`,
|
|
173
202
|
error
|
|
174
203
|
)
|
|
175
204
|
}
|
package/src/types.ts
CHANGED
|
@@ -49,6 +49,12 @@ export interface TokenConfig {
|
|
|
49
49
|
decimals: number
|
|
50
50
|
/** Token contract address (null for native tokens) */
|
|
51
51
|
address: string | null
|
|
52
|
+
/**
|
|
53
|
+
* WDK Indexer token path segment for token-transfers.
|
|
54
|
+
* When omitted, ERC-20/jetton tokens use lowercase symbol; native gas tokens are skipped
|
|
55
|
+
* except Bitcoin (`btc`). Set explicitly to override or to enable native history when supported.
|
|
56
|
+
*/
|
|
57
|
+
indexerToken?: string
|
|
52
58
|
}
|
|
53
59
|
|
|
54
60
|
/**
|
|
@@ -61,6 +67,11 @@ export interface NetworkTokens {
|
|
|
61
67
|
native: TokenConfig
|
|
62
68
|
/** Array of ERC20 token configurations */
|
|
63
69
|
tokens: TokenConfig[]
|
|
70
|
+
/**
|
|
71
|
+
* WDK Indexer blockchain path segment for token-transfers on this network.
|
|
72
|
+
* When omitted, transaction history is not fetched from the indexer for this network.
|
|
73
|
+
*/
|
|
74
|
+
indexerBlockchain?: string
|
|
64
75
|
}
|
|
65
76
|
|
|
66
77
|
/**
|
package/src/utils/schemas.ts
CHANGED
|
@@ -115,6 +115,7 @@ export const tokenConfigSchema = z.object({
|
|
|
115
115
|
name: z.string().min(1),
|
|
116
116
|
decimals: z.number().int().min(0).max(18),
|
|
117
117
|
address: z.union([tokenContractAddressSchema, z.null()]),
|
|
118
|
+
indexerToken: z.string().min(1).optional(),
|
|
118
119
|
})
|
|
119
120
|
|
|
120
121
|
/**
|
|
@@ -123,6 +124,7 @@ export const tokenConfigSchema = z.object({
|
|
|
123
124
|
export const networkTokensSchema = z.object({
|
|
124
125
|
native: tokenConfigSchema,
|
|
125
126
|
tokens: z.array(tokenConfigSchema),
|
|
127
|
+
indexerBlockchain: z.string().min(1).optional(),
|
|
126
128
|
})
|
|
127
129
|
|
|
128
130
|
/**
|