@covalenthq/client-sdk 0.1.2 → 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.
- 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 +9 -1
- 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
|
@@ -0,0 +1,691 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseService = exports.Response = void 0;
|
|
4
|
+
const backoff_1 = require("../util/backoff");
|
|
5
|
+
const ApiHelpers_1 = require("../util/ApiHelpers");
|
|
6
|
+
class BlockResponse {
|
|
7
|
+
constructor(data) {
|
|
8
|
+
this.updated_at = data.updated_at;
|
|
9
|
+
this.chain_id = data.chain_id;
|
|
10
|
+
this.chain_name = data.chain_name;
|
|
11
|
+
this.items = data.items && data.items !== null ? data.items.map((itemData) => new Block(itemData)) : null;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
class Block {
|
|
15
|
+
constructor(data) {
|
|
16
|
+
this.signed_at = data.signed_at;
|
|
17
|
+
this.height = data.height;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
class ResolvedAddress {
|
|
21
|
+
constructor(data) {
|
|
22
|
+
this.address = data.address;
|
|
23
|
+
this.updated_at = data.updated_at;
|
|
24
|
+
this.chain_id = data.chain_id;
|
|
25
|
+
this.chain_name = data.chain_name;
|
|
26
|
+
this.items = data.items && data.items !== null ? data.items.map((itemData) => new ResolvedAddressItem(itemData)) : null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
class ResolvedAddressItem {
|
|
30
|
+
constructor(data) {
|
|
31
|
+
this.address = data.address;
|
|
32
|
+
this.name = data.name;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
class BlockHeightsResponse {
|
|
36
|
+
constructor(data) {
|
|
37
|
+
this.updated_at = data.updated_at;
|
|
38
|
+
this.chain_id = data.chain_id;
|
|
39
|
+
this.chain_name = data.chain_name;
|
|
40
|
+
this.items = data.items && data.items !== null ? data.items.map((itemData) => new Block(itemData)) : null;
|
|
41
|
+
this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
class Pagination {
|
|
45
|
+
constructor(data) {
|
|
46
|
+
this.has_more = data.has_more;
|
|
47
|
+
this.page_number = data.page_number;
|
|
48
|
+
this.page_size = data.page_size;
|
|
49
|
+
this.total_count = data.total_count;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
class GetLogsResponse {
|
|
53
|
+
constructor(data) {
|
|
54
|
+
this.updated_at = data.updated_at;
|
|
55
|
+
this.chain_id = data.chain_id;
|
|
56
|
+
this.chain_name = data.chain_name;
|
|
57
|
+
this.items = data.items && data.items !== null ? data.items.map((itemData) => new GetLogsEvent(itemData)) : null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
class GetLogsEvent {
|
|
61
|
+
constructor(data) {
|
|
62
|
+
this.block_signed_at = data.block_signed_at;
|
|
63
|
+
this.block_height = data.block_height;
|
|
64
|
+
this.block_hash = data.block_hash;
|
|
65
|
+
this.tx_offset = data.tx_offset;
|
|
66
|
+
this.log_offset = data.log_offset;
|
|
67
|
+
this.tx_hash = data.tx_hash;
|
|
68
|
+
this.raw_log_topics = data.raw_log_topics;
|
|
69
|
+
this.sender_contract_decimals = data.sender_contract_decimals;
|
|
70
|
+
this.sender_name = data.sender_name;
|
|
71
|
+
this.sender_contract_ticker_symbol = data.sender_contract_ticker_symbol;
|
|
72
|
+
this.sender_address = data.sender_address;
|
|
73
|
+
this.sender_address_label = data.sender_address_label;
|
|
74
|
+
this.sender_logo_url = data.sender_logo_url;
|
|
75
|
+
this.raw_log_data = data.raw_log_data;
|
|
76
|
+
this.decoded = data.decoded && data.decoded !== null ? new DecodedItem(data.decoded) : null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
class DecodedItem {
|
|
80
|
+
constructor(data) {
|
|
81
|
+
this.name = data.name;
|
|
82
|
+
this.signature = data.signature;
|
|
83
|
+
this.params = data.params && data.params !== null ? data.params.map((itemData) => new Param(itemData)) : null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
class Param {
|
|
87
|
+
constructor(data) {
|
|
88
|
+
this.name = data.name;
|
|
89
|
+
this.type = data.type;
|
|
90
|
+
this.indexed = data.indexed;
|
|
91
|
+
this.decoded = data.decoded;
|
|
92
|
+
this.value = data.value;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
class LogEventsByAddressResponse {
|
|
96
|
+
constructor(data) {
|
|
97
|
+
this.updated_at = data.updated_at;
|
|
98
|
+
this.chain_id = data.chain_id;
|
|
99
|
+
this.chain_name = data.chain_name;
|
|
100
|
+
this.items = data.items && data.items !== null ? data.items.map((itemData) => new LogEvent(itemData)) : null;
|
|
101
|
+
this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
class LogEvent {
|
|
105
|
+
constructor(data) {
|
|
106
|
+
this.block_signed_at = data.block_signed_at;
|
|
107
|
+
this.block_height = data.block_height;
|
|
108
|
+
this.tx_offset = data.tx_offset;
|
|
109
|
+
this.log_offset = data.log_offset;
|
|
110
|
+
this.tx_hash = data.tx_hash;
|
|
111
|
+
this.raw_log_topics = data.raw_log_topics;
|
|
112
|
+
this.sender_contract_decimals = data.sender_contract_decimals;
|
|
113
|
+
this.sender_name = data.sender_name;
|
|
114
|
+
this.sender_contract_ticker_symbol = data.sender_contract_ticker_symbol;
|
|
115
|
+
this.sender_address = data.sender_address;
|
|
116
|
+
this.sender_address_label = data.sender_address_label;
|
|
117
|
+
this.sender_logo_url = data.sender_logo_url;
|
|
118
|
+
this.raw_log_data = data.raw_log_data;
|
|
119
|
+
this.decoded = data.decoded && data.decoded !== null ? new DecodedItem(data.decoded) : null;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
class LogEventsByTopicHashResponse {
|
|
123
|
+
constructor(data) {
|
|
124
|
+
this.updated_at = data.updated_at;
|
|
125
|
+
this.chain_id = data.chain_id;
|
|
126
|
+
this.chain_name = data.chain_name;
|
|
127
|
+
this.items = data.items && data.items !== null ? data.items.map((itemData) => new LogEvent(itemData)) : null;
|
|
128
|
+
this.pagination = data.pagination && data.pagination !== null ? new Pagination(data.pagination) : null;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
class AllChainsResponse {
|
|
132
|
+
constructor(data) {
|
|
133
|
+
this.updated_at = data.updated_at;
|
|
134
|
+
this.items = data.items && data.items !== null ? data.items.map((itemData) => new ChainItem(itemData)) : null;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
class ChainItem {
|
|
138
|
+
constructor(data) {
|
|
139
|
+
this.name = data.name;
|
|
140
|
+
this.chain_id = data.chain_id;
|
|
141
|
+
this.is_testnet = data.is_testnet;
|
|
142
|
+
this.db_schema_name = data.db_schema_name;
|
|
143
|
+
this.label = data.label;
|
|
144
|
+
this.category_label = data.category_label;
|
|
145
|
+
this.logo_url = data.logo_url;
|
|
146
|
+
this.black_logo_url = data.black_logo_url;
|
|
147
|
+
this.white_logo_url = data.white_logo_url;
|
|
148
|
+
this.is_appchain = data.is_appchain;
|
|
149
|
+
this.appchain_of = data.appchain_of && data.appchain_of !== null ? new ChainItem(data.appchain_of) : null;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
class AllChainsStatusResponse {
|
|
153
|
+
constructor(data) {
|
|
154
|
+
this.updated_at = data.updated_at;
|
|
155
|
+
this.items = data.items && data.items !== null ? data.items.map((itemData) => new ChainStatusItem(itemData)) : null;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
class ChainStatusItem {
|
|
159
|
+
constructor(data) {
|
|
160
|
+
this.name = data.name;
|
|
161
|
+
this.chain_id = data.chain_id;
|
|
162
|
+
this.is_testnet = data.is_testnet;
|
|
163
|
+
this.logo_url = data.logo_url;
|
|
164
|
+
this.black_logo_url = data.black_logo_url;
|
|
165
|
+
this.white_logo_url = data.white_logo_url;
|
|
166
|
+
this.is_appchain = data.is_appchain;
|
|
167
|
+
this.synced_block_height = data.synced_block_height;
|
|
168
|
+
this.synced_blocked_signed_at = data.synced_blocked_signed_at;
|
|
169
|
+
this.has_data = data.has_data;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Class A - Base
|
|
174
|
+
*
|
|
175
|
+
*/
|
|
176
|
+
class Response {
|
|
177
|
+
}
|
|
178
|
+
exports.Response = Response;
|
|
179
|
+
class BaseService {
|
|
180
|
+
constructor(apiKey) {
|
|
181
|
+
this.apiKey = apiKey;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
*
|
|
185
|
+
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
186
|
+
* @param {string} blockHeight - The block height or `latest` for the latest block available.
|
|
187
|
+
*
|
|
188
|
+
*/
|
|
189
|
+
async getBlock(chainName, blockHeight) {
|
|
190
|
+
let success = false;
|
|
191
|
+
let data;
|
|
192
|
+
let response;
|
|
193
|
+
const backoff = new backoff_1.ExponentialBackoff();
|
|
194
|
+
while (!success) {
|
|
195
|
+
try {
|
|
196
|
+
const urlParams = new URLSearchParams();
|
|
197
|
+
response = await fetch(`https://api.covalenthq.com/v1/${chainName}/block_v2/${blockHeight}/?${urlParams}`, {
|
|
198
|
+
headers: {
|
|
199
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
data = await response.json();
|
|
203
|
+
if (data.error && data.error_code === 429) {
|
|
204
|
+
try {
|
|
205
|
+
await backoff.backOff();
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(data);
|
|
209
|
+
success = true;
|
|
210
|
+
return {
|
|
211
|
+
data: null,
|
|
212
|
+
error: data.error,
|
|
213
|
+
error_code: data ? data.error_code : response.status,
|
|
214
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
const dataClass = new BlockResponse(data.data);
|
|
220
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(dataClass);
|
|
221
|
+
success = true;
|
|
222
|
+
return {
|
|
223
|
+
data: dataClass,
|
|
224
|
+
error: data.error,
|
|
225
|
+
error_code: data ? data.error_code : response.status,
|
|
226
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
success = true;
|
|
232
|
+
return {
|
|
233
|
+
data: null,
|
|
234
|
+
error: true,
|
|
235
|
+
error_code: data ? data.error_code : response.status,
|
|
236
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
*
|
|
243
|
+
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
244
|
+
* @param {string} walletAddress - The requested address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
245
|
+
*
|
|
246
|
+
*/
|
|
247
|
+
async getResolvedAddress(chainName, walletAddress) {
|
|
248
|
+
let success = false;
|
|
249
|
+
let data;
|
|
250
|
+
let response;
|
|
251
|
+
const backoff = new backoff_1.ExponentialBackoff();
|
|
252
|
+
while (!success) {
|
|
253
|
+
try {
|
|
254
|
+
const urlParams = new URLSearchParams();
|
|
255
|
+
response = await fetch(`https://api.covalenthq.com/v1/${chainName}/address/${walletAddress}/resolve_address/?${urlParams}`, {
|
|
256
|
+
headers: {
|
|
257
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
data = await response.json();
|
|
261
|
+
if (data.error && data.error_code === 429) {
|
|
262
|
+
try {
|
|
263
|
+
await backoff.backOff();
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(data);
|
|
267
|
+
success = true;
|
|
268
|
+
return {
|
|
269
|
+
data: null,
|
|
270
|
+
error: data.error,
|
|
271
|
+
error_code: data ? data.error_code : response.status,
|
|
272
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
const dataClass = new ResolvedAddress(data.data);
|
|
278
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(dataClass);
|
|
279
|
+
success = true;
|
|
280
|
+
return {
|
|
281
|
+
data: dataClass,
|
|
282
|
+
error: data.error,
|
|
283
|
+
error_code: data ? data.error_code : response.status,
|
|
284
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
success = true;
|
|
290
|
+
return {
|
|
291
|
+
data: null,
|
|
292
|
+
error: true,
|
|
293
|
+
error_code: data ? data.error_code : response.status,
|
|
294
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
*
|
|
301
|
+
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
302
|
+
* @param {string} startDate - The start date in YYYY-MM-DD format.
|
|
303
|
+
* @param {string} endDate - The end date in YYYY-MM-DD format.
|
|
304
|
+
*
|
|
305
|
+
*/
|
|
306
|
+
async getBlockHeights(chainName, startDate, endDate) {
|
|
307
|
+
let success = false;
|
|
308
|
+
let data;
|
|
309
|
+
let response;
|
|
310
|
+
const backoff = new backoff_1.ExponentialBackoff();
|
|
311
|
+
while (!success) {
|
|
312
|
+
try {
|
|
313
|
+
const urlParams = new URLSearchParams();
|
|
314
|
+
response = await fetch(`https://api.covalenthq.com/v1/${chainName}/block_v2/${startDate}/${endDate}/?${urlParams}`, {
|
|
315
|
+
headers: {
|
|
316
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
data = await response.json();
|
|
320
|
+
if (data.error && data.error_code === 429) {
|
|
321
|
+
try {
|
|
322
|
+
await backoff.backOff();
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(data);
|
|
326
|
+
success = true;
|
|
327
|
+
return {
|
|
328
|
+
data: null,
|
|
329
|
+
error: data.error,
|
|
330
|
+
error_code: data ? data.error_code : response.status,
|
|
331
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
const dataClass = new BlockHeightsResponse(data.data);
|
|
337
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(dataClass);
|
|
338
|
+
success = true;
|
|
339
|
+
return {
|
|
340
|
+
data: dataClass,
|
|
341
|
+
error: data.error,
|
|
342
|
+
error_code: data ? data.error_code : response.status,
|
|
343
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
catch (error) {
|
|
348
|
+
success = true;
|
|
349
|
+
return {
|
|
350
|
+
data: null,
|
|
351
|
+
error: true,
|
|
352
|
+
error_code: data ? data.error_code : response.status,
|
|
353
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
*
|
|
360
|
+
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
361
|
+
* @param {number} startingBlock - The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.
|
|
362
|
+
* @param {string} endingBlock - The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.
|
|
363
|
+
* @param {string} address - The address of the log events sender contract.
|
|
364
|
+
* @param {string} topics - The topic hash(es) to retrieve logs with.
|
|
365
|
+
* @param {string} blockHash - The block hash to retrieve logs for.
|
|
366
|
+
* @param {boolean} skipDecode - Omit decoded log events.
|
|
367
|
+
*
|
|
368
|
+
*/
|
|
369
|
+
async getLogs(chainName, startingBlock, endingBlock, address, topics, blockHash, skipDecode) {
|
|
370
|
+
let success = false;
|
|
371
|
+
let data;
|
|
372
|
+
let response;
|
|
373
|
+
const backoff = new backoff_1.ExponentialBackoff();
|
|
374
|
+
while (!success) {
|
|
375
|
+
try {
|
|
376
|
+
const urlParams = new URLSearchParams();
|
|
377
|
+
if (startingBlock !== undefined) {
|
|
378
|
+
urlParams.append("starting-block", startingBlock.toString());
|
|
379
|
+
}
|
|
380
|
+
if (endingBlock !== undefined) {
|
|
381
|
+
urlParams.append("ending-block", endingBlock.toString());
|
|
382
|
+
}
|
|
383
|
+
if (address !== undefined) {
|
|
384
|
+
urlParams.append("address", address.toString());
|
|
385
|
+
}
|
|
386
|
+
if (topics !== undefined) {
|
|
387
|
+
urlParams.append("topics", topics.toString());
|
|
388
|
+
}
|
|
389
|
+
if (blockHash !== undefined) {
|
|
390
|
+
urlParams.append("block-hash", blockHash.toString());
|
|
391
|
+
}
|
|
392
|
+
if (skipDecode !== undefined) {
|
|
393
|
+
urlParams.append("skip-decode", skipDecode.toString());
|
|
394
|
+
}
|
|
395
|
+
response = await fetch(`https://api.covalenthq.com/v1/${chainName}/events/?${urlParams}`, {
|
|
396
|
+
headers: {
|
|
397
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
data = await response.json();
|
|
401
|
+
if (data.error && data.error_code === 429) {
|
|
402
|
+
try {
|
|
403
|
+
await backoff.backOff();
|
|
404
|
+
}
|
|
405
|
+
catch (error) {
|
|
406
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(data);
|
|
407
|
+
success = true;
|
|
408
|
+
return {
|
|
409
|
+
data: null,
|
|
410
|
+
error: data.error,
|
|
411
|
+
error_code: data ? data.error_code : response.status,
|
|
412
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
const dataClass = new GetLogsResponse(data.data);
|
|
418
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(dataClass);
|
|
419
|
+
success = true;
|
|
420
|
+
return {
|
|
421
|
+
data: dataClass,
|
|
422
|
+
error: data.error,
|
|
423
|
+
error_code: data ? data.error_code : response.status,
|
|
424
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
catch (error) {
|
|
429
|
+
success = true;
|
|
430
|
+
return {
|
|
431
|
+
data: null,
|
|
432
|
+
error: true,
|
|
433
|
+
error_code: data ? data.error_code : response.status,
|
|
434
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
*
|
|
441
|
+
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
442
|
+
* @param {string} contractAddress - The endpoint will return event logs emitted from this contract address. Passing in an `ENS`, `RNS`, `Lens Handle`, or an `Unstoppable Domain` resolves automatically.
|
|
443
|
+
* @param {number} startingBlock - The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.
|
|
444
|
+
* @param {string} endingBlock - The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.
|
|
445
|
+
*
|
|
446
|
+
*/
|
|
447
|
+
async getLogEventsByAddress(chainName, contractAddress, startingBlock, endingBlock) {
|
|
448
|
+
let success = false;
|
|
449
|
+
let data;
|
|
450
|
+
let response;
|
|
451
|
+
const backoff = new backoff_1.ExponentialBackoff();
|
|
452
|
+
while (!success) {
|
|
453
|
+
try {
|
|
454
|
+
const urlParams = new URLSearchParams();
|
|
455
|
+
if (startingBlock !== undefined) {
|
|
456
|
+
urlParams.append("starting-block", startingBlock.toString());
|
|
457
|
+
}
|
|
458
|
+
if (endingBlock !== undefined) {
|
|
459
|
+
urlParams.append("ending-block", endingBlock.toString());
|
|
460
|
+
}
|
|
461
|
+
response = await fetch(`https://api.covalenthq.com/v1/${chainName}/events/address/${contractAddress}/?${urlParams}`, {
|
|
462
|
+
headers: {
|
|
463
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
464
|
+
}
|
|
465
|
+
});
|
|
466
|
+
data = await response.json();
|
|
467
|
+
if (data.error && data.error_code === 429) {
|
|
468
|
+
try {
|
|
469
|
+
await backoff.backOff();
|
|
470
|
+
}
|
|
471
|
+
catch (error) {
|
|
472
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(data);
|
|
473
|
+
success = true;
|
|
474
|
+
return {
|
|
475
|
+
data: null,
|
|
476
|
+
error: data.error,
|
|
477
|
+
error_code: data ? data.error_code : response.status,
|
|
478
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
479
|
+
};
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
const dataClass = new LogEventsByAddressResponse(data.data);
|
|
484
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(dataClass);
|
|
485
|
+
success = true;
|
|
486
|
+
return {
|
|
487
|
+
data: dataClass,
|
|
488
|
+
error: data.error,
|
|
489
|
+
error_code: data ? data.error_code : response.status,
|
|
490
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
catch (error) {
|
|
495
|
+
success = true;
|
|
496
|
+
return {
|
|
497
|
+
data: null,
|
|
498
|
+
error: true,
|
|
499
|
+
error_code: data ? data.error_code : response.status,
|
|
500
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
*
|
|
507
|
+
* @param {string} chainName - The chain name eg: `eth-mainnet`.
|
|
508
|
+
* @param {string} topicHash - The endpoint will return event logs that contain this topic hash.
|
|
509
|
+
* @param {number} startingBlock - The first block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.
|
|
510
|
+
* @param {string} endingBlock - The last block to retrieve log events with. Accepts decimals, hexadecimals, or the strings `earliest` and `latest`.
|
|
511
|
+
* @param {string} secondaryTopics - Additional topic hash(es) to filter on - padded & unpadded address fields are supported.
|
|
512
|
+
*
|
|
513
|
+
*/
|
|
514
|
+
async getLogEventsByTopicHash(chainName, topicHash, startingBlock, endingBlock, secondaryTopics) {
|
|
515
|
+
let success = false;
|
|
516
|
+
let data;
|
|
517
|
+
let response;
|
|
518
|
+
const backoff = new backoff_1.ExponentialBackoff();
|
|
519
|
+
while (!success) {
|
|
520
|
+
try {
|
|
521
|
+
const urlParams = new URLSearchParams();
|
|
522
|
+
if (startingBlock !== undefined) {
|
|
523
|
+
urlParams.append("starting-block", startingBlock.toString());
|
|
524
|
+
}
|
|
525
|
+
if (endingBlock !== undefined) {
|
|
526
|
+
urlParams.append("ending-block", endingBlock.toString());
|
|
527
|
+
}
|
|
528
|
+
if (secondaryTopics !== undefined) {
|
|
529
|
+
urlParams.append("secondary-topics", secondaryTopics.toString());
|
|
530
|
+
}
|
|
531
|
+
response = await fetch(`https://api.covalenthq.com/v1/${chainName}/events/topics/${topicHash}/?${urlParams}`, {
|
|
532
|
+
headers: {
|
|
533
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
534
|
+
}
|
|
535
|
+
});
|
|
536
|
+
data = await response.json();
|
|
537
|
+
if (data.error && data.error_code === 429) {
|
|
538
|
+
try {
|
|
539
|
+
await backoff.backOff();
|
|
540
|
+
}
|
|
541
|
+
catch (error) {
|
|
542
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(data);
|
|
543
|
+
success = true;
|
|
544
|
+
return {
|
|
545
|
+
data: null,
|
|
546
|
+
error: data.error,
|
|
547
|
+
error_code: data ? data.error_code : response.status,
|
|
548
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
549
|
+
};
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
else {
|
|
553
|
+
const dataClass = new LogEventsByTopicHashResponse(data.data);
|
|
554
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(dataClass);
|
|
555
|
+
success = true;
|
|
556
|
+
return {
|
|
557
|
+
data: dataClass,
|
|
558
|
+
error: data.error,
|
|
559
|
+
error_code: data ? data.error_code : response.status,
|
|
560
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
561
|
+
};
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
catch (error) {
|
|
565
|
+
success = true;
|
|
566
|
+
return {
|
|
567
|
+
data: null,
|
|
568
|
+
error: true,
|
|
569
|
+
error_code: data ? data.error_code : response.status,
|
|
570
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
571
|
+
};
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
/**
|
|
576
|
+
*
|
|
577
|
+
|
|
578
|
+
*
|
|
579
|
+
*/
|
|
580
|
+
async getAllChains() {
|
|
581
|
+
let success = false;
|
|
582
|
+
let data;
|
|
583
|
+
let response;
|
|
584
|
+
const backoff = new backoff_1.ExponentialBackoff();
|
|
585
|
+
while (!success) {
|
|
586
|
+
try {
|
|
587
|
+
const urlParams = new URLSearchParams();
|
|
588
|
+
response = await fetch(`https://api.covalenthq.com/v1/chains/?${urlParams}`, {
|
|
589
|
+
headers: {
|
|
590
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
591
|
+
}
|
|
592
|
+
});
|
|
593
|
+
data = await response.json();
|
|
594
|
+
if (data.error && data.error_code === 429) {
|
|
595
|
+
try {
|
|
596
|
+
await backoff.backOff();
|
|
597
|
+
}
|
|
598
|
+
catch (error) {
|
|
599
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(data);
|
|
600
|
+
success = true;
|
|
601
|
+
return {
|
|
602
|
+
data: null,
|
|
603
|
+
error: data.error,
|
|
604
|
+
error_code: data ? data.error_code : response.status,
|
|
605
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
606
|
+
};
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
else {
|
|
610
|
+
const dataClass = new AllChainsResponse(data.data);
|
|
611
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(dataClass);
|
|
612
|
+
success = true;
|
|
613
|
+
return {
|
|
614
|
+
data: dataClass,
|
|
615
|
+
error: data.error,
|
|
616
|
+
error_code: data ? data.error_code : response.status,
|
|
617
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
618
|
+
};
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
catch (error) {
|
|
622
|
+
success = true;
|
|
623
|
+
return {
|
|
624
|
+
data: null,
|
|
625
|
+
error: true,
|
|
626
|
+
error_code: data ? data.error_code : response.status,
|
|
627
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
628
|
+
};
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
/**
|
|
633
|
+
*
|
|
634
|
+
|
|
635
|
+
*
|
|
636
|
+
*/
|
|
637
|
+
async getAllChainStatus() {
|
|
638
|
+
let success = false;
|
|
639
|
+
let data;
|
|
640
|
+
let response;
|
|
641
|
+
const backoff = new backoff_1.ExponentialBackoff();
|
|
642
|
+
while (!success) {
|
|
643
|
+
try {
|
|
644
|
+
const urlParams = new URLSearchParams();
|
|
645
|
+
response = await fetch(`https://api.covalenthq.com/v1/chains/status/?${urlParams}`, {
|
|
646
|
+
headers: {
|
|
647
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
648
|
+
}
|
|
649
|
+
});
|
|
650
|
+
data = await response.json();
|
|
651
|
+
if (data.error && data.error_code === 429) {
|
|
652
|
+
try {
|
|
653
|
+
await backoff.backOff();
|
|
654
|
+
}
|
|
655
|
+
catch (error) {
|
|
656
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(data);
|
|
657
|
+
success = true;
|
|
658
|
+
return {
|
|
659
|
+
data: null,
|
|
660
|
+
error: data.error,
|
|
661
|
+
error_code: data ? data.error_code : response.status,
|
|
662
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
663
|
+
};
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
else {
|
|
667
|
+
const dataClass = new AllChainsStatusResponse(data.data);
|
|
668
|
+
(0, ApiHelpers_1.checkAndModifyResponse)(dataClass);
|
|
669
|
+
success = true;
|
|
670
|
+
return {
|
|
671
|
+
data: dataClass,
|
|
672
|
+
error: data.error,
|
|
673
|
+
error_code: data ? data.error_code : response.status,
|
|
674
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
675
|
+
};
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
catch (error) {
|
|
679
|
+
success = true;
|
|
680
|
+
return {
|
|
681
|
+
data: null,
|
|
682
|
+
error: true,
|
|
683
|
+
error_code: data ? data.error_code : response.status,
|
|
684
|
+
error_message: data ? data.error_message : "401 Authorization Required"
|
|
685
|
+
};
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
exports.BaseService = BaseService;
|
|
691
|
+
//# sourceMappingURL=BaseService.js.map
|