@qevm/providers 1.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.
Files changed (114) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +78 -0
  3. package/lib/_version.d.ts +2 -0
  4. package/lib/_version.d.ts.map +1 -0
  5. package/lib/_version.js +5 -0
  6. package/lib/_version.js.map +1 -0
  7. package/lib/alchemy-provider.d.ts +17 -0
  8. package/lib/alchemy-provider.d.ts.map +1 -0
  9. package/lib/alchemy-provider.js +112 -0
  10. package/lib/alchemy-provider.js.map +1 -0
  11. package/lib/ankr-provider.d.ts +10 -0
  12. package/lib/ankr-provider.d.ts.map +1 -0
  13. package/lib/ankr-provider.js +79 -0
  14. package/lib/ankr-provider.js.map +1 -0
  15. package/lib/base-provider.d.ts +156 -0
  16. package/lib/base-provider.d.ts.map +1 -0
  17. package/lib/base-provider.js +2585 -0
  18. package/lib/base-provider.js.map +1 -0
  19. package/lib/browser-ipc-provider.d.ts +3 -0
  20. package/lib/browser-ipc-provider.d.ts.map +1 -0
  21. package/lib/browser-ipc-provider.js +6 -0
  22. package/lib/browser-ipc-provider.js.map +1 -0
  23. package/lib/browser-net.d.ts +2 -0
  24. package/lib/browser-net.d.ts.map +1 -0
  25. package/lib/browser-net.js +6 -0
  26. package/lib/browser-net.js.map +1 -0
  27. package/lib/browser-ws.d.ts +3 -0
  28. package/lib/browser-ws.d.ts.map +1 -0
  29. package/lib/browser-ws.js +22 -0
  30. package/lib/browser-ws.js.map +1 -0
  31. package/lib/cloudflare-provider.d.ts +8 -0
  32. package/lib/cloudflare-provider.d.ts.map +1 -0
  33. package/lib/cloudflare-provider.js +100 -0
  34. package/lib/cloudflare-provider.js.map +1 -0
  35. package/lib/etherscan-provider.d.ts +18 -0
  36. package/lib/etherscan-provider.d.ts.map +1 -0
  37. package/lib/etherscan-provider.js +528 -0
  38. package/lib/etherscan-provider.js.map +1 -0
  39. package/lib/fallback-provider.d.ts +20 -0
  40. package/lib/fallback-provider.d.ts.map +1 -0
  41. package/lib/fallback-provider.js +699 -0
  42. package/lib/fallback-provider.js.map +1 -0
  43. package/lib/formatter.d.ts +60 -0
  44. package/lib/formatter.d.ts.map +1 -0
  45. package/lib/formatter.js +452 -0
  46. package/lib/formatter.js.map +1 -0
  47. package/lib/index.d.ts +23 -0
  48. package/lib/index.d.ts.map +1 -0
  49. package/lib/index.js +97 -0
  50. package/lib/index.js.map +1 -0
  51. package/lib/infura-provider.d.ts +21 -0
  52. package/lib/infura-provider.d.ts.map +1 -0
  53. package/lib/infura-provider.js +141 -0
  54. package/lib/infura-provider.js.map +1 -0
  55. package/lib/ipc-provider.d.ts +8 -0
  56. package/lib/ipc-provider.d.ts.map +1 -0
  57. package/lib/ipc-provider.js +77 -0
  58. package/lib/ipc-provider.js.map +1 -0
  59. package/lib/json-rpc-batch-provider.d.ts +17 -0
  60. package/lib/json-rpc-batch-provider.d.ts.map +1 -0
  61. package/lib/json-rpc-batch-provider.js +99 -0
  62. package/lib/json-rpc-batch-provider.js.map +1 -0
  63. package/lib/json-rpc-provider.d.ts +54 -0
  64. package/lib/json-rpc-provider.d.ts.map +1 -0
  65. package/lib/json-rpc-provider.js +855 -0
  66. package/lib/json-rpc-provider.js.map +1 -0
  67. package/lib/nodesmith-provider.d.ts +7 -0
  68. package/lib/nodesmith-provider.d.ts.map +1 -0
  69. package/lib/nodesmith-provider.js +64 -0
  70. package/lib/nodesmith-provider.js.map +1 -0
  71. package/lib/pocket-provider.d.ts +12 -0
  72. package/lib/pocket-provider.d.ts.map +1 -0
  73. package/lib/pocket-provider.js +98 -0
  74. package/lib/pocket-provider.js.map +1 -0
  75. package/lib/url-json-rpc-provider.d.ts +18 -0
  76. package/lib/url-json-rpc-provider.d.ts.map +1 -0
  77. package/lib/url-json-rpc-provider.js +153 -0
  78. package/lib/url-json-rpc-provider.js.map +1 -0
  79. package/lib/web3-provider.d.ts +28 -0
  80. package/lib/web3-provider.d.ts.map +1 -0
  81. package/lib/web3-provider.js +155 -0
  82. package/lib/web3-provider.js.map +1 -0
  83. package/lib/websocket-provider.d.ts +48 -0
  84. package/lib/websocket-provider.d.ts.map +1 -0
  85. package/lib/websocket-provider.js +384 -0
  86. package/lib/websocket-provider.js.map +1 -0
  87. package/lib/ws.d.ts +3 -0
  88. package/lib/ws.d.ts.map +1 -0
  89. package/lib/ws.js +9 -0
  90. package/lib/ws.js.map +1 -0
  91. package/package.json +57 -0
  92. package/src.ts/_version.ts +1 -0
  93. package/src.ts/alchemy-provider.ts +101 -0
  94. package/src.ts/ankr-provider.ts +68 -0
  95. package/src.ts/base-provider.ts +2216 -0
  96. package/src.ts/browser-ipc-provider.ts +7 -0
  97. package/src.ts/browser-net.ts +3 -0
  98. package/src.ts/browser-ws.ts +21 -0
  99. package/src.ts/cloudflare-provider.ts +42 -0
  100. package/src.ts/etherscan-provider.ts +454 -0
  101. package/src.ts/fallback-provider.ts +654 -0
  102. package/src.ts/formatter.ts +522 -0
  103. package/src.ts/index.ts +178 -0
  104. package/src.ts/infura-provider.ts +143 -0
  105. package/src.ts/ipc-provider.ts +72 -0
  106. package/src.ts/json-rpc-batch-provider.ts +97 -0
  107. package/src.ts/json-rpc-provider.ts +742 -0
  108. package/src.ts/nodesmith-provider.ts +50 -0
  109. package/src.ts/pocket-provider.ts +93 -0
  110. package/src.ts/url-json-rpc-provider.ts +106 -0
  111. package/src.ts/web3-provider.ts +169 -0
  112. package/src.ts/websocket-provider.ts +350 -0
  113. package/src.ts/ws.ts +3 -0
  114. package/thirdparty.d.ts +10 -0
@@ -0,0 +1,528 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.EtherscanProvider = void 0;
55
+ var bytes_1 = require("@qevm/bytes");
56
+ var properties_1 = require("@ethersproject/properties");
57
+ var transactions_1 = require("@qevm/transactions");
58
+ var web_1 = require("@ethersproject/web");
59
+ var formatter_1 = require("./formatter");
60
+ var logger_1 = require("@ethersproject/logger");
61
+ var _version_1 = require("./_version");
62
+ var logger = new logger_1.Logger(_version_1.version);
63
+ var base_provider_1 = require("./base-provider");
64
+ // The transaction has already been sanitized by the calls in Provider
65
+ function getTransactionPostData(transaction) {
66
+ var result = {};
67
+ for (var key in transaction) {
68
+ if (transaction[key] == null) {
69
+ continue;
70
+ }
71
+ var value = transaction[key];
72
+ if (key === "type" && value === 0) {
73
+ continue;
74
+ }
75
+ // Quantity-types require no leading zero, unless 0
76
+ if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {
77
+ value = (0, bytes_1.hexValue)((0, bytes_1.hexlify)(value));
78
+ }
79
+ else if (key === "accessList") {
80
+ value = "[" + (0, transactions_1.accessListify)(value).map(function (set) {
81
+ return "{address:\"" + set.address + "\",storageKeys:[\"" + set.storageKeys.join('","') + "\"]}";
82
+ }).join(",") + "]";
83
+ }
84
+ else {
85
+ value = (0, bytes_1.hexlify)(value);
86
+ }
87
+ result[key] = value;
88
+ }
89
+ return result;
90
+ }
91
+ function getResult(result) {
92
+ // getLogs, getHistory have weird success responses
93
+ if (result.status == 0 && (result.message === "No records found" || result.message === "No transactions found")) {
94
+ return result.result;
95
+ }
96
+ if (result.status != 1 || typeof (result.message) !== "string" || !result.message.match(/^OK/)) {
97
+ var error = new Error("invalid response");
98
+ error.result = JSON.stringify(result);
99
+ if ((result.result || "").toLowerCase().indexOf("rate limit") >= 0) {
100
+ error.throttleRetry = true;
101
+ }
102
+ throw error;
103
+ }
104
+ return result.result;
105
+ }
106
+ function getJsonResult(result) {
107
+ // This response indicates we are being throttled
108
+ if (result && result.status == 0 && result.message == "NOTOK" && (result.result || "").toLowerCase().indexOf("rate limit") >= 0) {
109
+ var error = new Error("throttled response");
110
+ error.result = JSON.stringify(result);
111
+ error.throttleRetry = true;
112
+ throw error;
113
+ }
114
+ if (result.jsonrpc != "2.0") {
115
+ // @TODO: not any
116
+ var error = new Error("invalid response");
117
+ error.result = JSON.stringify(result);
118
+ throw error;
119
+ }
120
+ if (result.error) {
121
+ // @TODO: not any
122
+ var error = new Error(result.error.message || "unknown error");
123
+ if (result.error.code) {
124
+ error.code = result.error.code;
125
+ }
126
+ if (result.error.data) {
127
+ error.data = result.error.data;
128
+ }
129
+ throw error;
130
+ }
131
+ return result.result;
132
+ }
133
+ // The blockTag was normalized as a string by the Provider pre-perform operations
134
+ function checkLogTag(blockTag) {
135
+ if (blockTag === "pending") {
136
+ throw new Error("pending not supported");
137
+ }
138
+ if (blockTag === "latest") {
139
+ return blockTag;
140
+ }
141
+ return parseInt(blockTag.substring(2), 16);
142
+ }
143
+ function checkError(method, error, transaction) {
144
+ // Undo the "convenience" some nodes are attempting to prevent backwards
145
+ // incompatibility; maybe for v6 consider forwarding reverts as errors
146
+ if (method === "call" && error.code === logger_1.Logger.errors.SERVER_ERROR) {
147
+ var e = error.error;
148
+ // Etherscan keeps changing their string
149
+ if (e && (e.message.match(/reverted/i) || e.message.match(/VM execution error/i))) {
150
+ // Etherscan prefixes the data like "Reverted 0x1234"
151
+ var data = e.data;
152
+ if (data) {
153
+ data = "0x" + data.replace(/^.*0x/i, "");
154
+ }
155
+ if ((0, bytes_1.isHexString)(data)) {
156
+ return data;
157
+ }
158
+ logger.throwError("missing revert data in call exception", logger_1.Logger.errors.CALL_EXCEPTION, {
159
+ error: error,
160
+ data: "0x"
161
+ });
162
+ }
163
+ }
164
+ // Get the message from any nested error structure
165
+ var message = error.message;
166
+ if (error.code === logger_1.Logger.errors.SERVER_ERROR) {
167
+ if (error.error && typeof (error.error.message) === "string") {
168
+ message = error.error.message;
169
+ }
170
+ else if (typeof (error.body) === "string") {
171
+ message = error.body;
172
+ }
173
+ else if (typeof (error.responseText) === "string") {
174
+ message = error.responseText;
175
+ }
176
+ }
177
+ message = (message || "").toLowerCase();
178
+ // "Insufficient funds. The account you tried to send transaction from does not have enough funds. Required 21464000000000 and got: 0"
179
+ if (message.match(/insufficient funds/)) {
180
+ logger.throwError("insufficient funds for intrinsic transaction cost", logger_1.Logger.errors.INSUFFICIENT_FUNDS, {
181
+ error: error,
182
+ method: method,
183
+ transaction: transaction
184
+ });
185
+ }
186
+ // "Transaction with the same hash was already imported."
187
+ if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {
188
+ logger.throwError("nonce has already been used", logger_1.Logger.errors.NONCE_EXPIRED, {
189
+ error: error,
190
+ method: method,
191
+ transaction: transaction
192
+ });
193
+ }
194
+ // "Transaction gas price is too low. There is another transaction with same nonce in the queue. Try increasing the gas price or incrementing the nonce."
195
+ if (message.match(/another transaction with same nonce/)) {
196
+ logger.throwError("replacement fee too low", logger_1.Logger.errors.REPLACEMENT_UNDERPRICED, {
197
+ error: error,
198
+ method: method,
199
+ transaction: transaction
200
+ });
201
+ }
202
+ if (message.match(/execution failed due to an exception|execution reverted/)) {
203
+ logger.throwError("cannot estimate gas; transaction may fail or may require manual gas limit", logger_1.Logger.errors.UNPREDICTABLE_GAS_LIMIT, {
204
+ error: error,
205
+ method: method,
206
+ transaction: transaction
207
+ });
208
+ }
209
+ throw error;
210
+ }
211
+ var EtherscanProvider = /** @class */ (function (_super) {
212
+ __extends(EtherscanProvider, _super);
213
+ function EtherscanProvider(network, apiKey) {
214
+ var _this = _super.call(this, network) || this;
215
+ (0, properties_1.defineReadOnly)(_this, "baseUrl", _this.getBaseUrl());
216
+ (0, properties_1.defineReadOnly)(_this, "apiKey", apiKey || null);
217
+ return _this;
218
+ }
219
+ EtherscanProvider.prototype.getBaseUrl = function () {
220
+ switch (this.network ? this.network.name : "invalid") {
221
+ case "homestead":
222
+ return "https:/\/api.etherscan.io";
223
+ case "goerli":
224
+ return "https:/\/api-goerli.etherscan.io";
225
+ case "sepolia":
226
+ return "https:/\/api-sepolia.etherscan.io";
227
+ case "matic":
228
+ return "https:/\/api.polygonscan.com";
229
+ case "maticmum":
230
+ return "https:/\/api-testnet.polygonscan.com";
231
+ case "arbitrum":
232
+ return "https:/\/api.arbiscan.io";
233
+ case "arbitrum-goerli":
234
+ return "https:/\/api-goerli.arbiscan.io";
235
+ case "optimism":
236
+ return "https:/\/api-optimistic.etherscan.io";
237
+ case "optimism-goerli":
238
+ return "https:/\/api-goerli-optimistic.etherscan.io";
239
+ default:
240
+ }
241
+ return logger.throwArgumentError("unsupported network", "network", this.network.name);
242
+ };
243
+ EtherscanProvider.prototype.getUrl = function (module, params) {
244
+ var query = Object.keys(params).reduce(function (accum, key) {
245
+ var value = params[key];
246
+ if (value != null) {
247
+ accum += "&" + key + "=" + value;
248
+ }
249
+ return accum;
250
+ }, "");
251
+ var apiKey = ((this.apiKey) ? "&apikey=" + this.apiKey : "");
252
+ return this.baseUrl + "/api?module=" + module + query + apiKey;
253
+ };
254
+ EtherscanProvider.prototype.getPostUrl = function () {
255
+ return this.baseUrl + "/api";
256
+ };
257
+ EtherscanProvider.prototype.getPostData = function (module, params) {
258
+ params.module = module;
259
+ params.apikey = this.apiKey;
260
+ return params;
261
+ };
262
+ EtherscanProvider.prototype.fetch = function (module, params, post) {
263
+ return __awaiter(this, void 0, void 0, function () {
264
+ var url, payload, procFunc, connection, payloadStr, result;
265
+ var _this = this;
266
+ return __generator(this, function (_a) {
267
+ switch (_a.label) {
268
+ case 0:
269
+ url = (post ? this.getPostUrl() : this.getUrl(module, params));
270
+ payload = (post ? this.getPostData(module, params) : null);
271
+ procFunc = (module === "proxy") ? getJsonResult : getResult;
272
+ this.emit("debug", {
273
+ action: "request",
274
+ request: url,
275
+ provider: this
276
+ });
277
+ connection = {
278
+ url: url,
279
+ throttleSlotInterval: 1000,
280
+ throttleCallback: function (attempt, url) {
281
+ if (_this.isCommunityResource()) {
282
+ (0, formatter_1.showThrottleMessage)();
283
+ }
284
+ return Promise.resolve(true);
285
+ }
286
+ };
287
+ payloadStr = null;
288
+ if (payload) {
289
+ connection.headers = { "content-type": "application/x-www-form-urlencoded; charset=UTF-8" };
290
+ payloadStr = Object.keys(payload).map(function (key) {
291
+ return key + "=" + payload[key];
292
+ }).join("&");
293
+ }
294
+ return [4 /*yield*/, (0, web_1.fetchJson)(connection, payloadStr, procFunc || getJsonResult)];
295
+ case 1:
296
+ result = _a.sent();
297
+ this.emit("debug", {
298
+ action: "response",
299
+ request: url,
300
+ response: (0, properties_1.deepCopy)(result),
301
+ provider: this
302
+ });
303
+ return [2 /*return*/, result];
304
+ }
305
+ });
306
+ });
307
+ };
308
+ EtherscanProvider.prototype.detectNetwork = function () {
309
+ return __awaiter(this, void 0, void 0, function () {
310
+ return __generator(this, function (_a) {
311
+ return [2 /*return*/, this.network];
312
+ });
313
+ });
314
+ };
315
+ EtherscanProvider.prototype.perform = function (method, params) {
316
+ return __awaiter(this, void 0, void 0, function () {
317
+ var _a, postData, error_1, postData, error_2, args, topic0, logs, blocks, i, log, block, _b;
318
+ return __generator(this, function (_c) {
319
+ switch (_c.label) {
320
+ case 0:
321
+ _a = method;
322
+ switch (_a) {
323
+ case "getBlockNumber": return [3 /*break*/, 1];
324
+ case "getGasPrice": return [3 /*break*/, 2];
325
+ case "getBalance": return [3 /*break*/, 3];
326
+ case "getTransactionCount": return [3 /*break*/, 4];
327
+ case "getCode": return [3 /*break*/, 5];
328
+ case "getStorageAt": return [3 /*break*/, 6];
329
+ case "sendTransaction": return [3 /*break*/, 7];
330
+ case "getBlock": return [3 /*break*/, 8];
331
+ case "getTransaction": return [3 /*break*/, 9];
332
+ case "getTransactionReceipt": return [3 /*break*/, 10];
333
+ case "call": return [3 /*break*/, 11];
334
+ case "estimateGas": return [3 /*break*/, 15];
335
+ case "getLogs": return [3 /*break*/, 19];
336
+ case "getEtherPrice": return [3 /*break*/, 26];
337
+ }
338
+ return [3 /*break*/, 28];
339
+ case 1: return [2 /*return*/, this.fetch("proxy", { action: "eth_blockNumber" })];
340
+ case 2: return [2 /*return*/, this.fetch("proxy", { action: "eth_gasPrice" })];
341
+ case 3:
342
+ // Returns base-10 result
343
+ return [2 /*return*/, this.fetch("account", {
344
+ action: "balance",
345
+ address: params.address,
346
+ tag: params.blockTag
347
+ })];
348
+ case 4: return [2 /*return*/, this.fetch("proxy", {
349
+ action: "eth_getTransactionCount",
350
+ address: params.address,
351
+ tag: params.blockTag
352
+ })];
353
+ case 5: return [2 /*return*/, this.fetch("proxy", {
354
+ action: "eth_getCode",
355
+ address: params.address,
356
+ tag: params.blockTag
357
+ })];
358
+ case 6: return [2 /*return*/, this.fetch("proxy", {
359
+ action: "eth_getStorageAt",
360
+ address: params.address,
361
+ position: params.position,
362
+ tag: params.blockTag
363
+ })];
364
+ case 7: return [2 /*return*/, this.fetch("proxy", {
365
+ action: "eth_sendRawTransaction",
366
+ hex: params.signedTransaction
367
+ }, true).catch(function (error) {
368
+ return checkError("sendTransaction", error, params.signedTransaction);
369
+ })];
370
+ case 8:
371
+ if (params.blockTag) {
372
+ return [2 /*return*/, this.fetch("proxy", {
373
+ action: "eth_getBlockByNumber",
374
+ tag: params.blockTag,
375
+ boolean: (params.includeTransactions ? "true" : "false")
376
+ })];
377
+ }
378
+ throw new Error("getBlock by blockHash not implemented");
379
+ case 9: return [2 /*return*/, this.fetch("proxy", {
380
+ action: "eth_getTransactionByHash",
381
+ txhash: params.transactionHash
382
+ })];
383
+ case 10: return [2 /*return*/, this.fetch("proxy", {
384
+ action: "eth_getTransactionReceipt",
385
+ txhash: params.transactionHash
386
+ })];
387
+ case 11:
388
+ if (params.blockTag !== "latest") {
389
+ throw new Error("EtherscanProvider does not support blockTag for call");
390
+ }
391
+ postData = getTransactionPostData(params.transaction);
392
+ postData.module = "proxy";
393
+ postData.action = "eth_call";
394
+ _c.label = 12;
395
+ case 12:
396
+ _c.trys.push([12, 14, , 15]);
397
+ return [4 /*yield*/, this.fetch("proxy", postData, true)];
398
+ case 13: return [2 /*return*/, _c.sent()];
399
+ case 14:
400
+ error_1 = _c.sent();
401
+ return [2 /*return*/, checkError("call", error_1, params.transaction)];
402
+ case 15:
403
+ postData = getTransactionPostData(params.transaction);
404
+ postData.module = "proxy";
405
+ postData.action = "eth_estimateGas";
406
+ _c.label = 16;
407
+ case 16:
408
+ _c.trys.push([16, 18, , 19]);
409
+ return [4 /*yield*/, this.fetch("proxy", postData, true)];
410
+ case 17: return [2 /*return*/, _c.sent()];
411
+ case 18:
412
+ error_2 = _c.sent();
413
+ return [2 /*return*/, checkError("estimateGas", error_2, params.transaction)];
414
+ case 19:
415
+ args = { action: "getLogs" };
416
+ if (params.filter.fromBlock) {
417
+ args.fromBlock = checkLogTag(params.filter.fromBlock);
418
+ }
419
+ if (params.filter.toBlock) {
420
+ args.toBlock = checkLogTag(params.filter.toBlock);
421
+ }
422
+ if (params.filter.address) {
423
+ args.address = params.filter.address;
424
+ }
425
+ // @TODO: We can handle slightly more complicated logs using the logs API
426
+ if (params.filter.topics && params.filter.topics.length > 0) {
427
+ if (params.filter.topics.length > 1) {
428
+ logger.throwError("unsupported topic count", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });
429
+ }
430
+ if (params.filter.topics.length === 1) {
431
+ topic0 = params.filter.topics[0];
432
+ if (typeof (topic0) !== "string" || topic0.length !== 66) {
433
+ logger.throwError("unsupported topic format", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { topic0: topic0 });
434
+ }
435
+ args.topic0 = topic0;
436
+ }
437
+ }
438
+ return [4 /*yield*/, this.fetch("logs", args)];
439
+ case 20:
440
+ logs = _c.sent();
441
+ blocks = {};
442
+ i = 0;
443
+ _c.label = 21;
444
+ case 21:
445
+ if (!(i < logs.length)) return [3 /*break*/, 25];
446
+ log = logs[i];
447
+ if (log.blockHash != null) {
448
+ return [3 /*break*/, 24];
449
+ }
450
+ if (!(blocks[log.blockNumber] == null)) return [3 /*break*/, 23];
451
+ return [4 /*yield*/, this.getBlock(log.blockNumber)];
452
+ case 22:
453
+ block = _c.sent();
454
+ if (block) {
455
+ blocks[log.blockNumber] = block.hash;
456
+ }
457
+ _c.label = 23;
458
+ case 23:
459
+ log.blockHash = blocks[log.blockNumber];
460
+ _c.label = 24;
461
+ case 24:
462
+ i++;
463
+ return [3 /*break*/, 21];
464
+ case 25: return [2 /*return*/, logs];
465
+ case 26:
466
+ if (this.network.name !== "homestead") {
467
+ return [2 /*return*/, 0.0];
468
+ }
469
+ _b = parseFloat;
470
+ return [4 /*yield*/, this.fetch("stats", { action: "ethprice" })];
471
+ case 27: return [2 /*return*/, _b.apply(void 0, [(_c.sent()).ethusd])];
472
+ case 28: return [3 /*break*/, 29];
473
+ case 29: return [2 /*return*/, _super.prototype.perform.call(this, method, params)];
474
+ }
475
+ });
476
+ });
477
+ };
478
+ // Note: The `page` page parameter only allows pagination within the
479
+ // 10,000 window available without a page and offset parameter
480
+ // Error: Result window is too large, PageNo x Offset size must
481
+ // be less than or equal to 10000
482
+ EtherscanProvider.prototype.getHistory = function (addressOrName, startBlock, endBlock) {
483
+ return __awaiter(this, void 0, void 0, function () {
484
+ var params, result;
485
+ var _a;
486
+ var _this = this;
487
+ return __generator(this, function (_b) {
488
+ switch (_b.label) {
489
+ case 0:
490
+ _a = {
491
+ action: "txlist"
492
+ };
493
+ return [4 /*yield*/, this.resolveName(addressOrName)];
494
+ case 1:
495
+ params = (_a.address = (_b.sent()),
496
+ _a.startblock = ((startBlock == null) ? 0 : startBlock),
497
+ _a.endblock = ((endBlock == null) ? 99999999 : endBlock),
498
+ _a.sort = "asc",
499
+ _a);
500
+ return [4 /*yield*/, this.fetch("account", params)];
501
+ case 2:
502
+ result = _b.sent();
503
+ return [2 /*return*/, result.map(function (tx) {
504
+ ["contractAddress", "to"].forEach(function (key) {
505
+ if (tx[key] == "") {
506
+ delete tx[key];
507
+ }
508
+ });
509
+ if (tx.creates == null && tx.contractAddress != null) {
510
+ tx.creates = tx.contractAddress;
511
+ }
512
+ var item = _this.formatter.transactionResponse(tx);
513
+ if (tx.timeStamp) {
514
+ item.timestamp = parseInt(tx.timeStamp);
515
+ }
516
+ return item;
517
+ })];
518
+ }
519
+ });
520
+ });
521
+ };
522
+ EtherscanProvider.prototype.isCommunityResource = function () {
523
+ return (this.apiKey == null);
524
+ };
525
+ return EtherscanProvider;
526
+ }(base_provider_1.BaseProvider));
527
+ exports.EtherscanProvider = EtherscanProvider;
528
+ //# sourceMappingURL=etherscan-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"etherscan-provider.js","sourceRoot":"","sources":["../src.ts/etherscan-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Provider } from "@qevm/abstract-provider";
2
+ import { Network } from "@ethersproject/networks";
3
+ import { BaseProvider } from "./base-provider";
4
+ export interface FallbackProviderConfig {
5
+ provider: Provider;
6
+ priority?: number;
7
+ stallTimeout?: number;
8
+ weight?: number;
9
+ }
10
+ export declare class FallbackProvider extends BaseProvider {
11
+ readonly providerConfigs: ReadonlyArray<FallbackProviderConfig>;
12
+ readonly quorum: number;
13
+ _highestBlockNumber: number;
14
+ constructor(providers: Array<Provider | FallbackProviderConfig>, quorum?: number);
15
+ detectNetwork(): Promise<Network>;
16
+ perform(method: string, params: {
17
+ [name: string]: any;
18
+ }): Promise<any>;
19
+ }
20
+ //# sourceMappingURL=fallback-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallback-provider.d.ts","sourceRoot":"","sources":["../src.ts/fallback-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGjF,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAKlD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAsF/C,MAAM,WAAW,sBAAsB;IAEnC,QAAQ,EAAE,QAAQ,CAAC;IAGnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAOlB,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAmSD,qBAAa,gBAAiB,SAAQ,YAAY;IAC9C,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAKxB,mBAAmB,EAAE,MAAM,CAAC;gBAEhB,SAAS,EAAE,KAAK,CAAC,QAAQ,GAAG,sBAAsB,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM;IAyD1E,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAKjC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;CAiL/E"}