hardhat 3.2.0 → 3.4.0

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 (432) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/dist/src/internal/builtin-global-options.d.ts.map +1 -1
  3. package/dist/src/internal/builtin-global-options.js +14 -1
  4. package/dist/src/internal/builtin-global-options.js.map +1 -1
  5. package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.d.ts.map +1 -1
  6. package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.js +5 -13
  7. package/dist/src/internal/builtin-plugins/artifacts/artifact-manager.js.map +1 -1
  8. package/dist/src/internal/builtin-plugins/console/task-action.d.ts.map +1 -1
  9. package/dist/src/internal/builtin-plugins/console/task-action.js +2 -1
  10. package/dist/src/internal/builtin-plugins/console/task-action.js.map +1 -1
  11. package/dist/src/internal/builtin-plugins/gas-analytics/exports.d.ts +1 -1
  12. package/dist/src/internal/builtin-plugins/gas-analytics/exports.d.ts.map +1 -1
  13. package/dist/src/internal/builtin-plugins/gas-analytics/exports.js +1 -1
  14. package/dist/src/internal/builtin-plugins/gas-analytics/exports.js.map +1 -1
  15. package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.d.ts.map +1 -1
  16. package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.js +1 -2
  17. package/dist/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.js.map +1 -1
  18. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts +7 -5
  19. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts.map +1 -1
  20. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js +60 -44
  21. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js.map +1 -1
  22. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.d.ts +6 -0
  23. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.d.ts.map +1 -0
  24. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.js +14 -0
  25. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/accessors.js.map +1 -0
  26. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.d.ts +4 -0
  27. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.d.ts.map +1 -0
  28. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.js +27 -0
  29. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/compat.js.map +1 -0
  30. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.d.ts +36 -0
  31. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.d.ts.map +1 -0
  32. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.js +86 -0
  33. package/dist/src/internal/builtin-plugins/gas-analytics/helpers/utils.js.map +1 -0
  34. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js +1 -1
  35. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js.map +1 -1
  36. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.js +1 -1
  37. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.js.map +1 -1
  38. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.d.ts.map +1 -1
  39. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.js +1 -2
  40. package/dist/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.js.map +1 -1
  41. package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts +10 -2
  42. package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts.map +1 -1
  43. package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.d.ts.map +1 -1
  44. package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.js +12 -2
  45. package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.js.map +1 -1
  46. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts +9 -3
  47. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts.map +1 -1
  48. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js +65 -42
  49. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js.map +1 -1
  50. package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.d.ts +11 -0
  51. package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.d.ts.map +1 -0
  52. package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.js +104 -0
  53. package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.js.map +1 -0
  54. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.d.ts +4 -4
  55. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.d.ts.map +1 -1
  56. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.js +2 -2
  57. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.js.map +1 -1
  58. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.d.ts +6 -3
  59. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.d.ts.map +1 -1
  60. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.js +23 -5
  61. package/dist/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.js.map +1 -1
  62. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.d.ts.map +1 -1
  63. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js +2 -1
  64. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js.map +1 -1
  65. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.d.ts +6 -0
  66. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.d.ts.map +1 -0
  67. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.js +152 -0
  68. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.js.map +1 -0
  69. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.d.ts +19 -0
  70. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.d.ts.map +1 -0
  71. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.js +104 -0
  72. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.js.map +1 -0
  73. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.d.ts.map +1 -1
  74. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js +23 -1
  75. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js.map +1 -1
  76. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.d.ts.map +1 -1
  77. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.js +25 -17
  78. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.js.map +1 -1
  79. package/dist/src/internal/builtin-plugins/network-manager/http-provider.d.ts.map +1 -1
  80. package/dist/src/internal/builtin-plugins/network-manager/http-provider.js +1 -0
  81. package/dist/src/internal/builtin-plugins/network-manager/http-provider.js.map +1 -1
  82. package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts +12 -2
  83. package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts.map +1 -1
  84. package/dist/src/internal/builtin-plugins/network-manager/network-manager.js +149 -26
  85. package/dist/src/internal/builtin-plugins/network-manager/network-manager.js.map +1 -1
  86. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.d.ts.map +1 -1
  87. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.js.map +1 -1
  88. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.d.ts +1 -0
  89. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.d.ts.map +1 -1
  90. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.js +70 -33
  91. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.js.map +1 -1
  92. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.d.ts +2 -0
  93. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.d.ts.map +1 -1
  94. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.js +19 -12
  95. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.js.map +1 -1
  96. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.d.ts +1 -0
  97. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.d.ts.map +1 -1
  98. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.js +9 -3
  99. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.js.map +1 -1
  100. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.d.ts +2 -0
  101. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.d.ts.map +1 -1
  102. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.js +5 -1
  103. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.js.map +1 -1
  104. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.d.ts +1 -0
  105. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.d.ts.map +1 -1
  106. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.js +5 -1
  107. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.js.map +1 -1
  108. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.d.ts +1 -0
  109. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.d.ts.map +1 -1
  110. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.js +5 -1
  111. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.js.map +1 -1
  112. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.d.ts +1 -0
  113. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.d.ts.map +1 -1
  114. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.js +5 -1
  115. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.js.map +1 -1
  116. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.d.ts +0 -3
  117. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.d.ts.map +1 -1
  118. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.js +9 -12
  119. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.js.map +1 -1
  120. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/types.d.ts +9 -0
  121. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/types.d.ts.map +1 -1
  122. package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.d.ts +2 -0
  123. package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.d.ts.map +1 -0
  124. package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.js +3 -0
  125. package/dist/src/internal/builtin-plugins/network-manager/revert-error-code.js.map +1 -0
  126. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/config.d.ts +1 -1
  127. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/config.d.ts.map +1 -1
  128. package/dist/src/internal/builtin-plugins/network-manager/type-validation.d.ts.map +1 -1
  129. package/dist/src/internal/builtin-plugins/network-manager/type-validation.js +2 -1
  130. package/dist/src/internal/builtin-plugins/network-manager/type-validation.js.map +1 -1
  131. package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.d.ts.map +1 -1
  132. package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.js +1 -1
  133. package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.js.map +1 -1
  134. package/dist/src/internal/builtin-plugins/node/helpers.d.ts.map +1 -1
  135. package/dist/src/internal/builtin-plugins/node/helpers.js +6 -2
  136. package/dist/src/internal/builtin-plugins/node/helpers.js.map +1 -1
  137. package/dist/src/internal/builtin-plugins/node/json-rpc/handler.d.ts.map +1 -1
  138. package/dist/src/internal/builtin-plugins/node/json-rpc/handler.js +8 -2
  139. package/dist/src/internal/builtin-plugins/node/json-rpc/handler.js.map +1 -1
  140. package/dist/src/internal/builtin-plugins/node/task-action.js +2 -2
  141. package/dist/src/internal/builtin-plugins/node/task-action.js.map +1 -1
  142. package/dist/src/internal/builtin-plugins/run/task-action.d.ts.map +1 -1
  143. package/dist/src/internal/builtin-plugins/run/task-action.js +2 -1
  144. package/dist/src/internal/builtin-plugins/run/task-action.js.map +1 -1
  145. package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.d.ts.map +1 -1
  146. package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.js +7 -0
  147. package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.js.map +1 -1
  148. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts +6 -2
  149. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts.map +1 -1
  150. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js +198 -76
  151. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js.map +1 -1
  152. package/dist/src/internal/builtin-plugins/solidity/build-system/cache.d.ts +3 -0
  153. package/dist/src/internal/builtin-plugins/solidity/build-system/cache.d.ts.map +1 -1
  154. package/dist/src/internal/builtin-plugins/solidity/build-system/cache.js.map +1 -1
  155. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.d.ts +5 -3
  156. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.d.ts.map +1 -1
  157. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.js +35 -7
  158. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.js.map +1 -1
  159. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.d.ts +16 -0
  160. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.d.ts.map +1 -1
  161. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.js +1 -1
  162. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.js.map +1 -1
  163. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.d.ts.map +1 -1
  164. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js +1 -1
  165. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js.map +1 -1
  166. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.d.ts.map +1 -1
  167. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.js +5 -5
  168. package/dist/src/internal/builtin-plugins/solidity/build-system/dependency-graph.js.map +1 -1
  169. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.d.ts +2 -2
  170. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.d.ts.map +1 -1
  171. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.js.map +1 -1
  172. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.d.ts.map +1 -1
  173. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.js +1 -0
  174. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.js.map +1 -1
  175. package/dist/src/internal/builtin-plugins/solidity/build-system/warning-suppression.js +2 -2
  176. package/dist/src/internal/builtin-plugins/solidity/build-system/warning-suppression.js.map +1 -1
  177. package/dist/src/internal/builtin-plugins/solidity/config.d.ts +4 -2
  178. package/dist/src/internal/builtin-plugins/solidity/config.d.ts.map +1 -1
  179. package/dist/src/internal/builtin-plugins/solidity/config.js +266 -84
  180. package/dist/src/internal/builtin-plugins/solidity/config.js.map +1 -1
  181. package/dist/src/internal/builtin-plugins/solidity/constants.d.ts +3 -0
  182. package/dist/src/internal/builtin-plugins/solidity/constants.d.ts.map +1 -0
  183. package/dist/src/internal/builtin-plugins/solidity/constants.js +19 -0
  184. package/dist/src/internal/builtin-plugins/solidity/constants.js.map +1 -0
  185. package/dist/src/internal/builtin-plugins/solidity/exports.d.ts +3 -0
  186. package/dist/src/internal/builtin-plugins/solidity/exports.d.ts.map +1 -0
  187. package/dist/src/internal/builtin-plugins/solidity/exports.js +3 -0
  188. package/dist/src/internal/builtin-plugins/solidity/exports.js.map +1 -0
  189. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.d.ts.map +1 -1
  190. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.js +2 -1
  191. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.js.map +1 -1
  192. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.d.ts +4 -0
  193. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.d.ts.map +1 -0
  194. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.js +7 -0
  195. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.js.map +1 -0
  196. package/dist/src/internal/builtin-plugins/solidity/index.d.ts.map +1 -1
  197. package/dist/src/internal/builtin-plugins/solidity/index.js +1 -0
  198. package/dist/src/internal/builtin-plugins/solidity/index.js.map +1 -1
  199. package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.d.ts +18 -0
  200. package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.d.ts.map +1 -0
  201. package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.js +33 -0
  202. package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.js.map +1 -0
  203. package/dist/src/internal/builtin-plugins/solidity/tasks/build.d.ts +1 -1
  204. package/dist/src/internal/builtin-plugins/solidity/tasks/build.d.ts.map +1 -1
  205. package/dist/src/internal/builtin-plugins/solidity/tasks/build.js +225 -55
  206. package/dist/src/internal/builtin-plugins/solidity/tasks/build.js.map +1 -1
  207. package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts +227 -28
  208. package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts.map +1 -1
  209. package/dist/src/internal/builtin-plugins/solidity/type-extensions.js.map +1 -1
  210. package/dist/src/internal/builtin-plugins/solidity-test/config.d.ts.map +1 -1
  211. package/dist/src/internal/builtin-plugins/solidity-test/config.js +5 -3
  212. package/dist/src/internal/builtin-plugins/solidity-test/config.js.map +1 -1
  213. package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.d.ts +12 -6
  214. package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.d.ts.map +1 -1
  215. package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.js +9 -7
  216. package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.js.map +1 -1
  217. package/dist/src/internal/builtin-plugins/solidity-test/formatters.d.ts +1 -12
  218. package/dist/src/internal/builtin-plugins/solidity-test/formatters.d.ts.map +1 -1
  219. package/dist/src/internal/builtin-plugins/solidity-test/formatters.js +0 -150
  220. package/dist/src/internal/builtin-plugins/solidity-test/formatters.js.map +1 -1
  221. package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts +4 -5
  222. package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts.map +1 -1
  223. package/dist/src/internal/builtin-plugins/solidity-test/helpers.js +5 -12
  224. package/dist/src/internal/builtin-plugins/solidity-test/helpers.js.map +1 -1
  225. package/dist/src/internal/builtin-plugins/solidity-test/index.d.ts.map +1 -1
  226. package/dist/src/internal/builtin-plugins/solidity-test/index.js +0 -7
  227. package/dist/src/internal/builtin-plugins/solidity-test/index.js.map +1 -1
  228. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.d.ts +7 -0
  229. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.d.ts.map +1 -0
  230. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.js +20 -0
  231. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.js.map +1 -0
  232. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.d.ts +24 -0
  233. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.d.ts.map +1 -0
  234. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.js +68 -0
  235. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.js.map +1 -0
  236. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.d.ts +13 -0
  237. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.d.ts.map +1 -0
  238. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.js +136 -0
  239. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.js.map +1 -0
  240. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.d.ts +19 -0
  241. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.d.ts.map +1 -0
  242. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.js +133 -0
  243. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.js.map +1 -0
  244. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.d.ts +10 -0
  245. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.d.ts.map +1 -0
  246. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.js +2 -0
  247. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.js.map +1 -0
  248. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.d.ts +12 -0
  249. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.d.ts.map +1 -0
  250. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.js +81 -0
  251. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.js.map +1 -0
  252. package/dist/src/internal/builtin-plugins/solidity-test/reporter.d.ts +1 -1
  253. package/dist/src/internal/builtin-plugins/solidity-test/reporter.d.ts.map +1 -1
  254. package/dist/src/internal/builtin-plugins/solidity-test/reporter.js +5 -2
  255. package/dist/src/internal/builtin-plugins/solidity-test/reporter.js.map +1 -1
  256. package/dist/src/internal/builtin-plugins/solidity-test/runner.d.ts +2 -8
  257. package/dist/src/internal/builtin-plugins/solidity-test/runner.d.ts.map +1 -1
  258. package/dist/src/internal/builtin-plugins/solidity-test/runner.js +47 -50
  259. package/dist/src/internal/builtin-plugins/solidity-test/runner.js.map +1 -1
  260. package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.d.ts.map +1 -1
  261. package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.js +11 -2
  262. package/dist/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.js.map +1 -1
  263. package/dist/src/internal/builtin-plugins/solidity-test/task-action.d.ts +0 -1
  264. package/dist/src/internal/builtin-plugins/solidity-test/task-action.d.ts.map +1 -1
  265. package/dist/src/internal/builtin-plugins/solidity-test/task-action.js +122 -39
  266. package/dist/src/internal/builtin-plugins/solidity-test/task-action.js.map +1 -1
  267. package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts +1 -2
  268. package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts.map +1 -1
  269. package/dist/src/internal/builtin-plugins/test/index.d.ts.map +1 -1
  270. package/dist/src/internal/builtin-plugins/test/index.js +0 -7
  271. package/dist/src/internal/builtin-plugins/test/index.js.map +1 -1
  272. package/dist/src/internal/builtin-plugins/test/task-action.d.ts +0 -1
  273. package/dist/src/internal/builtin-plugins/test/task-action.d.ts.map +1 -1
  274. package/dist/src/internal/builtin-plugins/test/task-action.js +4 -8
  275. package/dist/src/internal/builtin-plugins/test/task-action.js.map +1 -1
  276. package/dist/src/internal/cli/help/get-help-string.d.ts.map +1 -1
  277. package/dist/src/internal/cli/help/get-help-string.js +1 -1
  278. package/dist/src/internal/cli/help/get-help-string.js.map +1 -1
  279. package/dist/src/internal/cli/init/init.d.ts.map +1 -1
  280. package/dist/src/internal/cli/init/init.js +1 -1
  281. package/dist/src/internal/cli/init/init.js.map +1 -1
  282. package/dist/src/internal/cli/init/prompt.d.ts.map +1 -1
  283. package/dist/src/internal/cli/init/prompt.js +1 -7
  284. package/dist/src/internal/cli/init/prompt.js.map +1 -1
  285. package/dist/src/internal/cli/main.d.ts.map +1 -1
  286. package/dist/src/internal/cli/main.js +8 -0
  287. package/dist/src/internal/cli/main.js.map +1 -1
  288. package/dist/src/internal/core/hre.d.ts +2 -1
  289. package/dist/src/internal/core/hre.d.ts.map +1 -1
  290. package/dist/src/internal/core/hre.js +18 -0
  291. package/dist/src/internal/core/hre.js.map +1 -1
  292. package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.d.ts.map +1 -1
  293. package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.js +6 -1
  294. package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.js.map +1 -1
  295. package/dist/src/internal/core/user-interruptions.d.ts.map +1 -1
  296. package/dist/src/internal/core/user-interruptions.js +2 -5
  297. package/dist/src/internal/core/user-interruptions.js.map +1 -1
  298. package/dist/src/internal/utils/colorizer.d.ts +10 -0
  299. package/dist/src/internal/utils/colorizer.d.ts.map +1 -0
  300. package/dist/src/internal/utils/colorizer.js +2 -0
  301. package/dist/src/internal/utils/colorizer.js.map +1 -0
  302. package/dist/src/internal/utils/package.d.ts.map +1 -1
  303. package/dist/src/internal/utils/package.js +1 -1
  304. package/dist/src/internal/utils/package.js.map +1 -1
  305. package/dist/src/types/artifacts.d.ts +5 -4
  306. package/dist/src/types/artifacts.d.ts.map +1 -1
  307. package/dist/src/types/global-options.d.ts +1 -0
  308. package/dist/src/types/global-options.d.ts.map +1 -1
  309. package/dist/src/types/hooks.d.ts +32 -0
  310. package/dist/src/types/hooks.d.ts.map +1 -1
  311. package/dist/src/types/network.d.ts +39 -0
  312. package/dist/src/types/network.d.ts.map +1 -1
  313. package/dist/src/types/solidity/build-system.d.ts +66 -3
  314. package/dist/src/types/solidity/build-system.d.ts.map +1 -1
  315. package/dist/src/types/solidity/build-system.js.map +1 -1
  316. package/dist/src/types/solidity/compilation-job.d.ts +11 -5
  317. package/dist/src/types/solidity/compilation-job.d.ts.map +1 -1
  318. package/dist/src/types/solidity/solidity-artifacts.d.ts +29 -0
  319. package/dist/src/types/solidity/solidity-artifacts.d.ts.map +1 -1
  320. package/package.json +10 -9
  321. package/src/internal/builtin-global-options.ts +15 -1
  322. package/src/internal/builtin-plugins/artifacts/artifact-manager.ts +9 -15
  323. package/src/internal/builtin-plugins/console/task-action.ts +2 -1
  324. package/src/internal/builtin-plugins/gas-analytics/exports.ts +1 -1
  325. package/src/internal/builtin-plugins/gas-analytics/function-gas-snapshots.ts +1 -2
  326. package/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.ts +100 -61
  327. package/src/internal/builtin-plugins/gas-analytics/helpers/accessors.ts +31 -0
  328. package/src/internal/builtin-plugins/gas-analytics/helpers/compat.ts +37 -0
  329. package/src/internal/builtin-plugins/gas-analytics/helpers/utils.ts +112 -0
  330. package/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.ts +1 -1
  331. package/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.ts +1 -1
  332. package/src/internal/builtin-plugins/gas-analytics/snapshot-cheatcodes.ts +1 -2
  333. package/src/internal/builtin-plugins/gas-analytics/types.ts +11 -2
  334. package/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.ts +25 -3
  335. package/src/internal/builtin-plugins/network-manager/edr/edr-provider.ts +107 -56
  336. package/src/internal/builtin-plugins/network-manager/edr/genesis-state.ts +179 -0
  337. package/src/internal/builtin-plugins/network-manager/edr/stack-traces/solidity-stack-trace.ts +4 -0
  338. package/src/internal/builtin-plugins/network-manager/edr/stack-traces/stack-trace-solidity-errors.ts +28 -4
  339. package/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.ts +2 -1
  340. package/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.ts +197 -0
  341. package/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.ts +137 -0
  342. package/src/internal/builtin-plugins/network-manager/hook-handlers/hre.ts +30 -0
  343. package/src/internal/builtin-plugins/network-manager/hook-handlers/network.ts +27 -24
  344. package/src/internal/builtin-plugins/network-manager/http-provider.ts +1 -0
  345. package/src/internal/builtin-plugins/network-manager/network-manager.ts +213 -37
  346. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/hd-wallet-handler.ts +1 -0
  347. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.ts +115 -34
  348. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/sender.ts +25 -17
  349. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/chain-id/chain-id-handler.ts +13 -5
  350. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-handler.ts +7 -1
  351. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/automatic-gas-price-handler.ts +7 -1
  352. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-handler.ts +7 -1
  353. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/gas/fixed-gas-price-handler.ts +7 -1
  354. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.ts +10 -30
  355. package/src/internal/builtin-plugins/network-manager/request-handlers/types.ts +10 -0
  356. package/src/internal/builtin-plugins/network-manager/revert-error-code.ts +2 -0
  357. package/src/internal/builtin-plugins/network-manager/type-extensions/config.ts +1 -1
  358. package/src/internal/builtin-plugins/network-manager/type-validation.ts +5 -1
  359. package/src/internal/builtin-plugins/node/artifacts/build-info-watcher.ts +1 -2
  360. package/src/internal/builtin-plugins/node/helpers.ts +9 -2
  361. package/src/internal/builtin-plugins/node/json-rpc/handler.ts +10 -2
  362. package/src/internal/builtin-plugins/node/task-action.ts +2 -2
  363. package/src/internal/builtin-plugins/run/task-action.ts +2 -1
  364. package/src/internal/builtin-plugins/solidity/build-system/artifacts.ts +10 -2
  365. package/src/internal/builtin-plugins/solidity/build-system/build-system.ts +297 -99
  366. package/src/internal/builtin-plugins/solidity/build-system/cache.ts +3 -0
  367. package/src/internal/builtin-plugins/solidity/build-system/compilation-job.ts +49 -16
  368. package/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.ts +1 -1
  369. package/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.ts +1 -2
  370. package/src/internal/builtin-plugins/solidity/build-system/dependency-graph.ts +9 -7
  371. package/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.ts +4 -2
  372. package/src/internal/builtin-plugins/solidity/build-system/solc-info.ts +1 -0
  373. package/src/internal/builtin-plugins/solidity/build-system/warning-suppression.ts +2 -2
  374. package/src/internal/builtin-plugins/solidity/config.ts +359 -124
  375. package/src/internal/builtin-plugins/solidity/constants.ts +21 -0
  376. package/src/internal/builtin-plugins/solidity/exports.ts +2 -0
  377. package/src/internal/builtin-plugins/solidity/hook-handlers/config.ts +3 -0
  378. package/src/internal/builtin-plugins/solidity/hook-handlers/solidity.ts +9 -0
  379. package/src/internal/builtin-plugins/solidity/index.ts +1 -0
  380. package/src/internal/builtin-plugins/solidity/solidity-hooks.ts +53 -0
  381. package/src/internal/builtin-plugins/solidity/tasks/build.ts +359 -74
  382. package/src/internal/builtin-plugins/solidity/type-extensions.ts +289 -32
  383. package/src/internal/builtin-plugins/solidity-test/config.ts +11 -2
  384. package/src/internal/builtin-plugins/solidity-test/edr-artifacts.ts +22 -10
  385. package/src/internal/builtin-plugins/solidity-test/formatters.ts +1 -213
  386. package/src/internal/builtin-plugins/solidity-test/helpers.ts +8 -15
  387. package/src/internal/builtin-plugins/solidity-test/index.ts +0 -7
  388. package/src/internal/builtin-plugins/solidity-test/inline-config/constants.ts +21 -0
  389. package/src/internal/builtin-plugins/solidity-test/inline-config/helpers.ts +99 -0
  390. package/src/internal/builtin-plugins/solidity-test/inline-config/index.ts +272 -0
  391. package/src/internal/builtin-plugins/solidity-test/inline-config/parsing.ts +186 -0
  392. package/src/internal/builtin-plugins/solidity-test/inline-config/types.ts +9 -0
  393. package/src/internal/builtin-plugins/solidity-test/inline-config/validation.ts +122 -0
  394. package/src/internal/builtin-plugins/solidity-test/reporter.ts +6 -6
  395. package/src/internal/builtin-plugins/solidity-test/runner.ts +64 -83
  396. package/src/internal/builtin-plugins/solidity-test/stack-trace-solidity-errors.ts +15 -2
  397. package/src/internal/builtin-plugins/solidity-test/task-action.ts +192 -57
  398. package/src/internal/builtin-plugins/solidity-test/type-extensions.ts +1 -2
  399. package/src/internal/builtin-plugins/test/index.ts +0 -7
  400. package/src/internal/builtin-plugins/test/task-action.ts +4 -10
  401. package/src/internal/cli/help/get-help-string.ts +2 -2
  402. package/src/internal/cli/init/init.ts +1 -1
  403. package/src/internal/cli/init/prompt.ts +1 -14
  404. package/src/internal/cli/main.ts +14 -0
  405. package/src/internal/core/hre.ts +33 -0
  406. package/src/internal/core/plugins/detect-plugin-npm-dependency-problems.ts +8 -1
  407. package/src/internal/core/user-interruptions.ts +3 -5
  408. package/src/internal/utils/colorizer.ts +9 -0
  409. package/src/internal/utils/package.ts +1 -2
  410. package/src/types/artifacts.ts +5 -4
  411. package/src/types/global-options.ts +1 -0
  412. package/src/types/hooks.ts +37 -0
  413. package/src/types/network.ts +48 -0
  414. package/src/types/solidity/build-system.ts +66 -3
  415. package/src/types/solidity/compilation-job.ts +12 -5
  416. package/src/types/solidity/solidity-artifacts.ts +32 -0
  417. package/templates/hardhat-2/04-mocha-viem-ts/package.json +1 -1
  418. package/templates/hardhat-3/01-node-test-runner-viem/gitignore +11 -0
  419. package/templates/hardhat-3/01-node-test-runner-viem/package.json +12 -12
  420. package/templates/hardhat-3/01-node-test-runner-viem/scripts/send-op-tx.ts +1 -1
  421. package/templates/hardhat-3/01-node-test-runner-viem/test/Counter.ts +1 -1
  422. package/templates/hardhat-3/02-mocha-ethers/gitignore +11 -0
  423. package/templates/hardhat-3/02-mocha-ethers/package.json +14 -14
  424. package/templates/hardhat-3/02-mocha-ethers/scripts/send-op-tx.ts +1 -1
  425. package/templates/hardhat-3/02-mocha-ethers/test/Counter.ts +1 -1
  426. package/templates/hardhat-3/03-minimal/gitignore +11 -0
  427. package/templates/hardhat-3/03-minimal/package.json +1 -1
  428. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts +0 -19
  429. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts.map +0 -1
  430. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js +0 -46
  431. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js.map +0 -1
  432. package/src/internal/builtin-plugins/gas-analytics/helpers.ts +0 -86
@@ -3,14 +3,13 @@ import type { Template } from "./template.js";
3
3
  import { HardhatError } from "@nomicfoundation/hardhat-errors";
4
4
  import { shortenPath } from "@nomicfoundation/hardhat-utils/path";
5
5
  import chalk from "chalk";
6
+ import enquirer from "enquirer";
6
7
 
7
8
  export async function promptForHardhatVersion(): Promise<
8
9
  "hardhat-2" | "hardhat-3"
9
10
  > {
10
11
  ensureTTY();
11
12
 
12
- const { default: enquirer } = await import("enquirer");
13
-
14
13
  const hardhatVersionResponse = await enquirer.prompt<{
15
14
  hardhatVersion: "hardhat-2" | "hardhat-3";
16
15
  }>([
@@ -40,8 +39,6 @@ export async function promptForHardhatVersion(): Promise<
40
39
  export async function promptForWorkspace(): Promise<string> {
41
40
  ensureTTY();
42
41
 
43
- const { default: enquirer } = await import("enquirer");
44
-
45
42
  const workspaceResponse = await enquirer.prompt<{ workspace: string }>([
46
43
  {
47
44
  name: "workspace",
@@ -59,8 +56,6 @@ export async function promptForMigrateToEsm(
59
56
  ): Promise<boolean> {
60
57
  ensureTTY();
61
58
 
62
- const { default: enquirer } = await import("enquirer");
63
-
64
59
  const migrateToEsmResponse = await enquirer.prompt<{ migrateToEsm: boolean }>(
65
60
  [
66
61
  {
@@ -80,8 +75,6 @@ export async function promptForTemplate(
80
75
  ): Promise<string> {
81
76
  ensureTTY();
82
77
 
83
- const { default: enquirer } = await import("enquirer");
84
-
85
78
  const templateResponse = await enquirer.prompt<{ template: string }>([
86
79
  {
87
80
  name: "template",
@@ -102,8 +95,6 @@ export async function promptForTemplate(
102
95
  export async function promptForForce(files: string[]): Promise<boolean> {
103
96
  ensureTTY();
104
97
 
105
- const { default: enquirer } = await import("enquirer");
106
-
107
98
  const forceResponse = await enquirer.prompt<{ force: boolean }>([
108
99
  {
109
100
  name: "force",
@@ -121,8 +112,6 @@ export async function promptForInstall(
121
112
  ): Promise<boolean> {
122
113
  ensureTTY();
123
114
 
124
- const { default: enquirer } = await import("enquirer");
125
-
126
115
  const installResponse = await enquirer.prompt<{ install: boolean }>([
127
116
  {
128
117
  name: "install",
@@ -140,8 +129,6 @@ export async function promptForUpdate(
140
129
  ): Promise<boolean> {
141
130
  ensureTTY();
142
131
 
143
- const { default: enquirer } = await import("enquirer");
144
-
145
132
  const updateResponse = await enquirer.prompt<{ update: boolean }>([
146
133
  {
147
134
  name: "update",
@@ -236,6 +236,20 @@ export async function main(
236
236
  log("Error showing banner", bannerError);
237
237
  }
238
238
  }
239
+
240
+ const deprecatedConnectWasCalled = Boolean(
241
+ "wasConnectCalled" in hre.network &&
242
+ hre.network.wasConnectCalled !== undefined &&
243
+ typeof hre.network.wasConnectCalled === "function" &&
244
+ hre.network.wasConnectCalled(),
245
+ );
246
+
247
+ if (deprecatedConnectWasCalled) {
248
+ console.warn(
249
+ "WARNING: hre.network.connect() is deprecated and will be removed in a future version. " +
250
+ "Use hre.network.create() or hre.network.getOrCreate() instead.",
251
+ );
252
+ }
239
253
  } catch (error) {
240
254
  ensureError(error);
241
255
  printErrorMessages(error, builtinGlobalOptions?.showStackTraces);
@@ -13,6 +13,7 @@ import type {
13
13
  GlobalOptionDefinitions,
14
14
  } from "../../types/global-options.js";
15
15
  import type {
16
+ HardhatConfigValidationError,
16
17
  HardhatUserConfigValidationError,
17
18
  HookContext,
18
19
  HookManager,
@@ -96,6 +97,20 @@ export class HardhatRuntimeEnvironmentImplementation
96
97
  );
97
98
 
98
99
  if (!configResolutionResult.success) {
100
+ if (configResolutionResult.configValidationErrors !== undefined) {
101
+ throw new HardhatError(
102
+ HardhatError.ERRORS.CORE.GENERAL.INVALID_RESOLVED_CONFIG,
103
+ {
104
+ errors: `\t${configResolutionResult.configValidationErrors
105
+ .map(
106
+ (error) =>
107
+ `* Resolved config error in config.${error.path.join(".")}: ${error.message}`,
108
+ )
109
+ .join("\n\t")}`,
110
+ },
111
+ );
112
+ }
113
+
99
114
  throw new HardhatError(HardhatError.ERRORS.CORE.GENERAL.INVALID_CONFIG, {
100
115
  errors: `\t${configResolutionResult.userConfigValidationErrors
101
116
  .map(
@@ -211,6 +226,7 @@ export async function resolveUserConfigToHardhatConfig(
211
226
  | {
212
227
  success: false;
213
228
  userConfigValidationErrors: HardhatUserConfigValidationError[];
229
+ configValidationErrors?: HardhatConfigValidationError[];
214
230
  }
215
231
  > {
216
232
  // extend user config:
@@ -225,6 +241,7 @@ export async function resolveUserConfigToHardhatConfig(
225
241
  extendedUserConfig,
226
242
  );
227
243
 
244
+ // If user config is structurally invalid, we can't resolve — return early.
228
245
  if (userConfigValidationErrors.length > 0) {
229
246
  return {
230
247
  success: false,
@@ -252,6 +269,22 @@ export async function resolveUserConfigToHardhatConfig(
252
269
  plugins: resolvedPlugins,
253
270
  };
254
271
 
272
+ // Validate the resolved config (post-resolution checks).
273
+ const resolvedConfigValidationResults = await hooks.runSequentialHandlers(
274
+ "config",
275
+ "validateResolvedConfig",
276
+ [config],
277
+ );
278
+ const resolvedConfigValidationErrors = resolvedConfigValidationResults.flat();
279
+
280
+ if (resolvedConfigValidationErrors.length > 0) {
281
+ return {
282
+ success: false,
283
+ userConfigValidationErrors: [],
284
+ configValidationErrors: resolvedConfigValidationErrors,
285
+ };
286
+ }
287
+
255
288
  return { success: true, config, extendedUserConfig };
256
289
  }
257
290
 
@@ -1,4 +1,5 @@
1
1
  import type { HardhatPlugin } from "../../../types/plugins.js";
2
+ import type { satisfies as SatisfiesT } from "semver";
2
3
 
3
4
  import path from "node:path";
4
5
 
@@ -9,6 +10,10 @@ import {
9
10
  type PackageJson,
10
11
  } from "@nomicfoundation/hardhat-utils/package";
11
12
 
13
+ // semver is slow to load, and this file is loaded by HookManager, so we lazy
14
+ // load it.
15
+ let satisfies: typeof SatisfiesT | undefined;
16
+
12
17
  /**
13
18
  * Validate that a plugin is installed and that its peer dependencies are
14
19
  * installed and satisfy the version constraints.
@@ -84,7 +89,9 @@ export async function detectPluginNpmDependencyProblems(
84
89
 
85
90
  const installedVersion = dependencyPackageJson.version;
86
91
 
87
- const { satisfies } = await import("semver");
92
+ if (satisfies === undefined) {
93
+ ({ satisfies } = await import("semver"));
94
+ }
88
95
 
89
96
  if (!satisfies(installedVersion, versionSpec.replace("workspace:", ""))) {
90
97
  throw new HardhatError(
@@ -1,8 +1,11 @@
1
1
  import type { HookContext, HookManager } from "../../types/hooks.js";
2
2
  import type { UserInterruptionManager } from "../../types/user-interruptions.js";
3
3
 
4
+ import { createInterface } from "node:readline";
5
+
4
6
  import { assertHardhatInvariant } from "@nomicfoundation/hardhat-errors";
5
7
  import { AsyncMutex } from "@nomicfoundation/hardhat-utils/synchronization";
8
+ import chalk from "chalk";
6
9
 
7
10
  export class UserInterruptionManagerImplementation
8
11
  implements UserInterruptionManager
@@ -68,7 +71,6 @@ async function defaultDisplayMessage(
68
71
  interruptor: string,
69
72
  message: string,
70
73
  ) {
71
- const chalk = (await import("chalk")).default;
72
74
  console.log(chalk.blue(`[${interruptor}]`) + ` ${message}`);
73
75
  }
74
76
 
@@ -77,8 +79,6 @@ async function defaultRequestInput(
77
79
  interruptor: string,
78
80
  inputDescription: string,
79
81
  ): Promise<string> {
80
- const { createInterface } = await import("node:readline");
81
- const chalk = (await import("chalk")).default;
82
82
  const rl = createInterface({
83
83
  input: process.stdin,
84
84
  output: process.stdout,
@@ -100,8 +100,6 @@ async function defaultRequestSecretInput(
100
100
  interruptor: string,
101
101
  inputDescription: string,
102
102
  ): Promise<string> {
103
- const { createInterface } = await import("node:readline");
104
- const chalk = (await import("chalk")).default;
105
103
  const rl = createInterface({
106
104
  input: process.stdin,
107
105
  output: process.stdout,
@@ -0,0 +1,9 @@
1
+ export interface Colorizer {
2
+ blue: (text: string) => string;
3
+ green: (text: string) => string;
4
+ red: (text: string) => string;
5
+ cyan: (text: string) => string;
6
+ yellow: (text: string) => string;
7
+ grey: (text: string) => string;
8
+ dim: (text: string) => string;
9
+ }
@@ -7,6 +7,7 @@ import {
7
7
  findDependencyPackageJson,
8
8
  readClosestPackageJson,
9
9
  } from "@nomicfoundation/hardhat-utils/package";
10
+ import { getRequest } from "@nomicfoundation/hardhat-utils/request";
10
11
 
11
12
  let cachedHardhatVersion: string | undefined;
12
13
  let cachedLatestHardhatVersion: string | undefined;
@@ -50,8 +51,6 @@ export async function getEdrVersion(): Promise<string> {
50
51
  }
51
52
 
52
53
  export async function getLatestHardhatVersion(): Promise<string> {
53
- const { getRequest } = await import("@nomicfoundation/hardhat-utils/request");
54
-
55
54
  if (cachedLatestHardhatVersion !== undefined) {
56
55
  return cachedLatestHardhatVersion;
57
56
  }
@@ -89,11 +89,11 @@ export interface ArtifactManager {
89
89
  /**
90
90
  * Returns true if an artifact exists.
91
91
  *
92
- * This function doesn't throw if the name is not unique.
92
+ * This function doesn't throw if the name is not unique, this means that
93
+ * this method may return `true`, and a successive call to `readArtifact` can
94
+ * throw because of a duplicated name.
93
95
  *
94
96
  * @param contractNameOrFullyQualifiedName Contract or fully qualified name.
95
- * @throws Throws an error if a non-unique contract name is used,
96
- * indicating which fully qualified names can be used instead.
97
97
  */
98
98
  artifactExists(contractNameOrFullyQualifiedName: string): Promise<boolean>;
99
99
 
@@ -120,7 +120,8 @@ export interface ArtifactManager {
120
120
  * If it does return an id, it's not guaranteed that the build info is
121
121
  * present.
122
122
  *
123
- * @param contractNameOrFullyQualifiedName Contract or fully qualified name, whose artifact must exist.
123
+ * @param contractNameOrFullyQualifiedName Contract or fully qualified name,
124
+ * whose artifact must exist.
124
125
  * @throws Throws an error if a non-unique contract name is used,
125
126
  * indicating which fully qualified names can be used instead.
126
127
  * @throws Throws an error if the artifact doesn't exist.
@@ -21,6 +21,7 @@ export interface GlobalOptions {
21
21
  help: boolean;
22
22
  init: boolean;
23
23
  showStackTraces: boolean;
24
+ verbosity: number;
24
25
  version: boolean;
25
26
  }
26
27
 
@@ -93,6 +93,20 @@ export interface ConfigHooks {
93
93
  nextResolveConfigurationVariable: ConfigurationVariableResolver,
94
94
  ) => Promise<HardhatConfig>,
95
95
  ) => Promise<HardhatConfig>;
96
+
97
+ /**
98
+ * Provide a handler for this hook to validate the resolved config.
99
+ *
100
+ * This hook runs after all plugins have resolved their config. Use it to
101
+ * validate cross-cutting concerns that require the fully resolved config
102
+ * (e.g., checking that all compiler types are registered).
103
+ *
104
+ * @param resolvedConfig The fully resolved config.
105
+ * @returns An array of validation errors.
106
+ */
107
+ validateResolvedConfig: (
108
+ resolvedConfig: HardhatConfig,
109
+ ) => Promise<HardhatConfigValidationError[]>;
96
110
  }
97
111
 
98
112
  /**
@@ -114,6 +128,29 @@ export interface HardhatUserConfigValidationError {
114
128
  message: string;
115
129
  }
116
130
 
131
+ /**
132
+ * A `HardhatConfig` validation error.
133
+ *
134
+ * This is the equivalent of `HardhatUserConfigValidationError` but for the
135
+ * resolved config.
136
+ */
137
+ export interface HardhatConfigValidationError {
138
+ /**
139
+ * The path from the resolved config object to the value that originated this
140
+ * validation error.
141
+ *
142
+ * For example, if `config.solidity.profiles.foo.compilers[0].type` is
143
+ * invalid, this array would be
144
+ * `["solidity", "profiles", "foo", "compilers", 0, "type"]`.
145
+ */
146
+ path: Array<string | number>;
147
+
148
+ /**
149
+ * The error message.
150
+ */
151
+ message: string;
152
+ }
153
+
117
154
  /**
118
155
  * ConfigurationVariable-related hooks.
119
156
  */
@@ -48,11 +48,59 @@ export interface NetworkConnectionParams<
48
48
  override?: NetworkConfigOverride;
49
49
  }
50
50
 
51
+ export interface CachedNetworkConnectionParams<
52
+ ChainTypeT extends ChainType | string = DefaultChainType,
53
+ > extends NetworkConnectionParams<ChainTypeT> {
54
+ override?: never;
55
+ }
56
+
51
57
  export interface NetworkManager {
58
+ /**
59
+ * Creates a new network connection based on the provided parameters.
60
+ *
61
+ * @param networkOrParams The network name or connection parameters. When
62
+ * omitted, the default network is used.
63
+ *
64
+ * @returns A new {@link NetworkConnection} for the specified network.
65
+ */
66
+ create<ChainTypeT extends ChainType | string = DefaultChainType>(
67
+ networkOrParams?: NetworkConnectionParams<ChainTypeT> | string,
68
+ ): Promise<NetworkConnection<ChainTypeT>>;
69
+
70
+ /**
71
+ * Creates a new network connection based on the provided parameters.
72
+ *
73
+ * @deprecated Use {@link NetworkManager.create} or
74
+ * {@link NetworkManager.getOrCreate} instead.
75
+ *
76
+ * - {@link NetworkManager.create} always creates a new network instance.
77
+ * - {@link NetworkManager.getOrCreate} returns an existing instance if one exists.
78
+ *
79
+ * `connect` will be removed in a future version of Hardhat.
80
+ *
81
+ * @param networkOrParams The network name or connection parameters. When
82
+ * omitted, the default network is used.
83
+ *
84
+ * @returns A new {@link NetworkConnection} for the specified network.
85
+ */
52
86
  connect<ChainTypeT extends ChainType | string = DefaultChainType>(
53
87
  networkOrParams?: NetworkConnectionParams<ChainTypeT> | string,
54
88
  ): Promise<NetworkConnection<ChainTypeT>>;
55
89
 
90
+ /**
91
+ * Returns an existing network connection if one was previously created
92
+ * with the same network name and chain type. Creates a new one otherwise.
93
+ *
94
+ * @param networkOrParams The network name or connection parameters. When
95
+ * omitted, the default network is used. Overrides are not supported.
96
+ *
97
+ * @returns A {@link NetworkConnection} for the specified network, cached
98
+ * by network name and chain type.
99
+ */
100
+ getOrCreate<ChainTypeT extends ChainType | string = DefaultChainType>(
101
+ networkOrParams?: CachedNetworkConnectionParams<ChainTypeT> | string,
102
+ ): Promise<NetworkConnection<ChainTypeT>>;
103
+
56
104
  /**
57
105
  * Spawns an Ethereum JSON-RPC server listening on HTTP and Websocket.
58
106
  *
@@ -43,7 +43,13 @@ export interface BuildOptions {
43
43
  quiet?: boolean;
44
44
 
45
45
  /**
46
- * Whether to compile contracts or tests. Defaults to contracts
46
+ * Whether to compile contracts or tests. Defaults to contracts.
47
+ *
48
+ * When `solidity.splitTestsCompilation` is `false` (the default), only
49
+ * `"contracts"` is accepted.
50
+ *
51
+ * When `solidity.splitTestsCompilation` is `true`, both scopes are valid
52
+ * and produce separate compilation passes.
47
53
  */
48
54
  scope?: BuildScope;
49
55
  }
@@ -272,6 +278,16 @@ export interface SolidityBuildSystem {
272
278
  * The root files are either absolute paths or
273
279
  * `npm:<package-name>/<file-path>` URIs.
274
280
  *
281
+ * When `solidity.splitTestsCompilation` is `false`, contracts and tests are
282
+ * compiled together and `scope: "contracts"` returns every build root:
283
+ * contract roots, test roots, and `npmFilesToBuild` roots.
284
+ *
285
+ * Calling this method with `scope: "tests"` in this mode is a logic error and
286
+ * throws a `HardhatError`.
287
+ *
288
+ * When `solidity.splitTestsCompilation` is `true`, `scope: "contracts"`
289
+ * returns only contract roots and `scope: "tests"` returns only test roots.
290
+ *
275
291
  * @returns An array of root file paths.
276
292
  */
277
293
  getRootFilePaths(options?: { scope?: BuildScope }): Promise<string[]>;
@@ -284,6 +300,15 @@ export interface SolidityBuildSystem {
284
300
  /**
285
301
  * Builds the provided files, generating their compilation artifacts.
286
302
  *
303
+ * When `solidity.splitTestsCompilation` is `false`, this method rejects
304
+ * `scope: "tests"` as a logic error and throws a `HardhatError`
305
+ *
306
+ * In this mode, callers must use `scope: "contracts"` and contracts and tests
307
+ * are built together, emitting their artifacts into the same directory.
308
+ *
309
+ * When `solidity.splitTestsCompilation` is `true`, both scopes are valid
310
+ * and are built into separate artifact directories.
311
+ *
287
312
  * @param rootFilePaths The files to build, which can be either absolute paths
288
313
  * or `npm:<package-name>/<file-path>` URIs.
289
314
  * @param options The options to use when building the files.
@@ -313,6 +338,9 @@ export interface SolidityBuildSystem {
313
338
  * can be returned for multiple files, so you should deduplicate the results
314
339
  * before using them.
315
340
  *
341
+ * When `solidity.splitTestsCompilation` is `false`, this method rejects
342
+ * `scope: "tests"` as a logic error and throws a `HardhatError`.
343
+ *
316
344
  * @param rootFilePaths The files to analyze, which can be either absolute
317
345
  * paths or `npm:<package-name>/<file-path>` URIs.
318
346
  * @param options The options to use when analyzing the files.
@@ -358,6 +386,13 @@ export interface SolidityBuildSystem {
358
386
  /**
359
387
  * Emits the artifacts of the given compilation job.
360
388
  *
389
+ * When `solidity.splitTestsCompilation` is `false`, this method rejects
390
+ * `scope: "tests"` as a logic error and throws a `HardhatError`
391
+ *
392
+ * Artifacts for both contracts and tests are emitted under the main artifacts
393
+ * directory when built with `scope: "contracts"` and `splitTestsCompilation`
394
+ * `false`.
395
+ *
361
396
  * @param compilationJob The compilation job to emit the artifacts of.
362
397
  * @param compilerOutput The result of running the compilation job.
363
398
  * @returns A map from user source name to the absolute paths of the
@@ -379,7 +414,25 @@ export interface SolidityBuildSystem {
379
414
  * This method should only be used after a complete build has succeeded, as
380
415
  * it relies on the build system to have generated all the necessary artifact
381
416
  * files.
382
-
417
+ *
418
+ * When `solidity.splitTestsCompilation` is `false`, this method rejects
419
+ * `scope: "tests"` as a logic error and throws a `HardhatError`. Cleanup in
420
+ * this mode operates on the main artifacts directory using `scope:
421
+ * "contracts"`.
422
+ *
423
+ * What is considered a complete build changes according to
424
+ * `splitTestsCompilation`:
425
+ * - When it's `true`
426
+ * - A full "contracts" build is run when `--no-contracts` isn't used, and
427
+ * no explicit contract `files` are provided (i.e. you can still provide
428
+ * explicit test `files`).
429
+ * - A full "tests" build is run when `--no-tests` isn't used, and no
430
+ * explicit test files `files` are provided (i.e. you can still provide
431
+ * explicit contract `files`)
432
+ * - When it's `false`
433
+ * - A full build is when `files`, `--no-contracts`, nor `--no-tests` are
434
+ * used.
435
+ *
383
436
  * @param rootFilePaths All the root files of the project.
384
437
  */
385
438
  cleanupArtifacts(
@@ -405,7 +458,17 @@ export interface SolidityBuildSystem {
405
458
  ): Promise<CompilerOutput>;
406
459
 
407
460
  /**
408
- * Gets the artifacts directory for a given target (contracts/tests)
461
+ * Gets the artifacts directory for a given target (contracts/tests).
462
+ *
463
+ * When `solidity.splitTestsCompilation` is `false`, both scopes return the
464
+ * main artifacts directory, because contracts and tests share it.
465
+ *
466
+ * Unlike the other scope-aware methods, this one does not throw on that mode,
467
+ * as it's a read-only method that can be helpful for plugins.
468
+ *
469
+ * When `solidity.splitTestsCompilation` is `true`, `scope: "contracts"`
470
+ * returns the main artifacts directory and `scope: "tests"` returns a
471
+ * separate test-artifacts directory under the cache path.
409
472
  */
410
473
  getArtifactsDirectory(scope: BuildScope): Promise<string>;
411
474
  }
@@ -1,9 +1,10 @@
1
1
  import type { CompilerInput } from "./compiler-io.js";
2
2
  import type { DependencyGraph } from "./dependency-graph.js";
3
- import type { SolcConfig } from "../config.js";
3
+ import type { ToolVersions } from "./solidity-artifacts.js";
4
+ import type { SolidityCompilerConfig } from "../config.js";
4
5
 
5
6
  /**
6
- * A compilation job to be run using solc.
7
+ * A compilation job to be run.
7
8
  */
8
9
  export interface CompilationJob {
9
10
  /**
@@ -13,15 +14,21 @@ export interface CompilationJob {
13
14
  dependencyGraph: DependencyGraph;
14
15
 
15
16
  /**
16
- * The solc config to use.
17
+ * The compiler config to use.
17
18
  */
18
- solcConfig: SolcConfig;
19
+ solcConfig: SolidityCompilerConfig;
19
20
 
20
21
  /**
21
- * The long version of the solc compiler to be used.
22
+ * The long version of the compiler to be used.
22
23
  */
23
24
  solcLongVersion: string;
24
25
 
26
+ /**
27
+ * The versions to include in the build info, if any.
28
+ * When present, these versions influence the build id.
29
+ */
30
+ toolVersions?: ToolVersions;
31
+
25
32
  /**
26
33
  * Returns the solc input to be used.
27
34
  */
@@ -1,5 +1,13 @@
1
1
  import type { CompilerInput, CompilerOutput } from "./compiler-io.js";
2
2
 
3
+ /**
4
+ * A record with the versions of the different tools used to create a
5
+ * build info.
6
+ */
7
+ export interface ToolVersions {
8
+ readonly hardhat: string;
9
+ }
10
+
3
11
  /**
4
12
  * A SolidityBuildInfo is a file that contains all the information of a solc
5
13
  * run. It includes all the necessary information to recreate that exact same
@@ -14,6 +22,12 @@ export interface SolidityBuildInfo {
14
22
  /**
15
23
  * The id of the build, which is derived from the rest of the data,
16
24
  * guaranteeing that it's unique and deterministic.
25
+ *
26
+ * When `compilerType` is present and is not "solc", the format is:
27
+ * `solc-<major>_<minor>_<patch>-<compiler-type>-<job-hash>`
28
+ *
29
+ * Otherwise (i.e. solc or undefined), the format is:
30
+ * `solc-<major>_<minor>_<patch>-<job-hash>`
17
31
  */
18
32
  readonly id: string;
19
33
 
@@ -27,6 +41,24 @@ export interface SolidityBuildInfo {
27
41
  */
28
42
  readonly solcLongVersion: string;
29
43
 
44
+ /**
45
+ * The compiler type used for this build. If absent or undefined, it means
46
+ * "solc" was used.
47
+ *
48
+ * Note: This is typed as `string` rather than `SolidityCompilerType` because
49
+ * the build info may come from a different Hardhat setup where the compiler
50
+ * type may not be registered in the current type definitions.
51
+ */
52
+ readonly compilerType?: string;
53
+
54
+ /**
55
+ * Versions of the different tools used to create this build info.
56
+ *
57
+ * Not present if the build profile used to create this build info
58
+ * had `toolVersionsInBuildInfo` as `false`.
59
+ */
60
+ readonly toolVersions?: ToolVersions;
61
+
30
62
  /**
31
63
  * A mapping from user source names to input source names, for the root
32
64
  * files of the build (i.e. the files whose artifacts where being compiled).
@@ -20,6 +20,6 @@
20
20
  "solidity-coverage": "^0.8.0",
21
21
  "ts-node": ">=8.0.0",
22
22
  "typescript": "~5.0.4",
23
- "viem": "^2.43.0"
23
+ "viem": "^2.47.6"
24
24
  }
25
25
  }
@@ -16,5 +16,16 @@
16
16
  # Typechain output
17
17
  /types
18
18
 
19
+ # Environment files
20
+ .env
21
+ .env.*
22
+ !.env.example
23
+
19
24
  # Hardhat coverage reports
20
25
  /coverage
26
+
27
+ # Gas snapshot files
28
+ /.gas-snapshot
29
+
30
+ # Snapshot cheatcodes output
31
+ /snapshots
@@ -5,22 +5,22 @@
5
5
  "description": "A TypeScript Hardhat project using Node Test Runner and Viem",
6
6
  "type": "module",
7
7
  "devDependencies": {
8
- "hardhat": "workspace:^3.2.0",
9
- "@nomicfoundation/hardhat-toolbox-viem": "workspace:^5.0.3",
10
- "@nomicfoundation/hardhat-ignition": "workspace:^3.1.0",
8
+ "hardhat": "workspace:^3.4.0",
9
+ "@nomicfoundation/hardhat-toolbox-viem": "workspace:^5.0.4",
10
+ "@nomicfoundation/hardhat-ignition": "workspace:^3.1.2",
11
11
  "@types/node": "^22.8.5",
12
12
  "forge-std": "foundry-rs/forge-std#v1.9.4",
13
13
  "typescript": "~5.8.0",
14
- "viem": "^2.43.0"
14
+ "viem": "^2.47.6"
15
15
  },
16
16
  "peerDependencies": {
17
- "@nomicfoundation/hardhat-ignition-viem": "workspace:^3.1.0",
18
- "@nomicfoundation/hardhat-keystore": "workspace:^3.0.5",
19
- "@nomicfoundation/hardhat-network-helpers": "workspace:^3.0.4",
20
- "@nomicfoundation/hardhat-node-test-runner": "workspace:^3.0.12",
21
- "@nomicfoundation/hardhat-viem": "workspace:^3.0.4",
22
- "@nomicfoundation/hardhat-viem-assertions": "workspace:^3.0.7",
23
- "@nomicfoundation/hardhat-verify": "workspace:^3.0.12",
24
- "@nomicfoundation/ignition-core": "workspace:^3.1.0"
17
+ "@nomicfoundation/hardhat-ignition-viem": "workspace:^3.1.2",
18
+ "@nomicfoundation/hardhat-keystore": "workspace:^3.0.6",
19
+ "@nomicfoundation/hardhat-network-helpers": "workspace:^3.0.5",
20
+ "@nomicfoundation/hardhat-node-test-runner": "workspace:^3.0.13",
21
+ "@nomicfoundation/hardhat-viem": "workspace:^3.0.5",
22
+ "@nomicfoundation/hardhat-viem-assertions": "workspace:^3.0.8",
23
+ "@nomicfoundation/hardhat-verify": "workspace:^3.0.14",
24
+ "@nomicfoundation/ignition-core": "workspace:^3.1.2"
25
25
  }
26
26
  }
@@ -1,6 +1,6 @@
1
1
  import { network } from "hardhat";
2
2
 
3
- const { viem } = await network.connect({
3
+ const { viem } = await network.create({
4
4
  network: "hardhatOp",
5
5
  chainType: "op",
6
6
  });