hardhat 3.1.12 → 3.3.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 (304) hide show
  1. package/CHANGELOG.md +57 -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/coverage/helpers.d.ts +5 -0
  6. package/dist/src/internal/builtin-plugins/coverage/helpers.d.ts.map +1 -1
  7. package/dist/src/internal/builtin-plugins/coverage/helpers.js +12 -0
  8. package/dist/src/internal/builtin-plugins/coverage/helpers.js.map +1 -1
  9. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/hre.d.ts.map +1 -1
  10. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/hre.js +2 -5
  11. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/hre.js.map +1 -1
  12. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.d.ts.map +1 -1
  13. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js +3 -5
  14. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js.map +1 -1
  15. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/test.d.ts.map +1 -1
  16. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/test.js +4 -15
  17. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/test.js.map +1 -1
  18. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts +11 -10
  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 +80 -13
  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.d.ts +5 -5
  23. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts.map +1 -1
  24. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js +25 -3
  25. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js.map +1 -1
  26. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.d.ts.map +1 -1
  27. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js +4 -5
  28. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js.map +1 -1
  29. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.d.ts.map +1 -1
  30. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.js +13 -17
  31. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.js.map +1 -1
  32. package/dist/src/internal/builtin-plugins/gas-analytics/index.d.ts.map +1 -1
  33. package/dist/src/internal/builtin-plugins/gas-analytics/index.js +8 -1
  34. package/dist/src/internal/builtin-plugins/gas-analytics/index.js.map +1 -1
  35. package/dist/src/internal/builtin-plugins/gas-analytics/type-extensions.d.ts +1 -0
  36. package/dist/src/internal/builtin-plugins/gas-analytics/type-extensions.d.ts.map +1 -1
  37. package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts +33 -0
  38. package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts.map +1 -1
  39. package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.d.ts.map +1 -1
  40. package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.js +12 -2
  41. package/dist/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.js.map +1 -1
  42. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts +9 -3
  43. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts.map +1 -1
  44. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js +65 -42
  45. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js.map +1 -1
  46. package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.d.ts +11 -0
  47. package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.d.ts.map +1 -0
  48. package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.js +104 -0
  49. package/dist/src/internal/builtin-plugins/network-manager/edr/genesis-state.js.map +1 -0
  50. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.d.ts +6 -0
  51. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.d.ts.map +1 -0
  52. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.js +152 -0
  53. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.js.map +1 -0
  54. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.d.ts +19 -0
  55. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.d.ts.map +1 -0
  56. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.js +104 -0
  57. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.js.map +1 -0
  58. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js +1 -1
  59. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js.map +1 -1
  60. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.d.ts.map +1 -1
  61. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.js +8 -8
  62. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.js.map +1 -1
  63. package/dist/src/internal/builtin-plugins/network-manager/http-provider.d.ts.map +1 -1
  64. package/dist/src/internal/builtin-plugins/network-manager/http-provider.js +1 -0
  65. package/dist/src/internal/builtin-plugins/network-manager/http-provider.js.map +1 -1
  66. package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts +2 -2
  67. package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts.map +1 -1
  68. package/dist/src/internal/builtin-plugins/network-manager/network-manager.js +78 -8
  69. package/dist/src/internal/builtin-plugins/network-manager/network-manager.js.map +1 -1
  70. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.d.ts.map +1 -1
  71. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.js +56 -33
  72. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.js.map +1 -1
  73. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.d.ts +0 -3
  74. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.d.ts.map +1 -1
  75. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.js +9 -12
  76. package/dist/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.js.map +1 -1
  77. package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.d.ts.map +1 -1
  78. package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.js +1 -1
  79. package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.js.map +1 -1
  80. package/dist/src/internal/builtin-plugins/node/helpers.d.ts.map +1 -1
  81. package/dist/src/internal/builtin-plugins/node/helpers.js +6 -2
  82. package/dist/src/internal/builtin-plugins/node/helpers.js.map +1 -1
  83. package/dist/src/internal/builtin-plugins/node/json-rpc/handler.js +7 -2
  84. package/dist/src/internal/builtin-plugins/node/json-rpc/handler.js.map +1 -1
  85. package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.d.ts.map +1 -1
  86. package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.js +4 -0
  87. package/dist/src/internal/builtin-plugins/solidity/build-system/artifacts.js.map +1 -1
  88. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts +5 -1
  89. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts.map +1 -1
  90. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js +86 -47
  91. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js.map +1 -1
  92. package/dist/src/internal/builtin-plugins/solidity/build-system/cache.d.ts +1 -0
  93. package/dist/src/internal/builtin-plugins/solidity/build-system/cache.d.ts.map +1 -1
  94. package/dist/src/internal/builtin-plugins/solidity/build-system/cache.js.map +1 -1
  95. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.d.ts +3 -3
  96. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.d.ts.map +1 -1
  97. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.js +24 -4
  98. package/dist/src/internal/builtin-plugins/solidity/build-system/compilation-job.js.map +1 -1
  99. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.d.ts +16 -0
  100. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.d.ts.map +1 -1
  101. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.js +1 -1
  102. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.js.map +1 -1
  103. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.d.ts.map +1 -1
  104. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js +1 -2
  105. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.js.map +1 -1
  106. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/index.d.ts +10 -0
  107. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/index.d.ts.map +1 -1
  108. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/index.js +29 -6
  109. package/dist/src/internal/builtin-plugins/solidity/build-system/compiler/index.js.map +1 -1
  110. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.d.ts +2 -2
  111. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.d.ts.map +1 -1
  112. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.js.map +1 -1
  113. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.d.ts +6 -0
  114. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.d.ts.map +1 -1
  115. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.js +11 -0
  116. package/dist/src/internal/builtin-plugins/solidity/build-system/solc-info.js.map +1 -1
  117. package/dist/src/internal/builtin-plugins/solidity/config.d.ts +4 -2
  118. package/dist/src/internal/builtin-plugins/solidity/config.d.ts.map +1 -1
  119. package/dist/src/internal/builtin-plugins/solidity/config.js +249 -64
  120. package/dist/src/internal/builtin-plugins/solidity/config.js.map +1 -1
  121. package/dist/src/internal/builtin-plugins/solidity/exports.d.ts +3 -0
  122. package/dist/src/internal/builtin-plugins/solidity/exports.d.ts.map +1 -0
  123. package/dist/src/internal/builtin-plugins/solidity/exports.js +3 -0
  124. package/dist/src/internal/builtin-plugins/solidity/exports.js.map +1 -0
  125. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.d.ts.map +1 -1
  126. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.js +2 -1
  127. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/config.js.map +1 -1
  128. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.d.ts +4 -0
  129. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.d.ts.map +1 -0
  130. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.js +7 -0
  131. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/solidity.js.map +1 -0
  132. package/dist/src/internal/builtin-plugins/solidity/index.d.ts.map +1 -1
  133. package/dist/src/internal/builtin-plugins/solidity/index.js +1 -0
  134. package/dist/src/internal/builtin-plugins/solidity/index.js.map +1 -1
  135. package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.d.ts +18 -0
  136. package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.d.ts.map +1 -0
  137. package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.js +33 -0
  138. package/dist/src/internal/builtin-plugins/solidity/solidity-hooks.js.map +1 -0
  139. package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts +201 -28
  140. package/dist/src/internal/builtin-plugins/solidity/type-extensions.d.ts.map +1 -1
  141. package/dist/src/internal/builtin-plugins/solidity/type-extensions.js.map +1 -1
  142. package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.d.ts +12 -6
  143. package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.d.ts.map +1 -1
  144. package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.js +9 -7
  145. package/dist/src/internal/builtin-plugins/solidity-test/edr-artifacts.js.map +1 -1
  146. package/dist/src/internal/builtin-plugins/solidity-test/formatters.d.ts +1 -12
  147. package/dist/src/internal/builtin-plugins/solidity-test/formatters.d.ts.map +1 -1
  148. package/dist/src/internal/builtin-plugins/solidity-test/formatters.js +0 -150
  149. package/dist/src/internal/builtin-plugins/solidity-test/formatters.js.map +1 -1
  150. package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts +4 -3
  151. package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts.map +1 -1
  152. package/dist/src/internal/builtin-plugins/solidity-test/helpers.js +5 -9
  153. package/dist/src/internal/builtin-plugins/solidity-test/helpers.js.map +1 -1
  154. package/dist/src/internal/builtin-plugins/solidity-test/index.d.ts.map +1 -1
  155. package/dist/src/internal/builtin-plugins/solidity-test/index.js +0 -7
  156. package/dist/src/internal/builtin-plugins/solidity-test/index.js.map +1 -1
  157. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.d.ts +7 -0
  158. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.d.ts.map +1 -0
  159. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.js +20 -0
  160. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/constants.js.map +1 -0
  161. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.d.ts +24 -0
  162. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.d.ts.map +1 -0
  163. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.js +68 -0
  164. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/helpers.js.map +1 -0
  165. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.d.ts +13 -0
  166. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.d.ts.map +1 -0
  167. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.js +136 -0
  168. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/index.js.map +1 -0
  169. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.d.ts +19 -0
  170. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.d.ts.map +1 -0
  171. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.js +133 -0
  172. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/parsing.js.map +1 -0
  173. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.d.ts +10 -0
  174. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.d.ts.map +1 -0
  175. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.js +2 -0
  176. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/types.js.map +1 -0
  177. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.d.ts +12 -0
  178. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.d.ts.map +1 -0
  179. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.js +81 -0
  180. package/dist/src/internal/builtin-plugins/solidity-test/inline-config/validation.js.map +1 -0
  181. package/dist/src/internal/builtin-plugins/solidity-test/reporter.d.ts +1 -1
  182. package/dist/src/internal/builtin-plugins/solidity-test/reporter.d.ts.map +1 -1
  183. package/dist/src/internal/builtin-plugins/solidity-test/reporter.js +5 -2
  184. package/dist/src/internal/builtin-plugins/solidity-test/reporter.js.map +1 -1
  185. package/dist/src/internal/builtin-plugins/solidity-test/task-action.d.ts +0 -1
  186. package/dist/src/internal/builtin-plugins/solidity-test/task-action.d.ts.map +1 -1
  187. package/dist/src/internal/builtin-plugins/solidity-test/task-action.js +30 -20
  188. package/dist/src/internal/builtin-plugins/solidity-test/task-action.js.map +1 -1
  189. package/dist/src/internal/builtin-plugins/test/index.d.ts.map +1 -1
  190. package/dist/src/internal/builtin-plugins/test/index.js +0 -7
  191. package/dist/src/internal/builtin-plugins/test/index.js.map +1 -1
  192. package/dist/src/internal/builtin-plugins/test/task-action.d.ts +0 -1
  193. package/dist/src/internal/builtin-plugins/test/task-action.d.ts.map +1 -1
  194. package/dist/src/internal/builtin-plugins/test/task-action.js +27 -13
  195. package/dist/src/internal/builtin-plugins/test/task-action.js.map +1 -1
  196. package/dist/src/internal/cli/help/get-help-string.d.ts.map +1 -1
  197. package/dist/src/internal/cli/help/get-help-string.js +1 -1
  198. package/dist/src/internal/cli/help/get-help-string.js.map +1 -1
  199. package/dist/src/internal/cli/init/init.d.ts.map +1 -1
  200. package/dist/src/internal/cli/init/init.js +1 -1
  201. package/dist/src/internal/cli/init/init.js.map +1 -1
  202. package/dist/src/internal/cli/init/prompt.d.ts.map +1 -1
  203. package/dist/src/internal/cli/init/prompt.js +1 -7
  204. package/dist/src/internal/cli/init/prompt.js.map +1 -1
  205. package/dist/src/internal/core/hre.d.ts +2 -1
  206. package/dist/src/internal/core/hre.d.ts.map +1 -1
  207. package/dist/src/internal/core/hre.js +18 -0
  208. package/dist/src/internal/core/hre.js.map +1 -1
  209. package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.d.ts.map +1 -1
  210. package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.js +6 -1
  211. package/dist/src/internal/core/plugins/detect-plugin-npm-dependency-problems.js.map +1 -1
  212. package/dist/src/internal/core/user-interruptions.d.ts.map +1 -1
  213. package/dist/src/internal/core/user-interruptions.js +2 -5
  214. package/dist/src/internal/core/user-interruptions.js.map +1 -1
  215. package/dist/src/internal/utils/colorizer.d.ts +10 -0
  216. package/dist/src/internal/utils/colorizer.d.ts.map +1 -0
  217. package/dist/src/internal/utils/colorizer.js +2 -0
  218. package/dist/src/internal/utils/colorizer.js.map +1 -0
  219. package/dist/src/internal/utils/package.d.ts.map +1 -1
  220. package/dist/src/internal/utils/package.js +1 -1
  221. package/dist/src/internal/utils/package.js.map +1 -1
  222. package/dist/src/types/global-options.d.ts +1 -0
  223. package/dist/src/types/global-options.d.ts.map +1 -1
  224. package/dist/src/types/hooks.d.ts +32 -0
  225. package/dist/src/types/hooks.d.ts.map +1 -1
  226. package/dist/src/types/network.d.ts +1 -1
  227. package/dist/src/types/network.d.ts.map +1 -1
  228. package/dist/src/types/solidity/compilation-job.d.ts +5 -5
  229. package/dist/src/types/solidity/compilation-job.d.ts.map +1 -1
  230. package/dist/src/types/solidity/solidity-artifacts.d.ts +15 -0
  231. package/dist/src/types/solidity/solidity-artifacts.d.ts.map +1 -1
  232. package/package.json +7 -6
  233. package/src/internal/builtin-global-options.ts +15 -1
  234. package/src/internal/builtin-plugins/coverage/helpers.ts +31 -0
  235. package/src/internal/builtin-plugins/coverage/hook-handlers/hre.ts +2 -10
  236. package/src/internal/builtin-plugins/coverage/hook-handlers/solidity.ts +3 -12
  237. package/src/internal/builtin-plugins/coverage/hook-handlers/test.ts +4 -25
  238. package/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.ts +118 -18
  239. package/src/internal/builtin-plugins/gas-analytics/helpers.ts +44 -3
  240. package/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.ts +6 -10
  241. package/src/internal/builtin-plugins/gas-analytics/hook-handlers/test.ts +18 -26
  242. package/src/internal/builtin-plugins/gas-analytics/index.ts +9 -1
  243. package/src/internal/builtin-plugins/gas-analytics/type-extensions.ts +1 -0
  244. package/src/internal/builtin-plugins/gas-analytics/types.ts +37 -0
  245. package/src/internal/builtin-plugins/network-manager/accounts/derive-private-keys.ts +25 -3
  246. package/src/internal/builtin-plugins/network-manager/edr/edr-provider.ts +107 -56
  247. package/src/internal/builtin-plugins/network-manager/edr/genesis-state.ts +179 -0
  248. package/src/internal/builtin-plugins/network-manager/edr/utils/trace-formatters.ts +197 -0
  249. package/src/internal/builtin-plugins/network-manager/edr/utils/trace-output.ts +137 -0
  250. package/src/internal/builtin-plugins/network-manager/hook-handlers/hre.ts +1 -0
  251. package/src/internal/builtin-plugins/network-manager/hook-handlers/network.ts +8 -11
  252. package/src/internal/builtin-plugins/network-manager/http-provider.ts +1 -0
  253. package/src/internal/builtin-plugins/network-manager/network-manager.ts +112 -12
  254. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers/accounts/local-accounts.ts +98 -34
  255. package/src/internal/builtin-plugins/network-manager/request-handlers/handlers-array.ts +10 -30
  256. package/src/internal/builtin-plugins/node/artifacts/build-info-watcher.ts +1 -2
  257. package/src/internal/builtin-plugins/node/helpers.ts +9 -2
  258. package/src/internal/builtin-plugins/node/json-rpc/handler.ts +8 -2
  259. package/src/internal/builtin-plugins/solidity/build-system/artifacts.ts +7 -2
  260. package/src/internal/builtin-plugins/solidity/build-system/build-system.ts +141 -65
  261. package/src/internal/builtin-plugins/solidity/build-system/cache.ts +1 -0
  262. package/src/internal/builtin-plugins/solidity/build-system/compilation-job.ts +34 -7
  263. package/src/internal/builtin-plugins/solidity/build-system/compiler/compiler.ts +1 -1
  264. package/src/internal/builtin-plugins/solidity/build-system/compiler/downloader.ts +1 -7
  265. package/src/internal/builtin-plugins/solidity/build-system/compiler/index.ts +44 -9
  266. package/src/internal/builtin-plugins/solidity/build-system/solc-config-selection.ts +4 -2
  267. package/src/internal/builtin-plugins/solidity/build-system/solc-info.ts +15 -0
  268. package/src/internal/builtin-plugins/solidity/config.ts +337 -105
  269. package/src/internal/builtin-plugins/solidity/exports.ts +2 -0
  270. package/src/internal/builtin-plugins/solidity/hook-handlers/config.ts +3 -0
  271. package/src/internal/builtin-plugins/solidity/hook-handlers/solidity.ts +9 -0
  272. package/src/internal/builtin-plugins/solidity/index.ts +1 -0
  273. package/src/internal/builtin-plugins/solidity/solidity-hooks.ts +53 -0
  274. package/src/internal/builtin-plugins/solidity/type-extensions.ts +258 -31
  275. package/src/internal/builtin-plugins/solidity-test/edr-artifacts.ts +22 -10
  276. package/src/internal/builtin-plugins/solidity-test/formatters.ts +1 -213
  277. package/src/internal/builtin-plugins/solidity-test/helpers.ts +8 -8
  278. package/src/internal/builtin-plugins/solidity-test/index.ts +0 -7
  279. package/src/internal/builtin-plugins/solidity-test/inline-config/constants.ts +21 -0
  280. package/src/internal/builtin-plugins/solidity-test/inline-config/helpers.ts +99 -0
  281. package/src/internal/builtin-plugins/solidity-test/inline-config/index.ts +272 -0
  282. package/src/internal/builtin-plugins/solidity-test/inline-config/parsing.ts +186 -0
  283. package/src/internal/builtin-plugins/solidity-test/inline-config/types.ts +9 -0
  284. package/src/internal/builtin-plugins/solidity-test/inline-config/validation.ts +122 -0
  285. package/src/internal/builtin-plugins/solidity-test/reporter.ts +6 -6
  286. package/src/internal/builtin-plugins/solidity-test/task-action.ts +52 -38
  287. package/src/internal/builtin-plugins/test/index.ts +0 -7
  288. package/src/internal/builtin-plugins/test/task-action.ts +39 -24
  289. package/src/internal/cli/help/get-help-string.ts +2 -2
  290. package/src/internal/cli/init/init.ts +1 -1
  291. package/src/internal/cli/init/prompt.ts +1 -14
  292. package/src/internal/core/hre.ts +33 -0
  293. package/src/internal/core/plugins/detect-plugin-npm-dependency-problems.ts +8 -1
  294. package/src/internal/core/user-interruptions.ts +3 -5
  295. package/src/internal/utils/colorizer.ts +9 -0
  296. package/src/internal/utils/package.ts +1 -2
  297. package/src/types/global-options.ts +1 -0
  298. package/src/types/hooks.ts +37 -0
  299. package/src/types/network.ts +2 -2
  300. package/src/types/solidity/compilation-job.ts +5 -5
  301. package/src/types/solidity/solidity-artifacts.ts +16 -0
  302. package/templates/hardhat-3/01-node-test-runner-viem/package.json +6 -6
  303. package/templates/hardhat-3/02-mocha-ethers/package.json +11 -11
  304. package/templates/hardhat-3/03-minimal/package.json +1 -1
@@ -5,6 +5,8 @@ import type {
5
5
  } from "../../../../../../types/providers.js";
6
6
  import type { RequestHandler } from "../../types.js";
7
7
  import type { RpcTransactionRequest } from "@nomicfoundation/hardhat-zod-utils/rpc";
8
+ import type * as MicroEthSignerT from "micro-eth-signer";
9
+ import type * as MicroEthSignerTypedDataT from "micro-eth-signer/typed-data";
8
10
 
9
11
  import {
10
12
  assertHardhatInvariant,
@@ -27,27 +29,20 @@ import {
27
29
  rpcTransactionRequest,
28
30
  validateParams,
29
31
  } from "@nomicfoundation/hardhat-zod-utils/rpc";
30
- import { addr, Transaction } from "micro-eth-signer";
31
- import { signTyped } from "micro-eth-signer/typed-data";
32
- import * as typed from "micro-eth-signer/typed-data";
32
+
33
+ // micro-eth-signer is known to be slow to load, so we lazy load it
34
+ let microEthSigner: typeof MicroEthSignerT | undefined;
35
+ let microEthSignerTypedData: typeof MicroEthSignerTypedDataT | undefined;
33
36
 
34
37
  import { getRequestParams } from "../../../json-rpc.js";
35
38
  import { ChainId } from "../chain-id/chain-id.js";
36
39
 
37
- /**
38
- * This handler takes a long time to load. Currently, it is only used in the handlers array,
39
- * where it is imported dynamically, and in the HDWalletHandler, which itself is only loaded
40
- * dynamically.
41
- * If we ever need to import this handler elsewhere, we should either import it dynamically
42
- * or import some of the dependencies of this handler dynamically.
43
- * It has been identified that micro-eth-signer is one of the most expensive dependencies here.
44
- * See https://github.com/NomicFoundation/hardhat/pull/6481 for more details.
45
- */
46
-
47
40
  const EXTRA_ENTROPY = false;
48
41
  export class LocalAccountsHandler extends ChainId implements RequestHandler {
49
- readonly #addressToPrivateKey: Map<string, Uint8Array> = new Map();
50
- readonly #addresses: string[] = [];
42
+ readonly #localAccountsHexPrivateKeys: string[];
43
+
44
+ #addressToPrivateKey: Map<string, Uint8Array> | undefined;
45
+ #addresses: string[] | undefined;
51
46
 
52
47
  constructor(
53
48
  provider: EthereumProvider,
@@ -55,7 +50,29 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
55
50
  ) {
56
51
  super(provider);
57
52
 
58
- this.#initializePrivateKeys(localAccountsHexPrivateKeys);
53
+ this.#localAccountsHexPrivateKeys = localAccountsHexPrivateKeys;
54
+ }
55
+
56
+ async #getAddressesAndPrivateKeysMap(): Promise<{
57
+ addresses: string[];
58
+ addressToPrivateKey: Map<string, Uint8Array>;
59
+ }> {
60
+ if (
61
+ this.#addresses === undefined ||
62
+ this.#addressToPrivateKey === undefined
63
+ ) {
64
+ const { addresses, addressToPrivateKey } =
65
+ await this.#initializeAddressesFromPrivateKeys(
66
+ this.#localAccountsHexPrivateKeys,
67
+ );
68
+ this.#addresses = addresses;
69
+ this.#addressToPrivateKey = addressToPrivateKey;
70
+ }
71
+
72
+ return {
73
+ addresses: this.#addresses,
74
+ addressToPrivateKey: this.#addressToPrivateKey,
75
+ };
59
76
  }
60
77
 
61
78
  public async handle(
@@ -78,9 +95,8 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
78
95
  jsonRpcRequest.method === "eth_accounts" ||
79
96
  jsonRpcRequest.method === "eth_requestAccounts"
80
97
  ) {
81
- return this.#createJsonRpcResponse(jsonRpcRequest.id, [
82
- ...this.#addresses,
83
- ]);
98
+ const { addresses } = await this.#getAddressesAndPrivateKeysMap();
99
+ return this.#createJsonRpcResponse(jsonRpcRequest.id, [...addresses]);
84
100
  }
85
101
 
86
102
  const params = getRequestParams(jsonRpcRequest);
@@ -96,10 +112,20 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
96
112
  );
97
113
  }
98
114
 
99
- const privateKey = this.#getPrivateKeyForAddress(address);
115
+ if (microEthSignerTypedData === undefined) {
116
+ microEthSignerTypedData = await import(
117
+ "micro-eth-signer/typed-data"
118
+ );
119
+ }
120
+
121
+ const privateKey = await this.#getPrivateKeyForAddress(address);
100
122
  return this.#createJsonRpcResponse(
101
123
  jsonRpcRequest.id,
102
- typed.personal.sign(data, privateKey, EXTRA_ENTROPY),
124
+ microEthSignerTypedData.personal.sign(
125
+ data,
126
+ privateKey,
127
+ EXTRA_ENTROPY,
128
+ ),
103
129
  );
104
130
  }
105
131
  }
@@ -116,10 +142,20 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
116
142
  );
117
143
  }
118
144
 
119
- const privateKey = this.#getPrivateKeyForAddress(address);
145
+ if (microEthSignerTypedData === undefined) {
146
+ microEthSignerTypedData = await import(
147
+ "micro-eth-signer/typed-data"
148
+ );
149
+ }
150
+
151
+ const privateKey = await this.#getPrivateKeyForAddress(address);
120
152
  return this.#createJsonRpcResponse(
121
153
  jsonRpcRequest.id,
122
- typed.personal.sign(data, privateKey, EXTRA_ENTROPY),
154
+ microEthSignerTypedData.personal.sign(
155
+ data,
156
+ privateKey,
157
+ EXTRA_ENTROPY,
158
+ ),
123
159
  );
124
160
  }
125
161
  }
@@ -146,11 +182,19 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
146
182
  }
147
183
 
148
184
  // if we don't manage the address, the method is forwarded
149
- const privateKey = this.#getPrivateKeyForAddressOrNull(address);
185
+ const privateKey = await this.#getPrivateKeyForAddressOrNull(address);
150
186
  if (privateKey !== null) {
187
+ if (microEthSignerTypedData === undefined) {
188
+ microEthSignerTypedData = await import("micro-eth-signer/typed-data");
189
+ }
190
+
151
191
  return this.#createJsonRpcResponse(
152
192
  jsonRpcRequest.id,
153
- signTyped(typedMessage, privateKey, EXTRA_ENTROPY),
193
+ microEthSignerTypedData.signTyped(
194
+ typedMessage,
195
+ privateKey,
196
+ EXTRA_ENTROPY,
197
+ ),
154
198
  );
155
199
  }
156
200
  }
@@ -220,7 +264,7 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
220
264
  txRequest.nonce = await this.#getNonce(txRequest.from);
221
265
  }
222
266
 
223
- const privateKey = this.#getPrivateKeyForAddress(txRequest.from);
267
+ const privateKey = await this.#getPrivateKeyForAddress(txRequest.from);
224
268
 
225
269
  const chainId = await this.getChainId();
226
270
 
@@ -235,20 +279,32 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
235
279
  }
236
280
  }
237
281
 
238
- #initializePrivateKeys(localAccountsHexPrivateKeys: string[]) {
282
+ async #initializeAddressesFromPrivateKeys(
283
+ localAccountsHexPrivateKeys: string[],
284
+ ) {
285
+ if (microEthSigner === undefined) {
286
+ microEthSigner = await import("micro-eth-signer");
287
+ }
288
+
239
289
  const privateKeys: Uint8Array[] = localAccountsHexPrivateKeys.map((h) =>
240
290
  hexStringToBytes(h),
241
291
  );
242
292
 
293
+ const addresses = [];
294
+ const addressToPrivateKey = new Map<string, Uint8Array>();
243
295
  for (const pk of privateKeys) {
244
- const address = addr.fromPrivateKey(pk).toLowerCase();
245
- this.#addressToPrivateKey.set(address, pk);
246
- this.#addresses.push(address);
296
+ const address = microEthSigner.addr.fromPrivateKey(pk).toLowerCase();
297
+ addressToPrivateKey.set(address, pk);
298
+ addresses.push(address);
247
299
  }
300
+
301
+ return { addresses, addressToPrivateKey };
248
302
  }
249
303
 
250
- #getPrivateKeyForAddress(address: Uint8Array): Uint8Array {
251
- const pk = this.#addressToPrivateKey.get(bytesToHexString(address));
304
+ async #getPrivateKeyForAddress(address: Uint8Array): Promise<Uint8Array> {
305
+ const { addressToPrivateKey } = await this.#getAddressesAndPrivateKeysMap();
306
+
307
+ const pk = addressToPrivateKey.get(bytesToHexString(address));
252
308
 
253
309
  if (pk === undefined) {
254
310
  throw new HardhatError(
@@ -262,9 +318,11 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
262
318
  return pk;
263
319
  }
264
320
 
265
- #getPrivateKeyForAddressOrNull(address: Uint8Array): Uint8Array | null {
321
+ async #getPrivateKeyForAddressOrNull(
322
+ address: Uint8Array,
323
+ ): Promise<Uint8Array | null> {
266
324
  try {
267
- return this.#getPrivateKeyForAddress(address);
325
+ return await this.#getPrivateKeyForAddress(address);
268
326
  } catch {
269
327
  return null;
270
328
  }
@@ -289,6 +347,12 @@ export class LocalAccountsHandler extends ChainId implements RequestHandler {
289
347
  chainId: number,
290
348
  privateKey: Uint8Array,
291
349
  ): Promise<Uint8Array> {
350
+ if (microEthSigner === undefined) {
351
+ microEthSigner = await import("micro-eth-signer");
352
+ }
353
+
354
+ const { addr, Transaction } = microEthSigner;
355
+
292
356
  const txData = {
293
357
  ...transactionRequest,
294
358
  gasLimit: transactionRequest.gas,
@@ -8,13 +8,20 @@ import { numberToHexString } from "@nomicfoundation/hardhat-utils/hex";
8
8
 
9
9
  import { isHttpNetworkHdAccountsConfig } from "../type-validation.js";
10
10
 
11
+ import { AutomaticSenderHandler } from "./handlers/accounts/automatic-sender-handler.js";
12
+ import { FixedSenderHandler } from "./handlers/accounts/fixed-sender-handler.js";
13
+ import { HDWalletHandler } from "./handlers/accounts/hd-wallet-handler.js";
14
+ import { LocalAccountsHandler } from "./handlers/accounts/local-accounts.js";
15
+ import { ChainIdValidatorHandler } from "./handlers/chain-id/chain-id-handler.js";
16
+ import { AutomaticGasHandler } from "./handlers/gas/automatic-gas-handler.js";
17
+ import { AutomaticGasPriceHandler } from "./handlers/gas/automatic-gas-price-handler.js";
18
+ import { FixedGasHandler } from "./handlers/gas/fixed-gas-handler.js";
19
+ import { FixedGasPriceHandler } from "./handlers/gas/fixed-gas-price-handler.js";
20
+
11
21
  /**
12
22
  * This function returns an handlers array based on the values in the NetworkConnection and NetworkConfig.
13
23
  * The order of the handlers, if all are present, is: chain handler, gas handlers (gasPrice first, then gas), sender handler and accounts handler.
14
24
  * The order is important to get a correct result when the handlers are executed.
15
- * The handlers are imported dynamically because some might take a long time to load.
16
- * Out of the currently supported handlers, LocalAccountsHandler and, consequently, HDWalletHandler have been identified as the most expensive.
17
- * See https://github.com/NomicFoundation/hardhat/pull/6481 for more details.
18
25
  */
19
26
  export async function createHandlersArray<
20
27
  ChainTypeT extends ChainType | string,
@@ -24,9 +31,6 @@ export async function createHandlersArray<
24
31
  const networkConfig = networkConnection.networkConfig;
25
32
 
26
33
  if (networkConfig.type === "http" && networkConfig.chainId !== undefined) {
27
- const { ChainIdValidatorHandler } = await import(
28
- "./handlers/chain-id/chain-id-handler.js"
29
- );
30
34
  requestHandlers.push(
31
35
  new ChainIdValidatorHandler(
32
36
  networkConnection.provider,
@@ -39,9 +43,6 @@ export async function createHandlersArray<
39
43
  networkConfig.gasPrice === undefined ||
40
44
  networkConfig.gasPrice === "auto"
41
45
  ) {
42
- const { AutomaticGasPriceHandler } = await import(
43
- "./handlers/gas/automatic-gas-price-handler.js"
44
- );
45
46
  // If you use a hook handler that signs locally, you are required to
46
47
  // have all the transaction fields available, including the
47
48
  // gasPrice / maxFeePerGas & maxPriorityFeePerGas.
@@ -56,18 +57,12 @@ export async function createHandlersArray<
56
57
  new AutomaticGasPriceHandler(networkConnection.provider),
57
58
  );
58
59
  } else {
59
- const { FixedGasPriceHandler } = await import(
60
- "./handlers/gas/fixed-gas-price-handler.js"
61
- );
62
60
  requestHandlers.push(
63
61
  new FixedGasPriceHandler(numberToHexString(networkConfig.gasPrice)),
64
62
  );
65
63
  }
66
64
 
67
65
  if (networkConfig.gas === undefined || networkConfig.gas === "auto") {
68
- const { AutomaticGasHandler } = await import(
69
- "./handlers/gas/automatic-gas-handler.js"
70
- );
71
66
  requestHandlers.push(
72
67
  new AutomaticGasHandler(
73
68
  networkConnection.provider,
@@ -75,25 +70,16 @@ export async function createHandlersArray<
75
70
  ),
76
71
  );
77
72
  } else {
78
- const { FixedGasHandler } = await import(
79
- "./handlers/gas/fixed-gas-handler.js"
80
- );
81
73
  requestHandlers.push(
82
74
  new FixedGasHandler(numberToHexString(networkConfig.gas)),
83
75
  );
84
76
  }
85
77
 
86
78
  if (networkConfig.from === undefined) {
87
- const { AutomaticSenderHandler } = await import(
88
- "./handlers/accounts/automatic-sender-handler.js"
89
- );
90
79
  requestHandlers.push(
91
80
  new AutomaticSenderHandler(networkConnection.provider),
92
81
  );
93
82
  } else {
94
- const { FixedSenderHandler } = await import(
95
- "./handlers/accounts/fixed-sender-handler.js"
96
- );
97
83
  requestHandlers.push(
98
84
  new FixedSenderHandler(networkConnection.provider, networkConfig.from),
99
85
  );
@@ -103,9 +89,6 @@ export async function createHandlersArray<
103
89
  const accounts = networkConfig.accounts;
104
90
 
105
91
  if (Array.isArray(accounts)) {
106
- const { LocalAccountsHandler } = await import(
107
- "./handlers/accounts/local-accounts.js"
108
- );
109
92
  const resolvedAccounts = await Promise.all(
110
93
  accounts.map((acc) => acc.getHexString()),
111
94
  );
@@ -114,9 +97,6 @@ export async function createHandlersArray<
114
97
  new LocalAccountsHandler(networkConnection.provider, resolvedAccounts),
115
98
  );
116
99
  } else if (isHttpNetworkHdAccountsConfig(accounts)) {
117
- const { HDWalletHandler } = await import(
118
- "./handlers/accounts/hd-wallet-handler.js"
119
- );
120
100
  const hdWalletHandler = await HDWalletHandler.create(
121
101
  networkConnection.provider,
122
102
  await accounts.mnemonic.get(),
@@ -2,6 +2,7 @@ import type { FSWatcher } from "chokidar";
2
2
 
3
3
  import path from "node:path";
4
4
 
5
+ import { watch } from "chokidar";
5
6
  import debug from "debug";
6
7
 
7
8
  export type BuildInfoWatcher = FSWatcher;
@@ -59,8 +60,6 @@ export async function watchBuildInfo(
59
60
  buildInfoDirPath: string,
60
61
  handler: BuildInfoHandler,
61
62
  ): Promise<BuildInfoWatcher> {
62
- const { watch } = await import("chokidar");
63
-
64
63
  // NOTE: Deleting the build info directory while it is being watched will
65
64
  // effectively cause the watcher to stop working.
66
65
  // NOTE: We use chokidar's `awaitWriteFinish` option because we are certain
@@ -2,6 +2,7 @@ import type { BuildInfo } from "../../../types/artifacts.js";
2
2
  import type { EdrNetworkAccountsConfig } from "../../../types/config.js";
3
3
  import type { SolidityBuildInfoOutput } from "../../../types/solidity.js";
4
4
  import type { EdrProvider } from "../network-manager/edr/edr-provider.js";
5
+ import type * as MicroEthSignerT from "micro-eth-signer";
5
6
 
6
7
  import path from "node:path";
7
8
 
@@ -11,7 +12,9 @@ import {
11
12
  } from "@nomicfoundation/hardhat-utils/fs";
12
13
  import { hexStringToBytes } from "@nomicfoundation/hardhat-utils/hex";
13
14
  import chalk from "chalk";
14
- import { addr } from "micro-eth-signer";
15
+
16
+ // micro-eth-signer is known to be slow to load, so we lazy load it
17
+ let microEthSigner: typeof MicroEthSignerT | undefined;
15
18
 
16
19
  import { sendErrorTelemetry } from "../../cli/telemetry/sentry/reporter.js";
17
20
  import { isDefaultEdrNetworkHDAccountsConfig } from "../network-manager/edr/edr-provider.js";
@@ -48,8 +51,12 @@ export async function formatEdrNetworkConfigAccounts(
48
51
  maxPrefixLength = privateKeyPrefix.length;
49
52
  }
50
53
 
54
+ if (microEthSigner === undefined) {
55
+ microEthSigner = await import("micro-eth-signer");
56
+ }
57
+
51
58
  for (const [index, account] of accounts.entries()) {
52
- const address = addr
59
+ const address = microEthSigner.addr
53
60
  .fromPrivateKey(hexStringToBytes(await account.privateKey.getHexString()))
54
61
  .toLowerCase();
55
62
  const balance = (BigInt(account.balance) / 10n ** 18n).toString(10);
@@ -250,6 +250,12 @@ const _readWsRequest = (msg: string): JsonRpcRequest | JsonRpcRequest[] => {
250
250
  };
251
251
 
252
252
  const _handleError = (error: Error): JsonRpcResponse => {
253
+ // Extract revert data from the original error before potentially wrapping it.
254
+ // Non-ProviderError errors (e.g. SolidityError) carry .data and .transactionHash
255
+ // that would be lost when wrapped in InternalError below.
256
+ const txHash = extractTxHash(error);
257
+ const returnData = extractReturnData(error);
258
+
253
259
  // In case of non-hardhat error, treat it as internal and associate the appropriate error code.
254
260
  if (!ProviderError.isProviderError(error)) {
255
261
  error = new InternalError(undefined, error);
@@ -266,8 +272,8 @@ const _handleError = (error: Error): JsonRpcResponse => {
266
272
  message: error.message,
267
273
  data: {
268
274
  message: error.message,
269
- txHash: extractTxHash(error),
270
- data: extractReturnData(error),
275
+ txHash,
276
+ data: returnData,
271
277
  },
272
278
  },
273
279
  };
@@ -1,4 +1,4 @@
1
- import type { Artifact, BuildInfo } from "../../../../types/artifacts.js";
1
+ import type { Artifact } from "../../../../types/artifacts.js";
2
2
  import type { CompilationJob } from "../../../../types/solidity/compilation-job.js";
3
3
  import type {
4
4
  CompilerOutput,
@@ -107,11 +107,16 @@ declare module "hardhat/types/artifacts" {
107
107
  export async function getBuildInfo(
108
108
  compilationJob: CompilationJob,
109
109
  ): Promise<SolidityBuildInfo> {
110
- const buildInfo: Required<BuildInfo> = {
110
+ // Defaulting to "solc" is safe here: if it's already "solc" or undefined,
111
+ // this doesn't alter the build info id.
112
+ const compilerType = compilationJob.solcConfig.type ?? "solc";
113
+
114
+ const buildInfo: SolidityBuildInfo = {
111
115
  _format: "hh3-sol-build-info-1",
112
116
  id: await compilationJob.getBuildId(),
113
117
  solcVersion: compilationJob.solcConfig.version,
114
118
  solcLongVersion: compilationJob.solcLongVersion,
119
+ compilerType,
115
120
  userSourceNameMap:
116
121
  compilationJob.dependencyGraph.getRootsUserSourceNameMap(),
117
122
  input: await compilationJob.getSolcInput(),