hardhat 2.7.0 → 2.8.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 (355) hide show
  1. package/builtin-tasks/check.js +1 -1
  2. package/builtin-tasks/check.js.map +1 -1
  3. package/builtin-tasks/clean.js +3 -3
  4. package/builtin-tasks/clean.js.map +1 -1
  5. package/builtin-tasks/compile.js +48 -48
  6. package/builtin-tasks/compile.js.map +1 -1
  7. package/builtin-tasks/console.js +3 -3
  8. package/builtin-tasks/console.js.map +1 -1
  9. package/builtin-tasks/flatten.js +8 -6
  10. package/builtin-tasks/flatten.js.map +1 -1
  11. package/builtin-tasks/help.js +2 -2
  12. package/builtin-tasks/help.js.map +1 -1
  13. package/builtin-tasks/node.js +19 -13
  14. package/builtin-tasks/node.js.map +1 -1
  15. package/builtin-tasks/run.js +11 -7
  16. package/builtin-tasks/run.js.map +1 -1
  17. package/builtin-tasks/test.js +12 -11
  18. package/builtin-tasks/test.js.map +1 -1
  19. package/builtin-tasks/utils/solidity-files-cache.js +1 -1
  20. package/builtin-tasks/utils/solidity-files-cache.js.map +1 -1
  21. package/builtin-tasks/utils/watch.d.ts.map +1 -1
  22. package/builtin-tasks/utils/watch.js +4 -2
  23. package/builtin-tasks/utils/watch.js.map +1 -1
  24. package/internal/artifacts.js +17 -17
  25. package/internal/artifacts.js.map +1 -1
  26. package/internal/cli/analytics.js +10 -9
  27. package/internal/cli/analytics.js.map +1 -1
  28. package/internal/cli/autocomplete.js +7 -7
  29. package/internal/cli/autocomplete.js.map +1 -1
  30. package/internal/cli/bootstrap.js +2 -2
  31. package/internal/cli/bootstrap.js.map +1 -1
  32. package/internal/cli/cli.js +18 -16
  33. package/internal/cli/cli.js.map +1 -1
  34. package/internal/cli/project-creation.js +14 -14
  35. package/internal/cli/project-creation.js.map +1 -1
  36. package/internal/constants.d.ts.map +1 -1
  37. package/internal/constants.js +1 -0
  38. package/internal/constants.js.map +1 -1
  39. package/internal/context.d.ts +1 -2
  40. package/internal/context.d.ts.map +1 -1
  41. package/internal/context.js +3 -3
  42. package/internal/context.js.map +1 -1
  43. package/internal/core/config/config-loading.d.ts +3 -2
  44. package/internal/core/config/config-loading.d.ts.map +1 -1
  45. package/internal/core/config/config-loading.js +25 -8
  46. package/internal/core/config/config-loading.js.map +1 -1
  47. package/internal/core/config/config-resolution.d.ts.map +1 -1
  48. package/internal/core/config/config-resolution.js +29 -12
  49. package/internal/core/config/config-resolution.js.map +1 -1
  50. package/internal/core/config/config-validation.d.ts.map +1 -1
  51. package/internal/core/config/config-validation.js +68 -30
  52. package/internal/core/config/config-validation.js.map +1 -1
  53. package/internal/core/config/default-config.d.ts.map +1 -1
  54. package/internal/core/config/default-config.js +59 -1
  55. package/internal/core/config/default-config.js.map +1 -1
  56. package/internal/core/errors.js +3 -3
  57. package/internal/core/errors.js.map +1 -1
  58. package/internal/core/execution-mode.js +2 -2
  59. package/internal/core/execution-mode.js.map +1 -1
  60. package/internal/core/jsonrpc/types/access-list.d.ts +0 -1
  61. package/internal/core/jsonrpc/types/access-list.d.ts.map +1 -1
  62. package/internal/core/jsonrpc/types/access-list.js +1 -1
  63. package/internal/core/jsonrpc/types/access-list.js.map +1 -1
  64. package/internal/core/jsonrpc/types/base-types.js +9 -9
  65. package/internal/core/jsonrpc/types/base-types.js.map +1 -1
  66. package/internal/core/jsonrpc/types/input/blockTag.d.ts +3 -4
  67. package/internal/core/jsonrpc/types/input/blockTag.d.ts.map +1 -1
  68. package/internal/core/jsonrpc/types/input/blockTag.js +3 -3
  69. package/internal/core/jsonrpc/types/input/blockTag.js.map +1 -1
  70. package/internal/core/jsonrpc/types/input/callRequest.d.ts +0 -1
  71. package/internal/core/jsonrpc/types/input/callRequest.d.ts.map +1 -1
  72. package/internal/core/jsonrpc/types/input/callRequest.js +9 -9
  73. package/internal/core/jsonrpc/types/input/callRequest.js.map +1 -1
  74. package/internal/core/jsonrpc/types/input/debugTraceTransaction.js +4 -4
  75. package/internal/core/jsonrpc/types/input/debugTraceTransaction.js.map +1 -1
  76. package/internal/core/jsonrpc/types/input/filterRequest.d.ts +0 -1
  77. package/internal/core/jsonrpc/types/input/filterRequest.d.ts.map +1 -1
  78. package/internal/core/jsonrpc/types/input/filterRequest.js +2 -2
  79. package/internal/core/jsonrpc/types/input/filterRequest.js.map +1 -1
  80. package/internal/core/jsonrpc/types/input/hardhat-network.js +4 -4
  81. package/internal/core/jsonrpc/types/input/hardhat-network.js.map +1 -1
  82. package/internal/core/jsonrpc/types/input/logAddress.js +1 -1
  83. package/internal/core/jsonrpc/types/input/logAddress.js.map +1 -1
  84. package/internal/core/jsonrpc/types/input/logTopics.js +1 -1
  85. package/internal/core/jsonrpc/types/input/logTopics.js.map +1 -1
  86. package/internal/core/jsonrpc/types/input/transactionRequest.d.ts +0 -1
  87. package/internal/core/jsonrpc/types/input/transactionRequest.d.ts.map +1 -1
  88. package/internal/core/jsonrpc/types/input/transactionRequest.js +10 -10
  89. package/internal/core/jsonrpc/types/input/transactionRequest.js.map +1 -1
  90. package/internal/core/jsonrpc/types/output/block.d.ts +0 -1
  91. package/internal/core/jsonrpc/types/output/block.d.ts.map +1 -1
  92. package/internal/core/jsonrpc/types/output/block.js +5 -5
  93. package/internal/core/jsonrpc/types/output/block.js.map +1 -1
  94. package/internal/core/jsonrpc/types/output/log.d.ts +0 -1
  95. package/internal/core/jsonrpc/types/output/log.d.ts.map +1 -1
  96. package/internal/core/jsonrpc/types/output/log.js +5 -5
  97. package/internal/core/jsonrpc/types/output/log.js.map +1 -1
  98. package/internal/core/jsonrpc/types/output/receipt.d.ts +0 -1
  99. package/internal/core/jsonrpc/types/output/receipt.d.ts.map +1 -1
  100. package/internal/core/jsonrpc/types/output/receipt.js +6 -6
  101. package/internal/core/jsonrpc/types/output/receipt.js.map +1 -1
  102. package/internal/core/jsonrpc/types/output/transaction.d.ts +0 -1
  103. package/internal/core/jsonrpc/types/output/transaction.d.ts.map +1 -1
  104. package/internal/core/jsonrpc/types/output/transaction.js +9 -9
  105. package/internal/core/jsonrpc/types/output/transaction.js.map +1 -1
  106. package/internal/core/params/argumentTypes.d.ts.map +1 -1
  107. package/internal/core/params/argumentTypes.js +25 -13
  108. package/internal/core/params/argumentTypes.js.map +1 -1
  109. package/internal/core/params/env-variables.d.ts.map +1 -1
  110. package/internal/core/params/env-variables.js +9 -5
  111. package/internal/core/params/env-variables.js.map +1 -1
  112. package/internal/core/project-structure.js +1 -1
  113. package/internal/core/project-structure.js.map +1 -1
  114. package/internal/core/providers/accounts.d.ts.map +1 -1
  115. package/internal/core/providers/accounts.js +9 -8
  116. package/internal/core/providers/accounts.js.map +1 -1
  117. package/internal/core/providers/backwards-compatibility.js.map +1 -1
  118. package/internal/core/providers/chainId.js +3 -3
  119. package/internal/core/providers/chainId.js.map +1 -1
  120. package/internal/core/providers/construction.d.ts.map +1 -1
  121. package/internal/core/providers/construction.js +4 -4
  122. package/internal/core/providers/construction.js.map +1 -1
  123. package/internal/core/providers/gas-providers.d.ts.map +1 -1
  124. package/internal/core/providers/gas-providers.js +19 -17
  125. package/internal/core/providers/gas-providers.js.map +1 -1
  126. package/internal/core/providers/http.js +1 -1
  127. package/internal/core/providers/http.js.map +1 -1
  128. package/internal/core/providers/util.js +1 -1
  129. package/internal/core/providers/util.js.map +1 -1
  130. package/internal/core/providers/wrapper.d.ts.map +1 -1
  131. package/internal/core/runtime-environment.d.ts.map +1 -1
  132. package/internal/core/runtime-environment.js +7 -5
  133. package/internal/core/runtime-environment.js.map +1 -1
  134. package/internal/core/typescript-support.js +4 -4
  135. package/internal/core/typescript-support.js.map +1 -1
  136. package/internal/hardhat-network/jsonrpc/client.js +23 -23
  137. package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
  138. package/internal/hardhat-network/jsonrpc/handler.d.ts +1 -1
  139. package/internal/hardhat-network/jsonrpc/handler.d.ts.map +1 -1
  140. package/internal/hardhat-network/jsonrpc/handler.js +18 -9
  141. package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
  142. package/internal/hardhat-network/jsonrpc/server.js +3 -3
  143. package/internal/hardhat-network/jsonrpc/server.js.map +1 -1
  144. package/internal/hardhat-network/provider/BlockchainData.d.ts +1 -1
  145. package/internal/hardhat-network/provider/BlockchainData.js +12 -12
  146. package/internal/hardhat-network/provider/BlockchainData.js.map +1 -1
  147. package/internal/hardhat-network/provider/HardhatBlockchain.js +2 -2
  148. package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
  149. package/internal/hardhat-network/provider/PoolState.js +6 -6
  150. package/internal/hardhat-network/provider/PoolState.js.map +1 -1
  151. package/internal/hardhat-network/provider/TxPool.js +19 -19
  152. package/internal/hardhat-network/provider/TxPool.js.map +1 -1
  153. package/internal/hardhat-network/provider/filter.js +3 -3
  154. package/internal/hardhat-network/provider/filter.js.map +1 -1
  155. package/internal/hardhat-network/provider/fork/AccountState.js +4 -4
  156. package/internal/hardhat-network/provider/fork/AccountState.js.map +1 -1
  157. package/internal/hardhat-network/provider/fork/ForkBlockchain.js +7 -7
  158. package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
  159. package/internal/hardhat-network/provider/fork/ForkStateManager.js +34 -34
  160. package/internal/hardhat-network/provider/fork/ForkStateManager.js.map +1 -1
  161. package/internal/hardhat-network/provider/fork/random.d.ts +0 -1
  162. package/internal/hardhat-network/provider/fork/random.d.ts.map +1 -1
  163. package/internal/hardhat-network/provider/fork/random.js +13 -8
  164. package/internal/hardhat-network/provider/fork/random.js.map +1 -1
  165. package/internal/hardhat-network/provider/fork/rpcToBlockData.js +1 -0
  166. package/internal/hardhat-network/provider/fork/rpcToBlockData.js.map +1 -1
  167. package/internal/hardhat-network/provider/fork/rpcToTxData.js.map +1 -1
  168. package/internal/hardhat-network/provider/modules/debug.js +1 -1
  169. package/internal/hardhat-network/provider/modules/debug.js.map +1 -1
  170. package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
  171. package/internal/hardhat-network/provider/modules/eth.js +86 -84
  172. package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
  173. package/internal/hardhat-network/provider/modules/evm.js +9 -9
  174. package/internal/hardhat-network/provider/modules/evm.js.map +1 -1
  175. package/internal/hardhat-network/provider/modules/hardhat.js +16 -16
  176. package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
  177. package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -1
  178. package/internal/hardhat-network/provider/modules/logger.js +30 -25
  179. package/internal/hardhat-network/provider/modules/logger.js.map +1 -1
  180. package/internal/hardhat-network/provider/modules/net.js +2 -2
  181. package/internal/hardhat-network/provider/modules/net.js.map +1 -1
  182. package/internal/hardhat-network/provider/modules/personal.js +2 -2
  183. package/internal/hardhat-network/provider/modules/personal.js.map +1 -1
  184. package/internal/hardhat-network/provider/modules/web3.js +4 -4
  185. package/internal/hardhat-network/provider/modules/web3.js.map +1 -1
  186. package/internal/hardhat-network/provider/node-types.d.ts +2 -1
  187. package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
  188. package/internal/hardhat-network/provider/node.d.ts +7 -1
  189. package/internal/hardhat-network/provider/node.d.ts.map +1 -1
  190. package/internal/hardhat-network/provider/node.js +141 -76
  191. package/internal/hardhat-network/provider/node.js.map +1 -1
  192. package/internal/hardhat-network/provider/output.js +87 -87
  193. package/internal/hardhat-network/provider/output.js.map +1 -1
  194. package/internal/hardhat-network/provider/provider.d.ts +3 -2
  195. package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
  196. package/internal/hardhat-network/provider/provider.js +5 -3
  197. package/internal/hardhat-network/provider/provider.js.map +1 -1
  198. package/internal/hardhat-network/provider/return-data.js +4 -4
  199. package/internal/hardhat-network/provider/return-data.js.map +1 -1
  200. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
  201. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
  202. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
  203. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +1 -1
  204. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
  205. package/internal/hardhat-network/provider/utils/bnToHex.js +1 -1
  206. package/internal/hardhat-network/provider/utils/bnToHex.js.map +1 -1
  207. package/internal/hardhat-network/provider/utils/fork-recomendations-banner.js.map +1 -1
  208. package/internal/hardhat-network/provider/utils/makeAccount.js +4 -4
  209. package/internal/hardhat-network/provider/utils/makeAccount.js.map +1 -1
  210. package/internal/hardhat-network/provider/utils/makeCommon.d.ts +1 -2
  211. package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -1
  212. package/internal/hardhat-network/provider/utils/makeCommon.js +4 -4
  213. package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -1
  214. package/internal/hardhat-network/provider/utils/makeForkClient.js +4 -4
  215. package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
  216. package/internal/hardhat-network/provider/utils/makeStateTrie.js +1 -1
  217. package/internal/hardhat-network/provider/utils/makeStateTrie.js.map +1 -1
  218. package/internal/hardhat-network/provider/utils/txMapToArray.js +1 -1
  219. package/internal/hardhat-network/provider/utils/txMapToArray.js.map +1 -1
  220. package/internal/hardhat-network/stack-traces/compiler-to-model.js +4 -4
  221. package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -1
  222. package/internal/hardhat-network/stack-traces/consoleLogger.js +44 -44
  223. package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
  224. package/internal/hardhat-network/stack-traces/contracts-identifier.js +6 -6
  225. package/internal/hardhat-network/stack-traces/contracts-identifier.js.map +1 -1
  226. package/internal/hardhat-network/stack-traces/debug.js +17 -17
  227. package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
  228. package/internal/hardhat-network/stack-traces/error-inferrer.js +28 -28
  229. package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
  230. package/internal/hardhat-network/stack-traces/mapped-inlined-internal-functions-heuristics.js +3 -3
  231. package/internal/hardhat-network/stack-traces/mapped-inlined-internal-functions-heuristics.js.map +1 -1
  232. package/internal/hardhat-network/stack-traces/model.js +5 -5
  233. package/internal/hardhat-network/stack-traces/model.js.map +1 -1
  234. package/internal/hardhat-network/stack-traces/solidity-errors.js +3 -3
  235. package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
  236. package/internal/hardhat-network/stack-traces/solidityTracer.js +10 -10
  237. package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
  238. package/internal/hardhat-network/stack-traces/source-maps.js +7 -7
  239. package/internal/hardhat-network/stack-traces/source-maps.js.map +1 -1
  240. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +5 -5
  241. package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
  242. package/internal/hardhat-network/stack-traces/vm-trace-decoder.js +2 -2
  243. package/internal/hardhat-network/stack-traces/vm-trace-decoder.js.map +1 -1
  244. package/internal/hardhat-network/stack-traces/vm-tracer.js +3 -3
  245. package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
  246. package/internal/lib/hardhat-lib.js +3 -3
  247. package/internal/lib/hardhat-lib.js.map +1 -1
  248. package/internal/reset.js +1 -1
  249. package/internal/reset.js.map +1 -1
  250. package/internal/sentry/anonymizer.js.map +1 -1
  251. package/internal/sentry/reporter.js +5 -5
  252. package/internal/sentry/reporter.js.map +1 -1
  253. package/internal/sentry/subprocess.js +2 -2
  254. package/internal/sentry/subprocess.js.map +1 -1
  255. package/internal/sentry/transport.js +1 -1
  256. package/internal/sentry/transport.js.map +1 -1
  257. package/internal/solidity/compilation-job.js +4 -4
  258. package/internal/solidity/compilation-job.js.map +1 -1
  259. package/internal/solidity/compiler/downloader.d.ts +1 -1
  260. package/internal/solidity/compiler/downloader.d.ts.map +1 -1
  261. package/internal/solidity/compiler/downloader.js +21 -7
  262. package/internal/solidity/compiler/downloader.js.map +1 -1
  263. package/internal/solidity/compiler/index.js +1 -1
  264. package/internal/solidity/compiler/index.js.map +1 -1
  265. package/internal/solidity/dependencyGraph.js +2 -1
  266. package/internal/solidity/dependencyGraph.js.map +1 -1
  267. package/internal/solidity/parse.js +3 -2
  268. package/internal/solidity/parse.js.map +1 -1
  269. package/internal/solidity/resolver.js +10 -10
  270. package/internal/solidity/resolver.js.map +1 -1
  271. package/internal/util/abi-helpers.js +1 -1
  272. package/internal/util/abi-helpers.js.map +1 -1
  273. package/internal/util/download.d.ts.map +1 -1
  274. package/internal/util/download.js +12 -1
  275. package/internal/util/download.js.map +1 -1
  276. package/internal/util/global-dir.js +1 -1
  277. package/internal/util/global-dir.js.map +1 -1
  278. package/internal/util/hardforks.d.ts +2 -1
  279. package/internal/util/hardforks.d.ts.map +1 -1
  280. package/internal/util/hardforks.js +3 -1
  281. package/internal/util/hardforks.js.map +1 -1
  282. package/internal/util/jsonrpc.js +1 -1
  283. package/internal/util/jsonrpc.js.map +1 -1
  284. package/internal/util/packageInfo.js +1 -1
  285. package/internal/util/packageInfo.js.map +1 -1
  286. package/internal/util/scripts-runner.js +3 -3
  287. package/internal/util/scripts-runner.js.map +1 -1
  288. package/package.json +14 -14
  289. package/register.js +7 -7
  290. package/register.js.map +1 -1
  291. package/src/builtin-tasks/flatten.ts +4 -2
  292. package/src/builtin-tasks/node.ts +15 -8
  293. package/src/builtin-tasks/run.ts +13 -8
  294. package/src/builtin-tasks/test.ts +2 -0
  295. package/src/builtin-tasks/utils/watch.ts +3 -1
  296. package/src/internal/artifacts.ts +3 -3
  297. package/src/internal/cli/autocomplete.ts +3 -3
  298. package/src/internal/cli/bootstrap.ts +1 -1
  299. package/src/internal/cli/cli.ts +4 -1
  300. package/src/internal/cli/project-creation.ts +3 -3
  301. package/src/internal/constants.ts +1 -0
  302. package/src/internal/context.ts +1 -1
  303. package/src/internal/core/config/config-loading.ts +33 -3
  304. package/src/internal/core/config/config-resolution.ts +33 -3
  305. package/src/internal/core/config/config-validation.ts +70 -0
  306. package/src/internal/core/config/default-config.ts +59 -1
  307. package/src/internal/core/execution-mode.ts +1 -1
  308. package/src/internal/core/params/argumentTypes.ts +40 -25
  309. package/src/internal/core/params/env-variables.ts +13 -8
  310. package/src/internal/core/providers/accounts.ts +4 -3
  311. package/src/internal/core/providers/backwards-compatibility.ts +1 -1
  312. package/src/internal/core/providers/chainId.ts +1 -1
  313. package/src/internal/core/providers/construction.ts +1 -0
  314. package/src/internal/core/providers/gas-providers.ts +6 -4
  315. package/src/internal/core/providers/http.ts +1 -1
  316. package/src/internal/core/providers/wrapper.ts +1 -1
  317. package/src/internal/core/runtime-environment.ts +3 -1
  318. package/src/internal/core/typescript-support.ts +2 -2
  319. package/src/internal/hardhat-network/jsonrpc/client.ts +2 -2
  320. package/src/internal/hardhat-network/jsonrpc/handler.ts +13 -3
  321. package/src/internal/hardhat-network/jsonrpc/server.ts +3 -3
  322. package/src/internal/hardhat-network/provider/TxPool.ts +1 -1
  323. package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +1 -1
  324. package/src/internal/hardhat-network/provider/modules/eth.ts +23 -21
  325. package/src/internal/hardhat-network/provider/modules/hardhat.ts +1 -1
  326. package/src/internal/hardhat-network/provider/modules/logger.ts +13 -9
  327. package/src/internal/hardhat-network/provider/node-types.ts +2 -1
  328. package/src/internal/hardhat-network/provider/node.ts +149 -31
  329. package/src/internal/hardhat-network/provider/provider.ts +4 -1
  330. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +1 -1
  331. package/src/internal/hardhat-network/provider/utils/makeCommon.ts +2 -2
  332. package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +1 -1
  333. package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +3 -3
  334. package/src/internal/reset.ts +1 -1
  335. package/src/internal/sentry/subprocess.ts +2 -2
  336. package/src/internal/solidity/compiler/downloader.ts +27 -12
  337. package/src/internal/solidity/resolver.ts +1 -1
  338. package/src/internal/util/abi-helpers.ts +1 -1
  339. package/src/internal/util/download.ts +17 -1
  340. package/src/internal/util/hardforks.ts +2 -0
  341. package/src/internal/util/jsonrpc.ts +1 -1
  342. package/src/internal/util/packageInfo.ts +1 -1
  343. package/src/internal/util/scripts-runner.ts +1 -1
  344. package/src/types/config.ts +28 -0
  345. package/src/utils/source-names.ts +13 -11
  346. package/types/config.d.ts +16 -0
  347. package/types/config.d.ts.map +1 -1
  348. package/utils/source-names.js +7 -5
  349. package/utils/source-names.js.map +1 -1
  350. package/CHANGELOG.md +0 -71
  351. package/internal/hardhat-network/provider/HardhatStateManager.d.ts +0 -50
  352. package/internal/hardhat-network/provider/HardhatStateManager.d.ts.map +0 -1
  353. package/internal/hardhat-network/provider/HardhatStateManager.js +0 -249
  354. package/internal/hardhat-network/provider/HardhatStateManager.js.map +0 -1
  355. package/src/internal/hardhat-network/provider/HardhatStateManager.ts +0 -349
@@ -185,7 +185,7 @@ async function getCompletionData(): Promise<CompletionData | undefined> {
185
185
  process.env.TS_NODE_TRANSPILE_ONLY = "1";
186
186
  require("../../register");
187
187
  hre = (global as any).hre;
188
- } catch (e) {
188
+ } catch {
189
189
  return undefined;
190
190
  }
191
191
  const filesAfterRequire = Object.keys(require.cache);
@@ -233,7 +233,7 @@ function arePreviousMtimesCorrect(mtimes: Mtimes): boolean {
233
233
  return Object.entries(mtimes).every(
234
234
  ([file, mtime]) => fs.statSync(file).mtime.valueOf() === mtime
235
235
  );
236
- } catch (e) {
236
+ } catch {
237
237
  return false;
238
238
  }
239
239
  }
@@ -264,7 +264,7 @@ async function getCachedCompletionData(
264
264
  try {
265
265
  const cachedCompletionData = fs.readJsonSync(cachedCompletionDataPath);
266
266
  return cachedCompletionData;
267
- } catch (e) {
267
+ } catch {
268
268
  // remove the file if it seems invalid
269
269
  fs.unlinkSync(cachedCompletionDataPath);
270
270
  return undefined;
@@ -34,5 +34,5 @@ const childProcess = fork(`${__dirname}/cli`, process.argv.slice(2), {
34
34
  });
35
35
 
36
36
  childProcess.once("close", (status) => {
37
- process.exit(status);
37
+ process.exit(status as number);
38
38
  });
@@ -126,10 +126,13 @@ async function main() {
126
126
 
127
127
  let taskName = parsedTaskName ?? TASK_HELP;
128
128
 
129
+ const showEmptyConfigWarning = true;
129
130
  const showSolidityConfigWarnings = taskName === TASK_COMPILE;
130
131
 
131
132
  const ctx = HardhatContext.createHardhatContext();
133
+
132
134
  const config = loadConfigAndTasks(hardhatArguments, {
135
+ showEmptyConfigWarning,
133
136
  showSolidityConfigWarnings,
134
137
  });
135
138
 
@@ -234,7 +237,7 @@ async function main() {
234
237
  console.log("");
235
238
 
236
239
  try {
237
- Reporter.reportError(error);
240
+ Reporter.reportError(error as Error);
238
241
  } catch (e) {
239
242
  log("Couldn't report error to sentry: %O", e);
240
243
  }
@@ -69,11 +69,11 @@ const ADVANCED_TYPESCRIPT_SAMPLE_PROJECT_DEPENDENCIES: Dependencies = {
69
69
  "@typescript-eslint/eslint-plugin": "^4.29.1",
70
70
  "@typescript-eslint/parser": "^4.29.1",
71
71
  "@types/chai": "^4.2.21",
72
- "@types/node": "^16.4.13",
72
+ "@types/node": "^12.0.0",
73
73
  "@types/mocha": "^9.0.0",
74
74
  "ts-node": "^10.1.0",
75
75
  typechain: "^5.1.2", // a workaround. see https://github.com/nomiclabs/hardhat/issues/1672#issuecomment-894497156
76
- typescript: "^4.3.5",
76
+ typescript: "^4.5.2",
77
77
  };
78
78
 
79
79
  const SAMPLE_PROJECT_DEPENDENCIES: {
@@ -447,7 +447,7 @@ export async function createProject() {
447
447
  `\n${emoji("✨ ")}${chalk.cyan("Project created")}${emoji(" ✨")}`
448
448
  );
449
449
 
450
- console.log("See the README.txt file for some example tasks you can run.");
450
+ console.log("See the README.md file for some example tasks you can run.");
451
451
  }
452
452
 
453
453
  function createConfirmationPrompt(name: string, message: string) {
@@ -18,6 +18,7 @@ export const HARDHAT_NETWORK_SUPPORTED_HARDFORKS = [
18
18
  "muirGlacier",
19
19
  "berlin",
20
20
  "london",
21
+ "arrowGlacier",
21
22
  ];
22
23
 
23
24
  export const HARDHAT_MEMPOOL_SUPPORTED_ORDERS = <const>["fifo", "priority"];
@@ -10,7 +10,7 @@ import { ERRORS } from "./core/errors-list";
10
10
  import { TasksDSL } from "./core/tasks/dsl";
11
11
  import { getRequireCachedFiles } from "./util/platform";
12
12
 
13
- export type GlobalWithHardhatContext = NodeJS.Global & {
13
+ export type GlobalWithHardhatContext = typeof global & {
14
14
  __hardhatContext: HardhatContext;
15
15
  };
16
16
 
@@ -38,7 +38,16 @@ export function resolveConfigPath(configPath: string | undefined) {
38
38
 
39
39
  export function loadConfigAndTasks(
40
40
  hardhatArguments?: Partial<HardhatArguments>,
41
- { showSolidityConfigWarnings } = { showSolidityConfigWarnings: false }
41
+ {
42
+ showEmptyConfigWarning = false,
43
+ showSolidityConfigWarnings = false,
44
+ }: {
45
+ showEmptyConfigWarning?: boolean;
46
+ showSolidityConfigWarnings?: boolean;
47
+ } = {
48
+ showEmptyConfigWarning: false,
49
+ showSolidityConfigWarnings: false,
50
+ }
42
51
  ): HardhatConfig {
43
52
  let configPath =
44
53
  hardhatArguments !== undefined ? hardhatArguments.config : undefined;
@@ -73,6 +82,10 @@ export function loadConfigAndTasks(
73
82
  ctx.setConfigLoadingAsFinished();
74
83
  }
75
84
 
85
+ if (showEmptyConfigWarning) {
86
+ checkEmptyConfig(userConfig, { showSolidityConfigWarnings });
87
+ }
88
+
76
89
  validateConfig(userConfig);
77
90
 
78
91
  if (showSolidityConfigWarnings) {
@@ -215,18 +228,35 @@ function readPackageJson(packageName: string): PackageJson | undefined {
215
228
  );
216
229
 
217
230
  return require(packageJsonPath);
218
- } catch (error) {
231
+ } catch {
219
232
  return undefined;
220
233
  }
221
234
  }
222
235
 
236
+ function checkEmptyConfig(
237
+ userConfig: any,
238
+ { showSolidityConfigWarnings }: { showSolidityConfigWarnings: boolean }
239
+ ) {
240
+ if (userConfig === undefined || Object.keys(userConfig).length === 0) {
241
+ let warning = `Hardhat config is returning an empty config object, check the export from the config file if this is unexpected.\n`;
242
+
243
+ // This 'learn more' section is also printed by the solidity config warning,
244
+ // so we need to check to avoid printing it twice
245
+ if (!showSolidityConfigWarnings) {
246
+ warning += `\nLearn more about configuring Hardhat at https://hardhat.org/config\n`;
247
+ }
248
+
249
+ console.warn(chalk.yellow(warning));
250
+ }
251
+ }
252
+
223
253
  function checkMissingSolidityConfig(userConfig: any) {
224
254
  if (userConfig.solidity === undefined) {
225
255
  console.warn(
226
256
  chalk.yellow(
227
257
  `Solidity compiler is not configured. Version ${DEFAULT_SOLC_VERSION} will be used by default. Add a 'solidity' entry to your configuration to suppress this warning.
228
258
 
229
- Learn more about compiler configuration at https://hardhat.org/config"
259
+ Learn more about compiler configuration at https://hardhat.org/config
230
260
  `
231
261
  )
232
262
  );
@@ -6,6 +6,8 @@ import path from "path";
6
6
  import {
7
7
  HardhatConfig,
8
8
  HardhatNetworkAccountsConfig,
9
+ HardhatNetworkChainConfig,
10
+ HardhatNetworkChainsConfig,
9
11
  HardhatNetworkConfig,
10
12
  HardhatNetworkForkingConfig,
11
13
  HardhatNetworkMiningConfig,
@@ -31,6 +33,7 @@ import {
31
33
  SolidityUserConfig,
32
34
  } from "../../../types";
33
35
  import { HARDHAT_NETWORK_NAME } from "../../constants";
36
+ import { HardforkName } from "../../util/hardforks";
34
37
  import { fromEntries } from "../../util/lang";
35
38
  import { assertHardhatInvariant } from "../errors";
36
39
 
@@ -150,9 +153,11 @@ function resolveHardhatNetworkConfig(
150
153
  }
151
154
  : undefined;
152
155
 
153
- const blockNumber = hardhatNetworkConfig?.forking?.blockNumber;
154
- if (blockNumber !== undefined && forking !== undefined) {
155
- forking.blockNumber = hardhatNetworkConfig?.forking?.blockNumber;
156
+ if (forking !== undefined) {
157
+ const blockNumber = hardhatNetworkConfig?.forking?.blockNumber;
158
+ if (blockNumber !== undefined) {
159
+ forking.blockNumber = hardhatNetworkConfig?.forking?.blockNumber;
160
+ }
156
161
  }
157
162
 
158
163
  const mining = resolveMiningConfig(hardhatNetworkConfig.mining);
@@ -171,6 +176,30 @@ function resolveHardhatNetworkConfig(
171
176
  const initialDate =
172
177
  hardhatNetworkConfig.initialDate ?? new Date().toISOString();
173
178
 
179
+ const chains: HardhatNetworkChainsConfig = new Map(
180
+ defaultHardhatNetworkParams.chains
181
+ );
182
+ if (hardhatNetworkConfig.chains !== undefined) {
183
+ for (const [chainId, userChainConfig] of Object.entries(
184
+ hardhatNetworkConfig.chains
185
+ )) {
186
+ const chainConfig: HardhatNetworkChainConfig = {
187
+ hardforkHistory: new Map(),
188
+ };
189
+ if (userChainConfig.hardforkHistory !== undefined) {
190
+ for (const [name, block] of Object.entries(
191
+ userChainConfig.hardforkHistory
192
+ )) {
193
+ chainConfig.hardforkHistory.set(
194
+ name as HardforkName,
195
+ block as number
196
+ );
197
+ }
198
+ }
199
+ chains.set(parseInt(chainId, 10), chainConfig);
200
+ }
201
+ }
202
+
174
203
  const config = {
175
204
  ...clonedDefaultHardhatNetworkParams,
176
205
  ...hardhatNetworkConfig,
@@ -181,6 +210,7 @@ function resolveHardhatNetworkConfig(
181
210
  gas,
182
211
  initialDate,
183
212
  minGasPrice,
213
+ chains,
184
214
  };
185
215
 
186
216
  // We do it this way because ts gets lost otherwise
@@ -12,6 +12,7 @@ import { fromEntries } from "../../util/lang";
12
12
  import { HardhatError } from "../errors";
13
13
  import { ERRORS } from "../errors-list";
14
14
  import { hardforkGte, HardforkName } from "../../util/hardforks";
15
+ import { HardhatNetworkChainUserConfig } from "../../../types/config";
15
16
  import { defaultHardhatNetworkParams } from "./default-config";
16
17
 
17
18
  function stringify(v: any): string {
@@ -192,6 +193,21 @@ const HardhatNetworkHDAccountsConfig = t.type({
192
193
  ...commonHDAccountsFields,
193
194
  });
194
195
 
196
+ const Integer = new t.Type<number>(
197
+ "Integer",
198
+ (num: unknown): num is number => typeof num === "number",
199
+ (u, c) => {
200
+ try {
201
+ return typeof u === "string"
202
+ ? t.success(parseInt(u, 10))
203
+ : t.failure(u, c);
204
+ } catch {
205
+ return t.failure(u, c);
206
+ }
207
+ },
208
+ t.identity
209
+ );
210
+
195
211
  const HardhatNetworkForkingConfig = t.type({
196
212
  enabled: optional(t.boolean),
197
213
  url: t.string,
@@ -214,6 +230,36 @@ const HardhatNetworkMiningConfig = t.type({
214
230
  mempool: optional(HardhatNetworkMempoolConfig),
215
231
  });
216
232
 
233
+ function isValidHardforkName(name: string) {
234
+ return Object.values(HardforkName).includes(name as HardforkName);
235
+ }
236
+
237
+ const HardforkNameType = new t.Type<HardforkName>(
238
+ Object.values(HardforkName)
239
+ .map((v) => `"${v}"`)
240
+ .join(" | "),
241
+ (name: unknown): name is HardforkName =>
242
+ typeof name === "string" && isValidHardforkName(name),
243
+ (u, c) => {
244
+ return typeof u === "string" && isValidHardforkName(u)
245
+ ? t.success(u as HardforkName)
246
+ : t.failure(u, c);
247
+ },
248
+ t.identity
249
+ );
250
+
251
+ const HardhatNetworkHardforkHistory = t.record(
252
+ HardforkNameType,
253
+ t.number,
254
+ "HardhatNetworkHardforkHistory"
255
+ );
256
+
257
+ const HardhatNetworkChainConfig = t.type({
258
+ hardforkHistory: HardhatNetworkHardforkHistory,
259
+ });
260
+
261
+ const HardhatNetworkChainsConfig = t.record(Integer, HardhatNetworkChainConfig);
262
+
217
263
  const commonNetworkConfigFields = {
218
264
  chainId: optional(t.number),
219
265
  from: optional(t.string),
@@ -242,6 +288,7 @@ const HardhatNetworkConfig = t.type({
242
288
  forking: optional(HardhatNetworkForkingConfig),
243
289
  mining: optional(HardhatNetworkMiningConfig),
244
290
  coinbase: optional(address),
291
+ chains: optional(HardhatNetworkChainsConfig),
245
292
  });
246
293
 
247
294
  const HDAccountsConfig = t.type({
@@ -417,6 +464,29 @@ export function getValidationErrors(config: any): string[] {
417
464
  );
418
465
  }
419
466
  }
467
+
468
+ if (hardhatNetwork.chains !== undefined) {
469
+ Object.entries(hardhatNetwork.chains).forEach((chainEntry) => {
470
+ const [chainId, chainConfig] = chainEntry as [
471
+ string,
472
+ HardhatNetworkChainUserConfig
473
+ ];
474
+ const { hardforkHistory } = chainConfig;
475
+ if (hardforkHistory !== undefined) {
476
+ Object.keys(hardforkHistory).forEach((hardforkName) => {
477
+ if (!HARDHAT_NETWORK_SUPPORTED_HARDFORKS.includes(hardforkName)) {
478
+ errors.push(
479
+ getErrorMessage(
480
+ `HardhatConfig.networks.${HARDHAT_NETWORK_NAME}.chains[${chainId}].hardforkHistory`,
481
+ hardforkName,
482
+ `"${HARDHAT_NETWORK_SUPPORTED_HARDFORKS.join('" | "')}"`
483
+ )
484
+ );
485
+ }
486
+ });
487
+ }
488
+ });
489
+ }
420
490
  }
421
491
 
422
492
  for (const [networkName, netConfig] of Object.entries<any>(
@@ -1,6 +1,7 @@
1
1
  import { BN } from "ethereumjs-util";
2
2
 
3
3
  import { HardhatNetworkConfig } from "../../../types";
4
+ import { HardforkName } from "../../util/hardforks";
4
5
  import { HARDHAT_NETWORK_NAME } from "../../constants";
5
6
 
6
7
  export const DEFAULT_SOLC_VERSION = "0.7.3";
@@ -35,7 +36,7 @@ export const defaultHardhatNetworkParams: Omit<
35
36
  HardhatNetworkConfig,
36
37
  "gas" | "initialDate"
37
38
  > = {
38
- hardfork: "london",
39
+ hardfork: "arrowGlacier",
39
40
  blockGasLimit: 30_000_000,
40
41
  gasPrice: HARDHAT_NETWORK_DEFAULT_GAS_PRICE,
41
42
  chainId: 31337,
@@ -53,6 +54,63 @@ export const defaultHardhatNetworkParams: Omit<
53
54
  loggingEnabled: false,
54
55
  gasMultiplier: DEFAULT_GAS_MULTIPLIER,
55
56
  minGasPrice: new BN(0),
57
+ chains: new Map([
58
+ [
59
+ // block numbers below were taken from https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/common/src/chains
60
+ 1, // mainnet
61
+ {
62
+ hardforkHistory: new Map([
63
+ [HardforkName.BYZANTIUM, 4370000],
64
+ [HardforkName.CONSTANTINOPLE, 7280000],
65
+ [HardforkName.PETERSBURG, 7280000],
66
+ [HardforkName.ISTANBUL, 9069000],
67
+ [HardforkName.MUIR_GLACIER, 9200000],
68
+ [HardforkName.BERLIN, 12244000],
69
+ [HardforkName.LONDON, 12965000],
70
+ ]),
71
+ },
72
+ ],
73
+ [
74
+ 3, // ropsten
75
+ {
76
+ hardforkHistory: new Map([
77
+ [HardforkName.BYZANTIUM, 1700000],
78
+ [HardforkName.CONSTANTINOPLE, 4230000],
79
+ [HardforkName.PETERSBURG, 4939394],
80
+ [HardforkName.ISTANBUL, 6485846],
81
+ [HardforkName.MUIR_GLACIER, 7117117],
82
+ [HardforkName.BERLIN, 9812189],
83
+ [HardforkName.LONDON, 10499401],
84
+ ]),
85
+ },
86
+ ],
87
+ [
88
+ 4, // rinkeby
89
+ {
90
+ hardforkHistory: new Map([
91
+ [HardforkName.BYZANTIUM, 1035301],
92
+ [HardforkName.CONSTANTINOPLE, 3660663],
93
+ [HardforkName.PETERSBURG, 4321234],
94
+ [HardforkName.ISTANBUL, 5435345],
95
+ [HardforkName.BERLIN, 8290928],
96
+ [HardforkName.LONDON, 8897988],
97
+ ]),
98
+ },
99
+ ],
100
+ [
101
+ 42, // kovan
102
+ {
103
+ hardforkHistory: new Map([
104
+ [HardforkName.BYZANTIUM, 5067000],
105
+ [HardforkName.CONSTANTINOPLE, 9200000],
106
+ [HardforkName.PETERSBURG, 10255201],
107
+ [HardforkName.ISTANBUL, 14111141],
108
+ [HardforkName.BERLIN, 24770900],
109
+ [HardforkName.LONDON, 26741100],
110
+ ]),
111
+ },
112
+ ],
113
+ ]),
56
114
  };
57
115
 
58
116
  export const defaultHttpNetworkParams = {
@@ -22,7 +22,7 @@ export function isHardhatInstalledLocallyOrLinked(configPath?: string) {
22
22
  return (
23
23
  fs.realpathSync(resolvedPackageJson) === fs.realpathSync(thisPackageJson)
24
24
  );
25
- } catch (_) {
25
+ } catch {
26
26
  return false;
27
27
  }
28
28
  }
@@ -185,14 +185,19 @@ export const inputFile: CLIArgumentType<string> = {
185
185
  throw new Error(`${strValue} is a directory, not a file`);
186
186
  }
187
187
  } catch (error) {
188
- throw new HardhatError(
189
- ERRORS.ARGUMENTS.INVALID_INPUT_FILE,
190
- {
191
- name: argName,
192
- value: strValue,
193
- },
194
- error
195
- );
188
+ if (error instanceof Error) {
189
+ throw new HardhatError(
190
+ ERRORS.ARGUMENTS.INVALID_INPUT_FILE,
191
+ {
192
+ name: argName,
193
+ value: strValue,
194
+ },
195
+ error
196
+ );
197
+ }
198
+
199
+ // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
200
+ throw error;
196
201
  }
197
202
 
198
203
  return strValue;
@@ -212,15 +217,20 @@ export const inputFile: CLIArgumentType<string> = {
212
217
  inputFile.parse(argName, value);
213
218
  } catch (error) {
214
219
  // the input value is considered invalid, throw error.
215
- throw new HardhatError(
216
- ERRORS.ARGUMENTS.INVALID_VALUE_FOR_TYPE,
217
- {
218
- value,
219
- name: argName,
220
- type: inputFile.name,
221
- },
222
- error
223
- );
220
+ if (error instanceof Error) {
221
+ throw new HardhatError(
222
+ ERRORS.ARGUMENTS.INVALID_VALUE_FOR_TYPE,
223
+ {
224
+ value,
225
+ name: argName,
226
+ type: inputFile.name,
227
+ },
228
+ error
229
+ );
230
+ }
231
+
232
+ // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
233
+ throw error;
224
234
  }
225
235
  },
226
236
  };
@@ -231,14 +241,19 @@ export const json: CLIArgumentType<any> = {
231
241
  try {
232
242
  return JSON.parse(strValue);
233
243
  } catch (error) {
234
- throw new HardhatError(
235
- ERRORS.ARGUMENTS.INVALID_JSON_ARGUMENT,
236
- {
237
- param: argName,
238
- error: error.message,
239
- },
240
- error
241
- );
244
+ if (error instanceof Error) {
245
+ throw new HardhatError(
246
+ ERRORS.ARGUMENTS.INVALID_JSON_ARGUMENT,
247
+ {
248
+ param: argName,
249
+ error: error.message,
250
+ },
251
+ error
252
+ );
253
+ }
254
+
255
+ // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
256
+ throw error;
242
257
  }
243
258
  },
244
259
 
@@ -48,14 +48,19 @@ export function getEnvHardhatArguments(
48
48
  try {
49
49
  envArgs[paramName] = definition.type.parse(paramName, rawValue);
50
50
  } catch (error) {
51
- throw new HardhatError(
52
- ERRORS.ARGUMENTS.INVALID_ENV_VAR_VALUE,
53
- {
54
- varName: envVarName,
55
- value: rawValue,
56
- },
57
- error
58
- );
51
+ if (error instanceof Error) {
52
+ throw new HardhatError(
53
+ ERRORS.ARGUMENTS.INVALID_ENV_VAR_VALUE,
54
+ {
55
+ varName: envVarName,
56
+ value: rawValue,
57
+ },
58
+ error
59
+ );
60
+ }
61
+
62
+ // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
63
+ throw error;
59
64
  }
60
65
  } else {
61
66
  envArgs[paramName] = definition.defaultValue;
@@ -104,7 +104,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
104
104
  if (typeof data === "string") {
105
105
  try {
106
106
  typedMessage = JSON.parse(data);
107
- } catch (error) {
107
+ } catch {
108
108
  throw new HardhatError(
109
109
  ERRORS.NETWORK.ETHSIGN_TYPED_DATA_V4_INVALID_DATA_PARAM
110
110
  );
@@ -219,7 +219,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
219
219
  private _getPrivateKeyForAddressOrNull(address: Buffer): Buffer | null {
220
220
  try {
221
221
  return this._getPrivateKeyForAddress(address);
222
- } catch (e) {
222
+ } catch {
223
223
  return null;
224
224
  }
225
225
  }
@@ -253,6 +253,7 @@ export class LocalAccountsProvider extends ProviderWrapperWithChainId {
253
253
  gasLimit: transactionRequest.gas,
254
254
  };
255
255
 
256
+ // TODO: consider changing instances of "london" below to ["latest hardfork"]
256
257
  const common =
257
258
  chains.names[chainId] !== undefined
258
259
  ? new Common({ chain: chainId, hardfork: "london" })
@@ -347,7 +348,7 @@ abstract class SenderProvider extends ProviderWrapper {
347
348
  return this._wrappedProvider.request(args);
348
349
  }
349
350
 
350
- protected abstract async _getSender(): Promise<string | undefined>;
351
+ protected abstract _getSender(): Promise<string | undefined>;
351
352
  }
352
353
 
353
354
  export class AutomaticSenderProvider extends SenderProvider {
@@ -56,7 +56,7 @@ export class BackwardsCompatibilityProviderAdapter
56
56
  method: request.method,
57
57
  params: request.params,
58
58
  });
59
- } catch (error) {
59
+ } catch (error: any) {
60
60
  if (error.code === undefined) {
61
61
  // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
62
62
  throw error;
@@ -12,7 +12,7 @@ export abstract class ProviderWrapperWithChainId extends ProviderWrapper {
12
12
  if (this._chainId === undefined) {
13
13
  try {
14
14
  this._chainId = await this._getChainIdFromEthChainId();
15
- } catch (error) {
15
+ } catch {
16
16
  // If eth_chainId fails we default to net_version
17
17
  this._chainId = await this._getChainIdFromEthNetVersion();
18
18
  }
@@ -93,6 +93,7 @@ export function createProvider(
93
93
  hardhatNetConfig.mining.interval,
94
94
  // This cast is valid because of the config validation and resolution
95
95
  hardhatNetConfig.mining.mempool.order as MempoolOrder,
96
+ hardhatNetConfig.chains,
96
97
  new ModulesLogger(hardhatNetConfig.loggingEnabled),
97
98
  accounts,
98
99
  artifacts,
@@ -86,9 +86,11 @@ abstract class MultipliedGasEstimationProvider extends ProviderWrapper {
86
86
 
87
87
  return numberToRpcQuantity(gas);
88
88
  } catch (error) {
89
- if (error.message.toLowerCase().includes("execution error")) {
90
- const blockGasLimit = await this._getBlockGasLimit();
91
- return numberToRpcQuantity(blockGasLimit);
89
+ if (error instanceof Error) {
90
+ if (error.message.toLowerCase().includes("execution error")) {
91
+ const blockGasLimit = await this._getBlockGasLimit();
92
+ return numberToRpcQuantity(blockGasLimit);
93
+ }
92
94
  }
93
95
 
94
96
  // eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
@@ -277,7 +279,7 @@ export class AutomaticGasPriceProvider extends ProviderWrapper {
277
279
 
278
280
  maxPriorityFeePerGas: rpcQuantityToBN(response.reward[0][0]),
279
281
  };
280
- } catch (_error) {
282
+ } catch {
281
283
  this._nodeHasFeeHistory = false;
282
284
 
283
285
  return undefined;
@@ -171,7 +171,7 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider {
171
171
  }
172
172
 
173
173
  return parseJsonResponse(await response.text());
174
- } catch (error) {
174
+ } catch (error: any) {
175
175
  if (error.code === "ECONNREFUSED") {
176
176
  throw new HardhatError(
177
177
  ERRORS.NETWORK.NODE_IS_NOT_RUNNING,
@@ -11,7 +11,7 @@ export abstract class ProviderWrapper
11
11
  super(_wrappedProvider);
12
12
  }
13
13
 
14
- public abstract async request(args: RequestArguments): Promise<unknown>;
14
+ public abstract request(args: RequestArguments): Promise<unknown>;
15
15
 
16
16
  protected _getParams<ParamsT extends any[] = any[]>(
17
17
  args: RequestArguments
@@ -266,7 +266,9 @@ export class Environment implements HardhatRuntimeEnvironment {
266
266
  values[paramName] = resolvedArgumentValue;
267
267
  }
268
268
  } catch (error) {
269
- errors.push(error);
269
+ if (HardhatError.isHardhatError(error)) {
270
+ errors.push(error);
271
+ }
270
272
  }
271
273
  return { errors, values };
272
274
  },