@covalenthq/client-sdk 0.1.2 → 0.1.4
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 +44 -31
- package/dist/services/BalanceService.d.ts +390 -0
- package/dist/services/BalanceService.js +618 -0
- package/dist/services/BalanceService.js.map +1 -0
- package/dist/services/BaseService.d.ts +303 -0
- package/dist/services/BaseService.js +691 -0
- package/dist/services/BaseService.js.map +1 -0
- package/dist/services/Client.d.ts +22 -0
- package/dist/services/Client.js +26 -0
- package/dist/services/Client.js.map +1 -0
- package/dist/services/NftService.d.ts +428 -0
- package/dist/services/NftService.js +981 -0
- package/dist/services/NftService.js.map +1 -0
- package/dist/services/PricingService.d.ts +75 -0
- package/dist/services/PricingService.js +126 -0
- package/dist/services/PricingService.js.map +1 -0
- package/dist/services/SecurityService.d.ts +96 -0
- package/dist/services/SecurityService.js +122 -0
- package/dist/services/SecurityService.js.map +1 -0
- package/dist/services/TransactionService.d.ts +222 -0
- package/dist/services/TransactionService.js +433 -0
- package/dist/services/TransactionService.js.map +1 -0
- package/dist/services/XykService.d.ts +529 -0
- package/dist/services/XykService.js +1000 -0
- package/dist/services/XykService.js.map +1 -0
- package/dist/services/index.js.map +1 -0
- package/dist/util/ApiHelpers.d.ts +1 -0
- package/dist/util/ApiHelpers.js +15 -0
- package/dist/util/ApiHelpers.js.map +1 -0
- package/dist/util/backoff.d.ts +9 -0
- package/dist/util/backoff.js +25 -0
- package/dist/util/backoff.js.map +1 -0
- package/package.json +11 -3
- package/dist/ApprovalService.d.ts +0 -59
- package/dist/ApprovalService.js +0 -52
- package/dist/ApprovalService.js.map +0 -1
- package/dist/BalancesService.d.ts +0 -189
- package/dist/BalancesService.js +0 -231
- package/dist/BalancesService.js.map +0 -1
- package/dist/BaseService.d.ts +0 -169
- package/dist/BaseService.js +0 -276
- package/dist/BaseService.js.map +0 -1
- package/dist/Client.d.ts +0 -24
- package/dist/Client.js +0 -30
- package/dist/Client.js.map +0 -1
- package/dist/LogEventService.d.ts +0 -62
- package/dist/LogEventService.js +0 -75
- package/dist/LogEventService.js.map +0 -1
- package/dist/NameResolverService.d.ts +0 -33
- package/dist/NameResolverService.js +0 -52
- package/dist/NameResolverService.js.map +0 -1
- package/dist/NftService.d.ts +0 -271
- package/dist/NftService.js +0 -528
- package/dist/NftService.js.map +0 -1
- package/dist/PricingService.d.ts +0 -52
- package/dist/PricingService.js +0 -65
- package/dist/PricingService.js.map +0 -1
- package/dist/TransactionsService.d.ts +0 -126
- package/dist/TransactionsService.js +0 -230
- package/dist/TransactionsService.js.map +0 -1
- package/dist/XykService.d.ts +0 -383
- package/dist/XykService.js +0 -467
- package/dist/XykService.js.map +0 -1
- package/dist/index.js.map +0 -1
- /package/dist/{index.d.ts → services/index.d.ts} +0 -0
- /package/dist/{index.js → services/index.js} +0 -0
package/dist/NftService.js
DELETED
|
@@ -1,528 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NftService = void 0;
|
|
4
|
-
const baseDelayMs = 1000; // Base delay in milliseconds
|
|
5
|
-
class NftService {
|
|
6
|
-
constructor(apiKey) {
|
|
7
|
-
this.apiKey = apiKey;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
12
|
-
* @param {number} pageSize - Number of items on a page.
|
|
13
|
-
* @param {number} pageNumber - 0-indexed page number to begin pagination.
|
|
14
|
-
* @param {boolean} noSpam - If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.
|
|
15
|
-
*
|
|
16
|
-
*/
|
|
17
|
-
async getChainCollections(chainName, pageSize, pageNumber, noSpam) {
|
|
18
|
-
let retryCount = 1;
|
|
19
|
-
let success = false;
|
|
20
|
-
const maxRetries = 5;
|
|
21
|
-
while (!success) {
|
|
22
|
-
try {
|
|
23
|
-
const urlParams = new URLSearchParams();
|
|
24
|
-
if (pageSize !== undefined) {
|
|
25
|
-
urlParams.append("page-size", pageSize.toString());
|
|
26
|
-
}
|
|
27
|
-
if (pageNumber !== undefined) {
|
|
28
|
-
urlParams.append("page-number", pageNumber.toString());
|
|
29
|
-
}
|
|
30
|
-
if (noSpam !== undefined) {
|
|
31
|
-
urlParams.append("no-spam", noSpam.toString());
|
|
32
|
-
}
|
|
33
|
-
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/nft/collections/?${urlParams}`, {
|
|
34
|
-
headers: {
|
|
35
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
const data = await response.json();
|
|
39
|
-
if (data.error && data.error_code === 429) {
|
|
40
|
-
if (retryCount < maxRetries) {
|
|
41
|
-
retryCount++;
|
|
42
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
43
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
success = true;
|
|
47
|
-
return data;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
success = true;
|
|
52
|
-
return data;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
success = true;
|
|
57
|
-
return error.message;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
*
|
|
63
|
-
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
64
|
-
* @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
65
|
-
* @param {boolean} noSpam - If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.
|
|
66
|
-
* @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.
|
|
67
|
-
* @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.
|
|
68
|
-
*
|
|
69
|
-
*/
|
|
70
|
-
async getNftsForAddress(chainName, walletAddress, noSpam, noNftAssetMetadata, withUncached) {
|
|
71
|
-
let retryCount = 1;
|
|
72
|
-
let success = false;
|
|
73
|
-
const maxRetries = 5;
|
|
74
|
-
while (!success) {
|
|
75
|
-
try {
|
|
76
|
-
const urlParams = new URLSearchParams();
|
|
77
|
-
if (noSpam !== undefined) {
|
|
78
|
-
urlParams.append("no-spam", noSpam.toString());
|
|
79
|
-
}
|
|
80
|
-
if (noNftAssetMetadata !== undefined) {
|
|
81
|
-
urlParams.append("no-nft-asset-metadata", noNftAssetMetadata.toString());
|
|
82
|
-
}
|
|
83
|
-
if (withUncached !== undefined) {
|
|
84
|
-
urlParams.append("with-uncached", withUncached.toString());
|
|
85
|
-
}
|
|
86
|
-
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/balances_nft/?${urlParams}`, {
|
|
87
|
-
headers: {
|
|
88
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
const data = await response.json();
|
|
92
|
-
if (data.error && data.error_code === 429) {
|
|
93
|
-
if (retryCount < maxRetries) {
|
|
94
|
-
retryCount++;
|
|
95
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
96
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
success = true;
|
|
100
|
-
return data;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
success = true;
|
|
105
|
-
return data;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
success = true;
|
|
110
|
-
return error.message;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
*
|
|
116
|
-
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
117
|
-
* @param {string} contractAddress - The requested NFT contract. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
118
|
-
* @param {boolean} noMetadata - Omit metadata.
|
|
119
|
-
* @param {number} pageSize - Number of items on a page.
|
|
120
|
-
* @param {number} pageNumber - 0-indexed page number to begin pagination.
|
|
121
|
-
* @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.
|
|
122
|
-
* @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.
|
|
123
|
-
* @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. The `traits-filter` and `values-filter` are also disabled.
|
|
124
|
-
*
|
|
125
|
-
*/
|
|
126
|
-
async getTokenIdsForContractWithMetadata(chainName, contractAddress, noMetadata, pageSize, pageNumber, traitsFilter, valuesFilter, withUncached) {
|
|
127
|
-
let retryCount = 1;
|
|
128
|
-
let success = false;
|
|
129
|
-
const maxRetries = 5;
|
|
130
|
-
while (!success) {
|
|
131
|
-
try {
|
|
132
|
-
const urlParams = new URLSearchParams();
|
|
133
|
-
if (noMetadata !== undefined) {
|
|
134
|
-
urlParams.append("no-metadata", noMetadata.toString());
|
|
135
|
-
}
|
|
136
|
-
if (pageSize !== undefined) {
|
|
137
|
-
urlParams.append("page-size", pageSize.toString());
|
|
138
|
-
}
|
|
139
|
-
if (pageNumber !== undefined) {
|
|
140
|
-
urlParams.append("page-number", pageNumber.toString());
|
|
141
|
-
}
|
|
142
|
-
if (traitsFilter !== undefined) {
|
|
143
|
-
urlParams.append("traits-filter", traitsFilter.toString());
|
|
144
|
-
}
|
|
145
|
-
if (valuesFilter !== undefined) {
|
|
146
|
-
urlParams.append("values-filter", valuesFilter.toString());
|
|
147
|
-
}
|
|
148
|
-
if (withUncached !== undefined) {
|
|
149
|
-
urlParams.append("with-uncached", withUncached.toString());
|
|
150
|
-
}
|
|
151
|
-
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${contractAddress}/metadata/?${urlParams}`, {
|
|
152
|
-
headers: {
|
|
153
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
const data = await response.json();
|
|
157
|
-
if (data.error && data.error_code === 429) {
|
|
158
|
-
if (retryCount < maxRetries) {
|
|
159
|
-
retryCount++;
|
|
160
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
161
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
success = true;
|
|
165
|
-
return data;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
success = true;
|
|
170
|
-
return data;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
catch (error) {
|
|
174
|
-
success = true;
|
|
175
|
-
return error.message;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
*
|
|
181
|
-
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
182
|
-
* @param {string} contractAddress - The requested NFT contract. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
183
|
-
* @param {boolean} noMetadata - Omit metadata.
|
|
184
|
-
* @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.
|
|
185
|
-
* @param {string} tokenId - The requested token ID.
|
|
186
|
-
*
|
|
187
|
-
*/
|
|
188
|
-
async getNftMetadataForGivenTokenIDForContract(chainName, contractAddress, tokenId, noMetadata, withUncached) {
|
|
189
|
-
let retryCount = 1;
|
|
190
|
-
let success = false;
|
|
191
|
-
const maxRetries = 5;
|
|
192
|
-
while (!success) {
|
|
193
|
-
try {
|
|
194
|
-
const urlParams = new URLSearchParams();
|
|
195
|
-
if (noMetadata !== undefined) {
|
|
196
|
-
urlParams.append("no-metadata", noMetadata.toString());
|
|
197
|
-
}
|
|
198
|
-
if (withUncached !== undefined) {
|
|
199
|
-
urlParams.append("with-uncached", withUncached.toString());
|
|
200
|
-
}
|
|
201
|
-
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${contractAddress}/metadata/${tokenId}/?${urlParams}`, {
|
|
202
|
-
headers: {
|
|
203
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
const data = await response.json();
|
|
207
|
-
if (data.error && data.error_code === 429) {
|
|
208
|
-
if (retryCount < maxRetries) {
|
|
209
|
-
retryCount++;
|
|
210
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
211
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
success = true;
|
|
215
|
-
return data;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
success = true;
|
|
220
|
-
return data;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
catch (error) {
|
|
224
|
-
success = true;
|
|
225
|
-
return error.message;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
*
|
|
231
|
-
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
232
|
-
* @param {string} contractAddress - The requested NFT contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
233
|
-
* @param {string} tokenId - The requested token ID.
|
|
234
|
-
* @param {boolean} noSpam - If `true`, the suspected spam tokens are removed. Supports `eth-mainnet` and `matic-mainnet`.
|
|
235
|
-
*
|
|
236
|
-
*/
|
|
237
|
-
async getNftTransactionsForContractTokenId(chainName, contractAddress, tokenId, noSpam) {
|
|
238
|
-
let retryCount = 1;
|
|
239
|
-
let success = false;
|
|
240
|
-
const maxRetries = 5;
|
|
241
|
-
while (!success) {
|
|
242
|
-
try {
|
|
243
|
-
const urlParams = new URLSearchParams();
|
|
244
|
-
if (noSpam !== undefined) {
|
|
245
|
-
urlParams.append("no-spam", noSpam.toString());
|
|
246
|
-
}
|
|
247
|
-
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/tokens/${contractAddress}/nft_transactions/${tokenId}/?${urlParams}`, {
|
|
248
|
-
headers: {
|
|
249
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
const data = await response.json();
|
|
253
|
-
if (data.error && data.error_code === 429) {
|
|
254
|
-
if (retryCount < maxRetries) {
|
|
255
|
-
retryCount++;
|
|
256
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
257
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
258
|
-
}
|
|
259
|
-
else {
|
|
260
|
-
success = true;
|
|
261
|
-
return data;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
else {
|
|
265
|
-
success = true;
|
|
266
|
-
return data;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
catch (error) {
|
|
270
|
-
success = true;
|
|
271
|
-
return error.message;
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
*
|
|
277
|
-
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
278
|
-
* @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
279
|
-
*
|
|
280
|
-
*/
|
|
281
|
-
async getTraitsForCollection(chainName, collectionContract) {
|
|
282
|
-
let retryCount = 1;
|
|
283
|
-
let success = false;
|
|
284
|
-
const maxRetries = 5;
|
|
285
|
-
while (!success) {
|
|
286
|
-
try {
|
|
287
|
-
const urlParams = new URLSearchParams();
|
|
288
|
-
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits/?${urlParams}`, {
|
|
289
|
-
headers: {
|
|
290
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
291
|
-
}
|
|
292
|
-
});
|
|
293
|
-
const data = await response.json();
|
|
294
|
-
if (data.error && data.error_code === 429) {
|
|
295
|
-
if (retryCount < maxRetries) {
|
|
296
|
-
retryCount++;
|
|
297
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
298
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
success = true;
|
|
302
|
-
return data;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
else {
|
|
306
|
-
success = true;
|
|
307
|
-
return data;
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
catch (error) {
|
|
311
|
-
success = true;
|
|
312
|
-
return error.message;
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
/**
|
|
317
|
-
*
|
|
318
|
-
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
319
|
-
* @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
320
|
-
* @param {string} trait - The requested trait.
|
|
321
|
-
*
|
|
322
|
-
*/
|
|
323
|
-
async getAttributesForTraitInCollection(chainName, collectionContract, trait) {
|
|
324
|
-
let retryCount = 1;
|
|
325
|
-
let success = false;
|
|
326
|
-
const maxRetries = 5;
|
|
327
|
-
while (!success) {
|
|
328
|
-
try {
|
|
329
|
-
const urlParams = new URLSearchParams();
|
|
330
|
-
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits/${trait}/attributes/?${urlParams}`, {
|
|
331
|
-
headers: {
|
|
332
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
333
|
-
}
|
|
334
|
-
});
|
|
335
|
-
const data = await response.json();
|
|
336
|
-
if (data.error && data.error_code === 429) {
|
|
337
|
-
if (retryCount < maxRetries) {
|
|
338
|
-
retryCount++;
|
|
339
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
340
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
341
|
-
}
|
|
342
|
-
else {
|
|
343
|
-
success = true;
|
|
344
|
-
return data;
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
else {
|
|
348
|
-
success = true;
|
|
349
|
-
return data;
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
catch (error) {
|
|
353
|
-
success = true;
|
|
354
|
-
return error.message;
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
/**
|
|
359
|
-
*
|
|
360
|
-
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
361
|
-
* @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
362
|
-
*
|
|
363
|
-
*/
|
|
364
|
-
async getCollectionTraitsSummary(chainName, collectionContract) {
|
|
365
|
-
let retryCount = 1;
|
|
366
|
-
let success = false;
|
|
367
|
-
const maxRetries = 5;
|
|
368
|
-
while (!success) {
|
|
369
|
-
try {
|
|
370
|
-
const urlParams = new URLSearchParams();
|
|
371
|
-
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/nft/${collectionContract}/traits_summary/?${urlParams}`, {
|
|
372
|
-
headers: {
|
|
373
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
374
|
-
}
|
|
375
|
-
});
|
|
376
|
-
const data = await response.json();
|
|
377
|
-
if (data.error && data.error_code === 429) {
|
|
378
|
-
if (retryCount < maxRetries) {
|
|
379
|
-
retryCount++;
|
|
380
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
381
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
382
|
-
}
|
|
383
|
-
else {
|
|
384
|
-
success = true;
|
|
385
|
-
return data;
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
else {
|
|
389
|
-
success = true;
|
|
390
|
-
return data;
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
catch (error) {
|
|
394
|
-
success = true;
|
|
395
|
-
return error.message;
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
/**
|
|
400
|
-
*
|
|
401
|
-
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
402
|
-
* @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
403
|
-
* @param {string} collectionContract - The requested collection address.
|
|
404
|
-
*
|
|
405
|
-
*/
|
|
406
|
-
async checkOwnershipInNft(chainName, walletAddress, collectionContract) {
|
|
407
|
-
let retryCount = 1;
|
|
408
|
-
let success = false;
|
|
409
|
-
const maxRetries = 5;
|
|
410
|
-
while (!success) {
|
|
411
|
-
try {
|
|
412
|
-
const urlParams = new URLSearchParams();
|
|
413
|
-
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/collection/${collectionContract}/?${urlParams}`, {
|
|
414
|
-
headers: {
|
|
415
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
416
|
-
}
|
|
417
|
-
});
|
|
418
|
-
const data = await response.json();
|
|
419
|
-
if (data.error && data.error_code === 429) {
|
|
420
|
-
if (retryCount < maxRetries) {
|
|
421
|
-
retryCount++;
|
|
422
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
423
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
424
|
-
}
|
|
425
|
-
else {
|
|
426
|
-
success = true;
|
|
427
|
-
return data;
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
else {
|
|
431
|
-
success = true;
|
|
432
|
-
return data;
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
catch (error) {
|
|
436
|
-
success = true;
|
|
437
|
-
return error.message;
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
/**
|
|
442
|
-
*
|
|
443
|
-
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
444
|
-
* @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
445
|
-
* @param {string} collectionContract - The requested collection address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
446
|
-
* @param {string} tokenId - The requested token ID.
|
|
447
|
-
*
|
|
448
|
-
*/
|
|
449
|
-
async checkOwnershipInNftForSpecificTokenId(chainName, walletAddress, collectionContract, tokenId) {
|
|
450
|
-
let retryCount = 1;
|
|
451
|
-
let success = false;
|
|
452
|
-
const maxRetries = 5;
|
|
453
|
-
while (!success) {
|
|
454
|
-
try {
|
|
455
|
-
const urlParams = new URLSearchParams();
|
|
456
|
-
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/collection/${collectionContract}/token/${tokenId}/?${urlParams}`, {
|
|
457
|
-
headers: {
|
|
458
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
459
|
-
}
|
|
460
|
-
});
|
|
461
|
-
const data = await response.json();
|
|
462
|
-
if (data.error && data.error_code === 429) {
|
|
463
|
-
if (retryCount < maxRetries) {
|
|
464
|
-
retryCount++;
|
|
465
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
466
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
467
|
-
}
|
|
468
|
-
else {
|
|
469
|
-
success = true;
|
|
470
|
-
return data;
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
else {
|
|
474
|
-
success = true;
|
|
475
|
-
return data;
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
catch (error) {
|
|
479
|
-
success = true;
|
|
480
|
-
return error.message;
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
/**
|
|
485
|
-
*
|
|
486
|
-
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
487
|
-
* @param {string} contractAddress - The requested NFT contract. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
488
|
-
* @param {string} tokenId - The requested token ID.
|
|
489
|
-
*
|
|
490
|
-
*/
|
|
491
|
-
async getNftExternalMetadataForContract(chainName, contractAddress, tokenId) {
|
|
492
|
-
let retryCount = 1;
|
|
493
|
-
let success = false;
|
|
494
|
-
const maxRetries = 5;
|
|
495
|
-
while (!success) {
|
|
496
|
-
try {
|
|
497
|
-
const urlParams = new URLSearchParams();
|
|
498
|
-
const response = await fetch(`https://api.covalenthq.com/v1/${chainName}/tokens/${contractAddress}/nft_metadata/${tokenId}/?${urlParams}`, {
|
|
499
|
-
headers: {
|
|
500
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
501
|
-
}
|
|
502
|
-
});
|
|
503
|
-
const data = await response.json();
|
|
504
|
-
if (data.error && data.error_code === 429) {
|
|
505
|
-
if (retryCount < maxRetries) {
|
|
506
|
-
retryCount++;
|
|
507
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
508
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
509
|
-
}
|
|
510
|
-
else {
|
|
511
|
-
success = true;
|
|
512
|
-
return data;
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
else {
|
|
516
|
-
success = true;
|
|
517
|
-
return data;
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
catch (error) {
|
|
521
|
-
success = true;
|
|
522
|
-
return error.message;
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
exports.NftService = NftService;
|
|
528
|
-
//# sourceMappingURL=NftService.js.map
|
package/dist/NftService.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NftService.js","sourceRoot":"","sources":["../src/services/NftService.ts"],"names":[],"mappings":"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"}
|
package/dist/PricingService.d.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
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`, `Lens Handle`, 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 {};
|
package/dist/PricingService.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PricingService = void 0;
|
|
4
|
-
const baseDelayMs = 1000; // Base delay in milliseconds
|
|
5
|
-
class PricingService {
|
|
6
|
-
constructor(apiKey) {
|
|
7
|
-
this.apiKey = apiKey;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
12
|
-
* @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`.
|
|
13
|
-
* @param {string} contractAddress - Contract address for the token. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
14
|
-
* @param {string} from - The start day of the historical price range (YYYY-MM-DD).
|
|
15
|
-
* @param {string} to - The end day of the historical price range (YYYY-MM-DD).
|
|
16
|
-
* @param {boolean} pricesAtAsc - Sort the prices in chronological ascending order. By default, it's set to `false` and returns prices in chronological descending order.
|
|
17
|
-
*
|
|
18
|
-
*/
|
|
19
|
-
async getTokenPrices(chainName, quoteCurrency, contractAddress, from, to, pricesAtAsc) {
|
|
20
|
-
let retryCount = 1;
|
|
21
|
-
let success = false;
|
|
22
|
-
const maxRetries = 5;
|
|
23
|
-
while (!success) {
|
|
24
|
-
try {
|
|
25
|
-
const urlParams = new URLSearchParams();
|
|
26
|
-
if (from !== undefined) {
|
|
27
|
-
urlParams.append("from", from.toString());
|
|
28
|
-
}
|
|
29
|
-
if (to !== undefined) {
|
|
30
|
-
urlParams.append("to", to.toString());
|
|
31
|
-
}
|
|
32
|
-
if (pricesAtAsc !== undefined) {
|
|
33
|
-
urlParams.append("prices-at-asc", pricesAtAsc.toString());
|
|
34
|
-
}
|
|
35
|
-
const response = await fetch(`https://api.covalenthq.com/v1/pricing/historical_by_addresses_v2/${chainName}/${quoteCurrency}/${contractAddress}/?${urlParams}`, {
|
|
36
|
-
headers: {
|
|
37
|
-
"Authorization": `Bearer ${this.apiKey}`
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
const data = await response.json();
|
|
41
|
-
if (data.error && data.error_code === 429) {
|
|
42
|
-
if (retryCount < maxRetries) {
|
|
43
|
-
retryCount++;
|
|
44
|
-
const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
|
|
45
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
success = true;
|
|
49
|
-
return data;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
success = true;
|
|
54
|
-
return data;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
success = true;
|
|
59
|
-
return error.message;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
exports.PricingService = PricingService;
|
|
65
|
-
//# sourceMappingURL=PricingService.js.map
|