@covalenthq/client-sdk 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +171 -1
  2. package/dist/services/BalanceService.d.ts +390 -0
  3. package/dist/services/BalanceService.js +618 -0
  4. package/dist/services/BalanceService.js.map +1 -0
  5. package/dist/services/BaseService.d.ts +303 -0
  6. package/dist/services/BaseService.js +691 -0
  7. package/dist/services/BaseService.js.map +1 -0
  8. package/dist/services/Client.d.ts +22 -0
  9. package/dist/services/Client.js +26 -0
  10. package/dist/services/Client.js.map +1 -0
  11. package/dist/services/NftService.d.ts +428 -0
  12. package/dist/services/NftService.js +981 -0
  13. package/dist/services/NftService.js.map +1 -0
  14. package/dist/services/PricingService.d.ts +75 -0
  15. package/dist/services/PricingService.js +126 -0
  16. package/dist/services/PricingService.js.map +1 -0
  17. package/dist/services/SecurityService.d.ts +96 -0
  18. package/dist/services/SecurityService.js +122 -0
  19. package/dist/services/SecurityService.js.map +1 -0
  20. package/dist/services/TransactionService.d.ts +222 -0
  21. package/dist/services/TransactionService.js +433 -0
  22. package/dist/services/TransactionService.js.map +1 -0
  23. package/dist/services/XykService.d.ts +529 -0
  24. package/dist/services/XykService.js +1000 -0
  25. package/dist/services/XykService.js.map +1 -0
  26. package/dist/services/index.js.map +1 -0
  27. package/dist/util/ApiHelpers.d.ts +1 -0
  28. package/dist/util/ApiHelpers.js +15 -0
  29. package/dist/util/ApiHelpers.js.map +1 -0
  30. package/dist/util/backoff.d.ts +9 -0
  31. package/dist/util/backoff.js +25 -0
  32. package/dist/util/backoff.js.map +1 -0
  33. package/package.json +9 -1
  34. package/dist/ApprovalService.d.ts +0 -59
  35. package/dist/ApprovalService.js +0 -52
  36. package/dist/ApprovalService.js.map +0 -1
  37. package/dist/BalancesService.d.ts +0 -189
  38. package/dist/BalancesService.js +0 -231
  39. package/dist/BalancesService.js.map +0 -1
  40. package/dist/BaseService.d.ts +0 -169
  41. package/dist/BaseService.js +0 -276
  42. package/dist/BaseService.js.map +0 -1
  43. package/dist/Client.d.ts +0 -24
  44. package/dist/Client.js +0 -30
  45. package/dist/Client.js.map +0 -1
  46. package/dist/LogEventService.d.ts +0 -62
  47. package/dist/LogEventService.js +0 -75
  48. package/dist/LogEventService.js.map +0 -1
  49. package/dist/NameResolverService.d.ts +0 -33
  50. package/dist/NameResolverService.js +0 -52
  51. package/dist/NameResolverService.js.map +0 -1
  52. package/dist/NftService.d.ts +0 -271
  53. package/dist/NftService.js +0 -528
  54. package/dist/NftService.js.map +0 -1
  55. package/dist/PricingService.d.ts +0 -52
  56. package/dist/PricingService.js +0 -65
  57. package/dist/PricingService.js.map +0 -1
  58. package/dist/TransactionsService.d.ts +0 -126
  59. package/dist/TransactionsService.js +0 -230
  60. package/dist/TransactionsService.js.map +0 -1
  61. package/dist/XykService.d.ts +0 -383
  62. package/dist/XykService.js +0 -467
  63. package/dist/XykService.js.map +0 -1
  64. package/dist/index.js.map +0 -1
  65. /package/dist/{index.d.ts → services/index.d.ts} +0 -0
  66. /package/dist/{index.js → services/index.js} +0 -0
@@ -0,0 +1,618 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BalanceService = exports.Response = void 0;
4
+ const backoff_1 = require("../util/backoff");
5
+ const ApiHelpers_1 = require("../util/ApiHelpers");
6
+ class BalancesResponse {
7
+ constructor(data) {
8
+ this.address = data.address;
9
+ this.chain_id = data.chain_id;
10
+ this.chain_name = data.chain_name;
11
+ this.quote_currency = data.quote_currency;
12
+ this.updated_at = data.updated_at;
13
+ this.items = data.items && data.items !== null ? data.items.map((itemData) => new BalanceItem(itemData)) : null;
14
+ }
15
+ }
16
+ class BalanceItem {
17
+ constructor(data) {
18
+ this.contract_decimals = data.contract_decimals;
19
+ this.contract_name = data.contract_name;
20
+ this.contract_ticker_symbol = data.contract_ticker_symbol;
21
+ this.contract_address = data.contract_address;
22
+ this.supports_erc = data.supports_erc;
23
+ this.logo_url = data.logo_url;
24
+ this.last_transferred_at = data.last_transferred_at;
25
+ this.native_token = data.native_token;
26
+ this.type = data.type;
27
+ this.is_spam = data.is_spam;
28
+ this.balance = data.balance !== null ? BigInt(data.balance) : null;
29
+ this.quote_rate = data.quote_rate;
30
+ this.quote = data.quote;
31
+ this.pretty_quote = data.pretty_quote;
32
+ this.nft_data = data.nft_data && data.nft_data !== null ? data.nft_data.map((itemData) => new NftData(itemData)) : null;
33
+ }
34
+ }
35
+ class NftData {
36
+ constructor(data) {
37
+ this.token_id = data.token_id !== null ? BigInt(data.token_id) : null;
38
+ this.token_url = data.token_url;
39
+ this.original_owner = data.original_owner;
40
+ this.asset_cached = data.asset_cached;
41
+ this.image_cached = data.image_cached;
42
+ this.external_data = data.external_data && data.external_data !== null ? new NftExternalData(data.external_data) : null;
43
+ }
44
+ }
45
+ class NftExternalData {
46
+ constructor(data) {
47
+ this.name = data.name;
48
+ this.description = data.description;
49
+ this.asset_url = data.asset_url;
50
+ this.asset_file_extension = data.asset_file_extension;
51
+ this.asset_mime_type = data.asset_mime_type;
52
+ this.asset_size_bytes = data.asset_size_bytes;
53
+ this.image = data.image;
54
+ this.image_256 = data.image_256;
55
+ this.image_512 = data.image_512;
56
+ this.image_1024 = data.image_1024;
57
+ this.animation_url = data.animation_url;
58
+ this.external_url = data.external_url;
59
+ this.attributes = data.attributes && data.attributes !== null ? data.attributes.map((itemData) => new NftCollectionAttribute(itemData)) : null;
60
+ }
61
+ }
62
+ class NftCollectionAttribute {
63
+ constructor(data) {
64
+ this.trait_type = data.trait_type;
65
+ this.value = data.value;
66
+ }
67
+ }
68
+ class PortfolioResponse {
69
+ constructor(data) {
70
+ this.address = data.address;
71
+ this.updated_at = data.updated_at;
72
+ this.quote_currency = data.quote_currency;
73
+ this.chain_id = data.chain_id;
74
+ this.chain_name = data.chain_name;
75
+ this.items = data.items && data.items !== null ? data.items.map((itemData) => new PortfolioItem(itemData)) : null;
76
+ }
77
+ }
78
+ class PortfolioItem {
79
+ constructor(data) {
80
+ this.contract_address = data.contract_address;
81
+ this.contract_decimals = data.contract_decimals;
82
+ this.contract_name = data.contract_name;
83
+ this.contract_ticker_symbol = data.contract_ticker_symbol;
84
+ this.logo_url = data.logo_url;
85
+ this.holdings = data.holdings && data.holdings !== null ? data.holdings.map((itemData) => new HoldingItem(itemData)) : null;
86
+ }
87
+ }
88
+ class HoldingItem {
89
+ constructor(data) {
90
+ this.quote_rate = data.quote_rate;
91
+ this.timestamp = data.timestamp;
92
+ this.close = data.close && data.close !== null ? new OhlcItem(data.close) : null;
93
+ this.high = data.high && data.high !== null ? new OhlcItem(data.high) : null;
94
+ this.low = data.low && data.low !== null ? new OhlcItem(data.low) : null;
95
+ this.open = data.open && data.open !== null ? new OhlcItem(data.open) : null;
96
+ }
97
+ }
98
+ class OhlcItem {
99
+ constructor(data) {
100
+ this.balance = data.balance !== null ? BigInt(data.balance) : null;
101
+ this.quote = data.quote;
102
+ this.pretty_quote = data.pretty_quote;
103
+ }
104
+ }
105
+ class Erc20TransfersResponse {
106
+ constructor(data) {
107
+ this.address = data.address;
108
+ this.updated_at = data.updated_at;
109
+ this.quote_currency = data.quote_currency;
110
+ this.chain_id = data.chain_id;
111
+ this.chain_name = data.chain_name;
112
+ this.items = data.items && data.items !== null ? data.items.map((itemData) => new BlockTransactionWithContractTransfers(itemData)) : null;
113
+ this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;
114
+ }
115
+ }
116
+ class BlockTransactionWithContractTransfers {
117
+ constructor(data) {
118
+ this.block_signed_at = data.block_signed_at;
119
+ this.block_height = data.block_height;
120
+ this.tx_hash = data.tx_hash;
121
+ this.tx_offset = data.tx_offset;
122
+ this.successful = data.successful;
123
+ this.from_address = data.from_address;
124
+ this.from_address_label = data.from_address_label;
125
+ this.to_address = data.to_address;
126
+ this.to_address_label = data.to_address_label;
127
+ this.value = data.value !== null ? BigInt(data.value) : null;
128
+ this.value_quote = data.value_quote;
129
+ this.pretty_value_quote = data.pretty_value_quote;
130
+ this.gas_offered = data.gas_offered;
131
+ this.gas_spent = data.gas_spent;
132
+ this.gas_price = data.gas_price;
133
+ this.fees_paid = data.fees_paid !== null ? BigInt(data.fees_paid) : null;
134
+ this.gas_quote = data.gas_quote;
135
+ this.pretty_gas_quote = data.pretty_gas_quote;
136
+ this.gas_quote_rate = data.gas_quote_rate;
137
+ this.transfers = data.transfers && data.transfers !== null ? data.transfers.map((itemData) => new TokenTransferItem(itemData)) : null;
138
+ }
139
+ }
140
+ class Pagination {
141
+ constructor(data) {
142
+ this.has_more = data.has_more;
143
+ this.page_number = data.page_number;
144
+ this.page_size = data.page_size;
145
+ this.total_count = data.total_count;
146
+ }
147
+ }
148
+ class TokenTransferItem {
149
+ constructor(data) {
150
+ this.block_signed_at = data.block_signed_at;
151
+ this.tx_hash = data.tx_hash;
152
+ this.from_address = data.from_address;
153
+ this.from_address_label = data.from_address_label;
154
+ this.to_address = data.to_address;
155
+ this.to_address_label = data.to_address_label;
156
+ this.contract_decimals = data.contract_decimals;
157
+ this.contract_name = data.contract_name;
158
+ this.contract_ticker_symbol = data.contract_ticker_symbol;
159
+ this.contract_address = data.contract_address;
160
+ this.logo_url = data.logo_url;
161
+ this.transfer_type = data.transfer_type;
162
+ this.delta = data.delta !== null ? BigInt(data.delta) : null;
163
+ this.balance = data.balance !== null ? BigInt(data.balance) : null;
164
+ this.quote_rate = data.quote_rate;
165
+ this.delta_quote = data.delta_quote;
166
+ this.pretty_delta_quote = data.pretty_delta_quote;
167
+ this.balance_quote = data.balance_quote;
168
+ this.method_calls = data.method_calls && data.method_calls !== null ? data.method_calls.map((itemData) => new MethodCallsForTransfers(itemData)) : null;
169
+ }
170
+ }
171
+ class MethodCallsForTransfers {
172
+ constructor(data) {
173
+ this.sender_address = data.sender_address;
174
+ this.method = data.method;
175
+ }
176
+ }
177
+ class TokenHoldersResponse {
178
+ constructor(data) {
179
+ this.updated_at = data.updated_at;
180
+ this.chain_id = data.chain_id;
181
+ this.chain_name = data.chain_name;
182
+ this.items = data.items && data.items !== null ? data.items.map((itemData) => new TokenHolder(itemData)) : null;
183
+ this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;
184
+ }
185
+ }
186
+ class TokenHolder {
187
+ constructor(data) {
188
+ this.contract_decimals = data.contract_decimals;
189
+ this.contract_name = data.contract_name;
190
+ this.contract_ticker_symbol = data.contract_ticker_symbol;
191
+ this.contract_address = data.contract_address;
192
+ this.supports_erc = data.supports_erc;
193
+ this.logo_url = data.logo_url;
194
+ this.address = data.address;
195
+ this.balance = data.balance !== null ? BigInt(data.balance) : null;
196
+ this.total_supply = data.total_supply !== null ? BigInt(data.total_supply) : null;
197
+ this.block_height = data.block_height;
198
+ }
199
+ }
200
+ class HistoricalBalancesResponse {
201
+ constructor(data) {
202
+ this.address = data.address;
203
+ this.updated_at = data.updated_at;
204
+ this.quote_currency = data.quote_currency;
205
+ this.chain_id = data.chain_id;
206
+ this.chain_name = data.chain_name;
207
+ this.items = data.items && data.items !== null ? data.items.map((itemData) => new HistoricalBalanceItem(itemData)) : null;
208
+ }
209
+ }
210
+ class HistoricalBalanceItem {
211
+ constructor(data) {
212
+ this.contract_decimals = data.contract_decimals;
213
+ this.contract_name = data.contract_name;
214
+ this.contract_ticker_symbol = data.contract_ticker_symbol;
215
+ this.contract_address = data.contract_address;
216
+ this.supports_erc = data.supports_erc;
217
+ this.logo_url = data.logo_url;
218
+ this.block_height = data.block_height;
219
+ this.last_transferred_block_height = data.last_transferred_block_height;
220
+ this.last_transferred_at = data.last_transferred_at;
221
+ this.native_token = data.native_token;
222
+ this.type = data.type;
223
+ this.is_spam = data.is_spam;
224
+ this.balance = data.balance !== null ? BigInt(data.balance) : null;
225
+ this.quote_rate = data.quote_rate;
226
+ this.quote = data.quote;
227
+ this.pretty_quote = data.pretty_quote;
228
+ this.nft_data = data.nft_data && data.nft_data !== null ? data.nft_data.map((itemData) => new NftData(itemData)) : null;
229
+ }
230
+ }
231
+ /**
232
+ * Balances APIs
233
+ *
234
+ */
235
+ class Response {
236
+ }
237
+ exports.Response = Response;
238
+ class BalanceService {
239
+ constructor(apiKey) {
240
+ this.apiKey = apiKey;
241
+ }
242
+ /**
243
+ *
244
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
245
+ * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
246
+ * @param {string} quoteCurrency - The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.
247
+ * @param {boolean} nft - If `true`, NFTs will be included in the response.
248
+ * @param {boolean} noNftFetch - If `true`, only NFTs that have been cached will be included in the response. Helpful for faster response times.
249
+ * @param {boolean} noSpam - If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.
250
+ * @param {boolean} noNftAssetMetadata - If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs.
251
+ *
252
+ */
253
+ async getTokenBalancesForWalletAddress(chainName, walletAddress, quoteCurrency, nft, noNftFetch, noSpam, noNftAssetMetadata) {
254
+ let success = false;
255
+ let data;
256
+ let response;
257
+ const backoff = new backoff_1.ExponentialBackoff();
258
+ while (!success) {
259
+ try {
260
+ const urlParams = new URLSearchParams();
261
+ if (quoteCurrency !== undefined) {
262
+ urlParams.append("quote-currency", quoteCurrency.toString());
263
+ }
264
+ if (nft !== undefined) {
265
+ urlParams.append("nft", nft.toString());
266
+ }
267
+ if (noNftFetch !== undefined) {
268
+ urlParams.append("no-nft-fetch", noNftFetch.toString());
269
+ }
270
+ if (noSpam !== undefined) {
271
+ urlParams.append("no-spam", noSpam.toString());
272
+ }
273
+ if (noNftAssetMetadata !== undefined) {
274
+ urlParams.append("no-nft-asset-metadata", noNftAssetMetadata.toString());
275
+ }
276
+ response = await fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_v2/?${urlParams}`, {
277
+ headers: {
278
+ "Authorization": `Bearer ${this.apiKey}`
279
+ }
280
+ });
281
+ data = await response.json();
282
+ if (data.error && data.error_code === 429) {
283
+ try {
284
+ await backoff.backOff();
285
+ }
286
+ catch (error) {
287
+ (0, ApiHelpers_1.checkAndModifyResponse)(data);
288
+ success = true;
289
+ return {
290
+ data: null,
291
+ error: data.error,
292
+ error_code: data ? data.error_code : response.status,
293
+ error_message: data ? data.error_message : "401 Authorization Required"
294
+ };
295
+ }
296
+ }
297
+ else {
298
+ const dataClass = new BalancesResponse(data.data);
299
+ (0, ApiHelpers_1.checkAndModifyResponse)(dataClass);
300
+ success = true;
301
+ return {
302
+ data: dataClass,
303
+ error: data.error,
304
+ error_code: data ? data.error_code : response.status,
305
+ error_message: data ? data.error_message : "401 Authorization Required"
306
+ };
307
+ }
308
+ }
309
+ catch (error) {
310
+ success = true;
311
+ return {
312
+ data: null,
313
+ error: true,
314
+ error_code: data ? data.error_code : response.status,
315
+ error_message: data ? data.error_message : "401 Authorization Required"
316
+ };
317
+ }
318
+ }
319
+ }
320
+ /**
321
+ *
322
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
323
+ * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
324
+ * @param {string} quoteCurrency - The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.
325
+ * @param {number} days - The number of days to return data for. Defaults to 30 days.
326
+ *
327
+ */
328
+ async getHistoricalPortfolioForWalletAddress(chainName, walletAddress, quoteCurrency, days) {
329
+ let success = false;
330
+ let data;
331
+ let response;
332
+ const backoff = new backoff_1.ExponentialBackoff();
333
+ while (!success) {
334
+ try {
335
+ const urlParams = new URLSearchParams();
336
+ if (quoteCurrency !== undefined) {
337
+ urlParams.append("quote-currency", quoteCurrency.toString());
338
+ }
339
+ if (days !== undefined) {
340
+ urlParams.append("days", days.toString());
341
+ }
342
+ response = await fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/portfolio_v2/?${urlParams}`, {
343
+ headers: {
344
+ "Authorization": `Bearer ${this.apiKey}`
345
+ }
346
+ });
347
+ data = await response.json();
348
+ if (data.error && data.error_code === 429) {
349
+ try {
350
+ await backoff.backOff();
351
+ }
352
+ catch (error) {
353
+ (0, ApiHelpers_1.checkAndModifyResponse)(data);
354
+ success = true;
355
+ return {
356
+ data: null,
357
+ error: data.error,
358
+ error_code: data ? data.error_code : response.status,
359
+ error_message: data ? data.error_message : "401 Authorization Required"
360
+ };
361
+ }
362
+ }
363
+ else {
364
+ const dataClass = new PortfolioResponse(data.data);
365
+ (0, ApiHelpers_1.checkAndModifyResponse)(dataClass);
366
+ success = true;
367
+ return {
368
+ data: dataClass,
369
+ error: data.error,
370
+ error_code: data ? data.error_code : response.status,
371
+ error_message: data ? data.error_message : "401 Authorization Required"
372
+ };
373
+ }
374
+ }
375
+ catch (error) {
376
+ success = true;
377
+ return {
378
+ data: null,
379
+ error: true,
380
+ error_code: data ? data.error_code : response.status,
381
+ error_message: data ? data.error_message : "401 Authorization Required"
382
+ };
383
+ }
384
+ }
385
+ }
386
+ /**
387
+ *
388
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
389
+ * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
390
+ * @param {string} quoteCurrency - The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.
391
+ * @param {string} contractAddress - The requested contract address.
392
+ * @param {number} startingBlock - The block height to start from, defaults to `0`.
393
+ * @param {number} endingBlock - The block height to end at, defaults to current block height.
394
+ *
395
+ */
396
+ async getErc20TransfersForWalletAddress(chainName, walletAddress, quoteCurrency, contractAddress, startingBlock, endingBlock) {
397
+ let success = false;
398
+ let data;
399
+ let response;
400
+ const backoff = new backoff_1.ExponentialBackoff();
401
+ while (!success) {
402
+ try {
403
+ const urlParams = new URLSearchParams();
404
+ if (quoteCurrency !== undefined) {
405
+ urlParams.append("quote-currency", quoteCurrency.toString());
406
+ }
407
+ if (contractAddress !== undefined) {
408
+ urlParams.append("contract-address", contractAddress.toString());
409
+ }
410
+ if (startingBlock !== undefined) {
411
+ urlParams.append("starting-block", startingBlock.toString());
412
+ }
413
+ if (endingBlock !== undefined) {
414
+ urlParams.append("ending-block", endingBlock.toString());
415
+ }
416
+ response = await fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transfers_v2/?${urlParams}`, {
417
+ headers: {
418
+ "Authorization": `Bearer ${this.apiKey}`
419
+ }
420
+ });
421
+ data = await response.json();
422
+ if (data.error && data.error_code === 429) {
423
+ try {
424
+ await backoff.backOff();
425
+ }
426
+ catch (error) {
427
+ (0, ApiHelpers_1.checkAndModifyResponse)(data);
428
+ success = true;
429
+ return {
430
+ data: null,
431
+ error: data.error,
432
+ error_code: data ? data.error_code : response.status,
433
+ error_message: data ? data.error_message : "401 Authorization Required"
434
+ };
435
+ }
436
+ }
437
+ else {
438
+ const dataClass = new Erc20TransfersResponse(data.data);
439
+ (0, ApiHelpers_1.checkAndModifyResponse)(dataClass);
440
+ success = true;
441
+ return {
442
+ data: dataClass,
443
+ error: data.error,
444
+ error_code: data ? data.error_code : response.status,
445
+ error_message: data ? data.error_message : "401 Authorization Required"
446
+ };
447
+ }
448
+ }
449
+ catch (error) {
450
+ success = true;
451
+ return {
452
+ data: null,
453
+ error: true,
454
+ error_code: data ? data.error_code : response.status,
455
+ error_message: data ? data.error_message : "401 Authorization Required"
456
+ };
457
+ }
458
+ }
459
+ }
460
+ /**
461
+ *
462
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
463
+ * @param {string} tokenAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
464
+ * @param {number} blockHeight - Ending block to define a block range. Omitting this parameter defaults to the latest block height.
465
+ * @param {number} pageSize - Number of items per page. Note: Currently, only values of `100` and `1000` are supported. Omitting this parameter defaults to 100.
466
+ * @param {number} pageNumber - 0-indexed page number to begin pagination.
467
+ *
468
+ */
469
+ async getTokenHoldersV2ForTokenAddress(chainName, tokenAddress, blockHeight, pageSize, pageNumber) {
470
+ let success = false;
471
+ let data;
472
+ let response;
473
+ const backoff = new backoff_1.ExponentialBackoff();
474
+ while (!success) {
475
+ try {
476
+ const urlParams = new URLSearchParams();
477
+ if (blockHeight !== undefined) {
478
+ urlParams.append("block-height", blockHeight.toString());
479
+ }
480
+ if (pageSize !== undefined) {
481
+ urlParams.append("page-size", pageSize.toString());
482
+ }
483
+ if (pageNumber !== undefined) {
484
+ urlParams.append("page-number", pageNumber.toString());
485
+ }
486
+ response = await fetch(`https://api.covalenthq.com/v1/${chainName}/tokens/${tokenAddress}/token_holders_v2/?${urlParams}`, {
487
+ headers: {
488
+ "Authorization": `Bearer ${this.apiKey}`
489
+ }
490
+ });
491
+ data = await response.json();
492
+ if (data.error && data.error_code === 429) {
493
+ try {
494
+ await backoff.backOff();
495
+ }
496
+ catch (error) {
497
+ (0, ApiHelpers_1.checkAndModifyResponse)(data);
498
+ success = true;
499
+ return {
500
+ data: null,
501
+ error: data.error,
502
+ error_code: data ? data.error_code : response.status,
503
+ error_message: data ? data.error_message : "401 Authorization Required"
504
+ };
505
+ }
506
+ }
507
+ else {
508
+ const dataClass = new TokenHoldersResponse(data.data);
509
+ (0, ApiHelpers_1.checkAndModifyResponse)(dataClass);
510
+ success = true;
511
+ return {
512
+ data: dataClass,
513
+ error: data.error,
514
+ error_code: data ? data.error_code : response.status,
515
+ error_message: data ? data.error_message : "401 Authorization Required"
516
+ };
517
+ }
518
+ }
519
+ catch (error) {
520
+ success = true;
521
+ return {
522
+ data: null,
523
+ error: true,
524
+ error_code: data ? data.error_code : response.status,
525
+ error_message: data ? data.error_message : "401 Authorization Required"
526
+ };
527
+ }
528
+ }
529
+ }
530
+ /**
531
+ *
532
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
533
+ * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
534
+ * @param {string} quoteCurrency - The currency to convert. Supports `USD`, `CAD`, `EUR`, `SGD`, `INR`, `JPY`, `VND`, `CNY`, `KRW`, `RUB`, `TRY`, `NGN`, `ARS`, `AUD`, `CHF`, and `GBP`.
535
+ * @param {boolean} nft - If `true`, NFTs will be included in the response.
536
+ * @param {boolean} noNftFetch - If `true`, only NFTs that have been cached will be included in the response. Helpful for faster response times.
537
+ * @param {boolean} noSpam - If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.
538
+ * @param {boolean} noNftAssetMetadata - If `true`, the response shape is limited to a list of collections and token ids, omitting metadata and asset information. Helpful for faster response times and wallets holding a large number of NFTs.
539
+ * @param {number} blockHeight - Ending block to define a block range. Omitting this parameter defaults to the latest block height.
540
+ * @param {number} date - Ending date to define a block range (YYYY-MM-DD). Omitting this parameter defaults to the current date.
541
+ *
542
+ */
543
+ async getHistoricalTokenBalancesForWalletAddress(chainName, walletAddress, quoteCurrency, nft, noNftFetch, noSpam, noNftAssetMetadata, blockHeight, date) {
544
+ let success = false;
545
+ let data;
546
+ let response;
547
+ const backoff = new backoff_1.ExponentialBackoff();
548
+ while (!success) {
549
+ try {
550
+ const urlParams = new URLSearchParams();
551
+ if (quoteCurrency !== undefined) {
552
+ urlParams.append("quote-currency", quoteCurrency.toString());
553
+ }
554
+ if (nft !== undefined) {
555
+ urlParams.append("nft", nft.toString());
556
+ }
557
+ if (noNftFetch !== undefined) {
558
+ urlParams.append("no-nft-fetch", noNftFetch.toString());
559
+ }
560
+ if (noSpam !== undefined) {
561
+ urlParams.append("no-spam", noSpam.toString());
562
+ }
563
+ if (noNftAssetMetadata !== undefined) {
564
+ urlParams.append("no-nft-asset-metadata", noNftAssetMetadata.toString());
565
+ }
566
+ if (blockHeight !== undefined) {
567
+ urlParams.append("block-height", blockHeight.toString());
568
+ }
569
+ if (date !== undefined) {
570
+ urlParams.append("date", date.toString());
571
+ }
572
+ response = await fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/historical_balances/?${urlParams}`, {
573
+ headers: {
574
+ "Authorization": `Bearer ${this.apiKey}`
575
+ }
576
+ });
577
+ data = await response.json();
578
+ if (data.error && data.error_code === 429) {
579
+ try {
580
+ await backoff.backOff();
581
+ }
582
+ catch (error) {
583
+ (0, ApiHelpers_1.checkAndModifyResponse)(data);
584
+ success = true;
585
+ return {
586
+ data: null,
587
+ error: data.error,
588
+ error_code: data ? data.error_code : response.status,
589
+ error_message: data ? data.error_message : "401 Authorization Required"
590
+ };
591
+ }
592
+ }
593
+ else {
594
+ const dataClass = new HistoricalBalancesResponse(data.data);
595
+ (0, ApiHelpers_1.checkAndModifyResponse)(dataClass);
596
+ success = true;
597
+ return {
598
+ data: dataClass,
599
+ error: data.error,
600
+ error_code: data ? data.error_code : response.status,
601
+ error_message: data ? data.error_message : "401 Authorization Required"
602
+ };
603
+ }
604
+ }
605
+ catch (error) {
606
+ success = true;
607
+ return {
608
+ data: null,
609
+ error: true,
610
+ error_code: data ? data.error_code : response.status,
611
+ error_message: data ? data.error_message : "401 Authorization Required"
612
+ };
613
+ }
614
+ }
615
+ }
616
+ }
617
+ exports.BalanceService = BalanceService;
618
+ //# sourceMappingURL=BalanceService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BalanceService.js","sourceRoot":"","sources":["../../src/services/BalanceService.ts"],"names":[],"mappings":"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"}