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
@@ -1,4 +1,4 @@
1
- import type { SolcConfig } from "../../../types/config.js";
1
+ import type { SolidityCompilerConfig } from "../../../types/config.js";
2
2
  import type {
3
3
  BuildOptions,
4
4
  CompilationJobCreationError,
@@ -13,6 +13,26 @@ import type {
13
13
 
14
14
  import "../../../types/config.js";
15
15
  declare module "../../../types/config.js" {
16
+ /**
17
+ * An interface with a key per compiler type.
18
+ * The types of the values don't matter; we use `true` as a convention.
19
+ *
20
+ * By default, only "solc" is provided. Plugins can extend this via
21
+ * declaration merging to add new compiler types (e.g. "solx").
22
+ */
23
+ export interface SolidityCompilerTypeDefinitions {
24
+ solc: true;
25
+ }
26
+
27
+ /**
28
+ * The different Solidity compiler types, derived from
29
+ * SolidityCompilerTypeDefinitions. Extensible via declaration merging.
30
+ */
31
+ export type SolidityCompilerType = keyof SolidityCompilerTypeDefinitions;
32
+
33
+ /**
34
+ * The type of `userConfig.solidity`.
35
+ */
16
36
  export type SolidityUserConfig =
17
37
  | string
18
38
  | string[]
@@ -20,68 +40,271 @@ declare module "../../../types/config.js" {
20
40
  | MultiVersionSolidityUserConfig
21
41
  | BuildProfilesSolidityUserConfig;
22
42
 
23
- export interface SolcUserConfig {
43
+ /**
44
+ * Fields that all the object-typed variants of SolidityUserConfig share.
45
+ *
46
+ * Note: All the variants of SolidityUserConfig except for the string and
47
+ * array of strings MUST extend this interface. For plugins creating their
48
+ * own `SingleVersionSolidityUserConfig` variant, see
49
+ * {@link CommonSingleVersionSolidityUserConfig}.
50
+ */
51
+ export interface CommonSolidityUserConfig {
52
+ isolated?: boolean;
53
+ npmFilesToBuild?: string[];
54
+ /**
55
+ * Controls whether Solidity test files are compiled in a separate pass
56
+ * from contract files.
57
+ *
58
+ * When `false` (the default), contracts and tests are compiled together
59
+ * in a single pass.
60
+ *
61
+ * When `true`, contracts and tests are compiled separately.
62
+ */
63
+ splitTestsCompilation?: boolean;
64
+ }
65
+
66
+ /**
67
+ * Common fields for every SingleVersionSolidityUserConfig variant.
68
+ *
69
+ * NOTE: All the variants of SingleVersionSolidityUserConfig must extend this
70
+ * interface.
71
+ */
72
+ export interface CommonSingleVersionSolidityUserConfig
73
+ extends CommonSolidityUserConfig {
74
+ toolVersionsInBuildInfo?: boolean;
75
+ }
76
+
77
+ /**
78
+ * Fields that all the SolidityCompilerUserConfig variants share.
79
+ *
80
+ * Note: All the types of SolidityCompilerUserConfig MUST extend this
81
+ * interface. This is especially relevant for plugins creating their own
82
+ * `SolidityCompilerUserConfig` variant.
83
+ */
84
+ export interface CommonSolidityCompilerUserConfig {
85
+ type?: SolidityCompilerType;
24
86
  version: string;
25
87
  settings?: any;
26
88
  path?: string;
27
- preferWasm?: boolean;
28
89
  }
29
90
 
30
- export interface SingleVersionSolcUserConfig extends SolcUserConfig {
31
- isolated?: boolean;
91
+ /**
92
+ * Deprecated: Use `SolcSolidityCompilerUserConfig` instead.
93
+ * @deprecated
94
+ */
95
+ export interface SolcUserConfig extends CommonSolidityCompilerUserConfig {
96
+ // Note: This field is optional for backwards compatibility. No `type` means
97
+ // "solc" across all of Hardhat.
98
+ type?: "solc";
32
99
  preferWasm?: boolean;
33
100
  }
34
101
 
35
- export interface MultiVersionSolcUserConfig {
36
- isolated?: boolean;
37
- preferWasm?: boolean;
38
- compilers: SolcUserConfig[];
39
- overrides?: Record<string, SolcUserConfig>;
102
+ /**
103
+ * Solc-specific SolidityCompilerUserConfig.
104
+ */
105
+ /* eslint-disable-next-line @typescript-eslint/no-empty-interface -- Defined
106
+ in SolcUserConfig for backwards compatibility */
107
+ export interface SolcSolidityCompilerUserConfig extends SolcUserConfig {}
108
+
109
+ /**
110
+ * A map from compiler type to its SolidityCompilerUserConfig type.
111
+ *
112
+ * Note: The types MUST extend `CommonSolidityCompilerUserConfig`.
113
+ */
114
+ export interface SolidityCompilerUserConfigPerType {
115
+ solc: SolcSolidityCompilerUserConfig;
40
116
  }
41
117
 
42
- export interface CommonSolidityUserConfig {
43
- npmFilesToBuild?: string[];
118
+ /**
119
+ * The type of all the compiler user configs.
120
+ */
121
+ export type SolidityCompilerUserConfig =
122
+ | {
123
+ [type in keyof SolidityCompilerUserConfigPerType]: SolidityCompilerUserConfigPerType[type];
124
+ }[keyof SolidityCompilerUserConfigPerType]
125
+ // SolcSolidityCompilerUserConfig when the type isn't present
126
+ | (Omit<SolcSolidityCompilerUserConfig, "type"> &
127
+ Partial<Pick<SolcSolidityCompilerUserConfig, "type">>);
128
+
129
+ /**
130
+ * Deprecated: Use `SolcSingleVersionSolidityUserConfig` instead.
131
+ * @deprecated
132
+ */
133
+ export interface SingleVersionSolcUserConfig
134
+ extends SolcSolidityCompilerUserConfig,
135
+ CommonSingleVersionSolidityUserConfig {}
136
+
137
+ /**
138
+ * Solc-specific SingleVersionSolidityUserConfig.
139
+ */
140
+ /* eslint-disable-next-line @typescript-eslint/no-empty-interface -- Defined
141
+ in SingleVersionSolcUserConfig for backwards compatibility */
142
+ export interface SolcSingleVersionSolidityUserConfig
143
+ extends SingleVersionSolcUserConfig {}
144
+
145
+ /**
146
+ * A map from compiler type to its SingleVersionSolidityUserConfig type.
147
+ *
148
+ * Note: The types MUST extend `CommonSingleVersionSolidityUserConfig`.
149
+ */
150
+ export interface SingleVersionSolidityUserConfigPerType {
151
+ solc: SolcSingleVersionSolidityUserConfig;
44
152
  }
45
153
 
46
- export interface SingleVersionSolidityUserConfig
47
- extends SingleVersionSolcUserConfig,
48
- CommonSolidityUserConfig {}
154
+ /**
155
+ * The type of all the single version user configs.
156
+ */
157
+ export type SingleVersionSolidityUserConfig =
158
+ | {
159
+ [type in keyof SingleVersionSolidityUserConfigPerType]: SingleVersionSolidityUserConfigPerType[type];
160
+ }[keyof SingleVersionSolidityUserConfigPerType]
161
+ // SolcSingleVersionSolidityUserConfig when the type isn't present
162
+ | (Omit<SolcSingleVersionSolidityUserConfig, "type"> &
163
+ Partial<Pick<SolcSingleVersionSolidityUserConfig, "type">>);
164
+
165
+ /**
166
+ * Deprecated: Use `MultiVersionSolidityUserConfig` or
167
+ * `MultiVersionBuildProfileUserConfig` instead.
168
+ * @deprecated
169
+ */
170
+ export interface MultiVersionSolcUserConfig {
171
+ // Note: preferWasm is here for backwards compatibility. It can't be
172
+ // defined or not dependent on the type, as there isn't a top-level type.
173
+ // Instead, we post-validate the resolved config to make sure that it's
174
+ // only `true` if all the `compilers` and `overrides` have type `solc`.
175
+ preferWasm?: boolean;
176
+ // Note: Duplicated wrt CommonSolidityUserConfig for backwards compatibility
177
+ isolated?: boolean;
178
+ compilers: SolidityCompilerUserConfig[];
179
+ overrides?: Record<string, SolidityCompilerUserConfig>;
180
+ }
49
181
 
182
+ /**
183
+ * The type of a multi-version SolidityUserConfig.
184
+ *
185
+ * Partially defined in `MultiVersionSolcUserConfig` for backwards
186
+ * compatibility.
187
+ */
50
188
  export interface MultiVersionSolidityUserConfig
51
189
  extends MultiVersionSolcUserConfig,
52
- CommonSolidityUserConfig {}
190
+ CommonSolidityUserConfig {
191
+ toolVersionsInBuildInfo?: boolean;
192
+ }
193
+
194
+ /**
195
+ * The type of a single-version build profile user config.
196
+ */
197
+ export type SingleVersionBuildProfileUserConfig =
198
+ SolidityCompilerUserConfig & {
199
+ isolated?: boolean;
200
+ toolVersionsInBuildInfo?: boolean;
201
+ };
53
202
 
203
+ /**
204
+ * The type of a multi-version build profile user config.
205
+ * Mostly defined in `MultiVersionSolcUserConfig` for backwards compatibility
206
+ */
207
+ export interface MultiVersionBuildProfileUserConfig
208
+ extends MultiVersionSolcUserConfig {
209
+ toolVersionsInBuildInfo?: boolean;
210
+ }
211
+
212
+ /**
213
+ * The type of the build profile version of the SolidityUserConfig.
214
+ */
54
215
  export interface BuildProfilesSolidityUserConfig
55
216
  extends CommonSolidityUserConfig {
56
217
  profiles: Record<
57
218
  string,
58
- SingleVersionSolcUserConfig | MultiVersionSolcUserConfig
219
+ SingleVersionBuildProfileUserConfig | MultiVersionBuildProfileUserConfig
59
220
  >;
60
221
  }
61
222
 
223
+ /**
224
+ * Extension of HardhatUserConfig with the `solidity` property.
225
+ */
62
226
  export interface HardhatUserConfig {
63
227
  solidity?: SolidityUserConfig;
64
228
  }
65
229
 
66
- export interface SolcConfig {
230
+ /**
231
+ * Common fields of a SolidityCompilerConfig.
232
+ *
233
+ * Note: All the types of SolidityCompiler config MUST extend this interface.
234
+ * This is especially relevant for plugins creating their own
235
+ * `SolidityCompilerConfig` variant.
236
+ */
237
+ export interface CommonSolidityCompilerConfig {
238
+ type?: SolidityCompilerType;
67
239
  version: string;
68
240
  settings: any;
69
241
  path?: string;
242
+ }
243
+
244
+ /**
245
+ * Deprecated: Use `SolcSolidityCompilerConfig` instead.
246
+ * @deprecated
247
+ */
248
+ export interface SolcConfig extends CommonSolidityCompilerConfig {
249
+ // Note: This field is optional for backwards compatibility. No `type` means
250
+ // "solc" across all of Hardhat.
251
+ type?: "solc";
70
252
  preferWasm?: boolean;
71
253
  }
72
254
 
255
+ /**
256
+ * The type of a solc-specific SolidityCompilerConfig.
257
+ */
258
+ /* eslint-disable-next-line @typescript-eslint/no-empty-interface -- Defined
259
+ in SolcConfig for backwards compatibility */
260
+ export interface SolcSolidityCompilerConfig extends SolcConfig {}
261
+
262
+ /**
263
+ * A map from compiler type to its `SolidityCompilerConfig` type. Note that
264
+ * the types MUST extend `CommonSolidityCompilerConfig`.
265
+ */
266
+ export interface SolidityCompilerConfigPerType {
267
+ solc: SolcSolidityCompilerConfig;
268
+ }
269
+
270
+ /**
271
+ * The type of all the compiler configs.
272
+ */
273
+ export type SolidityCompilerConfig =
274
+ | {
275
+ [type in keyof SolidityCompilerConfigPerType]: SolidityCompilerConfigPerType[type] & {
276
+ type: type;
277
+ };
278
+ }[keyof SolidityCompilerConfigPerType]
279
+ | (Omit<SolcSolidityCompilerConfig, "type"> &
280
+ Partial<Pick<SolcSolidityCompilerConfig, "type">>);
281
+
282
+ /**
283
+ * The type of a resolved build profile config.
284
+ */
73
285
  export interface SolidityBuildProfileConfig {
74
286
  isolated: boolean;
75
287
  preferWasm: boolean;
76
- compilers: SolcConfig[];
77
- overrides: Record<string, SolcConfig>;
288
+ // Note: This is optional for backwards compatibility.
289
+ // If `undefined` is present, it's equivalent to `false`.
290
+ toolVersionsInBuildInfo?: boolean;
291
+ compilers: SolidityCompilerConfig[];
292
+ overrides: Record<string, SolidityCompilerConfig>;
78
293
  }
79
294
 
295
+ /**
296
+ * Resolved Solidity config.
297
+ */
80
298
  export interface SolidityConfig {
81
299
  profiles: Record<string, SolidityBuildProfileConfig>;
82
300
  npmFilesToBuild: string[];
301
+ registeredCompilerTypes: SolidityCompilerType[];
302
+ splitTestsCompilation: boolean;
83
303
  }
84
304
 
305
+ /**
306
+ * An extension of HardhatConfig with the `solidity` property.
307
+ */
85
308
  export interface HardhatConfig {
86
309
  solidity: SolidityConfig;
87
310
  }
@@ -116,6 +339,40 @@ declare module "../../../types/hooks.js" {
116
339
  }
117
340
 
118
341
  export interface SolidityHooks {
342
+ /**
343
+ * Hook triggered to download compilers needed for compilation.
344
+ * Each handler should download compilers it is responsible for.
345
+ * Runs in parallel — all registered handlers execute concurrently.
346
+ *
347
+ * @param context The hook context.
348
+ * @param compilerConfigs All compiler configurations from all build profiles.
349
+ * @param quiet Whether to suppress download progress output.
350
+ */
351
+ downloadCompilers: (
352
+ context: HookContext,
353
+ compilerConfigs: SolidityCompilerConfig[],
354
+ quiet: boolean,
355
+ ) => Promise<void>;
356
+
357
+ /**
358
+ * Hook to obtain a Compiler instance for a given compiler configuration.
359
+ * The default handler returns a solc compiler. Plugins can intercept to
360
+ * return their own compiler (e.g. SolxCompiler for type: "solx").
361
+ *
362
+ * @param context The hook context.
363
+ * @param compilerConfig The compiler configuration to get a compiler for.
364
+ * @param next A function to call the next handler for this hook.
365
+ * @returns A Compiler instance.
366
+ */
367
+ getCompiler: (
368
+ context: HookContext,
369
+ compilerConfig: SolidityCompilerConfig,
370
+ next: (
371
+ nextContext: HookContext,
372
+ nextCompilerConfig: SolidityCompilerConfig,
373
+ ) => Promise<Compiler>,
374
+ ) => Promise<Compiler>;
375
+
119
376
  /**
120
377
  * Hook triggered during the cleanup process of Solidity compilation artifacts.
121
378
  * This hook runs after unused artifacts and build-info files have been removed.
@@ -166,7 +423,7 @@ declare module "../../../types/hooks.js" {
166
423
  ): Promise<string>;
167
424
 
168
425
  /**
169
- * Hook triggered within the compilation job when its' solc input is first constructed.
426
+ * Hook triggered within the compilation job when its solc input is first constructed.
170
427
  *
171
428
  * @param context The hook context.
172
429
  * @param solcInput The solc input that will be passed to solc.
@@ -215,18 +472,18 @@ declare module "../../../types/hooks.js" {
215
472
  ) => Promise<CompilationJobCreationError | Map<string, FileBuildResult>>;
216
473
 
217
474
  /**
218
- * Hook triggered to invoke a passed in Solc compiler on the
219
- * Solc input generated for a given compilation job.
220
- * This hook allows for manipulating the Solc input passed into the Solc
221
- * compiler Hardhat has selected for the compilation job, and similarly to
222
- * manipulate the Solc output.
475
+ * Hook triggered to invoke a compiler on the standard-json input
476
+ * generated for a given compilation job.
477
+ * This hook allows for manipulating the input passed into the compiler
478
+ * Hardhat has selected for the compilation job, and similarly to
479
+ * manipulate the output.
223
480
  *
224
481
  * @param context The hook context.
225
- * @param compile The Solc compiler selected by Hardhat for this compilation
226
- * job.
227
- * @param solcInput The solc input json constructed from the compilation
482
+ * @param compiler The compiler selected by Hardhat for this compilation
228
483
  * job.
229
- * @param solcConfig The configuration used to setup solc e.g. version.
484
+ * @param solcInput The standard-json input constructed from the
485
+ * compilation job.
486
+ * @param solcConfig The compiler configuration (version, type, etc.).
230
487
  * @param next A function to call the next handler for this hook, or the
231
488
  * default implementation if no more handlers exist.
232
489
  */
@@ -234,12 +491,12 @@ declare module "../../../types/hooks.js" {
234
491
  context: HookContext,
235
492
  compiler: Compiler,
236
493
  solcInput: CompilerInput,
237
- solcConfig: SolcConfig,
494
+ solcConfig: SolidityCompilerConfig,
238
495
  next: (
239
496
  nextContext: HookContext,
240
497
  nextCompiler: Compiler,
241
498
  nextSolcInput: CompilerInput,
242
- nextSolcConfig: SolcConfig,
499
+ nextSolcConfig: SolidityCompilerConfig,
243
500
  ) => Promise<CompilerOutput>,
244
501
  ): Promise<CompilerOutput>;
245
502
 
@@ -19,6 +19,7 @@ import {
19
19
  conditionalUnionType,
20
20
  sensitiveStringSchema,
21
21
  sensitiveUrlSchema,
22
+ unionType,
22
23
  validateUserConfigZodType,
23
24
  } from "@nomicfoundation/hardhat-zod-utils";
24
25
  import { z } from "zod";
@@ -28,7 +29,6 @@ export const DEFAULT_FUZZ_SEED =
28
29
  "0x7727ea51af0441c20da14dcd68a15dac8c9ebd589c5be8fa8c87c1d3720450bc";
29
30
 
30
31
  const solidityTestUserConfigType = z.object({
31
- timeout: z.number().optional(),
32
32
  fsPermissions: z
33
33
  .object({
34
34
  readWriteFile: z.array(z.string()).optional(),
@@ -66,7 +66,12 @@ const solidityTestUserConfigType = z.object({
66
66
  forking: z
67
67
  .object({
68
68
  url: z.optional(sensitiveUrlSchema),
69
- blockNumber: z.bigint().optional(),
69
+ blockNumber: z.optional(
70
+ unionType(
71
+ [z.number().int().nonnegative().safe(), z.bigint().nonnegative()],
72
+ "Expected a nonnegative safe int or a nonnegative bigint",
73
+ ),
74
+ ),
70
75
  rpcEndpoints: z.record(sensitiveStringSchema).optional(),
71
76
  })
72
77
  .optional(),
@@ -122,6 +127,10 @@ export function resolveSolidityTestForkingConfig(
122
127
 
123
128
  return {
124
129
  ...forkingUserConfig,
130
+ blockNumber:
131
+ forkingUserConfig.blockNumber !== undefined
132
+ ? BigInt(forkingUserConfig.blockNumber)
133
+ : undefined,
125
134
  url:
126
135
  forkingUserConfig.url !== undefined
127
136
  ? resolveConfigurationVariable(forkingUserConfig.url)
@@ -1,14 +1,24 @@
1
1
  import type { Artifact, ArtifactManager } from "../../../types/artifacts.js";
2
2
  import type {
3
- BuildInfoAndOutput,
3
+ BuildInfoAndOutput as EdrBuildInfoAndOutput,
4
4
  Artifact as EdrArtifact,
5
5
  } from "@nomicfoundation/edr";
6
6
 
7
7
  import { assertHardhatInvariant } from "@nomicfoundation/hardhat-errors";
8
8
  import { readBinaryFile } from "@nomicfoundation/hardhat-utils/fs";
9
9
 
10
- const BUILD_INFO_FORMAT =
11
- /^solc-(?<major>\d+)_(?<minor>\d+)_(?<patch>\d+)-[0-9a-fA-F]*$/;
10
+ export interface BuildInfoAndOutput extends EdrBuildInfoAndOutput {
11
+ buildInfoId: string;
12
+ }
13
+
14
+ export interface EdrArtifactWithMetadata {
15
+ edrArtifact: EdrArtifact;
16
+ userSourceName: string;
17
+ buildInfoId: string;
18
+ }
19
+
20
+ export const BUILD_INFO_FORMAT: RegExp =
21
+ /^solc-(?<major>\d+)_(?<minor>\d+)_(?<patch>\d+)(?:-(?<compilerType>[a-zA-Z][a-zA-Z0-9]*))?-[0-9a-fA-F]*$/;
12
22
 
13
23
  /**
14
24
  * This function returns all the build infos and associated outputs.
@@ -16,16 +26,16 @@ const BUILD_INFO_FORMAT =
16
26
  * @param artifactManager The artifact manager.
17
27
  * @returns The build infos in the Hardhat v3 format as expected by the EDR.
18
28
  */
19
- export async function getBuildInfos(
29
+ export async function getBuildInfosAndOutputs(
20
30
  artifactManager: ArtifactManager,
21
31
  ): Promise<BuildInfoAndOutput[]> {
22
- const buildIds = await artifactManager.getAllBuildInfoIds();
32
+ const buildInfoIds = await artifactManager.getAllBuildInfoIds();
23
33
 
24
34
  return Promise.all(
25
- Array.from(buildIds).map(async (buildId) => {
26
- const buildInfoPath = await artifactManager.getBuildInfoPath(buildId);
35
+ Array.from(buildInfoIds).map(async (buildInfoId) => {
36
+ const buildInfoPath = await artifactManager.getBuildInfoPath(buildInfoId);
27
37
  const buildInfoOutputPath =
28
- await artifactManager.getBuildInfoOutputPath(buildId);
38
+ await artifactManager.getBuildInfoOutputPath(buildInfoId);
29
39
 
30
40
  // This is only safe because of how we currently interact with getBuildInfos
31
41
  // i.e. we call it immediately after a build which should ensure both
@@ -45,6 +55,7 @@ export async function getBuildInfos(
45
55
  const output = await readBinaryFile(buildInfoOutputPath);
46
56
 
47
57
  return {
58
+ buildInfoId,
48
59
  buildInfo,
49
60
  output,
50
61
  };
@@ -58,9 +69,9 @@ export async function getBuildInfos(
58
69
  * @param artifactManager The artifact manager.
59
70
  * @returns The artifacts in the format expected by the EDR.
60
71
  */
61
- export async function getEdrArtifacts(
72
+ export async function buildEdrArtifactsWithMetadata(
62
73
  artifactManager: ArtifactManager,
63
- ): Promise<Array<{ edrArtifact: EdrArtifact; userSourceName: string }>> {
74
+ ): Promise<EdrArtifactWithMetadata[]> {
64
75
  const fullyQualifiedNames = await artifactManager.getAllFullyQualifiedNames();
65
76
 
66
77
  const artifacts = await Promise.all(
@@ -145,6 +156,7 @@ export async function getEdrArtifacts(
145
156
  contract,
146
157
  },
147
158
  userSourceName: artifact.sourceName,
159
+ buildInfoId: artifact.buildInfoId,
148
160
  };
149
161
  });
150
162
  }