@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,427 @@
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.TransactionsService = void 0;
13
+ const baseDelayMs = 1000; // Base delay in milliseconds
14
+ class TransactionsService {
15
+ constructor(apiKey) {
16
+ this.apiKey = apiKey;
17
+ }
18
+ /**
19
+ *
20
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
21
+ * @param {string} txHash - The transaction hash.
22
+ * @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`.
23
+ * @param {boolean} noLogs - Omit log events.
24
+ * @param {boolean} withDex - Decoded DEX details including protocol (e.g. Uniswap), event (e.g 'add_liquidity') and tokens involved with historical prices. Additional 0.05 credits charged if data available.
25
+ * @param {boolean} withNftSales - Decoded NFT sales details including marketplace (e.g. Opensea) and cached media links. Additional 0.05 credits charged if data available.
26
+ * @param {boolean} withLending - Decoded lending details including protocol (e.g. Aave), event (e.g. 'deposit') and tokens involved with prices. Additional 0.05 credits charged if data available.
27
+ *
28
+ */
29
+ getTransaction(chainName, txHash, quoteCurrency, noLogs, withDex, withNftSales, withLending) {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ let retryCount = 0;
32
+ let success = false;
33
+ while (!success) {
34
+ try {
35
+ const urlParams = new URLSearchParams();
36
+ if (quoteCurrency !== undefined) {
37
+ urlParams.append("quote-currency", quoteCurrency.toString());
38
+ }
39
+ if (noLogs !== undefined) {
40
+ urlParams.append("no-logs", noLogs.toString());
41
+ }
42
+ if (withDex !== undefined) {
43
+ urlParams.append("with-dex", withDex.toString());
44
+ }
45
+ if (withNftSales !== undefined) {
46
+ urlParams.append("with-nft-sales", withNftSales.toString());
47
+ }
48
+ if (withLending !== undefined) {
49
+ urlParams.append("with-lending", withLending.toString());
50
+ }
51
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/transaction_v2/${txHash}/?${urlParams}`, {
52
+ headers: {
53
+ "Authorization": `Bearer ${this.apiKey}`
54
+ }
55
+ });
56
+ const data = yield response.json();
57
+ if (data.error && data.error_code === 429) {
58
+ retryCount++;
59
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
60
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
61
+ }
62
+ else {
63
+ success = true;
64
+ return data;
65
+ }
66
+ }
67
+ catch (error) {
68
+ success = true;
69
+ return error.message;
70
+ }
71
+ }
72
+ });
73
+ }
74
+ /**
75
+ *
76
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
77
+ * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
78
+ * @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`.
79
+ * @param {boolean} noLogs - Omit log events.
80
+ * @param {boolean} blockSignedAtAsc - Sort the transactions in ascending chronological order. By default, it's set to `false` and returns transactions in descending chronological order.
81
+ *
82
+ */
83
+ getTransactionsForAddress(chainName, walletAddress, quoteCurrency, noLogs, blockSignedAtAsc) {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ let retryCount = 0;
86
+ let success = false;
87
+ while (!success) {
88
+ try {
89
+ const urlParams = new URLSearchParams();
90
+ if (quoteCurrency !== undefined) {
91
+ urlParams.append("quote-currency", quoteCurrency.toString());
92
+ }
93
+ if (noLogs !== undefined) {
94
+ urlParams.append("no-logs", noLogs.toString());
95
+ }
96
+ if (blockSignedAtAsc !== undefined) {
97
+ urlParams.append("block-signed-at-asc", blockSignedAtAsc.toString());
98
+ }
99
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v2/?${urlParams}`, {
100
+ headers: {
101
+ "Authorization": `Bearer ${this.apiKey}`
102
+ }
103
+ });
104
+ const data = yield response.json();
105
+ if (data.error && data.error_code === 429) {
106
+ retryCount++;
107
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
108
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
109
+ }
110
+ else {
111
+ success = true;
112
+ return data;
113
+ }
114
+ }
115
+ catch (error) {
116
+ success = true;
117
+ return error.message;
118
+ }
119
+ }
120
+ });
121
+ }
122
+ /**
123
+ *
124
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
125
+ * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
126
+ * @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`.
127
+ * @param {boolean} noLogs - Omit log events.
128
+ *
129
+ */
130
+ getRecentTransactionsForAddress(chainName, walletAddress, quoteCurrency, noLogs) {
131
+ return __awaiter(this, void 0, void 0, function* () {
132
+ let retryCount = 0;
133
+ let success = false;
134
+ while (!success) {
135
+ try {
136
+ const urlParams = new URLSearchParams();
137
+ if (quoteCurrency !== undefined) {
138
+ urlParams.append("quote-currency", quoteCurrency.toString());
139
+ }
140
+ if (noLogs !== undefined) {
141
+ urlParams.append("no-logs", noLogs.toString());
142
+ }
143
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v3/?${urlParams}`, {
144
+ headers: {
145
+ "Authorization": `Bearer ${this.apiKey}`
146
+ }
147
+ });
148
+ const data = yield response.json();
149
+ if (data.error && data.error_code === 429) {
150
+ retryCount++;
151
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
152
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
153
+ }
154
+ else {
155
+ success = true;
156
+ return data;
157
+ }
158
+ }
159
+ catch (error) {
160
+ success = true;
161
+ return error.message;
162
+ }
163
+ }
164
+ });
165
+ }
166
+ /**
167
+ *
168
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
169
+ * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
170
+ * @param {number} page - The requested page, 0-indexed.
171
+ * @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`.
172
+ * @param {boolean} noLogs - Omit log events.
173
+ *
174
+ */
175
+ getTransactionsForAddressV3(chainName, walletAddress, page, quoteCurrency, noLogs) {
176
+ return __awaiter(this, void 0, void 0, function* () {
177
+ let retryCount = 0;
178
+ let success = false;
179
+ while (!success) {
180
+ try {
181
+ const urlParams = new URLSearchParams();
182
+ if (quoteCurrency !== undefined) {
183
+ urlParams.append("quote-currency", quoteCurrency.toString());
184
+ }
185
+ if (noLogs !== undefined) {
186
+ urlParams.append("no-logs", noLogs.toString());
187
+ }
188
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_v3/page/${page}/?${urlParams}`, {
189
+ headers: {
190
+ "Authorization": `Bearer ${this.apiKey}`
191
+ }
192
+ });
193
+ const data = yield response.json();
194
+ if (data.error && data.error_code === 429) {
195
+ retryCount++;
196
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
197
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
198
+ }
199
+ else {
200
+ success = true;
201
+ return data;
202
+ }
203
+ }
204
+ catch (error) {
205
+ success = true;
206
+ return error.message;
207
+ }
208
+ }
209
+ });
210
+ }
211
+ /**
212
+ *
213
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
214
+ * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
215
+ * @param {number} timeBucket - The 0-indexed 15-minute time bucket. E.g. 27 Feb 2023 05:23 GMT = 1677475383 (Unix time). 1677475383/900=1863861 timeBucket.
216
+ * @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`.
217
+ * @param {boolean} noLogs - Omit log events.
218
+ *
219
+ */
220
+ getTimeBucketTransactionsForAddress(chainName, walletAddress, timeBucket, quoteCurrency, noLogs) {
221
+ return __awaiter(this, void 0, void 0, function* () {
222
+ let retryCount = 0;
223
+ let success = false;
224
+ while (!success) {
225
+ try {
226
+ const urlParams = new URLSearchParams();
227
+ if (quoteCurrency !== undefined) {
228
+ urlParams.append("quote-currency", quoteCurrency.toString());
229
+ }
230
+ if (noLogs !== undefined) {
231
+ urlParams.append("no-logs", noLogs.toString());
232
+ }
233
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/bulk/transactions/${walletAddress}/${timeBucket}/?${urlParams}`, {
234
+ headers: {
235
+ "Authorization": `Bearer ${this.apiKey}`
236
+ }
237
+ });
238
+ const data = yield response.json();
239
+ if (data.error && data.error_code === 429) {
240
+ retryCount++;
241
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
242
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
243
+ }
244
+ else {
245
+ success = true;
246
+ return data;
247
+ }
248
+ }
249
+ catch (error) {
250
+ success = true;
251
+ return error.message;
252
+ }
253
+ }
254
+ });
255
+ }
256
+ /**
257
+ *
258
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
259
+ * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
260
+ * @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`.
261
+ * @param {boolean} noLogs - Omit log events.
262
+ *
263
+ */
264
+ getEarliestTimeBucketTransactionsForAddress(chainName, walletAddress, quoteCurrency, noLogs) {
265
+ return __awaiter(this, void 0, void 0, function* () {
266
+ let retryCount = 0;
267
+ let success = false;
268
+ while (!success) {
269
+ try {
270
+ const urlParams = new URLSearchParams();
271
+ if (quoteCurrency !== undefined) {
272
+ urlParams.append("quote-currency", quoteCurrency.toString());
273
+ }
274
+ if (noLogs !== undefined) {
275
+ urlParams.append("no-logs", noLogs.toString());
276
+ }
277
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/bulk/transactions/${walletAddress}/?${urlParams}`, {
278
+ headers: {
279
+ "Authorization": `Bearer ${this.apiKey}`
280
+ }
281
+ });
282
+ const data = yield response.json();
283
+ if (data.error && data.error_code === 429) {
284
+ retryCount++;
285
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
286
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
287
+ }
288
+ else {
289
+ success = true;
290
+ return data;
291
+ }
292
+ }
293
+ catch (error) {
294
+ success = true;
295
+ return error.message;
296
+ }
297
+ }
298
+ });
299
+ }
300
+ /**
301
+ *
302
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
303
+ * @param {number} blockHeight - The requested block height. Also accepts `latest` to get latest block.
304
+ * @param {number} page - The requested 0-indexed page number.
305
+ * @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`.
306
+ * @param {boolean} noLogs - Omit log events.
307
+ *
308
+ */
309
+ getTransactionsForBlockByPage(chainName, blockHeight, page, quoteCurrency, noLogs) {
310
+ return __awaiter(this, void 0, void 0, function* () {
311
+ let retryCount = 0;
312
+ let success = false;
313
+ while (!success) {
314
+ try {
315
+ const urlParams = new URLSearchParams();
316
+ if (quoteCurrency !== undefined) {
317
+ urlParams.append("quote-currency", quoteCurrency.toString());
318
+ }
319
+ if (noLogs !== undefined) {
320
+ urlParams.append("no-logs", noLogs.toString());
321
+ }
322
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/block/${blockHeight}/transactions_v3/page/${page}/?${urlParams}`, {
323
+ headers: {
324
+ "Authorization": `Bearer ${this.apiKey}`
325
+ }
326
+ });
327
+ const data = yield response.json();
328
+ if (data.error && data.error_code === 429) {
329
+ retryCount++;
330
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
331
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
332
+ }
333
+ else {
334
+ success = true;
335
+ return data;
336
+ }
337
+ }
338
+ catch (error) {
339
+ success = true;
340
+ return error.message;
341
+ }
342
+ }
343
+ });
344
+ }
345
+ /**
346
+ *
347
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
348
+ * @param {number} blockHeight - The requested block height.
349
+ * @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`.
350
+ * @param {boolean} noLogs - Omit log events.
351
+ *
352
+ */
353
+ getTransactionsForBlock(chainName, blockHeight, quoteCurrency, noLogs) {
354
+ return __awaiter(this, void 0, void 0, function* () {
355
+ let retryCount = 0;
356
+ let success = false;
357
+ while (!success) {
358
+ try {
359
+ const urlParams = new URLSearchParams();
360
+ if (quoteCurrency !== undefined) {
361
+ urlParams.append("quote-currency", quoteCurrency.toString());
362
+ }
363
+ if (noLogs !== undefined) {
364
+ urlParams.append("no-logs", noLogs.toString());
365
+ }
366
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/block/${blockHeight}/transactions_v3/?${urlParams}`, {
367
+ headers: {
368
+ "Authorization": `Bearer ${this.apiKey}`
369
+ }
370
+ });
371
+ const data = yield response.json();
372
+ if (data.error && data.error_code === 429) {
373
+ retryCount++;
374
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
375
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
376
+ }
377
+ else {
378
+ success = true;
379
+ return data;
380
+ }
381
+ }
382
+ catch (error) {
383
+ success = true;
384
+ return error.message;
385
+ }
386
+ }
387
+ });
388
+ }
389
+ /**
390
+ *
391
+ * @param {string} chainName - The chain name eg: `eth-mainnet`.
392
+ * @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, or an `Unstoppable Domain` resolves automatically.
393
+ *
394
+ */
395
+ getTransactionSummary(chainName, walletAddress) {
396
+ return __awaiter(this, void 0, void 0, function* () {
397
+ let retryCount = 0;
398
+ let success = false;
399
+ while (!success) {
400
+ try {
401
+ const urlParams = new URLSearchParams();
402
+ const response = yield fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/transactions_summary/?${urlParams}`, {
403
+ headers: {
404
+ "Authorization": `Bearer ${this.apiKey}`
405
+ }
406
+ });
407
+ const data = yield response.json();
408
+ if (data.error && data.error_code === 429) {
409
+ retryCount++;
410
+ const delayMs = Math.pow(2, retryCount) * baseDelayMs; // Exponential delay calculation
411
+ yield new Promise((resolve) => setTimeout(resolve, delayMs));
412
+ }
413
+ else {
414
+ success = true;
415
+ return data;
416
+ }
417
+ }
418
+ catch (error) {
419
+ success = true;
420
+ return error.message;
421
+ }
422
+ }
423
+ });
424
+ }
425
+ }
426
+ exports.TransactionsService = TransactionsService;
427
+ //# sourceMappingURL=TransactionsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionsService.js","sourceRoot":"","sources":["../src/services/TransactionsService.ts"],"names":[],"mappings":"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"}