hardhatjs 2.22.15

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 (935) hide show
  1. package/.eslintrc.js +41 -0
  2. package/LICENSE +55 -0
  3. package/README.md +53 -0
  4. package/builtin-tasks/check.d.ts +2 -0
  5. package/builtin-tasks/check.d.ts.map +1 -0
  6. package/builtin-tasks/check.js +6 -0
  7. package/builtin-tasks/check.js.map +1 -0
  8. package/builtin-tasks/clean.d.ts +2 -0
  9. package/builtin-tasks/clean.d.ts.map +1 -0
  10. package/builtin-tasks/clean.js +24 -0
  11. package/builtin-tasks/clean.js.map +1 -0
  12. package/builtin-tasks/compile.d.ts +2 -0
  13. package/builtin-tasks/compile.d.ts.map +1 -0
  14. package/builtin-tasks/compile.js +952 -0
  15. package/builtin-tasks/compile.js.map +1 -0
  16. package/builtin-tasks/console.d.ts +2 -0
  17. package/builtin-tasks/console.d.ts.map +1 -0
  18. package/builtin-tasks/console.js +55 -0
  19. package/builtin-tasks/console.js.map +1 -0
  20. package/builtin-tasks/flatten.d.ts +2 -0
  21. package/builtin-tasks/flatten.d.ts.map +1 -0
  22. package/builtin-tasks/flatten.js +210 -0
  23. package/builtin-tasks/flatten.js.map +1 -0
  24. package/builtin-tasks/help.d.ts +2 -0
  25. package/builtin-tasks/help.d.ts.map +1 -0
  26. package/builtin-tasks/help.js +49 -0
  27. package/builtin-tasks/help.js.map +1 -0
  28. package/builtin-tasks/node.d.ts +2 -0
  29. package/builtin-tasks/node.d.ts.map +1 -0
  30. package/builtin-tasks/node.js +212 -0
  31. package/builtin-tasks/node.js.map +1 -0
  32. package/builtin-tasks/run.d.ts +2 -0
  33. package/builtin-tasks/run.d.ts.map +1 -0
  34. package/builtin-tasks/run.js +41 -0
  35. package/builtin-tasks/run.js.map +1 -0
  36. package/builtin-tasks/task-names.d.ts +55 -0
  37. package/builtin-tasks/task-names.d.ts.map +1 -0
  38. package/builtin-tasks/task-names.js +59 -0
  39. package/builtin-tasks/task-names.js.map +1 -0
  40. package/builtin-tasks/test.d.ts +2 -0
  41. package/builtin-tasks/test.d.ts.map +1 -0
  42. package/builtin-tasks/test.js +142 -0
  43. package/builtin-tasks/test.js.map +1 -0
  44. package/builtin-tasks/utils/solidity-files-cache.d.ts +29 -0
  45. package/builtin-tasks/utils/solidity-files-cache.d.ts.map +1 -0
  46. package/builtin-tasks/utils/solidity-files-cache.js +126 -0
  47. package/builtin-tasks/utils/solidity-files-cache.js.map +1 -0
  48. package/builtin-tasks/utils/watch.d.ts +5 -0
  49. package/builtin-tasks/utils/watch.d.ts.map +1 -0
  50. package/builtin-tasks/utils/watch.js +71 -0
  51. package/builtin-tasks/utils/watch.js.map +1 -0
  52. package/builtin-tasks/vars.d.ts +2 -0
  53. package/builtin-tasks/vars.d.ts.map +1 -0
  54. package/builtin-tasks/vars.js +41 -0
  55. package/builtin-tasks/vars.js.map +1 -0
  56. package/common/bigInt.d.ts +7 -0
  57. package/common/bigInt.d.ts.map +1 -0
  58. package/common/bigInt.js +93 -0
  59. package/common/bigInt.js.map +1 -0
  60. package/common/index.d.ts +3 -0
  61. package/common/index.d.ts.map +1 -0
  62. package/common/index.js +21 -0
  63. package/common/index.js.map +1 -0
  64. package/common/napi-rs.d.ts +2 -0
  65. package/common/napi-rs.d.ts.map +1 -0
  66. package/common/napi-rs.js +19 -0
  67. package/common/napi-rs.js.map +1 -0
  68. package/config.d.ts +3 -0
  69. package/config.d.ts.map +1 -0
  70. package/config.js +18 -0
  71. package/config.js.map +1 -0
  72. package/console.sol +1552 -0
  73. package/internal/artifacts.d.ts +151 -0
  74. package/internal/artifacts.d.ts.map +1 -0
  75. package/internal/artifacts.js +681 -0
  76. package/internal/artifacts.js.map +1 -0
  77. package/internal/cli/ArgumentsParser.d.ts +25 -0
  78. package/internal/cli/ArgumentsParser.d.ts.map +1 -0
  79. package/internal/cli/ArgumentsParser.js +242 -0
  80. package/internal/cli/ArgumentsParser.js.map +1 -0
  81. package/internal/cli/HelpPrinter.d.ts +21 -0
  82. package/internal/cli/HelpPrinter.d.ts.map +1 -0
  83. package/internal/cli/HelpPrinter.js +167 -0
  84. package/internal/cli/HelpPrinter.js.map +1 -0
  85. package/internal/cli/analytics.d.ts +29 -0
  86. package/internal/cli/analytics.d.ts.map +1 -0
  87. package/internal/cli/analytics.js +188 -0
  88. package/internal/cli/analytics.js.map +1 -0
  89. package/internal/cli/autocomplete.d.ts +13 -0
  90. package/internal/cli/autocomplete.d.ts.map +1 -0
  91. package/internal/cli/autocomplete.js +291 -0
  92. package/internal/cli/autocomplete.js.map +1 -0
  93. package/internal/cli/bootstrap.d.ts +3 -0
  94. package/internal/cli/bootstrap.d.ts.map +1 -0
  95. package/internal/cli/bootstrap.js +15 -0
  96. package/internal/cli/bootstrap.js.map +1 -0
  97. package/internal/cli/cli.d.ts +2 -0
  98. package/internal/cli/cli.d.ts.map +1 -0
  99. package/internal/cli/cli.js +344 -0
  100. package/internal/cli/cli.js.map +1 -0
  101. package/internal/cli/constants.d.ts +2 -0
  102. package/internal/cli/constants.d.ts.map +1 -0
  103. package/internal/cli/constants.js +5 -0
  104. package/internal/cli/constants.js.map +1 -0
  105. package/internal/cli/emoji.d.ts +3 -0
  106. package/internal/cli/emoji.d.ts.map +1 -0
  107. package/internal/cli/emoji.js +13 -0
  108. package/internal/cli/emoji.js.map +1 -0
  109. package/internal/cli/hardhat-vscode-installation.d.ts +8 -0
  110. package/internal/cli/hardhat-vscode-installation.d.ts.map +1 -0
  111. package/internal/cli/hardhat-vscode-installation.js +41 -0
  112. package/internal/cli/hardhat-vscode-installation.js.map +1 -0
  113. package/internal/cli/is-node-version-to-warn-on.d.ts +13 -0
  114. package/internal/cli/is-node-version-to-warn-on.d.ts.map +1 -0
  115. package/internal/cli/is-node-version-to-warn-on.js +46 -0
  116. package/internal/cli/is-node-version-to-warn-on.js.map +1 -0
  117. package/internal/cli/project-creation.d.ts +4 -0
  118. package/internal/cli/project-creation.d.ts.map +1 -0
  119. package/internal/cli/project-creation.js +506 -0
  120. package/internal/cli/project-creation.js.map +1 -0
  121. package/internal/cli/prompt.d.ts +14 -0
  122. package/internal/cli/prompt.d.ts.map +1 -0
  123. package/internal/cli/prompt.js +123 -0
  124. package/internal/cli/prompt.js.map +1 -0
  125. package/internal/cli/types.d.ts +5 -0
  126. package/internal/cli/types.d.ts.map +1 -0
  127. package/internal/cli/types.js +3 -0
  128. package/internal/cli/types.js.map +1 -0
  129. package/internal/cli/vars.d.ts +2 -0
  130. package/internal/cli/vars.d.ts.map +1 -0
  131. package/internal/cli/vars.js +216 -0
  132. package/internal/cli/vars.js.map +1 -0
  133. package/internal/cli/version-notifier.d.ts +2 -0
  134. package/internal/cli/version-notifier.d.ts.map +1 -0
  135. package/internal/cli/version-notifier.js +217 -0
  136. package/internal/cli/version-notifier.js.map +1 -0
  137. package/internal/constants.d.ts +14 -0
  138. package/internal/constants.d.ts.map +1 -0
  139. package/internal/constants.js +35 -0
  140. package/internal/constants.js.map +1 -0
  141. package/internal/context.d.ts +29 -0
  142. package/internal/context.d.ts.map +1 -0
  143. package/internal/context.js +74 -0
  144. package/internal/context.js.map +1 -0
  145. package/internal/core/config/config-env.d.ts +111 -0
  146. package/internal/core/config/config-env.d.ts.map +1 -0
  147. package/internal/core/config/config-env.js +144 -0
  148. package/internal/core/config/config-env.js.map +1 -0
  149. package/internal/core/config/config-loading.d.ts +20 -0
  150. package/internal/core/config/config-loading.d.ts.map +1 -0
  151. package/internal/core/config/config-loading.js +246 -0
  152. package/internal/core/config/config-loading.js.map +1 -0
  153. package/internal/core/config/config-resolution.d.ts +25 -0
  154. package/internal/core/config/config-resolution.d.ts.map +1 -0
  155. package/internal/core/config/config-resolution.js +336 -0
  156. package/internal/core/config/config-resolution.js.map +1 -0
  157. package/internal/core/config/config-validation.d.ts +18 -0
  158. package/internal/core/config/config-validation.d.ts.map +1 -0
  159. package/internal/core/config/config-validation.js +400 -0
  160. package/internal/core/config/config-validation.js.map +1 -0
  161. package/internal/core/config/default-config.d.ts +45 -0
  162. package/internal/core/config/default-config.d.ts.map +1 -0
  163. package/internal/core/config/default-config.js +186 -0
  164. package/internal/core/config/default-config.js.map +1 -0
  165. package/internal/core/errors-list.d.ts +948 -0
  166. package/internal/core/errors-list.d.ts.map +1 -0
  167. package/internal/core/errors-list.js +1282 -0
  168. package/internal/core/errors-list.js.map +1 -0
  169. package/internal/core/errors.d.ts +74 -0
  170. package/internal/core/errors.d.ts.map +1 -0
  171. package/internal/core/errors.js +178 -0
  172. package/internal/core/errors.js.map +1 -0
  173. package/internal/core/execution-mode.d.ts +14 -0
  174. package/internal/core/execution-mode.d.ts.map +1 -0
  175. package/internal/core/execution-mode.js +40 -0
  176. package/internal/core/execution-mode.js.map +1 -0
  177. package/internal/core/flamegraph.d.ts +14 -0
  178. package/internal/core/flamegraph.d.ts.map +1 -0
  179. package/internal/core/flamegraph.js +255 -0
  180. package/internal/core/flamegraph.js.map +1 -0
  181. package/internal/core/jsonrpc/types/access-list.d.ts +13 -0
  182. package/internal/core/jsonrpc/types/access-list.d.ts.map +1 -0
  183. package/internal/core/jsonrpc/types/access-list.js +35 -0
  184. package/internal/core/jsonrpc/types/access-list.js.map +1 -0
  185. package/internal/core/jsonrpc/types/base-types.d.ts +28 -0
  186. package/internal/core/jsonrpc/types/base-types.d.ts.map +1 -0
  187. package/internal/core/jsonrpc/types/base-types.js +152 -0
  188. package/internal/core/jsonrpc/types/base-types.js.map +1 -0
  189. package/internal/core/jsonrpc/types/input/blockTag.d.ts +51 -0
  190. package/internal/core/jsonrpc/types/input/blockTag.d.ts.map +1 -0
  191. package/internal/core/jsonrpc/types/input/blockTag.js +55 -0
  192. package/internal/core/jsonrpc/types/input/blockTag.js.map +1 -0
  193. package/internal/core/jsonrpc/types/input/callRequest.d.ts +82 -0
  194. package/internal/core/jsonrpc/types/input/callRequest.d.ts.map +1 -0
  195. package/internal/core/jsonrpc/types/input/callRequest.js +57 -0
  196. package/internal/core/jsonrpc/types/input/callRequest.js.map +1 -0
  197. package/internal/core/jsonrpc/types/input/debugTraceTransaction.d.ts +14 -0
  198. package/internal/core/jsonrpc/types/input/debugTraceTransaction.d.ts.map +1 -0
  199. package/internal/core/jsonrpc/types/input/debugTraceTransaction.js +35 -0
  200. package/internal/core/jsonrpc/types/input/debugTraceTransaction.js.map +1 -0
  201. package/internal/core/jsonrpc/types/input/filterRequest.d.ts +24 -0
  202. package/internal/core/jsonrpc/types/input/filterRequest.d.ts.map +1 -0
  203. package/internal/core/jsonrpc/types/input/filterRequest.js +41 -0
  204. package/internal/core/jsonrpc/types/input/filterRequest.js.map +1 -0
  205. package/internal/core/jsonrpc/types/input/hardhat-network.d.ts +51 -0
  206. package/internal/core/jsonrpc/types/input/hardhat-network.d.ts.map +1 -0
  207. package/internal/core/jsonrpc/types/input/hardhat-network.js +51 -0
  208. package/internal/core/jsonrpc/types/input/hardhat-network.js.map +1 -0
  209. package/internal/core/jsonrpc/types/input/logAddress.d.ts +7 -0
  210. package/internal/core/jsonrpc/types/input/logAddress.d.ts.map +1 -0
  211. package/internal/core/jsonrpc/types/input/logAddress.js +32 -0
  212. package/internal/core/jsonrpc/types/input/logAddress.js.map +1 -0
  213. package/internal/core/jsonrpc/types/input/logTopics.d.ts +7 -0
  214. package/internal/core/jsonrpc/types/input/logTopics.d.ts.map +1 -0
  215. package/internal/core/jsonrpc/types/input/logTopics.js +32 -0
  216. package/internal/core/jsonrpc/types/input/logTopics.js.map +1 -0
  217. package/internal/core/jsonrpc/types/input/solc.d.ts +13 -0
  218. package/internal/core/jsonrpc/types/input/solc.d.ts.map +1 -0
  219. package/internal/core/jsonrpc/types/input/solc.js +37 -0
  220. package/internal/core/jsonrpc/types/input/solc.js.map +1 -0
  221. package/internal/core/jsonrpc/types/input/subscribeRequest.d.ts +12 -0
  222. package/internal/core/jsonrpc/types/input/subscribeRequest.d.ts.map +1 -0
  223. package/internal/core/jsonrpc/types/input/subscribeRequest.js +33 -0
  224. package/internal/core/jsonrpc/types/input/subscribeRequest.js.map +1 -0
  225. package/internal/core/jsonrpc/types/input/transactionRequest.d.ts +41 -0
  226. package/internal/core/jsonrpc/types/input/transactionRequest.d.ts.map +1 -0
  227. package/internal/core/jsonrpc/types/input/transactionRequest.js +47 -0
  228. package/internal/core/jsonrpc/types/input/transactionRequest.js.map +1 -0
  229. package/internal/core/jsonrpc/types/input/validation.d.ts +12 -0
  230. package/internal/core/jsonrpc/types/input/validation.d.ts.map +1 -0
  231. package/internal/core/jsonrpc/types/input/validation.js +49 -0
  232. package/internal/core/jsonrpc/types/input/validation.js.map +1 -0
  233. package/internal/core/jsonrpc/types/output/block.d.ts +106 -0
  234. package/internal/core/jsonrpc/types/output/block.d.ts.map +1 -0
  235. package/internal/core/jsonrpc/types/output/block.js +72 -0
  236. package/internal/core/jsonrpc/types/output/block.js.map +1 -0
  237. package/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.d.ts +6 -0
  238. package/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.d.ts.map +1 -0
  239. package/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.js +20 -0
  240. package/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.js.map +1 -0
  241. package/internal/core/jsonrpc/types/output/log.d.ts +13 -0
  242. package/internal/core/jsonrpc/types/output/log.d.ts.map +1 -0
  243. package/internal/core/jsonrpc/types/output/log.js +40 -0
  244. package/internal/core/jsonrpc/types/output/log.js.map +1 -0
  245. package/internal/core/jsonrpc/types/output/metadata.d.ts +13 -0
  246. package/internal/core/jsonrpc/types/output/metadata.d.ts.map +1 -0
  247. package/internal/core/jsonrpc/types/output/metadata.js +3 -0
  248. package/internal/core/jsonrpc/types/output/metadata.js.map +1 -0
  249. package/internal/core/jsonrpc/types/output/receipt.d.ts +29 -0
  250. package/internal/core/jsonrpc/types/output/receipt.d.ts.map +1 -0
  251. package/internal/core/jsonrpc/types/output/receipt.js +52 -0
  252. package/internal/core/jsonrpc/types/output/receipt.js.map +1 -0
  253. package/internal/core/jsonrpc/types/output/transaction.d.ts +30 -0
  254. package/internal/core/jsonrpc/types/output/transaction.d.ts.map +1 -0
  255. package/internal/core/jsonrpc/types/output/transaction.js +55 -0
  256. package/internal/core/jsonrpc/types/output/transaction.js.map +1 -0
  257. package/internal/core/params/argumentTypes.d.ts +41 -0
  258. package/internal/core/params/argumentTypes.d.ts.map +1 -0
  259. package/internal/core/params/argumentTypes.js +315 -0
  260. package/internal/core/params/argumentTypes.js.map +1 -0
  261. package/internal/core/params/env-variables.d.ts +9 -0
  262. package/internal/core/params/env-variables.d.ts.map +1 -0
  263. package/internal/core/params/env-variables.js +58 -0
  264. package/internal/core/params/env-variables.js.map +1 -0
  265. package/internal/core/params/hardhat-params.d.ts +3 -0
  266. package/internal/core/params/hardhat-params.d.ts.map +1 -0
  267. package/internal/core/params/hardhat-params.js +129 -0
  268. package/internal/core/params/hardhat-params.js.map +1 -0
  269. package/internal/core/project-structure.d.ts +4 -0
  270. package/internal/core/project-structure.d.ts.map +1 -0
  271. package/internal/core/project-structure.js +50 -0
  272. package/internal/core/project-structure.js.map +1 -0
  273. package/internal/core/providers/accounts.d.ts +40 -0
  274. package/internal/core/providers/accounts.d.ts.map +1 -0
  275. package/internal/core/providers/accounts.js +266 -0
  276. package/internal/core/providers/accounts.js.map +1 -0
  277. package/internal/core/providers/backwards-compatibility.d.ts +18 -0
  278. package/internal/core/providers/backwards-compatibility.d.ts.map +1 -0
  279. package/internal/core/providers/backwards-compatibility.js +66 -0
  280. package/internal/core/providers/backwards-compatibility.js.map +1 -0
  281. package/internal/core/providers/chainId.d.ts +15 -0
  282. package/internal/core/providers/chainId.d.ts.map +1 -0
  283. package/internal/core/providers/chainId.js +58 -0
  284. package/internal/core/providers/chainId.js.map +1 -0
  285. package/internal/core/providers/construction.d.ts +5 -0
  286. package/internal/core/providers/construction.d.ts.map +1 -0
  287. package/internal/core/providers/construction.js +166 -0
  288. package/internal/core/providers/construction.js.map +1 -0
  289. package/internal/core/providers/errors.d.ts +47 -0
  290. package/internal/core/providers/errors.d.ts.map +1 -0
  291. package/internal/core/providers/errors.js +110 -0
  292. package/internal/core/providers/errors.js.map +1 -0
  293. package/internal/core/providers/gas-providers.d.ts +34 -0
  294. package/internal/core/providers/gas-providers.d.ts.map +1 -0
  295. package/internal/core/providers/gas-providers.js +228 -0
  296. package/internal/core/providers/gas-providers.js.map +1 -0
  297. package/internal/core/providers/http.d.ts +35 -0
  298. package/internal/core/providers/http.d.ts.map +1 -0
  299. package/internal/core/providers/http.js +226 -0
  300. package/internal/core/providers/http.js.map +1 -0
  301. package/internal/core/providers/lazy-initialization.d.ts +44 -0
  302. package/internal/core/providers/lazy-initialization.d.ts.map +1 -0
  303. package/internal/core/providers/lazy-initialization.js +137 -0
  304. package/internal/core/providers/lazy-initialization.js.map +1 -0
  305. package/internal/core/providers/util.d.ts +5 -0
  306. package/internal/core/providers/util.d.ts.map +1 -0
  307. package/internal/core/providers/util.js +41 -0
  308. package/internal/core/providers/util.js.map +1 -0
  309. package/internal/core/providers/wrapper.d.ts +19 -0
  310. package/internal/core/providers/wrapper.d.ts.map +1 -0
  311. package/internal/core/providers/wrapper.js +34 -0
  312. package/internal/core/providers/wrapper.js.map +1 -0
  313. package/internal/core/runtime-environment.d.ts +86 -0
  314. package/internal/core/runtime-environment.d.ts.map +1 -0
  315. package/internal/core/runtime-environment.js +317 -0
  316. package/internal/core/runtime-environment.js.map +1 -0
  317. package/internal/core/task-profiling.d.ts +18 -0
  318. package/internal/core/task-profiling.d.ts.map +1 -0
  319. package/internal/core/task-profiling.js +50 -0
  320. package/internal/core/task-profiling.js.map +1 -0
  321. package/internal/core/tasks/builtin-tasks.d.ts +11 -0
  322. package/internal/core/tasks/builtin-tasks.d.ts.map +1 -0
  323. package/internal/core/tasks/builtin-tasks.js +13 -0
  324. package/internal/core/tasks/builtin-tasks.js.map +1 -0
  325. package/internal/core/tasks/dsl.d.ts +76 -0
  326. package/internal/core/tasks/dsl.d.ts.map +1 -0
  327. package/internal/core/tasks/dsl.js +112 -0
  328. package/internal/core/tasks/dsl.js.map +1 -0
  329. package/internal/core/tasks/task-definitions.d.ts +266 -0
  330. package/internal/core/tasks/task-definitions.d.ts.map +1 -0
  331. package/internal/core/tasks/task-definitions.js +555 -0
  332. package/internal/core/tasks/task-definitions.js.map +1 -0
  333. package/internal/core/tasks/util.d.ts +6 -0
  334. package/internal/core/tasks/util.d.ts.map +1 -0
  335. package/internal/core/tasks/util.js +19 -0
  336. package/internal/core/tasks/util.js.map +1 -0
  337. package/internal/core/typescript-support.d.ts +15 -0
  338. package/internal/core/typescript-support.d.ts.map +1 -0
  339. package/internal/core/typescript-support.js +85 -0
  340. package/internal/core/typescript-support.js.map +1 -0
  341. package/internal/core/vars/vars-manager-setup.d.ts +22 -0
  342. package/internal/core/vars/vars-manager-setup.d.ts.map +1 -0
  343. package/internal/core/vars/vars-manager-setup.js +95 -0
  344. package/internal/core/vars/vars-manager-setup.js.map +1 -0
  345. package/internal/core/vars/vars-manager.d.ts +21 -0
  346. package/internal/core/vars/vars-manager.d.ts.map +1 -0
  347. package/internal/core/vars/vars-manager.js +110 -0
  348. package/internal/core/vars/vars-manager.js.map +1 -0
  349. package/internal/hardhat-network/jsonrpc/client.d.ts +109 -0
  350. package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -0
  351. package/internal/hardhat-network/jsonrpc/client.js +294 -0
  352. package/internal/hardhat-network/jsonrpc/client.js.map +1 -0
  353. package/internal/hardhat-network/jsonrpc/handler.d.ts +16 -0
  354. package/internal/hardhat-network/jsonrpc/handler.d.ts.map +1 -0
  355. package/internal/hardhat-network/jsonrpc/handler.js +218 -0
  356. package/internal/hardhat-network/jsonrpc/handler.js.map +1 -0
  357. package/internal/hardhat-network/jsonrpc/server.d.ts +20 -0
  358. package/internal/hardhat-network/jsonrpc/server.d.ts.map +1 -0
  359. package/internal/hardhat-network/jsonrpc/server.js +82 -0
  360. package/internal/hardhat-network/jsonrpc/server.js.map +1 -0
  361. package/internal/hardhat-network/provider/fork/AccountState.d.ts +11 -0
  362. package/internal/hardhat-network/provider/fork/AccountState.d.ts.map +1 -0
  363. package/internal/hardhat-network/provider/fork/AccountState.js +21 -0
  364. package/internal/hardhat-network/provider/fork/AccountState.js.map +1 -0
  365. package/internal/hardhat-network/provider/modules/logger.d.ts +8 -0
  366. package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -0
  367. package/internal/hardhat-network/provider/modules/logger.js +28 -0
  368. package/internal/hardhat-network/provider/modules/logger.js.map +1 -0
  369. package/internal/hardhat-network/provider/node-types.d.ts +67 -0
  370. package/internal/hardhat-network/provider/node-types.d.ts.map +1 -0
  371. package/internal/hardhat-network/provider/node-types.js +3 -0
  372. package/internal/hardhat-network/provider/node-types.js.map +1 -0
  373. package/internal/hardhat-network/provider/output.d.ts +118 -0
  374. package/internal/hardhat-network/provider/output.d.ts.map +1 -0
  375. package/internal/hardhat-network/provider/output.js +3 -0
  376. package/internal/hardhat-network/provider/output.js.map +1 -0
  377. package/internal/hardhat-network/provider/provider.d.ts +64 -0
  378. package/internal/hardhat-network/provider/provider.d.ts.map +1 -0
  379. package/internal/hardhat-network/provider/provider.js +441 -0
  380. package/internal/hardhat-network/provider/provider.js.map +1 -0
  381. package/internal/hardhat-network/provider/return-data.d.ts +3 -0
  382. package/internal/hardhat-network/provider/return-data.d.ts.map +1 -0
  383. package/internal/hardhat-network/provider/return-data.js +7 -0
  384. package/internal/hardhat-network/provider/return-data.js.map +1 -0
  385. package/internal/hardhat-network/provider/utils/assertions.d.ts +2 -0
  386. package/internal/hardhat-network/provider/utils/assertions.d.ts.map +1 -0
  387. package/internal/hardhat-network/provider/utils/assertions.js +12 -0
  388. package/internal/hardhat-network/provider/utils/assertions.js.map +1 -0
  389. package/internal/hardhat-network/provider/utils/convertToEdr.d.ts +14 -0
  390. package/internal/hardhat-network/provider/utils/convertToEdr.d.ts.map +1 -0
  391. package/internal/hardhat-network/provider/utils/convertToEdr.js +224 -0
  392. package/internal/hardhat-network/provider/utils/convertToEdr.js.map +1 -0
  393. package/internal/hardhat-network/provider/utils/disk-cache.d.ts +3 -0
  394. package/internal/hardhat-network/provider/utils/disk-cache.d.ts.map +1 -0
  395. package/internal/hardhat-network/provider/utils/disk-cache.js +12 -0
  396. package/internal/hardhat-network/provider/utils/disk-cache.js.map +1 -0
  397. package/internal/hardhat-network/provider/utils/fork-recomendations-banner.d.ts +3 -0
  398. package/internal/hardhat-network/provider/utils/fork-recomendations-banner.d.ts.map +1 -0
  399. package/internal/hardhat-network/provider/utils/fork-recomendations-banner.js +38 -0
  400. package/internal/hardhat-network/provider/utils/fork-recomendations-banner.js.map +1 -0
  401. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts +2 -0
  402. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts.map +1 -0
  403. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js +8 -0
  404. package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js.map +1 -0
  405. package/internal/hardhat-network/provider/utils/isHexPrefixed.d.ts +2 -0
  406. package/internal/hardhat-network/provider/utils/isHexPrefixed.d.ts.map +1 -0
  407. package/internal/hardhat-network/provider/utils/isHexPrefixed.js +8 -0
  408. package/internal/hardhat-network/provider/utils/isHexPrefixed.js.map +1 -0
  409. package/internal/hardhat-network/provider/utils/makeAccount.d.ts +7 -0
  410. package/internal/hardhat-network/provider/utils/makeAccount.d.ts.map +1 -0
  411. package/internal/hardhat-network/provider/utils/makeAccount.js +20 -0
  412. package/internal/hardhat-network/provider/utils/makeAccount.js.map +1 -0
  413. package/internal/hardhat-network/provider/utils/makeCommon.d.ts +4 -0
  414. package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -0
  415. package/internal/hardhat-network/provider/utils/makeCommon.js +17 -0
  416. package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -0
  417. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts +19 -0
  418. package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -0
  419. package/internal/hardhat-network/provider/utils/makeForkClient.js +99 -0
  420. package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -0
  421. package/internal/hardhat-network/provider/utils/random.d.ts +17 -0
  422. package/internal/hardhat-network/provider/utils/random.d.ts.map +1 -0
  423. package/internal/hardhat-network/provider/utils/random.js +55 -0
  424. package/internal/hardhat-network/provider/utils/random.js.map +1 -0
  425. package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts +10 -0
  426. package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts.map +1 -0
  427. package/internal/hardhat-network/provider/utils/reorgs-protection.js +39 -0
  428. package/internal/hardhat-network/provider/utils/reorgs-protection.js.map +1 -0
  429. package/internal/hardhat-network/provider/vm/exit.d.ts +3 -0
  430. package/internal/hardhat-network/provider/vm/exit.d.ts.map +1 -0
  431. package/internal/hardhat-network/provider/vm/exit.js +7 -0
  432. package/internal/hardhat-network/provider/vm/exit.js.map +1 -0
  433. package/internal/hardhat-network/provider/vm/minimal-vm.d.ts +36 -0
  434. package/internal/hardhat-network/provider/vm/minimal-vm.d.ts.map +1 -0
  435. package/internal/hardhat-network/provider/vm/minimal-vm.js +53 -0
  436. package/internal/hardhat-network/provider/vm/minimal-vm.js.map +1 -0
  437. package/internal/hardhat-network/provider/vm/types.d.ts +36 -0
  438. package/internal/hardhat-network/provider/vm/types.d.ts.map +1 -0
  439. package/internal/hardhat-network/provider/vm/types.js +3 -0
  440. package/internal/hardhat-network/provider/vm/types.js.map +1 -0
  441. package/internal/hardhat-network/stack-traces/compiler-to-model.d.ts +3 -0
  442. package/internal/hardhat-network/stack-traces/compiler-to-model.d.ts.map +1 -0
  443. package/internal/hardhat-network/stack-traces/compiler-to-model.js +7 -0
  444. package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -0
  445. package/internal/hardhat-network/stack-traces/consoleLogger.d.ts +23 -0
  446. package/internal/hardhat-network/stack-traces/consoleLogger.d.ts.map +1 -0
  447. package/internal/hardhat-network/stack-traces/consoleLogger.js +159 -0
  448. package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -0
  449. package/internal/hardhat-network/stack-traces/constants.d.ts +3 -0
  450. package/internal/hardhat-network/stack-traces/constants.d.ts.map +1 -0
  451. package/internal/hardhat-network/stack-traces/constants.js +6 -0
  452. package/internal/hardhat-network/stack-traces/constants.js.map +1 -0
  453. package/internal/hardhat-network/stack-traces/debug.d.ts +3 -0
  454. package/internal/hardhat-network/stack-traces/debug.d.ts.map +1 -0
  455. package/internal/hardhat-network/stack-traces/debug.js +8 -0
  456. package/internal/hardhat-network/stack-traces/debug.js.map +1 -0
  457. package/internal/hardhat-network/stack-traces/library-utils.d.ts +3 -0
  458. package/internal/hardhat-network/stack-traces/library-utils.d.ts.map +1 -0
  459. package/internal/hardhat-network/stack-traces/library-utils.js +7 -0
  460. package/internal/hardhat-network/stack-traces/library-utils.js.map +1 -0
  461. package/internal/hardhat-network/stack-traces/logger.d.ts +41 -0
  462. package/internal/hardhat-network/stack-traces/logger.d.ts.map +1 -0
  463. package/internal/hardhat-network/stack-traces/logger.js +424 -0
  464. package/internal/hardhat-network/stack-traces/logger.js.map +1 -0
  465. package/internal/hardhat-network/stack-traces/message-trace.d.ts +4 -0
  466. package/internal/hardhat-network/stack-traces/message-trace.d.ts.map +1 -0
  467. package/internal/hardhat-network/stack-traces/message-trace.js +3 -0
  468. package/internal/hardhat-network/stack-traces/message-trace.js.map +1 -0
  469. package/internal/hardhat-network/stack-traces/panic-errors.d.ts +2 -0
  470. package/internal/hardhat-network/stack-traces/panic-errors.d.ts.map +1 -0
  471. package/internal/hardhat-network/stack-traces/panic-errors.js +34 -0
  472. package/internal/hardhat-network/stack-traces/panic-errors.js.map +1 -0
  473. package/internal/hardhat-network/stack-traces/solidity-errors.d.ts +14 -0
  474. package/internal/hardhat-network/stack-traces/solidity-errors.d.ts.map +1 -0
  475. package/internal/hardhat-network/stack-traces/solidity-errors.js +284 -0
  476. package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -0
  477. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts +7 -0
  478. package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts.map +1 -0
  479. package/internal/hardhat-network/stack-traces/solidity-stack-trace.js +15 -0
  480. package/internal/hardhat-network/stack-traces/solidity-stack-trace.js.map +1 -0
  481. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts +3 -0
  482. package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -0
  483. package/internal/hardhat-network/stack-traces/solidityTracer.js +7 -0
  484. package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -0
  485. package/internal/hardhat-network/stack-traces/vm-trace-decoder.d.ts +6 -0
  486. package/internal/hardhat-network/stack-traces/vm-trace-decoder.d.ts.map +1 -0
  487. package/internal/hardhat-network/stack-traces/vm-trace-decoder.js +27 -0
  488. package/internal/hardhat-network/stack-traces/vm-trace-decoder.js.map +1 -0
  489. package/internal/hardhat-network/stack-traces/vm-tracer.d.ts +3 -0
  490. package/internal/hardhat-network/stack-traces/vm-tracer.d.ts.map +1 -0
  491. package/internal/hardhat-network/stack-traces/vm-tracer.js +7 -0
  492. package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -0
  493. package/internal/lib/hardhat-lib.d.ts +4 -0
  494. package/internal/lib/hardhat-lib.d.ts.map +1 -0
  495. package/internal/lib/hardhat-lib.js +35 -0
  496. package/internal/lib/hardhat-lib.js.map +1 -0
  497. package/internal/reset.d.ts +2 -0
  498. package/internal/reset.d.ts.map +1 -0
  499. package/internal/reset.js +35 -0
  500. package/internal/reset.js.map +1 -0
  501. package/internal/sentry/anonymizer.d.ts +31 -0
  502. package/internal/sentry/anonymizer.d.ts.map +1 -0
  503. package/internal/sentry/anonymizer.js +292 -0
  504. package/internal/sentry/anonymizer.js.map +1 -0
  505. package/internal/sentry/reporter.d.ts +42 -0
  506. package/internal/sentry/reporter.d.ts.map +1 -0
  507. package/internal/sentry/reporter.js +157 -0
  508. package/internal/sentry/reporter.js.map +1 -0
  509. package/internal/sentry/subprocess.d.ts +2 -0
  510. package/internal/sentry/subprocess.d.ts.map +1 -0
  511. package/internal/sentry/subprocess.js +85 -0
  512. package/internal/sentry/subprocess.js.map +1 -0
  513. package/internal/sentry/transport.d.ts +2 -0
  514. package/internal/sentry/transport.d.ts.map +1 -0
  515. package/internal/sentry/transport.js +64 -0
  516. package/internal/sentry/transport.js.map +1 -0
  517. package/internal/solidity/compilation-job.d.ts +38 -0
  518. package/internal/solidity/compilation-job.d.ts.map +1 -0
  519. package/internal/solidity/compilation-job.js +223 -0
  520. package/internal/solidity/compilation-job.js.map +1 -0
  521. package/internal/solidity/compiler/compiler-input.d.ts +3 -0
  522. package/internal/solidity/compiler/compiler-input.d.ts.map +1 -0
  523. package/internal/solidity/compiler/compiler-input.js +23 -0
  524. package/internal/solidity/compiler/compiler-input.js.map +1 -0
  525. package/internal/solidity/compiler/downloader.d.ts +79 -0
  526. package/internal/solidity/compiler/downloader.d.ts.map +1 -0
  527. package/internal/solidity/compiler/downloader.js +262 -0
  528. package/internal/solidity/compiler/downloader.js.map +1 -0
  529. package/internal/solidity/compiler/index.d.ts +16 -0
  530. package/internal/solidity/compiler/index.d.ts.map +1 -0
  531. package/internal/solidity/compiler/index.js +107 -0
  532. package/internal/solidity/compiler/index.js.map +1 -0
  533. package/internal/solidity/compiler/solc-info.d.ts +2 -0
  534. package/internal/solidity/compiler/solc-info.d.ts.map +1 -0
  535. package/internal/solidity/compiler/solc-info.js +75 -0
  536. package/internal/solidity/compiler/solc-info.js.map +1 -0
  537. package/internal/solidity/compiler/solcjs-runner.js +34 -0
  538. package/internal/solidity/dependencyGraph.d.ts +19 -0
  539. package/internal/solidity/dependencyGraph.d.ts.map +1 -0
  540. package/internal/solidity/dependencyGraph.js +127 -0
  541. package/internal/solidity/dependencyGraph.js.map +1 -0
  542. package/internal/solidity/parse.d.ts +19 -0
  543. package/internal/solidity/parse.d.ts.map +1 -0
  544. package/internal/solidity/parse.js +44 -0
  545. package/internal/solidity/parse.js.map +1 -0
  546. package/internal/solidity/resolver.d.ts +50 -0
  547. package/internal/solidity/resolver.d.ts.map +1 -0
  548. package/internal/solidity/resolver.js +337 -0
  549. package/internal/solidity/resolver.js.map +1 -0
  550. package/internal/util/abi-helpers.d.ts +13 -0
  551. package/internal/util/abi-helpers.d.ts.map +1 -0
  552. package/internal/util/abi-helpers.js +75 -0
  553. package/internal/util/abi-helpers.js.map +1 -0
  554. package/internal/util/bigint.d.ts +13 -0
  555. package/internal/util/bigint.d.ts.map +1 -0
  556. package/internal/util/bigint.js +60 -0
  557. package/internal/util/bigint.js.map +1 -0
  558. package/internal/util/caller-package.d.ts +5 -0
  559. package/internal/util/caller-package.d.ts.map +1 -0
  560. package/internal/util/caller-package.js +42 -0
  561. package/internal/util/caller-package.js.map +1 -0
  562. package/internal/util/ci-detection.d.ts +2 -0
  563. package/internal/util/ci-detection.d.ts.map +1 -0
  564. package/internal/util/ci-detection.js +53 -0
  565. package/internal/util/ci-detection.js.map +1 -0
  566. package/internal/util/console.d.ts +8 -0
  567. package/internal/util/console.d.ts.map +1 -0
  568. package/internal/util/console.js +25 -0
  569. package/internal/util/console.js.map +1 -0
  570. package/internal/util/date.d.ts +5 -0
  571. package/internal/util/date.d.ts.map +1 -0
  572. package/internal/util/date.js +20 -0
  573. package/internal/util/date.js.map +1 -0
  574. package/internal/util/download.d.ts +4 -0
  575. package/internal/util/download.d.ts.map +1 -0
  576. package/internal/util/download.js +77 -0
  577. package/internal/util/download.js.map +1 -0
  578. package/internal/util/event-emitter.d.ts +22 -0
  579. package/internal/util/event-emitter.d.ts.map +1 -0
  580. package/internal/util/event-emitter.js +76 -0
  581. package/internal/util/event-emitter.js.map +1 -0
  582. package/internal/util/fs-utils.d.ts +49 -0
  583. package/internal/util/fs-utils.d.ts.map +1 -0
  584. package/internal/util/fs-utils.js +194 -0
  585. package/internal/util/fs-utils.js.map +1 -0
  586. package/internal/util/glob.d.ts +17 -0
  587. package/internal/util/glob.d.ts.map +1 -0
  588. package/internal/util/glob.js +56 -0
  589. package/internal/util/glob.js.map +1 -0
  590. package/internal/util/global-dir.d.ts +27 -0
  591. package/internal/util/global-dir.d.ts.map +1 -0
  592. package/internal/util/global-dir.js +157 -0
  593. package/internal/util/global-dir.js.map +1 -0
  594. package/internal/util/hardforks.d.ts +28 -0
  595. package/internal/util/hardforks.d.ts.map +1 -0
  596. package/internal/util/hardforks.js +88 -0
  597. package/internal/util/hardforks.js.map +1 -0
  598. package/internal/util/hash.d.ts +12 -0
  599. package/internal/util/hash.d.ts.map +1 -0
  600. package/internal/util/hash.js +18 -0
  601. package/internal/util/hash.js.map +1 -0
  602. package/internal/util/io-ts.d.ts +5 -0
  603. package/internal/util/io-ts.d.ts.map +1 -0
  604. package/internal/util/io-ts.js +50 -0
  605. package/internal/util/io-ts.js.map +1 -0
  606. package/internal/util/jsonrpc.d.ts +26 -0
  607. package/internal/util/jsonrpc.d.ts.map +1 -0
  608. package/internal/util/jsonrpc.js +73 -0
  609. package/internal/util/jsonrpc.js.map +1 -0
  610. package/internal/util/keccak.d.ts +2 -0
  611. package/internal/util/keccak.d.ts.map +1 -0
  612. package/internal/util/keccak.js +12 -0
  613. package/internal/util/keccak.js.map +1 -0
  614. package/internal/util/keys-derivation.d.ts +3 -0
  615. package/internal/util/keys-derivation.d.ts.map +1 -0
  616. package/internal/util/keys-derivation.js +18 -0
  617. package/internal/util/keys-derivation.js.map +1 -0
  618. package/internal/util/lang.d.ts +3 -0
  619. package/internal/util/lang.d.ts.map +1 -0
  620. package/internal/util/lang.js +18 -0
  621. package/internal/util/lang.js.map +1 -0
  622. package/internal/util/lazy.d.ts +29 -0
  623. package/internal/util/lazy.d.ts.map +1 -0
  624. package/internal/util/lazy.js +189 -0
  625. package/internal/util/lazy.js.map +1 -0
  626. package/internal/util/multi-process-mutex.d.ts +12 -0
  627. package/internal/util/multi-process-mutex.d.ts.map +1 -0
  628. package/internal/util/multi-process-mutex.js +116 -0
  629. package/internal/util/multi-process-mutex.js.map +1 -0
  630. package/internal/util/packageInfo.d.ts +19 -0
  631. package/internal/util/packageInfo.d.ts.map +1 -0
  632. package/internal/util/packageInfo.js +54 -0
  633. package/internal/util/packageInfo.js.map +1 -0
  634. package/internal/util/platform.d.ts +2 -0
  635. package/internal/util/platform.d.ts.map +1 -0
  636. package/internal/util/platform.js +8 -0
  637. package/internal/util/platform.js.map +1 -0
  638. package/internal/util/proxy.d.ts +2 -0
  639. package/internal/util/proxy.d.ts.map +1 -0
  640. package/internal/util/proxy.js +19 -0
  641. package/internal/util/proxy.js.map +1 -0
  642. package/internal/util/report-telemetry-consent.d.ts +2 -0
  643. package/internal/util/report-telemetry-consent.d.ts.map +1 -0
  644. package/internal/util/report-telemetry-consent.js +15 -0
  645. package/internal/util/report-telemetry-consent.js.map +1 -0
  646. package/internal/util/scripts-runner.d.ts +8 -0
  647. package/internal/util/scripts-runner.d.ts.map +1 -0
  648. package/internal/util/scripts-runner.js +112 -0
  649. package/internal/util/scripts-runner.js.map +1 -0
  650. package/internal/util/strings.d.ts +15 -0
  651. package/internal/util/strings.d.ts.map +1 -0
  652. package/internal/util/strings.js +30 -0
  653. package/internal/util/strings.js.map +1 -0
  654. package/internal/util/unsafe.d.ts +11 -0
  655. package/internal/util/unsafe.d.ts.map +1 -0
  656. package/internal/util/unsafe.js +17 -0
  657. package/internal/util/unsafe.js.map +1 -0
  658. package/internal/util/wei-values.d.ts +12 -0
  659. package/internal/util/wei-values.d.ts.map +1 -0
  660. package/internal/util/wei-values.js +51 -0
  661. package/internal/util/wei-values.js.map +1 -0
  662. package/internal/vendor/await-semaphore/index.d.ts +12 -0
  663. package/internal/vendor/await-semaphore/index.d.ts.map +1 -0
  664. package/internal/vendor/await-semaphore/index.js +64 -0
  665. package/internal/vendor/await-semaphore/index.js.map +1 -0
  666. package/package.json +172 -0
  667. package/plugins-testing.d.ts +2 -0
  668. package/plugins-testing.d.ts.map +1 -0
  669. package/plugins-testing.js +6 -0
  670. package/plugins-testing.js.map +1 -0
  671. package/plugins.d.ts +5 -0
  672. package/plugins.d.ts.map +1 -0
  673. package/plugins.js +14 -0
  674. package/plugins.js.map +1 -0
  675. package/profiling.d.ts +18 -0
  676. package/profiling.d.ts.map +1 -0
  677. package/profiling.js +32 -0
  678. package/profiling.js.map +1 -0
  679. package/recommended-gitignore.txt +17 -0
  680. package/register.d.ts +2 -0
  681. package/register.d.ts.map +1 -0
  682. package/register.js +32 -0
  683. package/register.js.map +1 -0
  684. package/rl9c6ze5.cjs +1 -0
  685. package/sample-projects/javascript/LICENSE.md +11 -0
  686. package/sample-projects/javascript/README.md +13 -0
  687. package/sample-projects/javascript/contracts/Lock.sol +34 -0
  688. package/sample-projects/javascript/hardhat.config.js +6 -0
  689. package/sample-projects/javascript/ignition/modules/Lock.js +18 -0
  690. package/sample-projects/javascript/test/Lock.js +126 -0
  691. package/sample-projects/javascript-esm/LICENSE.md +11 -0
  692. package/sample-projects/javascript-esm/README.md +13 -0
  693. package/sample-projects/javascript-esm/contracts/Lock.sol +34 -0
  694. package/sample-projects/javascript-esm/hardhat.config.cjs +6 -0
  695. package/sample-projects/javascript-esm/ignition/modules/Lock.js +18 -0
  696. package/sample-projects/javascript-esm/test/Lock.js +128 -0
  697. package/sample-projects/typescript/LICENSE.md +11 -0
  698. package/sample-projects/typescript/README.md +13 -0
  699. package/sample-projects/typescript/contracts/Lock.sol +34 -0
  700. package/sample-projects/typescript/hardhat.config.ts +8 -0
  701. package/sample-projects/typescript/ignition/modules/Lock.ts +20 -0
  702. package/sample-projects/typescript/test/Lock.ts +127 -0
  703. package/sample-projects/typescript/tsconfig.json +11 -0
  704. package/sample-projects/typescript-viem/LICENSE.md +11 -0
  705. package/sample-projects/typescript-viem/README.md +13 -0
  706. package/sample-projects/typescript-viem/contracts/Lock.sol +34 -0
  707. package/sample-projects/typescript-viem/hardhat.config.ts +8 -0
  708. package/sample-projects/typescript-viem/ignition/modules/Lock.ts +21 -0
  709. package/sample-projects/typescript-viem/test/Lock.ts +134 -0
  710. package/sample-projects/typescript-viem/tsconfig.json +11 -0
  711. package/src/builtin-tasks/check.ts +5 -0
  712. package/src/builtin-tasks/clean.ts +24 -0
  713. package/src/builtin-tasks/compile.ts +1596 -0
  714. package/src/builtin-tasks/console.ts +41 -0
  715. package/src/builtin-tasks/flatten.ts +348 -0
  716. package/src/builtin-tasks/help.ts +72 -0
  717. package/src/builtin-tasks/node.ts +385 -0
  718. package/src/builtin-tasks/run.ts +56 -0
  719. package/src/builtin-tasks/task-names.ts +92 -0
  720. package/src/builtin-tasks/test.ts +223 -0
  721. package/src/builtin-tasks/utils/solidity-files-cache.ts +145 -0
  722. package/src/builtin-tasks/utils/watch.ts +64 -0
  723. package/src/builtin-tasks/vars.ts +54 -0
  724. package/src/common/bigInt.ts +106 -0
  725. package/src/common/index.ts +2 -0
  726. package/src/common/napi-rs.ts +15 -0
  727. package/src/config.ts +2 -0
  728. package/src/internal/artifacts.ts +975 -0
  729. package/src/internal/cli/ArgumentsParser.ts +358 -0
  730. package/src/internal/cli/HelpPrinter.ts +278 -0
  731. package/src/internal/cli/analytics.ts +288 -0
  732. package/src/internal/cli/autocomplete.ts +387 -0
  733. package/src/internal/cli/bootstrap.ts +16 -0
  734. package/src/internal/cli/cli.ts +478 -0
  735. package/src/internal/cli/constants.ts +1 -0
  736. package/src/internal/cli/emoji.ts +9 -0
  737. package/src/internal/cli/hardhat-vscode-installation.ts +43 -0
  738. package/src/internal/cli/is-node-version-to-warn-on.ts +54 -0
  739. package/src/internal/cli/project-creation.ts +683 -0
  740. package/src/internal/cli/prompt.ts +141 -0
  741. package/src/internal/cli/types.ts +5 -0
  742. package/src/internal/cli/vars.ts +301 -0
  743. package/src/internal/cli/version-notifier.ts +268 -0
  744. package/src/internal/constants.ts +38 -0
  745. package/src/internal/context.ts +107 -0
  746. package/src/internal/core/config/config-env.ts +219 -0
  747. package/src/internal/core/config/config-loading.ts +356 -0
  748. package/src/internal/core/config/config-resolution.ts +497 -0
  749. package/src/internal/core/config/config-validation.ts +621 -0
  750. package/src/internal/core/config/default-config.ts +197 -0
  751. package/src/internal/core/errors-list.ts +1369 -0
  752. package/src/internal/core/errors.ts +274 -0
  753. package/src/internal/core/execution-mode.ts +39 -0
  754. package/src/internal/core/flamegraph.ts +270 -0
  755. package/src/internal/core/jsonrpc/types/access-list.ts +16 -0
  756. package/src/internal/core/jsonrpc/types/base-types.ts +233 -0
  757. package/src/internal/core/jsonrpc/types/input/blockTag.ts +44 -0
  758. package/src/internal/core/jsonrpc/types/input/callRequest.ts +60 -0
  759. package/src/internal/core/jsonrpc/types/input/debugTraceTransaction.ts +17 -0
  760. package/src/internal/core/jsonrpc/types/input/filterRequest.ts +27 -0
  761. package/src/internal/core/jsonrpc/types/input/hardhat-network.ts +54 -0
  762. package/src/internal/core/jsonrpc/types/input/logAddress.ts +12 -0
  763. package/src/internal/core/jsonrpc/types/input/logTopics.ts +14 -0
  764. package/src/internal/core/jsonrpc/types/input/solc.ts +22 -0
  765. package/src/internal/core/jsonrpc/types/input/subscribeRequest.ts +21 -0
  766. package/src/internal/core/jsonrpc/types/input/transactionRequest.ts +47 -0
  767. package/src/internal/core/jsonrpc/types/input/validation.ts +75 -0
  768. package/src/internal/core/jsonrpc/types/output/block.ts +66 -0
  769. package/src/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.ts +23 -0
  770. package/src/internal/core/jsonrpc/types/output/log.ts +19 -0
  771. package/src/internal/core/jsonrpc/types/output/metadata.ts +32 -0
  772. package/src/internal/core/jsonrpc/types/output/receipt.ts +38 -0
  773. package/src/internal/core/jsonrpc/types/output/transaction.ts +36 -0
  774. package/src/internal/core/params/argumentTypes.ts +327 -0
  775. package/src/internal/core/params/env-variables.ts +72 -0
  776. package/src/internal/core/params/hardhat-params.ts +105 -0
  777. package/src/internal/core/project-structure.ts +53 -0
  778. package/src/internal/core/providers/accounts.ts +385 -0
  779. package/src/internal/core/providers/backwards-compatibility.ts +80 -0
  780. package/src/internal/core/providers/chainId.ts +68 -0
  781. package/src/internal/core/providers/construction.ts +259 -0
  782. package/src/internal/core/providers/errors.ts +128 -0
  783. package/src/internal/core/providers/gas-providers.ts +306 -0
  784. package/src/internal/core/providers/http.ts +312 -0
  785. package/src/internal/core/providers/lazy-initialization.ts +178 -0
  786. package/src/internal/core/providers/util.ts +68 -0
  787. package/src/internal/core/providers/wrapper.ts +44 -0
  788. package/src/internal/core/runtime-environment.ts +467 -0
  789. package/src/internal/core/task-profiling.ts +56 -0
  790. package/src/internal/core/tasks/builtin-tasks.ts +10 -0
  791. package/src/internal/core/tasks/dsl.ts +241 -0
  792. package/src/internal/core/tasks/task-definitions.ts +830 -0
  793. package/src/internal/core/tasks/util.ts +18 -0
  794. package/src/internal/core/typescript-support.ts +93 -0
  795. package/src/internal/core/vars/vars-manager-setup.ts +124 -0
  796. package/src/internal/core/vars/vars-manager.ts +152 -0
  797. package/src/internal/hardhat-network/jsonrpc/client.ts +491 -0
  798. package/src/internal/hardhat-network/jsonrpc/handler.ts +288 -0
  799. package/src/internal/hardhat-network/jsonrpc/server.ts +117 -0
  800. package/src/internal/hardhat-network/provider/fork/AccountState.ts +28 -0
  801. package/src/internal/hardhat-network/provider/modules/logger.ts +27 -0
  802. package/src/internal/hardhat-network/provider/node-types.ts +86 -0
  803. package/src/internal/hardhat-network/provider/output.ts +141 -0
  804. package/src/internal/hardhat-network/provider/provider.ts +676 -0
  805. package/src/internal/hardhat-network/provider/return-data.ts +7 -0
  806. package/src/internal/hardhat-network/provider/utils/assertions.ts +13 -0
  807. package/src/internal/hardhat-network/provider/utils/convertToEdr.ts +277 -0
  808. package/src/internal/hardhat-network/provider/utils/disk-cache.ts +7 -0
  809. package/src/internal/hardhat-network/provider/utils/fork-recomendations-banner.ts +48 -0
  810. package/src/internal/hardhat-network/provider/utils/getCurrentTimestamp.ts +3 -0
  811. package/src/internal/hardhat-network/provider/utils/isHexPrefixed.ts +3 -0
  812. package/src/internal/hardhat-network/provider/utils/makeAccount.ts +25 -0
  813. package/src/internal/hardhat-network/provider/utils/makeCommon.ts +20 -0
  814. package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +177 -0
  815. package/src/internal/hardhat-network/provider/utils/random.ts +64 -0
  816. package/src/internal/hardhat-network/provider/utils/reorgs-protection.ts +40 -0
  817. package/src/internal/hardhat-network/provider/vm/exit.ts +7 -0
  818. package/src/internal/hardhat-network/provider/vm/minimal-vm.ts +114 -0
  819. package/src/internal/hardhat-network/provider/vm/types.ts +39 -0
  820. package/src/internal/hardhat-network/stack-traces/compiler-to-model.ts +7 -0
  821. package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +236 -0
  822. package/src/internal/hardhat-network/stack-traces/constants.ts +2 -0
  823. package/src/internal/hardhat-network/stack-traces/debug.ts +7 -0
  824. package/src/internal/hardhat-network/stack-traces/library-utils.ts +7 -0
  825. package/src/internal/hardhat-network/stack-traces/logger.ts +422 -0
  826. package/src/internal/hardhat-network/stack-traces/message-trace.ts +12 -0
  827. package/src/internal/hardhat-network/stack-traces/panic-errors.ts +32 -0
  828. package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +447 -0
  829. package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +111 -0
  830. package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +7 -0
  831. package/src/internal/hardhat-network/stack-traces/vm-trace-decoder.ts +42 -0
  832. package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +7 -0
  833. package/src/internal/lib/hardhat-lib.ts +52 -0
  834. package/src/internal/reset.ts +35 -0
  835. package/src/internal/sentry/anonymizer.ts +351 -0
  836. package/src/internal/sentry/reporter.ts +173 -0
  837. package/src/internal/sentry/subprocess.ts +76 -0
  838. package/src/internal/sentry/transport.ts +50 -0
  839. package/src/internal/solidity/compilation-job.ts +342 -0
  840. package/src/internal/solidity/compiler/compiler-input.ts +26 -0
  841. package/src/internal/solidity/compiler/downloader.ts +384 -0
  842. package/src/internal/solidity/compiler/index.ts +97 -0
  843. package/src/internal/solidity/compiler/solc-info.ts +73 -0
  844. package/src/internal/solidity/compiler/solcjs-runner.js +34 -0
  845. package/src/internal/solidity/dependencyGraph.ts +195 -0
  846. package/src/internal/solidity/parse.ts +71 -0
  847. package/src/internal/solidity/resolver.ts +563 -0
  848. package/src/internal/util/abi-helpers.ts +55 -0
  849. package/src/internal/util/bigint.ts +66 -0
  850. package/src/internal/util/caller-package.ts +47 -0
  851. package/src/internal/util/ci-detection.ts +59 -0
  852. package/src/internal/util/console.ts +23 -0
  853. package/src/internal/util/date.ts +15 -0
  854. package/src/internal/util/download.ts +65 -0
  855. package/src/internal/util/event-emitter.ts +101 -0
  856. package/src/internal/util/fs-utils.ts +223 -0
  857. package/src/internal/util/glob.ts +31 -0
  858. package/src/internal/util/global-dir.ts +146 -0
  859. package/src/internal/util/hardforks.ts +123 -0
  860. package/src/internal/util/hash.ts +16 -0
  861. package/src/internal/util/io-ts.ts +47 -0
  862. package/src/internal/util/jsonrpc.ts +111 -0
  863. package/src/internal/util/keccak.ts +5 -0
  864. package/src/internal/util/keys-derivation.ts +31 -0
  865. package/src/internal/util/lang.ts +21 -0
  866. package/src/internal/util/lazy.ts +247 -0
  867. package/src/internal/util/multi-process-mutex.ts +133 -0
  868. package/src/internal/util/packageInfo.ts +68 -0
  869. package/src/internal/util/platform.ts +5 -0
  870. package/src/internal/util/proxy.ts +18 -0
  871. package/src/internal/util/report-telemetry-consent.ts +19 -0
  872. package/src/internal/util/scripts-runner.ts +119 -0
  873. package/src/internal/util/strings.ts +31 -0
  874. package/src/internal/util/unsafe.ts +15 -0
  875. package/src/internal/util/wei-values.ts +65 -0
  876. package/src/internal/vendor/await-semaphore/index.ts +66 -0
  877. package/src/plugins-testing.ts +1 -0
  878. package/src/plugins.ts +7 -0
  879. package/src/profiling.ts +37 -0
  880. package/src/register.ts +54 -0
  881. package/src/types/artifacts.ts +252 -0
  882. package/src/types/builtin-tasks/compile.ts +108 -0
  883. package/src/types/builtin-tasks/index.ts +2 -0
  884. package/src/types/builtin-tasks/node.ts +6 -0
  885. package/src/types/config.ts +299 -0
  886. package/src/types/index.ts +5 -0
  887. package/src/types/provider.ts +58 -0
  888. package/src/types/runtime.ts +262 -0
  889. package/src/utils/contract-names.ts +171 -0
  890. package/src/utils/remappings.ts +17 -0
  891. package/src/utils/source-names.ts +245 -0
  892. package/types/artifacts.d.ts +237 -0
  893. package/types/artifacts.d.ts.map +1 -0
  894. package/types/artifacts.js +3 -0
  895. package/types/artifacts.js.map +1 -0
  896. package/types/builtin-tasks/compile.d.ts +95 -0
  897. package/types/builtin-tasks/compile.d.ts.map +1 -0
  898. package/types/builtin-tasks/compile.js +12 -0
  899. package/types/builtin-tasks/compile.js.map +1 -0
  900. package/types/builtin-tasks/index.d.ts +3 -0
  901. package/types/builtin-tasks/index.d.ts.map +1 -0
  902. package/types/builtin-tasks/index.js +19 -0
  903. package/types/builtin-tasks/index.js.map +1 -0
  904. package/types/builtin-tasks/node.d.ts +9 -0
  905. package/types/builtin-tasks/node.d.ts.map +1 -0
  906. package/types/builtin-tasks/node.js +3 -0
  907. package/types/builtin-tasks/node.js.map +1 -0
  908. package/types/config.d.ts +222 -0
  909. package/types/config.d.ts.map +1 -0
  910. package/types/config.js +16 -0
  911. package/types/config.js.map +1 -0
  912. package/types/index.d.ts +6 -0
  913. package/types/index.d.ts.map +1 -0
  914. package/types/index.js +22 -0
  915. package/types/index.js.map +1 -0
  916. package/types/provider.d.ts +48 -0
  917. package/types/provider.d.ts.map +1 -0
  918. package/types/provider.js +3 -0
  919. package/types/provider.js.map +1 -0
  920. package/types/runtime.d.ts +167 -0
  921. package/types/runtime.d.ts.map +1 -0
  922. package/types/runtime.js +3 -0
  923. package/types/runtime.js.map +1 -0
  924. package/utils/contract-names.d.ts +36 -0
  925. package/utils/contract-names.d.ts.map +1 -0
  926. package/utils/contract-names.js +140 -0
  927. package/utils/contract-names.js.map +1 -0
  928. package/utils/remappings.d.ts +2 -0
  929. package/utils/remappings.d.ts.map +1 -0
  930. package/utils/remappings.js +15 -0
  931. package/utils/remappings.js.map +1 -0
  932. package/utils/source-names.d.ts +60 -0
  933. package/utils/source-names.d.ts.map +1 -0
  934. package/utils/source-names.js +201 -0
  935. package/utils/source-names.js.map +1 -0
@@ -0,0 +1,975 @@
1
+ import debug from "debug";
2
+ import fsExtra from "fs-extra";
3
+ import * as os from "os";
4
+ import * as path from "path";
5
+ import fsPromises from "fs/promises";
6
+
7
+ import {
8
+ Artifact,
9
+ Artifacts as IArtifacts,
10
+ BuildInfo,
11
+ CompilerInput,
12
+ CompilerOutput,
13
+ DebugFile,
14
+ } from "../types";
15
+ import {
16
+ getFullyQualifiedName,
17
+ isFullyQualifiedName,
18
+ parseFullyQualifiedName,
19
+ findDistance,
20
+ } from "../utils/contract-names";
21
+ import { replaceBackslashes } from "../utils/source-names";
22
+
23
+ import {
24
+ ARTIFACT_FORMAT_VERSION,
25
+ BUILD_INFO_DIR_NAME,
26
+ BUILD_INFO_FORMAT_VERSION,
27
+ DEBUG_FILE_FORMAT_VERSION,
28
+ EDIT_DISTANCE_THRESHOLD,
29
+ } from "./constants";
30
+ import { HardhatError } from "./core/errors";
31
+ import { ERRORS } from "./core/errors-list";
32
+ import { createNonCryptographicHashBasedIdentifier } from "./util/hash";
33
+ import {
34
+ FileNotFoundError,
35
+ getAllFilesMatching,
36
+ getAllFilesMatchingSync,
37
+ getFileTrueCase,
38
+ getFileTrueCaseSync,
39
+ } from "./util/fs-utils";
40
+
41
+ const log = debug("hardhat:core:artifacts");
42
+
43
+ interface Cache {
44
+ artifactPaths?: string[];
45
+ debugFilePaths?: string[];
46
+ buildInfoPaths?: string[];
47
+ artifactNameToArtifactPathCache: Map<string, string>;
48
+ artifactFQNToBuildInfoPathCache: Map<string, string>;
49
+ }
50
+
51
+ export class Artifacts implements IArtifacts {
52
+ private _validArtifacts: Array<{ sourceName: string; artifacts: string[] }>;
53
+
54
+ // Undefined means that the cache is disabled.
55
+ private _cache?: Cache = {
56
+ artifactNameToArtifactPathCache: new Map(),
57
+ artifactFQNToBuildInfoPathCache: new Map(),
58
+ };
59
+
60
+ constructor(private _artifactsPath: string) {
61
+ this._validArtifacts = [];
62
+ }
63
+
64
+ public addValidArtifacts(
65
+ validArtifacts: Array<{ sourceName: string; artifacts: string[] }>
66
+ ) {
67
+ this._validArtifacts.push(...validArtifacts);
68
+ }
69
+
70
+ public async readArtifact(name: string): Promise<Artifact> {
71
+ const artifactPath = await this._getArtifactPath(name);
72
+ return fsExtra.readJson(artifactPath);
73
+ }
74
+
75
+ public readArtifactSync(name: string): Artifact {
76
+ const artifactPath = this._getArtifactPathSync(name);
77
+ return fsExtra.readJsonSync(artifactPath);
78
+ }
79
+
80
+ public async artifactExists(name: string): Promise<boolean> {
81
+ let artifactPath;
82
+ try {
83
+ artifactPath = await this._getArtifactPath(name);
84
+ } catch (e) {
85
+ if (HardhatError.isHardhatError(e)) {
86
+ return false;
87
+ }
88
+
89
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
90
+ throw e;
91
+ }
92
+
93
+ return fsExtra.pathExists(artifactPath);
94
+ }
95
+
96
+ public async getAllFullyQualifiedNames(): Promise<string[]> {
97
+ const paths = await this.getArtifactPaths();
98
+ return paths.map((p) => this._getFullyQualifiedNameFromPath(p)).sort();
99
+ }
100
+
101
+ public async getBuildInfo(
102
+ fullyQualifiedName: string
103
+ ): Promise<BuildInfo | undefined> {
104
+ let buildInfoPath =
105
+ this._cache?.artifactFQNToBuildInfoPathCache.get(fullyQualifiedName);
106
+
107
+ if (buildInfoPath === undefined) {
108
+ const artifactPath =
109
+ this.formArtifactPathFromFullyQualifiedName(fullyQualifiedName);
110
+
111
+ const debugFilePath = this._getDebugFilePath(artifactPath);
112
+ buildInfoPath = await this._getBuildInfoFromDebugFile(debugFilePath);
113
+
114
+ if (buildInfoPath === undefined) {
115
+ return undefined;
116
+ }
117
+
118
+ this._cache?.artifactFQNToBuildInfoPathCache.set(
119
+ fullyQualifiedName,
120
+ buildInfoPath
121
+ );
122
+ }
123
+
124
+ return fsExtra.readJSON(buildInfoPath);
125
+ }
126
+
127
+ public getBuildInfoSync(fullyQualifiedName: string): BuildInfo | undefined {
128
+ let buildInfoPath =
129
+ this._cache?.artifactFQNToBuildInfoPathCache.get(fullyQualifiedName);
130
+
131
+ if (buildInfoPath === undefined) {
132
+ const artifactPath =
133
+ this.formArtifactPathFromFullyQualifiedName(fullyQualifiedName);
134
+
135
+ const debugFilePath = this._getDebugFilePath(artifactPath);
136
+ buildInfoPath = this._getBuildInfoFromDebugFileSync(debugFilePath);
137
+
138
+ if (buildInfoPath === undefined) {
139
+ return undefined;
140
+ }
141
+
142
+ this._cache?.artifactFQNToBuildInfoPathCache.set(
143
+ fullyQualifiedName,
144
+ buildInfoPath
145
+ );
146
+ }
147
+
148
+ return fsExtra.readJSONSync(buildInfoPath);
149
+ }
150
+
151
+ public async getArtifactPaths(): Promise<string[]> {
152
+ const cached = this._cache?.artifactPaths;
153
+ if (cached !== undefined) {
154
+ return cached;
155
+ }
156
+
157
+ const paths = await getAllFilesMatching(this._artifactsPath, (f) =>
158
+ this._isArtifactPath(f)
159
+ );
160
+
161
+ const result = paths.sort();
162
+
163
+ if (this._cache !== undefined) {
164
+ this._cache.artifactPaths = result;
165
+ }
166
+
167
+ return result;
168
+ }
169
+
170
+ public async getBuildInfoPaths(): Promise<string[]> {
171
+ const cached = this._cache?.buildInfoPaths;
172
+ if (cached !== undefined) {
173
+ return cached;
174
+ }
175
+
176
+ const paths = await getAllFilesMatching(
177
+ path.join(this._artifactsPath, BUILD_INFO_DIR_NAME),
178
+ (f) => f.endsWith(".json")
179
+ );
180
+
181
+ const result = paths.sort();
182
+
183
+ if (this._cache !== undefined) {
184
+ this._cache.buildInfoPaths = result;
185
+ }
186
+
187
+ return result;
188
+ }
189
+
190
+ public async getDebugFilePaths(): Promise<string[]> {
191
+ const cached = this._cache?.debugFilePaths;
192
+ if (cached !== undefined) {
193
+ return cached;
194
+ }
195
+
196
+ const paths = await getAllFilesMatching(
197
+ path.join(this._artifactsPath),
198
+ (f) => f.endsWith(".dbg.json")
199
+ );
200
+
201
+ const result = paths.sort();
202
+
203
+ if (this._cache !== undefined) {
204
+ this._cache.debugFilePaths = result;
205
+ }
206
+
207
+ return result;
208
+ }
209
+
210
+ public async saveArtifactAndDebugFile(
211
+ artifact: Artifact,
212
+ pathToBuildInfo?: string
213
+ ) {
214
+ try {
215
+ // artifact
216
+ const fullyQualifiedName = getFullyQualifiedName(
217
+ artifact.sourceName,
218
+ artifact.contractName
219
+ );
220
+
221
+ const artifactPath =
222
+ this.formArtifactPathFromFullyQualifiedName(fullyQualifiedName);
223
+
224
+ await fsExtra.ensureDir(path.dirname(artifactPath));
225
+
226
+ await Promise.all([
227
+ fsExtra.writeJSON(artifactPath, artifact, {
228
+ spaces: 2,
229
+ }),
230
+ (async () => {
231
+ if (pathToBuildInfo === undefined) {
232
+ return;
233
+ }
234
+
235
+ // save debug file
236
+ const debugFilePath = this._getDebugFilePath(artifactPath);
237
+ const debugFile = this._createDebugFile(
238
+ artifactPath,
239
+ pathToBuildInfo
240
+ );
241
+
242
+ await fsExtra.writeJSON(debugFilePath, debugFile, {
243
+ spaces: 2,
244
+ });
245
+ })(),
246
+ ]);
247
+ } finally {
248
+ this.clearCache();
249
+ }
250
+ }
251
+
252
+ public async saveBuildInfo(
253
+ solcVersion: string,
254
+ solcLongVersion: string,
255
+ input: CompilerInput,
256
+ output: CompilerOutput
257
+ ): Promise<string> {
258
+ try {
259
+ const buildInfoDir = path.join(this._artifactsPath, BUILD_INFO_DIR_NAME);
260
+ await fsExtra.ensureDir(buildInfoDir);
261
+
262
+ const buildInfoName = this._getBuildInfoName(
263
+ solcVersion,
264
+ solcLongVersion,
265
+ input
266
+ );
267
+
268
+ const buildInfo = this._createBuildInfo(
269
+ buildInfoName,
270
+ solcVersion,
271
+ solcLongVersion,
272
+ input,
273
+ output
274
+ );
275
+
276
+ const buildInfoPath = path.join(buildInfoDir, `${buildInfoName}.json`);
277
+
278
+ // JSON.stringify of the entire build info can be really slow
279
+ // in larger projects, so we stringify per part and incrementally create
280
+ // the JSON in the file.
281
+ //
282
+ // We split this code into different curly-brace-enclosed scopes so that
283
+ // partial JSON strings get out of scope sooner and hence can be reclaimed
284
+ // by the GC if needed.
285
+ const file = await fsPromises.open(buildInfoPath, "w");
286
+ try {
287
+ {
288
+ const withoutOutput = JSON.stringify({
289
+ ...buildInfo,
290
+ output: undefined,
291
+ });
292
+
293
+ // We write the JSON (without output) except the last }
294
+ await file.write(withoutOutput.slice(0, -1));
295
+ }
296
+
297
+ {
298
+ const outputWithoutSourcesAndContracts = JSON.stringify({
299
+ ...buildInfo.output,
300
+ sources: undefined,
301
+ contracts: undefined,
302
+ });
303
+
304
+ // We start writing the output
305
+ await file.write(',"output":');
306
+
307
+ // Write the output object except for the last }
308
+ await file.write(outputWithoutSourcesAndContracts.slice(0, -1));
309
+
310
+ // If there were other field apart from sources and contracts we need
311
+ // a comma
312
+ if (outputWithoutSourcesAndContracts.length > 2) {
313
+ await file.write(",");
314
+ }
315
+ }
316
+
317
+ // Writing the sources
318
+ await file.write('"sources":{');
319
+
320
+ let isFirst = true;
321
+ for (const [name, value] of Object.entries(
322
+ buildInfo.output.sources ?? {}
323
+ )) {
324
+ if (isFirst) {
325
+ isFirst = false;
326
+ } else {
327
+ await file.write(",");
328
+ }
329
+
330
+ await file.write(`${JSON.stringify(name)}:${JSON.stringify(value)}`);
331
+ }
332
+
333
+ // Close sources object
334
+ await file.write("}");
335
+
336
+ // Writing the contracts
337
+ await file.write(',"contracts":{');
338
+
339
+ isFirst = true;
340
+ for (const [name, value] of Object.entries(
341
+ buildInfo.output.contracts ?? {}
342
+ )) {
343
+ if (isFirst) {
344
+ isFirst = false;
345
+ } else {
346
+ await file.write(",");
347
+ }
348
+
349
+ await file.write(`${JSON.stringify(name)}:${JSON.stringify(value)}`);
350
+ }
351
+
352
+ // close contracts object
353
+ await file.write("}");
354
+ // close output object
355
+ await file.write("}");
356
+ // close build info object
357
+ await file.write("}");
358
+ } finally {
359
+ await file.close();
360
+ }
361
+
362
+ return buildInfoPath;
363
+ } finally {
364
+ this.clearCache();
365
+ }
366
+ }
367
+
368
+ /**
369
+ * Remove all artifacts that don't correspond to the current solidity files
370
+ */
371
+ public async removeObsoleteArtifacts() {
372
+ // We clear the cache here, as we want to be sure this runs correctly
373
+ this.clearCache();
374
+
375
+ try {
376
+ const validArtifactPaths = await Promise.all(
377
+ this._validArtifacts.flatMap(({ sourceName, artifacts }) =>
378
+ artifacts.map((artifactName) =>
379
+ this._getArtifactPath(
380
+ getFullyQualifiedName(sourceName, artifactName)
381
+ )
382
+ )
383
+ )
384
+ );
385
+
386
+ const validArtifactsPathsSet = new Set<string>(validArtifactPaths);
387
+
388
+ for (const { sourceName, artifacts } of this._validArtifacts) {
389
+ for (const artifactName of artifacts) {
390
+ validArtifactsPathsSet.add(
391
+ this.formArtifactPathFromFullyQualifiedName(
392
+ getFullyQualifiedName(sourceName, artifactName)
393
+ )
394
+ );
395
+ }
396
+ }
397
+
398
+ const existingArtifactsPaths = await this.getArtifactPaths();
399
+
400
+ await Promise.all(
401
+ existingArtifactsPaths
402
+ .filter((artifactPath) => !validArtifactsPathsSet.has(artifactPath))
403
+ .map((artifactPath) => this._removeArtifactFiles(artifactPath))
404
+ );
405
+
406
+ await this._removeObsoleteBuildInfos();
407
+ } finally {
408
+ // We clear the cache here, as this may have non-existent paths now
409
+ this.clearCache();
410
+ }
411
+ }
412
+
413
+ /**
414
+ * Returns the absolute path to the given artifact
415
+ * @throws {HardhatError} If the name is not fully qualified.
416
+ */
417
+ public formArtifactPathFromFullyQualifiedName(
418
+ fullyQualifiedName: string
419
+ ): string {
420
+ const { sourceName, contractName } =
421
+ parseFullyQualifiedName(fullyQualifiedName);
422
+
423
+ return path.join(this._artifactsPath, sourceName, `${contractName}.json`);
424
+ }
425
+
426
+ public clearCache() {
427
+ // Avoid accidentally re-enabling the cache
428
+ if (this._cache === undefined) {
429
+ return;
430
+ }
431
+
432
+ this._cache = {
433
+ artifactFQNToBuildInfoPathCache: new Map(),
434
+ artifactNameToArtifactPathCache: new Map(),
435
+ };
436
+ }
437
+
438
+ public disableCache() {
439
+ this._cache = undefined;
440
+ }
441
+
442
+ /**
443
+ * Remove all build infos that aren't used by any debug file
444
+ */
445
+ private async _removeObsoleteBuildInfos() {
446
+ const debugFiles = await this.getDebugFilePaths();
447
+
448
+ const buildInfos = await Promise.all(
449
+ debugFiles.map(async (debugFile) => {
450
+ const buildInfoFile = await this._getBuildInfoFromDebugFile(debugFile);
451
+ if (buildInfoFile !== undefined) {
452
+ return path.resolve(path.dirname(debugFile), buildInfoFile);
453
+ }
454
+ })
455
+ );
456
+
457
+ const filteredBuildInfos: string[] = buildInfos.filter(
458
+ (bf): bf is string => typeof bf === "string"
459
+ );
460
+
461
+ const validBuildInfos = new Set<string>(filteredBuildInfos);
462
+
463
+ const buildInfoFiles = await this.getBuildInfoPaths();
464
+
465
+ await Promise.all(
466
+ buildInfoFiles
467
+ .filter((buildInfoFile) => !validBuildInfos.has(buildInfoFile))
468
+ .map(async (buildInfoFile) => {
469
+ log(`Removing buildInfo '${buildInfoFile}'`);
470
+ await fsExtra.unlink(buildInfoFile);
471
+ })
472
+ );
473
+ }
474
+
475
+ private _getBuildInfoName(
476
+ solcVersion: string,
477
+ solcLongVersion: string,
478
+ input: CompilerInput
479
+ ): string {
480
+ const json = JSON.stringify({
481
+ _format: BUILD_INFO_FORMAT_VERSION,
482
+ solcVersion,
483
+ solcLongVersion,
484
+ input,
485
+ });
486
+
487
+ return createNonCryptographicHashBasedIdentifier(
488
+ Buffer.from(json)
489
+ ).toString("hex");
490
+ }
491
+
492
+ /**
493
+ * Returns the absolute path to the artifact that corresponds to the given
494
+ * name.
495
+ *
496
+ * If the name is fully qualified, the path is computed from it. If not, an
497
+ * artifact that matches the given name is searched in the existing artifacts.
498
+ * If there is an ambiguity, an error is thrown.
499
+ *
500
+ * @throws {HardhatError} with descriptor:
501
+ * - {@link ERRORS.ARTIFACTS.WRONG_CASING} if the path case doesn't match the one in the filesystem.
502
+ * - {@link ERRORS.ARTIFACTS.MULTIPLE_FOUND} if there are multiple artifacts matching the given contract name.
503
+ * - {@link ERRORS.ARTIFACTS.NOT_FOUND} if the artifact is not found.
504
+ */
505
+ private async _getArtifactPath(name: string): Promise<string> {
506
+ const cached = this._cache?.artifactNameToArtifactPathCache.get(name);
507
+ if (cached !== undefined) {
508
+ return cached;
509
+ }
510
+
511
+ let result: string;
512
+ if (isFullyQualifiedName(name)) {
513
+ result = await this._getValidArtifactPathFromFullyQualifiedName(name);
514
+ } else {
515
+ const files = await this.getArtifactPaths();
516
+ result = this._getArtifactPathFromFiles(name, files);
517
+ }
518
+
519
+ this._cache?.artifactNameToArtifactPathCache.set(name, result);
520
+ return result;
521
+ }
522
+
523
+ private _createBuildInfo(
524
+ id: string,
525
+ solcVersion: string,
526
+ solcLongVersion: string,
527
+ input: CompilerInput,
528
+ output: CompilerOutput
529
+ ): BuildInfo {
530
+ return {
531
+ id,
532
+ _format: BUILD_INFO_FORMAT_VERSION,
533
+ solcVersion,
534
+ solcLongVersion,
535
+ input,
536
+ output,
537
+ };
538
+ }
539
+
540
+ private _createDebugFile(artifactPath: string, pathToBuildInfo: string) {
541
+ const relativePathToBuildInfo = path.relative(
542
+ path.dirname(artifactPath),
543
+ pathToBuildInfo
544
+ );
545
+
546
+ const debugFile: DebugFile = {
547
+ _format: DEBUG_FILE_FORMAT_VERSION,
548
+ buildInfo: relativePathToBuildInfo,
549
+ };
550
+
551
+ return debugFile;
552
+ }
553
+
554
+ private _getArtifactPathsSync(): string[] {
555
+ const cached = this._cache?.artifactPaths;
556
+ if (cached !== undefined) {
557
+ return cached;
558
+ }
559
+
560
+ const paths = getAllFilesMatchingSync(this._artifactsPath, (f) =>
561
+ this._isArtifactPath(f)
562
+ );
563
+
564
+ const result = paths.sort();
565
+
566
+ if (this._cache !== undefined) {
567
+ this._cache.artifactPaths = result;
568
+ }
569
+
570
+ return result;
571
+ }
572
+
573
+ /**
574
+ * Sync version of _getArtifactPath
575
+ */
576
+ private _getArtifactPathSync(name: string): string {
577
+ const cached = this._cache?.artifactNameToArtifactPathCache.get(name);
578
+ if (cached !== undefined) {
579
+ return cached;
580
+ }
581
+
582
+ let result: string;
583
+
584
+ if (isFullyQualifiedName(name)) {
585
+ result = this._getValidArtifactPathFromFullyQualifiedNameSync(name);
586
+ } else {
587
+ const files = this._getArtifactPathsSync();
588
+ result = this._getArtifactPathFromFiles(name, files);
589
+ }
590
+
591
+ this._cache?.artifactNameToArtifactPathCache.set(name, result);
592
+ return result;
593
+ }
594
+
595
+ /**
596
+ * DO NOT DELETE OR CHANGE
597
+ *
598
+ * use this.formArtifactPathFromFullyQualifiedName instead
599
+ * @deprecated until typechain migrates to public version
600
+ * @see https://github.com/dethcrypto/TypeChain/issues/544
601
+ */
602
+ private _getArtifactPathFromFullyQualifiedName(
603
+ fullyQualifiedName: string
604
+ ): string {
605
+ const { sourceName, contractName } =
606
+ parseFullyQualifiedName(fullyQualifiedName);
607
+
608
+ return path.join(this._artifactsPath, sourceName, `${contractName}.json`);
609
+ }
610
+
611
+ /**
612
+ * Returns the absolute path to the artifact that corresponds to the given
613
+ * fully qualified name.
614
+ * @param fullyQualifiedName The fully qualified name of the contract.
615
+ * @returns The absolute path to the artifact.
616
+ * @throws {HardhatError} with descriptor:
617
+ * - {@link ERRORS.CONTRACT_NAMES.INVALID_FULLY_QUALIFIED_NAME} If the name is not fully qualified.
618
+ * - {@link ERRORS.ARTIFACTS.WRONG_CASING} If the path case doesn't match the one in the filesystem.
619
+ * - {@link ERRORS.ARTIFACTS.NOT_FOUND} If the artifact is not found.
620
+ */
621
+ private async _getValidArtifactPathFromFullyQualifiedName(
622
+ fullyQualifiedName: string
623
+ ): Promise<string> {
624
+ const artifactPath =
625
+ this.formArtifactPathFromFullyQualifiedName(fullyQualifiedName);
626
+
627
+ try {
628
+ const trueCasePath = path.join(
629
+ this._artifactsPath,
630
+ await getFileTrueCase(
631
+ this._artifactsPath,
632
+ path.relative(this._artifactsPath, artifactPath)
633
+ )
634
+ );
635
+
636
+ if (artifactPath !== trueCasePath) {
637
+ throw new HardhatError(ERRORS.ARTIFACTS.WRONG_CASING, {
638
+ correct: this._getFullyQualifiedNameFromPath(trueCasePath),
639
+ incorrect: fullyQualifiedName,
640
+ });
641
+ }
642
+
643
+ return trueCasePath;
644
+ } catch (e) {
645
+ if (e instanceof FileNotFoundError) {
646
+ return this._handleWrongArtifactForFullyQualifiedName(
647
+ fullyQualifiedName
648
+ );
649
+ }
650
+
651
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
652
+ throw e;
653
+ }
654
+ }
655
+
656
+ private _getAllContractNamesFromFiles(files: string[]): string[] {
657
+ return files.map((file) => {
658
+ const fqn = this._getFullyQualifiedNameFromPath(file);
659
+ return parseFullyQualifiedName(fqn).contractName;
660
+ });
661
+ }
662
+
663
+ private _getAllFullyQualifiedNamesSync(): string[] {
664
+ const paths = this._getArtifactPathsSync();
665
+ return paths.map((p) => this._getFullyQualifiedNameFromPath(p)).sort();
666
+ }
667
+
668
+ private _formatSuggestions(names: string[], contractName: string): string {
669
+ switch (names.length) {
670
+ case 0:
671
+ return "";
672
+ case 1:
673
+ return `Did you mean "${names[0]}"?`;
674
+ default:
675
+ return `We found some that were similar:
676
+
677
+ ${names.map((n) => ` * ${n}`).join(os.EOL)}
678
+
679
+ Please replace "${contractName}" for the correct contract name wherever you are trying to read its artifact.
680
+ `;
681
+ }
682
+ }
683
+
684
+ /**
685
+ * @throws {HardhatError} with a list of similar contract names.
686
+ */
687
+ private _handleWrongArtifactForFullyQualifiedName(
688
+ fullyQualifiedName: string
689
+ ): never {
690
+ const names = this._getAllFullyQualifiedNamesSync();
691
+
692
+ const similarNames = this._getSimilarContractNames(
693
+ fullyQualifiedName,
694
+ names
695
+ );
696
+
697
+ throw new HardhatError(ERRORS.ARTIFACTS.NOT_FOUND, {
698
+ contractName: fullyQualifiedName,
699
+ suggestion: this._formatSuggestions(similarNames, fullyQualifiedName),
700
+ });
701
+ }
702
+
703
+ /**
704
+ * @throws {HardhatError} with a list of similar contract names.
705
+ */
706
+ private _handleWrongArtifactForContractName(
707
+ contractName: string,
708
+ files: string[]
709
+ ): never {
710
+ const names = this._getAllContractNamesFromFiles(files);
711
+
712
+ let similarNames = this._getSimilarContractNames(contractName, names);
713
+
714
+ if (similarNames.length > 1) {
715
+ similarNames = this._filterDuplicatesAsFullyQualifiedNames(
716
+ files,
717
+ similarNames
718
+ );
719
+ }
720
+
721
+ throw new HardhatError(ERRORS.ARTIFACTS.NOT_FOUND, {
722
+ contractName,
723
+ suggestion: this._formatSuggestions(similarNames, contractName),
724
+ });
725
+ }
726
+
727
+ /**
728
+ * If the project has these contracts:
729
+ * - 'contracts/Greeter.sol:Greeter'
730
+ * - 'contracts/Meeter.sol:Greeter'
731
+ * - 'contracts/Greater.sol:Greater'
732
+ * And the user tries to get an artifact with the name 'Greter', then
733
+ * the suggestions will be 'Greeter', 'Greeter', and 'Greater'.
734
+ *
735
+ * We don't want to show duplicates here, so we use FQNs for those. The
736
+ * suggestions will then be:
737
+ * - 'contracts/Greeter.sol:Greeter'
738
+ * - 'contracts/Meeter.sol:Greeter'
739
+ * - 'Greater'
740
+ */
741
+ private _filterDuplicatesAsFullyQualifiedNames(
742
+ files: string[],
743
+ similarNames: string[]
744
+ ): string[] {
745
+ const outputNames = [];
746
+ const groups = similarNames.reduce((obj, cur) => {
747
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
748
+ obj[cur] = obj[cur] ? obj[cur] + 1 : 1;
749
+ return obj;
750
+ }, {} as { [k: string]: number });
751
+
752
+ for (const [name, occurrences] of Object.entries(groups)) {
753
+ if (occurrences > 1) {
754
+ for (const file of files) {
755
+ if (path.basename(file) === `${name}.json`) {
756
+ outputNames.push(this._getFullyQualifiedNameFromPath(file));
757
+ }
758
+ }
759
+ continue;
760
+ }
761
+
762
+ outputNames.push(name);
763
+ }
764
+
765
+ return outputNames;
766
+ }
767
+
768
+ /**
769
+ *
770
+ * @param givenName can be FQN or contract name
771
+ * @param names MUST match type of givenName (i.e. array of FQN's if givenName is FQN)
772
+ * @returns
773
+ */
774
+ private _getSimilarContractNames(
775
+ givenName: string,
776
+ names: string[]
777
+ ): string[] {
778
+ let shortestDistance = EDIT_DISTANCE_THRESHOLD;
779
+ let mostSimilarNames: string[] = [];
780
+ for (const name of names) {
781
+ const distance = findDistance(givenName, name);
782
+
783
+ if (distance < shortestDistance) {
784
+ shortestDistance = distance;
785
+ mostSimilarNames = [name];
786
+ continue;
787
+ }
788
+
789
+ if (distance === shortestDistance) {
790
+ mostSimilarNames.push(name);
791
+ continue;
792
+ }
793
+ }
794
+
795
+ return mostSimilarNames;
796
+ }
797
+
798
+ private _getValidArtifactPathFromFullyQualifiedNameSync(
799
+ fullyQualifiedName: string
800
+ ): string {
801
+ const artifactPath =
802
+ this.formArtifactPathFromFullyQualifiedName(fullyQualifiedName);
803
+
804
+ try {
805
+ const trueCasePath = path.join(
806
+ this._artifactsPath,
807
+ getFileTrueCaseSync(
808
+ this._artifactsPath,
809
+ path.relative(this._artifactsPath, artifactPath)
810
+ )
811
+ );
812
+
813
+ if (artifactPath !== trueCasePath) {
814
+ throw new HardhatError(ERRORS.ARTIFACTS.WRONG_CASING, {
815
+ correct: this._getFullyQualifiedNameFromPath(trueCasePath),
816
+ incorrect: fullyQualifiedName,
817
+ });
818
+ }
819
+
820
+ return trueCasePath;
821
+ } catch (e) {
822
+ if (e instanceof FileNotFoundError) {
823
+ return this._handleWrongArtifactForFullyQualifiedName(
824
+ fullyQualifiedName
825
+ );
826
+ }
827
+
828
+ // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
829
+ throw e;
830
+ }
831
+ }
832
+
833
+ private _getDebugFilePath(artifactPath: string): string {
834
+ return artifactPath.replace(/\.json$/, ".dbg.json");
835
+ }
836
+
837
+ /**
838
+ * Gets the path to the artifact file for the given contract name.
839
+ * @throws {HardhatError} with descriptor:
840
+ * - {@link ERRORS.ARTIFACTS.NOT_FOUND} if there are no artifacts matching the given contract name.
841
+ * - {@link ERRORS.ARTIFACTS.MULTIPLE_FOUND} if there are multiple artifacts matching the given contract name.
842
+ */
843
+ private _getArtifactPathFromFiles(
844
+ contractName: string,
845
+ files: string[]
846
+ ): string {
847
+ const matchingFiles = files.filter((file) => {
848
+ return path.basename(file) === `${contractName}.json`;
849
+ });
850
+
851
+ if (matchingFiles.length === 0) {
852
+ return this._handleWrongArtifactForContractName(contractName, files);
853
+ }
854
+
855
+ if (matchingFiles.length > 1) {
856
+ const candidates = matchingFiles.map((file) =>
857
+ this._getFullyQualifiedNameFromPath(file)
858
+ );
859
+
860
+ throw new HardhatError(ERRORS.ARTIFACTS.MULTIPLE_FOUND, {
861
+ contractName,
862
+ candidates: candidates.join(os.EOL),
863
+ });
864
+ }
865
+
866
+ return matchingFiles[0];
867
+ }
868
+
869
+ /**
870
+ * Returns the FQN of a contract giving the absolute path to its artifact.
871
+ *
872
+ * For example, given a path like
873
+ * `/path/to/project/artifacts/contracts/Foo.sol/Bar.json`, it'll return the
874
+ * FQN `contracts/Foo.sol:Bar`
875
+ */
876
+ private _getFullyQualifiedNameFromPath(absolutePath: string): string {
877
+ const sourceName = replaceBackslashes(
878
+ path.relative(this._artifactsPath, path.dirname(absolutePath))
879
+ );
880
+
881
+ const contractName = path.basename(absolutePath).replace(".json", "");
882
+
883
+ return getFullyQualifiedName(sourceName, contractName);
884
+ }
885
+
886
+ /**
887
+ * Remove the artifact file and its debug file.
888
+ */
889
+ private async _removeArtifactFiles(artifactPath: string) {
890
+ await fsExtra.remove(artifactPath);
891
+
892
+ const debugFilePath = this._getDebugFilePath(artifactPath);
893
+
894
+ await fsExtra.remove(debugFilePath);
895
+ }
896
+
897
+ /**
898
+ * Given the path to a debug file, returns the absolute path to its
899
+ * corresponding build info file if it exists, or undefined otherwise.
900
+ */
901
+ private async _getBuildInfoFromDebugFile(
902
+ debugFilePath: string
903
+ ): Promise<string | undefined> {
904
+ if (await fsExtra.pathExists(debugFilePath)) {
905
+ const { buildInfo } = await fsExtra.readJson(debugFilePath);
906
+ return path.resolve(path.dirname(debugFilePath), buildInfo);
907
+ }
908
+
909
+ return undefined;
910
+ }
911
+
912
+ /**
913
+ * Sync version of _getBuildInfoFromDebugFile
914
+ */
915
+ private _getBuildInfoFromDebugFileSync(
916
+ debugFilePath: string
917
+ ): string | undefined {
918
+ if (fsExtra.pathExistsSync(debugFilePath)) {
919
+ const { buildInfo } = fsExtra.readJsonSync(debugFilePath);
920
+ return path.resolve(path.dirname(debugFilePath), buildInfo);
921
+ }
922
+
923
+ return undefined;
924
+ }
925
+
926
+ private _isArtifactPath(file: string) {
927
+ return (
928
+ file.endsWith(".json") &&
929
+ file !== path.join(this._artifactsPath, "package.json") &&
930
+ !file.startsWith(path.join(this._artifactsPath, BUILD_INFO_DIR_NAME)) &&
931
+ !file.endsWith(".dbg.json")
932
+ );
933
+ }
934
+ }
935
+
936
+ /**
937
+ * Retrieves an artifact for the given `contractName` from the compilation output.
938
+ *
939
+ * @param sourceName The contract's source name.
940
+ * @param contractName the contract's name.
941
+ * @param contractOutput the contract's compilation output as emitted by `solc`.
942
+ */
943
+ export function getArtifactFromContractOutput(
944
+ sourceName: string,
945
+ contractName: string,
946
+ contractOutput: any
947
+ ): Artifact {
948
+ const evmBytecode = contractOutput.evm?.bytecode;
949
+ let bytecode: string = evmBytecode?.object ?? "";
950
+
951
+ if (bytecode.slice(0, 2).toLowerCase() !== "0x") {
952
+ bytecode = `0x${bytecode}`;
953
+ }
954
+
955
+ const evmDeployedBytecode = contractOutput.evm?.deployedBytecode;
956
+ let deployedBytecode: string = evmDeployedBytecode?.object ?? "";
957
+
958
+ if (deployedBytecode.slice(0, 2).toLowerCase() !== "0x") {
959
+ deployedBytecode = `0x${deployedBytecode}`;
960
+ }
961
+
962
+ const linkReferences = evmBytecode?.linkReferences ?? {};
963
+ const deployedLinkReferences = evmDeployedBytecode?.linkReferences ?? {};
964
+
965
+ return {
966
+ _format: ARTIFACT_FORMAT_VERSION,
967
+ contractName,
968
+ sourceName,
969
+ abi: contractOutput.abi,
970
+ bytecode,
971
+ deployedBytecode,
972
+ linkReferences,
973
+ deployedLinkReferences,
974
+ };
975
+ }