@covalenthq/client-sdk 0.0.1

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.
@@ -0,0 +1,474 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.NftService = void 0;
13
+ const baseDelayMs = 1000; // Base delay in milliseconds
14
+ class NftService {
15
+ constructor(apiKey) {
16
+ this.apiKey = apiKey;
17
+ }
18
+ /**
19
+ *
20
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
21
+ * @param {number} pageSize - Number of items on a page.
22
+ * @param {number} pageNumber - 0-indexed page number to begin pagination.
23
+ * @param {boolean} noSpam - If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.
24
+ *
25
+ */
26
+ getChainCollections(chainName, pageSize, pageNumber, noSpam) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ let retryCount = 0;
29
+ let success = false;
30
+ while (!success) {
31
+ try {
32
+ const urlParams = new URLSearchParams();
33
+ if (pageSize !== undefined) {
34
+ urlParams.append("page-size", pageSize.toString());
35
+ }
36
+ if (pageNumber !== undefined) {
37
+ urlParams.append("page-number", pageNumber.toString());
38
+ }
39
+ if (noSpam !== undefined) {
40
+ urlParams.append("no-spam", noSpam.toString());
41
+ }
42
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/nft/collections/?${urlParams}`, {
43
+ headers: {
44
+ "Authorization": `Bearer ${this.apiKey}`
45
+ }
46
+ });
47
+ const data = yield response.json();
48
+ if (data.error && data.error_code === 429) {
49
+ retryCount++;
50
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
51
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
52
+ }
53
+ else {
54
+ success = true;
55
+ return data;
56
+ }
57
+ }
58
+ catch (error) {
59
+ success = true;
60
+ return error.message;
61
+ }
62
+ }
63
+ });
64
+ }
65
+ /**
66
+ *
67
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
68
+ * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
69
+ * @param {boolean} noSpam - If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.
70
+ * @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.
71
+ *
72
+ */
73
+ getNftsForAddress(chainName, walletAddress, noSpam, noNftAssetMetadata) {
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ let retryCount = 0;
76
+ let success = false;
77
+ while (!success) {
78
+ try {
79
+ const urlParams = new URLSearchParams();
80
+ if (noSpam !== undefined) {
81
+ urlParams.append("no-spam", noSpam.toString());
82
+ }
83
+ if (noNftAssetMetadata !== undefined) {
84
+ urlParams.append("no-nft-asset-metadata", noNftAssetMetadata.toString());
85
+ }
86
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_nft/?${urlParams}`, {
87
+ headers: {
88
+ "Authorization": `Bearer ${this.apiKey}`
89
+ }
90
+ });
91
+ const data = yield response.json();
92
+ if (data.error && data.error_code === 429) {
93
+ retryCount++;
94
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
95
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
96
+ }
97
+ else {
98
+ success = true;
99
+ return data;
100
+ }
101
+ }
102
+ catch (error) {
103
+ success = true;
104
+ return error.message;
105
+ }
106
+ }
107
+ });
108
+ }
109
+ /**
110
+ *
111
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
112
+ * @param {string} contractAddress - The requested NFT contract. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
113
+ * @param {boolean} noMetadata - Omit metadata.
114
+ * @param {number} pageSize - Number of items on a page.
115
+ * @param {number} pageNumber - 0-indexed page number to begin pagination.
116
+ * @param {string} traitsFilter - Filters NFTs based on a specific trait. If this filter is used, the API will return all NFTs with the specified trait. Accepts comma-separated values, is case-sensitive, and requires proper URL encoding.
117
+ * @param {string} valuesFilter - Filters NFTs based on a specific trait value. If this filter is used, the API will return all NFTs with the specified trait value. If used with "traits-filter", only NFTs matching both filters will be returned. Accepts comma-separated values, is case-sensitive, and requires proper URL encoding.
118
+ *
119
+ */
120
+ getTokenIdsForContractWithMetadata(chainName, contractAddress, noMetadata, pageSize, pageNumber, traitsFilter, valuesFilter) {
121
+ return __awaiter(this, void 0, void 0, function* () {
122
+ let retryCount = 0;
123
+ let success = false;
124
+ while (!success) {
125
+ try {
126
+ const urlParams = new URLSearchParams();
127
+ if (noMetadata !== undefined) {
128
+ urlParams.append("no-metadata", noMetadata.toString());
129
+ }
130
+ if (pageSize !== undefined) {
131
+ urlParams.append("page-size", pageSize.toString());
132
+ }
133
+ if (pageNumber !== undefined) {
134
+ urlParams.append("page-number", pageNumber.toString());
135
+ }
136
+ if (traitsFilter !== undefined) {
137
+ urlParams.append("traits-filter", traitsFilter.toString());
138
+ }
139
+ if (valuesFilter !== undefined) {
140
+ urlParams.append("values-filter", valuesFilter.toString());
141
+ }
142
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${contractAddress}/metadata/?${urlParams}`, {
143
+ headers: {
144
+ "Authorization": `Bearer ${this.apiKey}`
145
+ }
146
+ });
147
+ const data = yield response.json();
148
+ if (data.error && data.error_code === 429) {
149
+ retryCount++;
150
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
151
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
152
+ }
153
+ else {
154
+ success = true;
155
+ return data;
156
+ }
157
+ }
158
+ catch (error) {
159
+ success = true;
160
+ return error.message;
161
+ }
162
+ }
163
+ });
164
+ }
165
+ /**
166
+ *
167
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
168
+ * @param {string} contractAddress - The requested NFT contract. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
169
+ * @param {boolean} noMetadata - Omit metadata.
170
+ * @param {boolean} withUncached - By defaut, this endpoint only works on chains where we've cached the metadata. When set to `true`, the API will fetch metadata from upstream servers even if it's not cached - the downside being that the upstream streams can block or rate limit us and therefore resulting in time outs or slow response times.
171
+ * @param {string} tokenId - The requested token ID.
172
+ *
173
+ */
174
+ getNftMetadataForGivenTokenIDForContract(chainName, contractAddress, noMetadata, withUncached, tokenId) {
175
+ return __awaiter(this, void 0, void 0, function* () {
176
+ let retryCount = 0;
177
+ let success = false;
178
+ while (!success) {
179
+ try {
180
+ const urlParams = new URLSearchParams();
181
+ if (noMetadata !== undefined) {
182
+ urlParams.append("no-metadata", noMetadata.toString());
183
+ }
184
+ if (withUncached !== undefined) {
185
+ urlParams.append("with-uncached", withUncached.toString());
186
+ }
187
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${contractAddress}/metadata/${tokenId}/?${urlParams}`, {
188
+ headers: {
189
+ "Authorization": `Bearer ${this.apiKey}`
190
+ }
191
+ });
192
+ const data = yield response.json();
193
+ if (data.error && data.error_code === 429) {
194
+ retryCount++;
195
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
196
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
197
+ }
198
+ else {
199
+ success = true;
200
+ return data;
201
+ }
202
+ }
203
+ catch (error) {
204
+ success = true;
205
+ return error.message;
206
+ }
207
+ }
208
+ });
209
+ }
210
+ /**
211
+ *
212
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
213
+ * @param {string} contractAddress - The requested NFT contract address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
214
+ * @param {string} tokenId - The requested token ID.
215
+ * @param {boolean} noSpam - If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.
216
+ *
217
+ */
218
+ getNftTransactionsForContractTokenId(chainName, contractAddress, tokenId, noSpam) {
219
+ return __awaiter(this, void 0, void 0, function* () {
220
+ let retryCount = 0;
221
+ let success = false;
222
+ while (!success) {
223
+ try {
224
+ const urlParams = new URLSearchParams();
225
+ if (noSpam !== undefined) {
226
+ urlParams.append("no-spam", noSpam.toString());
227
+ }
228
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/tokens/${contractAddress}/nft_transactions/${tokenId}/?${urlParams}`, {
229
+ headers: {
230
+ "Authorization": `Bearer ${this.apiKey}`
231
+ }
232
+ });
233
+ const data = yield response.json();
234
+ if (data.error && data.error_code === 429) {
235
+ retryCount++;
236
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
237
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
238
+ }
239
+ else {
240
+ success = true;
241
+ return data;
242
+ }
243
+ }
244
+ catch (error) {
245
+ success = true;
246
+ return error.message;
247
+ }
248
+ }
249
+ });
250
+ }
251
+ /**
252
+ *
253
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
254
+ * @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
255
+ *
256
+ */
257
+ getTraitsForCollection(chainName, collectionContract) {
258
+ return __awaiter(this, void 0, void 0, function* () {
259
+ let retryCount = 0;
260
+ let success = false;
261
+ while (!success) {
262
+ try {
263
+ const urlParams = new URLSearchParams();
264
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits/?${urlParams}`, {
265
+ headers: {
266
+ "Authorization": `Bearer ${this.apiKey}`
267
+ }
268
+ });
269
+ const data = yield response.json();
270
+ if (data.error && data.error_code === 429) {
271
+ retryCount++;
272
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
273
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
274
+ }
275
+ else {
276
+ success = true;
277
+ return data;
278
+ }
279
+ }
280
+ catch (error) {
281
+ success = true;
282
+ return error.message;
283
+ }
284
+ }
285
+ });
286
+ }
287
+ /**
288
+ *
289
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
290
+ * @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
291
+ * @param {string} trait - The requested trait.
292
+ *
293
+ */
294
+ getAttributesForTraitInCollection(chainName, collectionContract, trait) {
295
+ return __awaiter(this, void 0, void 0, function* () {
296
+ let retryCount = 0;
297
+ let success = false;
298
+ while (!success) {
299
+ try {
300
+ const urlParams = new URLSearchParams();
301
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits/${trait}/attributes/?${urlParams}`, {
302
+ headers: {
303
+ "Authorization": `Bearer ${this.apiKey}`
304
+ }
305
+ });
306
+ const data = yield response.json();
307
+ if (data.error && data.error_code === 429) {
308
+ retryCount++;
309
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
310
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
311
+ }
312
+ else {
313
+ success = true;
314
+ return data;
315
+ }
316
+ }
317
+ catch (error) {
318
+ success = true;
319
+ return error.message;
320
+ }
321
+ }
322
+ });
323
+ }
324
+ /**
325
+ *
326
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
327
+ * @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
328
+ *
329
+ */
330
+ getCollectionTraitsSummary(chainName, collectionContract) {
331
+ return __awaiter(this, void 0, void 0, function* () {
332
+ let retryCount = 0;
333
+ let success = false;
334
+ while (!success) {
335
+ try {
336
+ const urlParams = new URLSearchParams();
337
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits_summary/?${urlParams}`, {
338
+ headers: {
339
+ "Authorization": `Bearer ${this.apiKey}`
340
+ }
341
+ });
342
+ const data = yield response.json();
343
+ if (data.error && data.error_code === 429) {
344
+ retryCount++;
345
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
346
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
347
+ }
348
+ else {
349
+ success = true;
350
+ return data;
351
+ }
352
+ }
353
+ catch (error) {
354
+ success = true;
355
+ return error.message;
356
+ }
357
+ }
358
+ });
359
+ }
360
+ /**
361
+ *
362
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
363
+ * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
364
+ * @param {string} collectionContract - The requested collection address.
365
+ *
366
+ */
367
+ checkOwnershipInNft(chainName, walletAddress, collectionContract) {
368
+ return __awaiter(this, void 0, void 0, function* () {
369
+ let retryCount = 0;
370
+ let success = false;
371
+ while (!success) {
372
+ try {
373
+ const urlParams = new URLSearchParams();
374
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/collection/${collectionContract}/?${urlParams}`, {
375
+ headers: {
376
+ "Authorization": `Bearer ${this.apiKey}`
377
+ }
378
+ });
379
+ const data = yield response.json();
380
+ if (data.error && data.error_code === 429) {
381
+ retryCount++;
382
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
383
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
384
+ }
385
+ else {
386
+ success = true;
387
+ return data;
388
+ }
389
+ }
390
+ catch (error) {
391
+ success = true;
392
+ return error.message;
393
+ }
394
+ }
395
+ });
396
+ }
397
+ /**
398
+ *
399
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
400
+ * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
401
+ * @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
402
+ * @param {string} tokenId - The requested token ID.
403
+ *
404
+ */
405
+ checkOwnershipInNftForSpecificTokenId(chainName, walletAddress, collectionContract, tokenId) {
406
+ return __awaiter(this, void 0, void 0, function* () {
407
+ let retryCount = 0;
408
+ let success = false;
409
+ while (!success) {
410
+ try {
411
+ const urlParams = new URLSearchParams();
412
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/collection/${collectionContract}/token/${tokenId}/?${urlParams}`, {
413
+ headers: {
414
+ "Authorization": `Bearer ${this.apiKey}`
415
+ }
416
+ });
417
+ const data = yield response.json();
418
+ if (data.error && data.error_code === 429) {
419
+ retryCount++;
420
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
421
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
422
+ }
423
+ else {
424
+ success = true;
425
+ return data;
426
+ }
427
+ }
428
+ catch (error) {
429
+ success = true;
430
+ return error.message;
431
+ }
432
+ }
433
+ });
434
+ }
435
+ /**
436
+ *
437
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
438
+ * @param {string} contractAddress - The requested NFT contract. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
439
+ * @param {string} tokenId - The requested token ID.
440
+ *
441
+ */
442
+ getNftExternalMetadataForContract(chainName, contractAddress, tokenId) {
443
+ return __awaiter(this, void 0, void 0, function* () {
444
+ let retryCount = 0;
445
+ let success = false;
446
+ while (!success) {
447
+ try {
448
+ const urlParams = new URLSearchParams();
449
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/tokens/${contractAddress}/nft_metadata/${tokenId}/?${urlParams}`, {
450
+ headers: {
451
+ "Authorization": `Bearer ${this.apiKey}`
452
+ }
453
+ });
454
+ const data = yield response.json();
455
+ if (data.error && data.error_code === 429) {
456
+ retryCount++;
457
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
458
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
459
+ }
460
+ else {
461
+ success = true;
462
+ return data;
463
+ }
464
+ }
465
+ catch (error) {
466
+ success = true;
467
+ return error.message;
468
+ }
469
+ }
470
+ });
471
+ }
472
+ }
473
+ exports.NftService = NftService;
474
+ //# sourceMappingURL=NftService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NftService.js","sourceRoot":"","sources":["../src/services/NftService.ts"],"names":[],"mappings":";;;;;;;;;;;;AA2KA,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,6BAA6B;AAEvD,MAAa,UAAU;IACnB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAClC,CAAC;IAGD;;;;;;;OAOG;IACU,mBAAmB,CAAC,SAAkjE,EAAE,QAAiB,EAAE,UAAmB,EAAE,MAAgB;;YACzoE,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,OAAO,EAAE;gBACb,IAAI;oBACA,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;oBAExC,IAAI,QAAQ,KAAK,SAAS,EAAE;wBACxB,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;qBACtD;oBAED,IAAI,UAAU,KAAK,SAAS,EAAE;wBAC1B,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC1D;oBAED,IAAI,MAAM,KAAK,SAAS,EAAE;wBACtB,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAClD;oBAGD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,SAAS,qBAAqB,SAAS,EAAE,EAAE;wBACrG,OAAO,EAAE;4BACL,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;yBAC3C;qBACJ,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;wBACvC,UAAU,EAAE,CAAC;wBACb,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC,gCAAgC;wBACvF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;qBAChE;yBAAM;wBACH,OAAO,GAAG,IAAI,CAAC;wBACf,OAAO,IAAI,CAAC;qBACf;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,KAAK,CAAC,OAAO,CAAC;iBACxB;aACJ;QACL,CAAC;KAAA;IAED;;;;;;;OAOG;IACU,iBAAiB,CAAC,SAAkjE,EAAE,aAAqB,EAAE,MAAgB,EAAE,kBAA4B;;YACppE,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,OAAO,EAAE;gBACb,IAAI;oBACA,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;oBAExC,IAAI,MAAM,KAAK,SAAS,EAAE;wBACtB,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAClD;oBAED,IAAI,kBAAkB,KAAK,SAAS,EAAE;wBAClC,SAAS,CAAC,MAAM,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC5E;oBAGD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,SAAS,YAAY,aAAa,kBAAkB,SAAS,EAAE,EAAE;wBAC3H,OAAO,EAAE;4BACL,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;yBAC3C;qBACJ,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;wBACvC,UAAU,EAAE,CAAC;wBACb,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC,gCAAgC;wBACvF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;qBAChE;yBAAM;wBACH,OAAO,GAAG,IAAI,CAAC;wBACf,OAAO,IAAI,CAAC;qBACf;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,KAAK,CAAC,OAAO,CAAC;iBACxB;aACJ;QACL,CAAC;KAAA;IAED;;;;;;;;;;OAUG;IACU,kCAAkC,CAAC,SAAkjE,EAAE,eAAuB,EAAE,UAAoB,EAAE,QAAiB,EAAE,UAAmB,EAAE,YAAqB,EAAE,YAAqB;;YACnuE,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,OAAO,EAAE;gBACb,IAAI;oBACA,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;oBAExC,IAAI,UAAU,KAAK,SAAS,EAAE;wBAC1B,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC1D;oBAED,IAAI,QAAQ,KAAK,SAAS,EAAE;wBACxB,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;qBACtD;oBAED,IAAI,UAAU,KAAK,SAAS,EAAE;wBAC1B,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC1D;oBAED,IAAI,YAAY,KAAK,SAAS,EAAE;wBAC5B,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC9D;oBAED,IAAI,YAAY,KAAK,SAAS,EAAE;wBAC5B,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC9D;oBAGD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,SAAS,QAAQ,eAAe,cAAc,SAAS,EAAE,EAAE;wBACrH,OAAO,EAAE;4BACL,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;yBAC3C;qBACJ,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;wBACvC,UAAU,EAAE,CAAC;wBACb,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC,gCAAgC;wBACvF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;qBAChE;yBAAM;wBACH,OAAO,GAAG,IAAI,CAAC;wBACf,OAAO,IAAI,CAAC;qBACf;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,KAAK,CAAC,OAAO,CAAC;iBACxB;aACJ;QACL,CAAC;KAAA;IAED;;;;;;;;OAQG;IACU,wCAAwC,CAAC,SAAkjE,EAAE,eAAuB,EAAE,UAAoB,EAAE,YAAsB,EAAE,OAAgB;;YAC7rE,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,OAAO,EAAE;gBACb,IAAI;oBACA,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;oBAExC,IAAI,UAAU,KAAK,SAAS,EAAE;wBAC1B,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC1D;oBAED,IAAI,YAAY,KAAK,SAAS,EAAE;wBAC5B,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC9D;oBAGD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,SAAS,QAAQ,eAAe,aAAa,OAAO,KAAK,SAAS,EAAE,EAAE;wBAChI,OAAO,EAAE;4BACL,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;yBAC3C;qBACJ,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;wBACvC,UAAU,EAAE,CAAC;wBACb,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC,gCAAgC;wBACvF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;qBAChE;yBAAM;wBACH,OAAO,GAAG,IAAI,CAAC;wBACf,OAAO,IAAI,CAAC;qBACf;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,KAAK,CAAC,OAAO,CAAC;iBACxB;aACJ;QACL,CAAC;KAAA;IAED;;;;;;;OAOG;IACU,oCAAoC,CAAC,SAAkjE,EAAE,eAAuB,EAAE,OAAe,EAAE,MAAgB;;YAC5pE,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,OAAO,EAAE;gBACb,IAAI;oBACA,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;oBAExC,IAAI,MAAM,KAAK,SAAS,EAAE;wBACtB,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAClD;oBAGD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,SAAS,WAAW,eAAe,qBAAqB,OAAO,KAAK,SAAS,EAAE,EAAE;wBAC3I,OAAO,EAAE;4BACL,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;yBAC3C;qBACJ,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;wBACvC,UAAU,EAAE,CAAC;wBACb,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC,gCAAgC;wBACvF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;qBAChE;yBAAM;wBACH,OAAO,GAAG,IAAI,CAAC;wBACf,OAAO,IAAI,CAAC;qBACf;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,KAAK,CAAC,OAAO,CAAC;iBACxB;aACJ;QACL,CAAC;KAAA;IAED;;;;;OAKG;IACU,sBAAsB,CAAC,SAAkjE,EAAE,kBAA0B;;YAC9mE,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,OAAO,EAAE;gBACb,IAAI;oBACA,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;oBAGxC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,SAAS,QAAQ,kBAAkB,YAAY,SAAS,EAAE,EAAE;wBACtH,OAAO,EAAE;4BACL,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;yBAC3C;qBACJ,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;wBACvC,UAAU,EAAE,CAAC;wBACb,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC,gCAAgC;wBACvF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;qBAChE;yBAAM;wBACH,OAAO,GAAG,IAAI,CAAC;wBACf,OAAO,IAAI,CAAC;qBACf;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,KAAK,CAAC,OAAO,CAAC;iBACxB;aACJ;QACL,CAAC;KAAA;IAED;;;;;;OAMG;IACU,iCAAiC,CAAC,SAAkjE,EAAE,kBAA0B,EAAE,KAAa;;YACxoE,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,OAAO,EAAE;gBACb,IAAI;oBACA,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;oBAGxC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,SAAS,QAAQ,kBAAkB,WAAW,KAAK,gBAAgB,SAAS,EAAE,EAAE;wBAC1I,OAAO,EAAE;4BACL,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;yBAC3C;qBACJ,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;wBACvC,UAAU,EAAE,CAAC;wBACb,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC,gCAAgC;wBACvF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;qBAChE;yBAAM;wBACH,OAAO,GAAG,IAAI,CAAC;wBACf,OAAO,IAAI,CAAC;qBACf;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,KAAK,CAAC,OAAO,CAAC;iBACxB;aACJ;QACL,CAAC;KAAA;IAED;;;;;OAKG;IACU,0BAA0B,CAAC,SAAkjE,EAAE,kBAA0B;;YAClnE,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,OAAO,EAAE;gBACb,IAAI;oBACA,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;oBAGxC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,SAAS,QAAQ,kBAAkB,oBAAoB,SAAS,EAAE,EAAE;wBAC9H,OAAO,EAAE;4BACL,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;yBAC3C;qBACJ,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;wBACvC,UAAU,EAAE,CAAC;wBACb,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC,gCAAgC;wBACvF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;qBAChE;yBAAM;wBACH,OAAO,GAAG,IAAI,CAAC;wBACf,OAAO,IAAI,CAAC;qBACf;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,KAAK,CAAC,OAAO,CAAC;iBACxB;aACJ;QACL,CAAC;KAAA;IAED;;;;;;OAMG;IACU,mBAAmB,CAAC,SAAkjE,EAAE,aAAqB,EAAE,kBAA0B;;YACloE,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,OAAO,EAAE;gBACb,IAAI;oBACA,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;oBAGxC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,SAAS,YAAY,aAAa,eAAe,kBAAkB,KAAK,SAAS,EAAE,EAAE;wBAC/I,OAAO,EAAE;4BACL,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;yBAC3C;qBACJ,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;wBACvC,UAAU,EAAE,CAAC;wBACb,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC,gCAAgC;wBACvF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;qBAChE;yBAAM;wBACH,OAAO,GAAG,IAAI,CAAC;wBACf,OAAO,IAAI,CAAC;qBACf;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,KAAK,CAAC,OAAO,CAAC;iBACxB;aACJ;QACL,CAAC;KAAA;IAED;;;;;;;OAOG;IACU,qCAAqC,CAAC,SAAkjE,EAAE,aAAqB,EAAE,kBAA0B,EAAE,OAAe;;YACrqE,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,OAAO,EAAE;gBACb,IAAI;oBACA,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;oBAGxC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,SAAS,YAAY,aAAa,eAAe,kBAAkB,UAAU,OAAO,KAAK,SAAS,EAAE,EAAE;wBAChK,OAAO,EAAE;4BACL,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;yBAC3C;qBACJ,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;wBACvC,UAAU,EAAE,CAAC;wBACb,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC,gCAAgC;wBACvF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;qBAChE;yBAAM;wBACH,OAAO,GAAG,IAAI,CAAC;wBACf,OAAO,IAAI,CAAC;qBACf;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,KAAK,CAAC,OAAO,CAAC;iBACxB;aACJ;QACL,CAAC;KAAA;IAED;;;;;;OAMG;IACU,iCAAiC,CAAC,SAAkjE,EAAE,eAAuB,EAAE,OAAe;;YACvoE,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,OAAO,EAAE;gBACb,IAAI;oBACA,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;oBAGxC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,SAAS,WAAW,eAAe,iBAAiB,OAAO,KAAK,SAAS,EAAE,EAAE;wBACvI,OAAO,EAAE;4BACL,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;yBAC3C;qBACJ,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;wBACvC,UAAU,EAAE,CAAC;wBACb,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC,gCAAgC;wBACvF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;qBAChE;yBAAM;wBACH,OAAO,GAAG,IAAI,CAAC;wBACf,OAAO,IAAI,CAAC;qBACf;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,KAAK,CAAC,OAAO,CAAC;iBACxB;aACJ;QACL,CAAC;KAAA;CAGJ;AA9cD,gCA8cC"}
@@ -0,0 +1,52 @@
1
+ interface TokenPricesResponse {
2
+ contract_decimals: number;
3
+ contract_name: string;
4
+ contract_ticker_symbol: string;
5
+ contract_address: string;
6
+ supports_erc: string;
7
+ logo_url: string;
8
+ update_at: string;
9
+ quote_currency: string;
10
+ prices: Price[];
11
+ items: Price[];
12
+ }
13
+ interface Price {
14
+ contract_metadata: ContractMetadata;
15
+ date: string;
16
+ price: number;
17
+ pretty_price: string;
18
+ }
19
+ interface ContractMetadata {
20
+ contract_decimals: number;
21
+ contract_name: string;
22
+ contract_ticker_symbol: string;
23
+ contract_address: string;
24
+ supports_erc: string;
25
+ logo_url: string;
26
+ }
27
+ /**
28
+ * Pricing APIs
29
+ *
30
+ */
31
+ export interface Response<T> {
32
+ data: T;
33
+ error: boolean;
34
+ error_code: number;
35
+ error_message: string;
36
+ }
37
+ export declare class PricingService {
38
+ private apiKey;
39
+ constructor(apiKey: string);
40
+ /**
41
+ *
42
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
43
+ * @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`.
44
+ * @param {string} contractAddress - Contract address for the token. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
45
+ * @param {string} from - The start day of the historical price range (YYYY-MM-DD).
46
+ * @param {string} to - The end day of the historical price range (YYYY-MM-DD).
47
+ * @param {boolean} pricesAtAsc - Sort the prices in chronological ascending order. By default, it's set to `false` and returns prices in chronological descending order.
48
+ *
49
+ */
50
+ getTokenPrices(chainName: "btc-mainnet" | "eth-mainnet" | "matic-mainnet" | "bsc-mainnet" | "avalanche-mainnet" | "fantom-mainnet" | "moonbeam-mainnet" | "moonbeam-moonriver" | "rsk-mainnet" | "arbitrum-mainnet" | "palm-mainnet" | "klaytn-mainnet" | "heco-mainnet" | "nervos-godwoken-mainnet" | "axie-mainnet" | "evmos-mainnet" | "astar-mainnet" | "iotex-mainnet" | "harmony-mainnet" | "cronos-mainnet" | "aurora-mainnet" | "emerald-paratime-mainnet" | "boba-mainnet" | "eth-goerli" | "matic-mumbai" | "avalanche-testnet" | "bsc-testnet" | "moonbeam-moonbase-alpha" | "rsk-testnet" | "arbitrum-goerli" | "fantom-testnet" | "palm-testnet" | "heco-testnet" | "nervos-godwoken-testnet" | "evmos-testnet" | "astar-shiden" | "iotex-testnet" | "harmony-testnet" | "aurora-testnet" | "scroll-l2-testnet" | "scroll-l1-testnet" | "covalent-internal-network-v1" | "defi-kingdoms-mainnet" | "swimmer-mainnet" | "boba-avalanche-mainnet" | "boba-bobabeam-mainnet" | "boba-bnb-mainnet" | "boba-rinkeby-testnet" | "boba-bobabase-testnet" | "boba-bnb-testnet" | "boba-avalanche-testnet" | "klaytn-testnet" | "gather-mainnet" | "gather-testnet" | "optimism-mainnet" | "skale-calypso" | "skale-mainnet" | "skale-razor" | "avalanche-dexalot-mainnet" | "skale-omnus" | "avalanche-dexalot-testnet" | "astar-shibuya" | "cronos-testnet" | "defi-kingdoms-testnet" | "metis-mainnet" | "metis-testnet" | "milkomeda-a1-mainnet" | "milkomeda-a1-devnet" | "milkomeda-c1-mainnet" | "milkomeda-c1-devnet" | "swimmer-testnet" | "solana-mainnet" | "skale-europa" | "meter-mainnet" | "meter-testnet" | "skale-exorde" | "boba-goerli" | "neon-testnet" | "skale-staging-uum" | "skale-staging-lcc" | "arbitrum-nova-mainnet" | "canto-mainnet" | "bittorrent-mainnet" | "bittorrent-testnet" | "flarenetworks-flare-mainnet" | "flarenetworks-flare-testnet" | "flarenetworks-canary-mainnet" | "flarenetworks-canary-testnet" | "kcc-mainnet" | "kcc-testnet" | "polygon-zkevm-testnet" | "linea-testnet" | "base-testnet" | "mantle-testnet" | "scroll-alpha-testnet" | "oasys-mainnet" | "oasys-testnet" | "findora-mainnet" | "findora-forge-testnet" | "sx-mainnet", quoteCurrency: "USD" | "CAD" | "EUR" | "SGD" | "INR" | "JPY" | "VND" | "CNY" | "KRW" | "RUB" | "TRY" | "NGN" | "ARS" | "AUD" | "CHF" | "GBP", contractAddress: string, from?: string, to?: string, pricesAtAsc?: boolean): Promise<Response<TokenPricesResponse>>;
51
+ }
52
+ export {};
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PricingService = void 0;
13
+ const baseDelayMs = 1000; // Base delay in milliseconds
14
+ class PricingService {
15
+ constructor(apiKey) {
16
+ this.apiKey = apiKey;
17
+ }
18
+ /**
19
+ *
20
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
21
+ * @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`.
22
+ * @param {string} contractAddress - Contract address for the token. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
23
+ * @param {string} from - The start day of the historical price range (YYYY-MM-DD).
24
+ * @param {string} to - The end day of the historical price range (YYYY-MM-DD).
25
+ * @param {boolean} pricesAtAsc - Sort the prices in chronological ascending order. By default, it's set to `false` and returns prices in chronological descending order.
26
+ *
27
+ */
28
+ getTokenPrices(chainName, quoteCurrency, contractAddress, from, to, pricesAtAsc) {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ let retryCount = 0;
31
+ let success = false;
32
+ while (!success) {
33
+ try {
34
+ const urlParams = new URLSearchParams();
35
+ if (from !== undefined) {
36
+ urlParams.append("from", from.toString());
37
+ }
38
+ if (to !== undefined) {
39
+ urlParams.append("to", to.toString());
40
+ }
41
+ if (pricesAtAsc !== undefined) {
42
+ urlParams.append("prices-at-asc", pricesAtAsc.toString());
43
+ }
44
+ const response = yield fetch(`https://api.covalenthq.com/v1/pricing/historical_by_addresses_v2/${chainName}/${quoteCurrency}/${contractAddress}/?${urlParams}`, {
45
+ headers: {
46
+ "Authorization": `Bearer ${this.apiKey}`
47
+ }
48
+ });
49
+ const data = yield response.json();
50
+ if (data.error && data.error_code === 429) {
51
+ retryCount++;
52
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
53
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
54
+ }
55
+ else {
56
+ success = true;
57
+ return data;
58
+ }
59
+ }
60
+ catch (error) {
61
+ success = true;
62
+ return error.message;
63
+ }
64
+ }
65
+ });
66
+ }
67
+ }
68
+ exports.PricingService = PricingService;
69
+ //# sourceMappingURL=PricingService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PricingService.js","sourceRoot":"","sources":["../src/services/PricingService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAuCA,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,6BAA6B;AAEvD,MAAa,cAAc;IACvB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAClC,CAAC;IAGD;;;;;;;;;OASG;IACU,cAAc,CAAC,SAAkjE,EAAE,aAA4I,EAAE,eAAuB,EAAE,IAAa,EAAE,EAAW,EAAE,WAAqB;;YACpyE,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,OAAO,EAAE;gBACb,IAAI;oBACA,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;oBAExC,IAAI,IAAI,KAAK,SAAS,EAAE;wBACpB,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC7C;oBAED,IAAI,EAAE,KAAK,SAAS,EAAE;wBAClB,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;qBACzC;oBAED,IAAI,WAAW,KAAK,SAAS,EAAE;wBAC3B,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC7D;oBAGD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oEAAoE,SAAS,IAAI,aAAa,IAAI,eAAe,KAAK,SAAS,EAAE,EAAE;wBAC5J,OAAO,EAAE;4BACL,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;yBAC3C;qBACJ,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;wBACvC,UAAU,EAAE,CAAC;wBACb,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC,gCAAgC;wBACvF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;qBAChE;yBAAM;wBACH,OAAO,GAAG,IAAI,CAAC;wBACf,OAAO,IAAI,CAAC;qBACf;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,KAAK,CAAC,OAAO,CAAC;iBACxB;aACJ;QACL,CAAC;KAAA;CAGJ;AAzDD,wCAyDC"}