gate-evm-tools 1.0.28 → 1.2.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 (742) hide show
  1. package/README.md +47 -18
  2. package/bin/cli.js +6 -0
  3. package/bin/delivery.cjs +52 -0
  4. package/bin/manifest-bootstrap.js +4 -15
  5. package/dist/commands/check.d.ts.map +1 -1
  6. package/dist/commands/check.js +26 -2
  7. package/dist/commands/check.js.map +1 -1
  8. package/dist/commands/plan/file-store.d.ts.map +1 -0
  9. package/dist/commands/plan/generate-deployment.d.ts +48 -0
  10. package/dist/commands/plan/generate-deployment.d.ts.map +1 -0
  11. package/dist/commands/plan/generate-deployment.js +211 -0
  12. package/dist/commands/plan/generate-deployment.js.map +1 -0
  13. package/dist/commands/plan/helpers.d.ts.map +1 -0
  14. package/dist/commands/plan/index.d.ts +3 -0
  15. package/dist/commands/plan/index.d.ts.map +1 -0
  16. package/dist/commands/plan/index.js +88 -0
  17. package/dist/commands/plan/index.js.map +1 -0
  18. package/dist/commands/sync.js +1 -1
  19. package/dist/commands/sync.js.map +1 -1
  20. package/dist/core/BytecodeChecker.d.ts.map +1 -1
  21. package/dist/core/BytecodeChecker.js +27 -8
  22. package/dist/core/BytecodeChecker.js.map +1 -1
  23. package/dist/core/preparation/artifacts.d.ts +2 -0
  24. package/dist/core/preparation/artifacts.d.ts.map +1 -1
  25. package/dist/core/preparation/artifacts.js +9 -3
  26. package/dist/core/preparation/artifacts.js.map +1 -1
  27. package/dist/core/preparation/batch.d.ts +26 -0
  28. package/dist/core/preparation/batch.d.ts.map +1 -0
  29. package/dist/core/preparation/batch.js +72 -0
  30. package/dist/core/preparation/batch.js.map +1 -0
  31. package/dist/core/preparation/evm.d.ts +61 -6
  32. package/dist/core/preparation/evm.d.ts.map +1 -1
  33. package/dist/core/preparation/evm.js +122 -34
  34. package/dist/core/preparation/evm.js.map +1 -1
  35. package/dist/core/preparation/evmManifestSync.d.ts +68 -0
  36. package/dist/core/preparation/evmManifestSync.d.ts.map +1 -0
  37. package/dist/core/preparation/evmManifestSync.js +154 -0
  38. package/dist/core/preparation/evmManifestSync.js.map +1 -0
  39. package/dist/core/preparation/index.d.ts +40 -2
  40. package/dist/core/preparation/index.d.ts.map +1 -1
  41. package/dist/core/preparation/index.js +3 -3
  42. package/dist/core/preparation/index.js.map +1 -1
  43. package/dist/core/preparation/manifest.d.ts +17 -3
  44. package/dist/core/preparation/manifest.d.ts.map +1 -1
  45. package/dist/core/preparation/manifest.js +23 -28
  46. package/dist/core/preparation/manifest.js.map +1 -1
  47. package/dist/core/preparation/normalize.d.ts.map +1 -1
  48. package/dist/core/preparation/normalize.js +67 -20
  49. package/dist/core/preparation/normalize.js.map +1 -1
  50. package/dist/core/preparation/transparent.d.ts +23 -0
  51. package/dist/core/preparation/transparent.d.ts.map +1 -0
  52. package/dist/core/preparation/transparent.js +103 -0
  53. package/dist/core/preparation/transparent.js.map +1 -0
  54. package/dist/core/preparation/types.d.ts +54 -7
  55. package/dist/core/preparation/types.d.ts.map +1 -1
  56. package/dist/core/preparation/zksync.d.ts.map +1 -1
  57. package/dist/core/preparation/zksync.js +2 -0
  58. package/dist/core/preparation/zksync.js.map +1 -1
  59. package/dist/custody/credential.d.ts.map +1 -1
  60. package/dist/custody/credential.js +1 -6
  61. package/dist/custody/credential.js.map +1 -1
  62. package/dist/custody/hardhat-runtime.d.ts.map +1 -1
  63. package/dist/custody/hardhat-runtime.js +2 -0
  64. package/dist/custody/hardhat-runtime.js.map +1 -1
  65. package/dist/custody/hardhat.d.ts +1 -0
  66. package/dist/custody/hardhat.d.ts.map +1 -1
  67. package/dist/custody/hardhat.js +1 -0
  68. package/dist/custody/hardhat.js.map +1 -1
  69. package/dist/custody/index.d.ts +1 -0
  70. package/dist/custody/index.d.ts.map +1 -1
  71. package/dist/custody/index.js +1 -0
  72. package/dist/custody/index.js.map +1 -1
  73. package/dist/custody/provider-wait.d.ts +13 -0
  74. package/dist/custody/provider-wait.d.ts.map +1 -0
  75. package/dist/custody/provider-wait.js +78 -0
  76. package/dist/custody/provider-wait.js.map +1 -0
  77. package/dist/delivery/policy.d.ts +6 -0
  78. package/dist/delivery/policy.d.ts.map +1 -0
  79. package/dist/delivery/policy.js +24 -0
  80. package/dist/delivery/policy.js.map +1 -0
  81. package/dist/deployment-evm/index.d.ts +4 -0
  82. package/dist/deployment-evm/index.d.ts.map +1 -0
  83. package/dist/deployment-evm/index.js +3 -0
  84. package/dist/deployment-evm/index.js.map +1 -0
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +9 -0
  87. package/dist/index.js.map +1 -1
  88. package/dist/sync/index.d.ts +15 -0
  89. package/dist/sync/index.d.ts.map +1 -1
  90. package/dist/sync/index.js +13 -0
  91. package/dist/sync/index.js.map +1 -1
  92. package/dist/types.d.ts +3 -0
  93. package/dist/types.d.ts.map +1 -1
  94. package/dist/workflow/index.d.ts +10 -2
  95. package/dist/workflow/index.d.ts.map +1 -1
  96. package/dist/workflow/index.js +6 -0
  97. package/dist/workflow/index.js.map +1 -1
  98. package/dist-cjs/core/BytecodeChecker.js +526 -0
  99. package/dist-cjs/core/BytecodeChecker.js.map +1 -0
  100. package/dist-cjs/core/legacyProxyArtifact.js +42 -0
  101. package/dist-cjs/core/legacyProxyArtifact.js.map +1 -0
  102. package/dist-cjs/core/preparation/artifacts.js +11 -4
  103. package/dist-cjs/core/preparation/artifacts.js.map +1 -1
  104. package/dist-cjs/core/preparation/batch.js +76 -0
  105. package/dist-cjs/core/preparation/batch.js.map +1 -0
  106. package/dist-cjs/core/preparation/evm.js +128 -37
  107. package/dist-cjs/core/preparation/evm.js.map +1 -1
  108. package/dist-cjs/core/preparation/evmManifestSync.js +163 -0
  109. package/dist-cjs/core/preparation/evmManifestSync.js.map +1 -0
  110. package/dist-cjs/core/preparation/index.js +3 -3
  111. package/dist-cjs/core/preparation/index.js.map +1 -1
  112. package/dist-cjs/core/preparation/manifest.js +25 -30
  113. package/dist-cjs/core/preparation/manifest.js.map +1 -1
  114. package/dist-cjs/core/preparation/normalize.js +67 -20
  115. package/dist-cjs/core/preparation/normalize.js.map +1 -1
  116. package/dist-cjs/core/preparation/transparent.js +110 -0
  117. package/dist-cjs/core/preparation/transparent.js.map +1 -0
  118. package/dist-cjs/core/preparation/zksync.js +2 -0
  119. package/dist-cjs/core/preparation/zksync.js.map +1 -1
  120. package/dist-cjs/custody/credential.js +1 -6
  121. package/dist-cjs/custody/credential.js.map +1 -1
  122. package/dist-cjs/custody/hardhat-runtime.js +2 -0
  123. package/dist-cjs/custody/hardhat-runtime.js.map +1 -1
  124. package/dist-cjs/custody/hardhat.js +3 -1
  125. package/dist-cjs/custody/hardhat.js.map +1 -1
  126. package/dist-cjs/custody/index.js +3 -1
  127. package/dist-cjs/custody/index.js.map +1 -1
  128. package/dist-cjs/custody/provider-wait.js +81 -0
  129. package/dist-cjs/custody/provider-wait.js.map +1 -0
  130. package/dist-cjs/delivery/policy.js +29 -0
  131. package/dist-cjs/delivery/policy.js.map +1 -0
  132. package/dist-cjs/deployment-evm/index.js +10 -0
  133. package/dist-cjs/deployment-evm/index.js.map +1 -0
  134. package/dist-cjs/sync/index.js +13 -0
  135. package/dist-cjs/sync/index.js.map +1 -1
  136. package/dist-cjs/workflow/index.js +22 -1
  137. package/dist-cjs/workflow/index.js.map +1 -1
  138. package/dist-runtime/config/hardhatAdapters.js +2 -1
  139. package/dist-runtime/config/hardhatAdapters.js.map +1 -1
  140. package/dist-runtime/config/openzeppelin.d.ts +2 -1
  141. package/dist-runtime/config/openzeppelin.js +2 -19
  142. package/dist-runtime/config/openzeppelin.js.map +1 -1
  143. package/dist-runtime/delivery/abi.d.ts +14 -0
  144. package/dist-runtime/delivery/abi.js +161 -0
  145. package/dist-runtime/delivery/abi.js.map +1 -0
  146. package/dist-runtime/delivery/aggregate-bootstrap.d.ts +12 -0
  147. package/dist-runtime/delivery/aggregate-bootstrap.js +42 -0
  148. package/dist-runtime/delivery/aggregate-bootstrap.js.map +1 -0
  149. package/dist-runtime/delivery/aggregate-channel.d.ts +28 -0
  150. package/dist-runtime/delivery/aggregate-channel.js +159 -0
  151. package/dist-runtime/delivery/aggregate-channel.js.map +1 -0
  152. package/dist-runtime/delivery/aggregate-diagnostics.d.ts +14 -0
  153. package/dist-runtime/delivery/aggregate-diagnostics.js +73 -0
  154. package/dist-runtime/delivery/aggregate-diagnostics.js.map +1 -0
  155. package/dist-runtime/delivery/aggregate-inputs.d.ts +172 -0
  156. package/dist-runtime/delivery/aggregate-inputs.js +57 -0
  157. package/dist-runtime/delivery/aggregate-inputs.js.map +1 -0
  158. package/dist-runtime/delivery/aggregate-source.d.ts +25 -0
  159. package/dist-runtime/delivery/aggregate-source.js +87 -0
  160. package/dist-runtime/delivery/aggregate-source.js.map +1 -0
  161. package/dist-runtime/delivery/aggregate-worker.d.ts +1 -0
  162. package/dist-runtime/delivery/aggregate-worker.js +199 -0
  163. package/dist-runtime/delivery/aggregate-worker.js.map +1 -0
  164. package/dist-runtime/delivery/aggregate.d.ts +51 -0
  165. package/dist-runtime/delivery/aggregate.js +190 -0
  166. package/dist-runtime/delivery/aggregate.js.map +1 -0
  167. package/dist-runtime/delivery/bindings.d.ts +21 -0
  168. package/dist-runtime/delivery/bindings.js +53 -0
  169. package/dist-runtime/delivery/bindings.js.map +1 -0
  170. package/dist-runtime/delivery/business-extension.d.ts +10 -0
  171. package/dist-runtime/delivery/business-extension.js +38 -0
  172. package/dist-runtime/delivery/business-extension.js.map +1 -0
  173. package/dist-runtime/delivery/calldata-archive.d.ts +18 -0
  174. package/dist-runtime/delivery/calldata-archive.js +31 -0
  175. package/dist-runtime/delivery/calldata-archive.js.map +1 -0
  176. package/dist-runtime/delivery/calldata-details.d.ts +47 -0
  177. package/dist-runtime/delivery/calldata-details.js +94 -0
  178. package/dist-runtime/delivery/calldata-details.js.map +1 -0
  179. package/dist-runtime/delivery/calldata-format.d.ts +4 -0
  180. package/dist-runtime/delivery/calldata-format.js +17 -0
  181. package/dist-runtime/delivery/calldata-format.js.map +1 -0
  182. package/dist-runtime/delivery/calldata-preparations.d.ts +13 -0
  183. package/dist-runtime/delivery/calldata-preparations.js +85 -0
  184. package/dist-runtime/delivery/calldata-preparations.js.map +1 -0
  185. package/dist-runtime/delivery/calldata-review.d.ts +44 -0
  186. package/dist-runtime/delivery/calldata-review.js +131 -0
  187. package/dist-runtime/delivery/calldata-review.js.map +1 -0
  188. package/dist-runtime/delivery/check-code.d.ts +19 -0
  189. package/dist-runtime/delivery/check-code.js +63 -0
  190. package/dist-runtime/delivery/check-code.js.map +1 -0
  191. package/dist-runtime/delivery/closure-format.d.ts +77 -0
  192. package/dist-runtime/delivery/closure-format.js +225 -0
  193. package/dist-runtime/delivery/closure-format.js.map +1 -0
  194. package/dist-runtime/delivery/codec-pin.d.ts +2 -0
  195. package/dist-runtime/delivery/codec-pin.js +7 -0
  196. package/dist-runtime/delivery/codec-pin.js.map +1 -0
  197. package/dist-runtime/delivery/codec.d.ts +19 -0
  198. package/dist-runtime/delivery/codec.js +73 -0
  199. package/dist-runtime/delivery/codec.js.map +1 -0
  200. package/dist-runtime/delivery/compiler-dependency-pins.d.ts +7 -0
  201. package/dist-runtime/delivery/compiler-dependency-pins.js +1689 -0
  202. package/dist-runtime/delivery/compiler-dependency-pins.js.map +1 -0
  203. package/dist-runtime/delivery/compiler-files.d.ts +40 -0
  204. package/dist-runtime/delivery/compiler-files.js +222 -0
  205. package/dist-runtime/delivery/compiler-files.js.map +1 -0
  206. package/dist-runtime/delivery/compiler-io.d.ts +2 -0
  207. package/dist-runtime/delivery/compiler-io.js +13 -0
  208. package/dist-runtime/delivery/compiler-io.js.map +1 -0
  209. package/dist-runtime/delivery/compiler-pins.d.ts +10 -0
  210. package/dist-runtime/delivery/compiler-pins.js +147 -0
  211. package/dist-runtime/delivery/compiler-pins.js.map +1 -0
  212. package/dist-runtime/delivery/compiler.d.ts +188 -0
  213. package/dist-runtime/delivery/compiler.js +851 -0
  214. package/dist-runtime/delivery/compiler.js.map +1 -0
  215. package/dist-runtime/delivery/config.d.ts +48 -0
  216. package/dist-runtime/delivery/config.js +124 -0
  217. package/dist-runtime/delivery/config.js.map +1 -0
  218. package/dist-runtime/delivery/configuration-definition.d.ts +31 -0
  219. package/dist-runtime/delivery/configuration-definition.js +343 -0
  220. package/dist-runtime/delivery/configuration-definition.js.map +1 -0
  221. package/dist-runtime/delivery/configuration-hre.d.ts +17 -0
  222. package/dist-runtime/delivery/configuration-hre.js +198 -0
  223. package/dist-runtime/delivery/configuration-hre.js.map +1 -0
  224. package/dist-runtime/delivery/configuration-runtime.d.ts +36 -0
  225. package/dist-runtime/delivery/configuration-runtime.js +248 -0
  226. package/dist-runtime/delivery/configuration-runtime.js.map +1 -0
  227. package/dist-runtime/delivery/configuration.d.ts +35 -0
  228. package/dist-runtime/delivery/configuration.js +86 -0
  229. package/dist-runtime/delivery/configuration.js.map +1 -0
  230. package/dist-runtime/delivery/contract-source.d.ts +14 -0
  231. package/dist-runtime/delivery/contract-source.js +138 -0
  232. package/dist-runtime/delivery/contract-source.js.map +1 -0
  233. package/dist-runtime/delivery/create2.d.ts +3 -0
  234. package/dist-runtime/delivery/create2.js +48 -0
  235. package/dist-runtime/delivery/create2.js.map +1 -0
  236. package/dist-runtime/delivery/custom-closure.d.ts +27 -0
  237. package/dist-runtime/delivery/custom-closure.js +818 -0
  238. package/dist-runtime/delivery/custom-closure.js.map +1 -0
  239. package/dist-runtime/delivery/custom-format.d.ts +35 -0
  240. package/dist-runtime/delivery/custom-format.js +410 -0
  241. package/dist-runtime/delivery/custom-format.js.map +1 -0
  242. package/dist-runtime/delivery/custom.d.ts +32 -0
  243. package/dist-runtime/delivery/custom.js +158 -0
  244. package/dist-runtime/delivery/custom.js.map +1 -0
  245. package/dist-runtime/delivery/data.d.ts +7 -0
  246. package/dist-runtime/delivery/data.js +86 -0
  247. package/dist-runtime/delivery/data.js.map +1 -0
  248. package/dist-runtime/delivery/development.d.ts +92 -0
  249. package/dist-runtime/delivery/development.js +406 -0
  250. package/dist-runtime/delivery/development.js.map +1 -0
  251. package/dist-runtime/delivery/engine.d.ts +9 -0
  252. package/dist-runtime/delivery/engine.js +23 -0
  253. package/dist-runtime/delivery/engine.js.map +1 -0
  254. package/dist-runtime/delivery/eoa-observation.d.ts +43 -0
  255. package/dist-runtime/delivery/eoa-observation.js +145 -0
  256. package/dist-runtime/delivery/eoa-observation.js.map +1 -0
  257. package/dist-runtime/delivery/eoa-signed.d.ts +2 -0
  258. package/dist-runtime/delivery/eoa-signed.js +74 -0
  259. package/dist-runtime/delivery/eoa-signed.js.map +1 -0
  260. package/dist-runtime/delivery/eoa.d.ts +82 -0
  261. package/dist-runtime/delivery/eoa.js +274 -0
  262. package/dist-runtime/delivery/eoa.js.map +1 -0
  263. package/dist-runtime/delivery/execution-db.d.ts +20 -0
  264. package/dist-runtime/delivery/execution-db.js +153 -0
  265. package/dist-runtime/delivery/execution-db.js.map +1 -0
  266. package/dist-runtime/delivery/execution-files.d.ts +9 -0
  267. package/dist-runtime/delivery/execution-files.js +138 -0
  268. package/dist-runtime/delivery/execution-files.js.map +1 -0
  269. package/dist-runtime/delivery/execution-identity.d.ts +15 -0
  270. package/dist-runtime/delivery/execution-identity.js +33 -0
  271. package/dist-runtime/delivery/execution-identity.js.map +1 -0
  272. package/dist-runtime/delivery/execution-model.d.ts +56 -0
  273. package/dist-runtime/delivery/execution-model.js +66 -0
  274. package/dist-runtime/delivery/execution-model.js.map +1 -0
  275. package/dist-runtime/delivery/execution-store.d.ts +48 -0
  276. package/dist-runtime/delivery/execution-store.js +361 -0
  277. package/dist-runtime/delivery/execution-store.js.map +1 -0
  278. package/dist-runtime/delivery/existing-code.d.ts +37 -0
  279. package/dist-runtime/delivery/existing-code.js +83 -0
  280. package/dist-runtime/delivery/existing-code.js.map +1 -0
  281. package/dist-runtime/delivery/export.d.ts +51 -0
  282. package/dist-runtime/delivery/export.js +69 -0
  283. package/dist-runtime/delivery/export.js.map +1 -0
  284. package/dist-runtime/delivery/forkAudit.d.ts +119 -0
  285. package/dist-runtime/delivery/forkAudit.js +473 -0
  286. package/dist-runtime/delivery/forkAudit.js.map +1 -0
  287. package/dist-runtime/delivery/hardhat.d.ts +3 -0
  288. package/dist-runtime/delivery/hardhat.js +45 -0
  289. package/dist-runtime/delivery/hardhat.js.map +1 -0
  290. package/dist-runtime/delivery/history-registration.d.ts +2 -0
  291. package/dist-runtime/delivery/history-registration.js +17 -0
  292. package/dist-runtime/delivery/history-registration.js.map +1 -0
  293. package/dist-runtime/delivery/identities.d.ts +22 -0
  294. package/dist-runtime/delivery/identities.js +97 -0
  295. package/dist-runtime/delivery/identities.js.map +1 -0
  296. package/dist-runtime/delivery/input-files.d.ts +5 -0
  297. package/dist-runtime/delivery/input-files.js +70 -0
  298. package/dist-runtime/delivery/input-files.js.map +1 -0
  299. package/dist-runtime/delivery/inputs.d.ts +62 -0
  300. package/dist-runtime/delivery/inputs.js +194 -0
  301. package/dist-runtime/delivery/inputs.js.map +1 -0
  302. package/dist-runtime/delivery/journal.d.ts +35 -0
  303. package/dist-runtime/delivery/journal.js +278 -0
  304. package/dist-runtime/delivery/journal.js.map +1 -0
  305. package/dist-runtime/delivery/manifest.d.ts +14 -0
  306. package/dist-runtime/delivery/manifest.js +68 -0
  307. package/dist-runtime/delivery/manifest.js.map +1 -0
  308. package/dist-runtime/delivery/materialization.d.ts +20 -0
  309. package/dist-runtime/delivery/materialization.js +138 -0
  310. package/dist-runtime/delivery/materialization.js.map +1 -0
  311. package/dist-runtime/delivery/observations.d.ts +31 -0
  312. package/dist-runtime/delivery/observations.js +38 -0
  313. package/dist-runtime/delivery/observations.js.map +1 -0
  314. package/dist-runtime/delivery/parameter-defaults.d.ts +10 -0
  315. package/dist-runtime/delivery/parameter-defaults.js +86 -0
  316. package/dist-runtime/delivery/parameter-defaults.js.map +1 -0
  317. package/dist-runtime/delivery/parameters.d.ts +55 -0
  318. package/dist-runtime/delivery/parameters.js +279 -0
  319. package/dist-runtime/delivery/parameters.js.map +1 -0
  320. package/dist-runtime/delivery/pending.d.ts +70 -0
  321. package/dist-runtime/delivery/pending.js +99 -0
  322. package/dist-runtime/delivery/pending.js.map +1 -0
  323. package/dist-runtime/delivery/plan.d.ts +50 -0
  324. package/dist-runtime/delivery/plan.js +209 -0
  325. package/dist-runtime/delivery/plan.js.map +1 -0
  326. package/dist-runtime/delivery/planning.d.ts +84 -0
  327. package/dist-runtime/delivery/planning.js +318 -0
  328. package/dist-runtime/delivery/planning.js.map +1 -0
  329. package/dist-runtime/delivery/policy.d.ts +4 -0
  330. package/dist-runtime/delivery/policy.js +9 -0
  331. package/dist-runtime/delivery/policy.js.map +1 -0
  332. package/dist-runtime/delivery/preparation.d.ts +6 -0
  333. package/dist-runtime/delivery/preparation.js +178 -0
  334. package/dist-runtime/delivery/preparation.js.map +1 -0
  335. package/dist-runtime/delivery/production-environment.d.ts +2 -0
  336. package/dist-runtime/delivery/production-environment.js +13 -0
  337. package/dist-runtime/delivery/production-environment.js.map +1 -0
  338. package/dist-runtime/delivery/production-finalization.d.ts +86 -0
  339. package/dist-runtime/delivery/production-finalization.js +292 -0
  340. package/dist-runtime/delivery/production-finalization.js.map +1 -0
  341. package/dist-runtime/delivery/production-intent.d.ts +2 -0
  342. package/dist-runtime/delivery/production-intent.js +16 -0
  343. package/dist-runtime/delivery/production-intent.js.map +1 -0
  344. package/dist-runtime/delivery/production.d.ts +582 -0
  345. package/dist-runtime/delivery/production.js +445 -0
  346. package/dist-runtime/delivery/production.js.map +1 -0
  347. package/dist-runtime/delivery/project-files.d.ts +8 -0
  348. package/dist-runtime/delivery/project-files.js +87 -0
  349. package/dist-runtime/delivery/project-files.js.map +1 -0
  350. package/dist-runtime/delivery/project-rpc.d.ts +19 -0
  351. package/dist-runtime/delivery/project-rpc.js +138 -0
  352. package/dist-runtime/delivery/project-rpc.js.map +1 -0
  353. package/dist-runtime/delivery/project.d.ts +17 -0
  354. package/dist-runtime/delivery/project.js +170 -0
  355. package/dist-runtime/delivery/project.js.map +1 -0
  356. package/dist-runtime/delivery/protocol.d.ts +49 -0
  357. package/dist-runtime/delivery/protocol.js +112 -0
  358. package/dist-runtime/delivery/protocol.js.map +1 -0
  359. package/dist-runtime/delivery/public-calldata.d.ts +25 -0
  360. package/dist-runtime/delivery/public-calldata.js +97 -0
  361. package/dist-runtime/delivery/public-calldata.js.map +1 -0
  362. package/dist-runtime/delivery/references.d.ts +19 -0
  363. package/dist-runtime/delivery/references.js +84 -0
  364. package/dist-runtime/delivery/references.js.map +1 -0
  365. package/dist-runtime/delivery/release-graph.d.ts +97 -0
  366. package/dist-runtime/delivery/release-graph.js +139 -0
  367. package/dist-runtime/delivery/release-graph.js.map +1 -0
  368. package/dist-runtime/delivery/release-history-capture.d.ts +7 -0
  369. package/dist-runtime/delivery/release-history-capture.js +76 -0
  370. package/dist-runtime/delivery/release-history-capture.js.map +1 -0
  371. package/dist-runtime/delivery/release-history.d.ts +43 -0
  372. package/dist-runtime/delivery/release-history.js +322 -0
  373. package/dist-runtime/delivery/release-history.js.map +1 -0
  374. package/dist-runtime/delivery/release-inputs.d.ts +33 -0
  375. package/dist-runtime/delivery/release-inputs.js +129 -0
  376. package/dist-runtime/delivery/release-inputs.js.map +1 -0
  377. package/dist-runtime/delivery/release.d.ts +196 -0
  378. package/dist-runtime/delivery/release.js +261 -0
  379. package/dist-runtime/delivery/release.js.map +1 -0
  380. package/dist-runtime/delivery/safe-manifest.d.ts +9 -0
  381. package/dist-runtime/delivery/safe-manifest.js +13 -0
  382. package/dist-runtime/delivery/safe-manifest.js.map +1 -0
  383. package/dist-runtime/delivery/safe-observation.d.ts +30 -0
  384. package/dist-runtime/delivery/safe-observation.js +487 -0
  385. package/dist-runtime/delivery/safe-observation.js.map +1 -0
  386. package/dist-runtime/delivery/safe-prepare.d.ts +13 -0
  387. package/dist-runtime/delivery/safe-prepare.js +81 -0
  388. package/dist-runtime/delivery/safe-prepare.js.map +1 -0
  389. package/dist-runtime/delivery/safe.d.ts +92 -0
  390. package/dist-runtime/delivery/safe.js +254 -0
  391. package/dist-runtime/delivery/safe.js.map +1 -0
  392. package/dist-runtime/delivery/same-fork-baseline.d.ts +8 -0
  393. package/dist-runtime/delivery/same-fork-baseline.js +21 -0
  394. package/dist-runtime/delivery/same-fork-baseline.js.map +1 -0
  395. package/dist-runtime/delivery/setup.d.ts +31 -0
  396. package/dist-runtime/delivery/setup.js +230 -0
  397. package/dist-runtime/delivery/setup.js.map +1 -0
  398. package/dist-runtime/delivery/source.d.ts +42 -0
  399. package/dist-runtime/delivery/source.js +139 -0
  400. package/dist-runtime/delivery/source.js.map +1 -0
  401. package/dist-runtime/delivery/target-fields.d.ts +2 -0
  402. package/dist-runtime/delivery/target-fields.js +11 -0
  403. package/dist-runtime/delivery/target-fields.js.map +1 -0
  404. package/dist-runtime/delivery/task-identity.d.ts +23 -0
  405. package/dist-runtime/delivery/task-identity.js +109 -0
  406. package/dist-runtime/delivery/task-identity.js.map +1 -0
  407. package/dist-runtime/delivery/toolchain.d.ts +3 -0
  408. package/dist-runtime/delivery/toolchain.js +52 -0
  409. package/dist-runtime/delivery/toolchain.js.map +1 -0
  410. package/dist-runtime/delivery/validation.d.ts +9 -0
  411. package/dist-runtime/delivery/validation.js +155 -0
  412. package/dist-runtime/delivery/validation.js.map +1 -0
  413. package/dist-runtime/delivery/verification.d.ts +16 -0
  414. package/dist-runtime/delivery/verification.js +65 -0
  415. package/dist-runtime/delivery/verification.js.map +1 -0
  416. package/dist-runtime/migrate.js +1 -0
  417. package/dist-runtime/migrate.js.map +1 -1
  418. package/dist-runtime/miner/binary.d.ts +2 -0
  419. package/dist-runtime/miner/binary.js +54 -0
  420. package/dist-runtime/miner/binary.js.map +1 -0
  421. package/dist-runtime/miner/cli.d.ts +1 -0
  422. package/dist-runtime/miner/cli.js +131 -0
  423. package/dist-runtime/miner/cli.js.map +1 -0
  424. package/dist-runtime/miner/index.d.ts +5 -0
  425. package/dist-runtime/miner/index.js +13 -0
  426. package/dist-runtime/miner/index.js.map +1 -0
  427. package/dist-runtime/miner/request.d.ts +7 -0
  428. package/dist-runtime/miner/request.js +73 -0
  429. package/dist-runtime/miner/request.js.map +1 -0
  430. package/dist-runtime/miner/runner.d.ts +2 -0
  431. package/dist-runtime/miner/runner.js +131 -0
  432. package/dist-runtime/miner/runner.js.map +1 -0
  433. package/dist-runtime/miner/types.d.ts +89 -0
  434. package/dist-runtime/miner/types.js +3 -0
  435. package/dist-runtime/miner/types.js.map +1 -0
  436. package/dist-runtime/miner/verify.d.ts +2 -0
  437. package/dist-runtime/miner/verify.js +75 -0
  438. package/dist-runtime/miner/verify.js.map +1 -0
  439. package/dist-runtime/runtime-identity.json +2 -2
  440. package/dist-runtime/vendor/plan-codec/index.cjs +897 -0
  441. package/dist-runtime/vendor/plan-codec/index.d.cts +38 -0
  442. package/dist-runtime/vendor/plan-codec/provenance.json +25 -0
  443. package/dist-runtime/workflow/engine.d.ts +14 -0
  444. package/dist-runtime/workflow/engine.js +160 -0
  445. package/dist-runtime/workflow/engine.js.map +1 -0
  446. package/dist-runtime/workflow/lib/authority.d.ts +6 -3
  447. package/dist-runtime/workflow/lib/authority.js.map +1 -1
  448. package/dist-runtime/workflow/lib/calls.d.ts +1 -1
  449. package/dist-runtime/workflow/lib/calls.js +44 -34
  450. package/dist-runtime/workflow/lib/calls.js.map +1 -1
  451. package/dist-runtime/workflow/lib/canonicalData.d.ts +8 -0
  452. package/dist-runtime/workflow/lib/canonicalData.js +68 -0
  453. package/dist-runtime/workflow/lib/canonicalData.js.map +1 -0
  454. package/dist-runtime/workflow/lib/checkCodeRunner.js +7 -4
  455. package/dist-runtime/workflow/lib/checkCodeRunner.js.map +1 -1
  456. package/dist-runtime/workflow/lib/config.d.ts +3 -1
  457. package/dist-runtime/workflow/lib/config.js.map +1 -1
  458. package/dist-runtime/workflow/lib/context.d.ts +77 -0
  459. package/dist-runtime/workflow/lib/context.js +3 -0
  460. package/dist-runtime/workflow/lib/context.js.map +1 -0
  461. package/dist-runtime/workflow/lib/create2.d.ts +5 -27
  462. package/dist-runtime/workflow/lib/create2.js +11 -79
  463. package/dist-runtime/workflow/lib/create2.js.map +1 -1
  464. package/dist-runtime/workflow/lib/deploymentInfo.d.ts +2 -0
  465. package/dist-runtime/workflow/lib/deploymentInfo.js +6 -0
  466. package/dist-runtime/workflow/lib/deploymentInfo.js.map +1 -1
  467. package/dist-runtime/workflow/lib/deploymentRecords.d.ts +2 -0
  468. package/dist-runtime/workflow/lib/deploymentRecords.js +1 -1
  469. package/dist-runtime/workflow/lib/deploymentRecords.js.map +1 -1
  470. package/dist-runtime/workflow/lib/deployments.d.ts +5 -5
  471. package/dist-runtime/workflow/lib/deployments.js +5 -13
  472. package/dist-runtime/workflow/lib/deployments.js.map +1 -1
  473. package/dist-runtime/workflow/lib/evidencePorts.d.ts +55 -0
  474. package/dist-runtime/workflow/lib/evidencePorts.js +3 -0
  475. package/dist-runtime/workflow/lib/evidencePorts.js.map +1 -0
  476. package/dist-runtime/workflow/lib/executionPlan.d.ts +4 -42
  477. package/dist-runtime/workflow/lib/executionPlan.js +15 -210
  478. package/dist-runtime/workflow/lib/executionPlan.js.map +1 -1
  479. package/dist-runtime/workflow/lib/externalExecutionScanner.js +2 -1
  480. package/dist-runtime/workflow/lib/externalExecutionScanner.js.map +1 -1
  481. package/dist-runtime/workflow/lib/gateTool.d.ts +6 -2
  482. package/dist-runtime/workflow/lib/gateTool.js +22 -12
  483. package/dist-runtime/workflow/lib/gateTool.js.map +1 -1
  484. package/dist-runtime/workflow/lib/gateToolSync.d.ts +4 -1
  485. package/dist-runtime/workflow/lib/gateToolSync.js +8 -2
  486. package/dist-runtime/workflow/lib/gateToolSync.js.map +1 -1
  487. package/dist-runtime/workflow/lib/operationNames.d.ts +3 -0
  488. package/dist-runtime/workflow/lib/operationNames.js +34 -0
  489. package/dist-runtime/workflow/lib/operationNames.js.map +1 -0
  490. package/dist-runtime/workflow/lib/parameters.d.ts +1 -1
  491. package/dist-runtime/workflow/lib/parameters.js +11 -22
  492. package/dist-runtime/workflow/lib/parameters.js.map +1 -1
  493. package/dist-runtime/workflow/lib/pendingDeploymentReuse.js +18 -52
  494. package/dist-runtime/workflow/lib/pendingDeploymentReuse.js.map +1 -1
  495. package/dist-runtime/workflow/lib/pendingUupsBinding.d.ts +42 -0
  496. package/dist-runtime/workflow/lib/pendingUupsBinding.js +39 -0
  497. package/dist-runtime/workflow/lib/pendingUupsBinding.js.map +1 -0
  498. package/dist-runtime/workflow/lib/plan.d.ts +55 -0
  499. package/dist-runtime/workflow/lib/plan.js +324 -0
  500. package/dist-runtime/workflow/lib/plan.js.map +1 -0
  501. package/dist-runtime/workflow/lib/planCli.d.ts +14 -0
  502. package/dist-runtime/workflow/lib/planCli.js +279 -0
  503. package/dist-runtime/workflow/lib/planCli.js.map +1 -0
  504. package/dist-runtime/workflow/lib/preparationEvidence.d.ts +4 -0
  505. package/dist-runtime/workflow/lib/preparationEvidence.js +19 -0
  506. package/dist-runtime/workflow/lib/preparationEvidence.js.map +1 -0
  507. package/dist-runtime/workflow/lib/proxy.d.ts +4 -2
  508. package/dist-runtime/workflow/lib/proxy.js +3 -4
  509. package/dist-runtime/workflow/lib/proxy.js.map +1 -1
  510. package/dist-runtime/workflow/lib/runtime.d.ts +6 -0
  511. package/dist-runtime/workflow/lib/runtime.js +48 -0
  512. package/dist-runtime/workflow/lib/runtime.js.map +1 -0
  513. package/dist-runtime/workflow/lib/signer.d.ts +3 -2
  514. package/dist-runtime/workflow/lib/signer.js +18 -18
  515. package/dist-runtime/workflow/lib/signer.js.map +1 -1
  516. package/dist-runtime/workflow/lib/simulation.d.ts +13 -6
  517. package/dist-runtime/workflow/lib/simulation.js +39 -31
  518. package/dist-runtime/workflow/lib/simulation.js.map +1 -1
  519. package/dist-runtime/workflow/lib/state.js +3 -3
  520. package/dist-runtime/workflow/lib/state.js.map +1 -1
  521. package/dist-runtime/workflow/lib/staticValidation.d.ts +28 -0
  522. package/dist-runtime/workflow/lib/staticValidation.js +54 -10
  523. package/dist-runtime/workflow/lib/staticValidation.js.map +1 -1
  524. package/dist-runtime/workflow/lib/transactionPlanner.d.ts +62 -0
  525. package/dist-runtime/workflow/lib/transactionPlanner.js +258 -0
  526. package/dist-runtime/workflow/lib/transactionPlanner.js.map +1 -0
  527. package/dist-runtime/workflow/lib/typedValue.d.ts +3 -0
  528. package/dist-runtime/workflow/lib/typedValue.js +76 -0
  529. package/dist-runtime/workflow/lib/typedValue.js.map +1 -0
  530. package/dist-runtime/workflow/lib/validation.d.ts +23 -0
  531. package/dist-runtime/workflow/lib/validation.js +15 -0
  532. package/dist-runtime/workflow/lib/validation.js.map +1 -0
  533. package/dist-runtime/workflow/planAdd.d.ts +1 -0
  534. package/dist-runtime/workflow/planAdd.js +11 -0
  535. package/dist-runtime/workflow/planAdd.js.map +1 -0
  536. package/dist-runtime/workflow/planRead.d.ts +1 -0
  537. package/dist-runtime/workflow/planRead.js +11 -0
  538. package/dist-runtime/workflow/planRead.js.map +1 -0
  539. package/dist-runtime/workflow/planStatus.d.ts +1 -0
  540. package/dist-runtime/workflow/planStatus.js +11 -0
  541. package/dist-runtime/workflow/planStatus.js.map +1 -0
  542. package/dist-runtime/workflow/planWrite.d.ts +1 -0
  543. package/dist-runtime/workflow/planWrite.js +11 -0
  544. package/dist-runtime/workflow/planWrite.js.map +1 -0
  545. package/dist-runtime/workflow/run.d.ts +1 -40
  546. package/dist-runtime/workflow/run.js +69 -139
  547. package/dist-runtime/workflow/run.js.map +1 -1
  548. package/dist-runtime/workflow/staticValidate.js +8 -3
  549. package/dist-runtime/workflow/staticValidate.js.map +1 -1
  550. package/dist-runtime/workflow/steps/call.d.ts +1 -1
  551. package/dist-runtime/workflow/steps/check.d.ts +1 -1
  552. package/dist-runtime/workflow/steps/custom.d.ts +1 -1
  553. package/dist-runtime/workflow/steps/deploy.d.ts +1 -1
  554. package/dist-runtime/workflow/steps/deploy.js +110 -55
  555. package/dist-runtime/workflow/steps/deploy.js.map +1 -1
  556. package/dist-runtime/workflow/steps/upgrade.d.ts +1 -1
  557. package/dist-runtime/workflow/steps/upgrade.js +84 -49
  558. package/dist-runtime/workflow/steps/upgrade.js.map +1 -1
  559. package/dist-runtime/workflow/steps/view.d.ts +1 -1
  560. package/docs/compiler-qualification.md +38 -0
  561. package/docs/configuration-runtime-observation.md +29 -0
  562. package/docs/create2-miner.md +100 -0
  563. package/docs/delivery-aggregate.md +29 -0
  564. package/docs/delivery-calldata.md +27 -0
  565. package/docs/delivery-custom-input-closure.md +51 -0
  566. package/docs/delivery-development.md +38 -0
  567. package/docs/delivery-eoa.md +46 -0
  568. package/docs/delivery-evm-manifest.md +20 -0
  569. package/docs/delivery-execution-store.md +33 -0
  570. package/docs/delivery-inputs.md +95 -0
  571. package/docs/delivery-parameters.md +65 -0
  572. package/docs/delivery-planning.md +140 -0
  573. package/docs/delivery-release.md +119 -0
  574. package/docs/delivery-safe.md +75 -0
  575. package/docs/delivery-setup.md +198 -0
  576. package/docs/delivery-source.md +67 -0
  577. package/docs/direct-package-acceptance.md +2 -0
  578. package/docs/openzeppelin-acceptance.md +86 -0
  579. package/docs/openzeppelin-baseline.json +27 -0
  580. package/docs/openzeppelin-integration.md +115 -0
  581. package/docs/plans/2026-10-28-openzeppelin-toolkit-consolidation.md +396 -0
  582. package/docs/plans/2026-11-02-transparent-proxy-delivery.md +78 -0
  583. package/docs/superpowers/plans/2026-08-17-custody-hardhat-signers.md +1 -1
  584. package/docs/superpowers/plans/2026-09-24-scheme-aware-static-validation.md +193 -0
  585. package/docs/superpowers/plans/2026-10-28-create2-miner.md +82 -0
  586. package/docs/workflow-reference.md +12 -4
  587. package/docs/workflow-runtime.md +6 -0
  588. package/package.json +148 -10
  589. package/resources/create2/LICENSE +21 -0
  590. package/resources/create2/README.md +9 -0
  591. package/resources/create2/darwin-arm64/smartflow_miner +0 -0
  592. package/resources/create2/darwin-x64/smartflow_miner +0 -0
  593. package/resources/create2/manifest.json +27 -0
  594. package/runtime/config/hardhatAdapters.ts +2 -1
  595. package/runtime/config/openzeppelin.ts +3 -21
  596. package/runtime/delivery/abi.ts +225 -0
  597. package/runtime/delivery/aggregate-bootstrap.ts +31 -0
  598. package/runtime/delivery/aggregate-channel.ts +88 -0
  599. package/runtime/delivery/aggregate-diagnostics.ts +63 -0
  600. package/runtime/delivery/aggregate-inputs.ts +39 -0
  601. package/runtime/delivery/aggregate-source.ts +57 -0
  602. package/runtime/delivery/aggregate-worker.ts +143 -0
  603. package/runtime/delivery/aggregate.ts +139 -0
  604. package/runtime/delivery/bindings.ts +37 -0
  605. package/runtime/delivery/business-extension.ts +33 -0
  606. package/runtime/delivery/calldata-archive.ts +25 -0
  607. package/runtime/delivery/calldata-details.ts +90 -0
  608. package/runtime/delivery/calldata-format.ts +14 -0
  609. package/runtime/delivery/calldata-preparations.ts +76 -0
  610. package/runtime/delivery/calldata-review.ts +126 -0
  611. package/runtime/delivery/check-code.ts +38 -0
  612. package/runtime/delivery/closure-format.ts +350 -0
  613. package/runtime/delivery/codec-pin.ts +3 -0
  614. package/runtime/delivery/codec.ts +50 -0
  615. package/runtime/delivery/compiler-dependency-pins.ts +1685 -0
  616. package/runtime/delivery/compiler-files.ts +181 -0
  617. package/runtime/delivery/compiler-io.ts +10 -0
  618. package/runtime/delivery/compiler-pins.ts +143 -0
  619. package/runtime/delivery/compiler.ts +701 -0
  620. package/runtime/delivery/config.ts +116 -0
  621. package/runtime/delivery/configuration-definition.ts +160 -0
  622. package/runtime/delivery/configuration-hre.ts +130 -0
  623. package/runtime/delivery/configuration-runtime.ts +163 -0
  624. package/runtime/delivery/configuration.ts +67 -0
  625. package/runtime/delivery/contract-source.ts +112 -0
  626. package/runtime/delivery/create2.ts +57 -0
  627. package/runtime/delivery/custom-closure.ts +993 -0
  628. package/runtime/delivery/custom-format.ts +479 -0
  629. package/runtime/delivery/custom.ts +219 -0
  630. package/runtime/delivery/data.ts +94 -0
  631. package/runtime/delivery/development.ts +264 -0
  632. package/runtime/delivery/engine.ts +29 -0
  633. package/runtime/delivery/eoa-observation.ts +106 -0
  634. package/runtime/delivery/eoa-signed.ts +55 -0
  635. package/runtime/delivery/eoa.ts +288 -0
  636. package/runtime/delivery/execution-db.ts +131 -0
  637. package/runtime/delivery/execution-files.ts +135 -0
  638. package/runtime/delivery/execution-identity.ts +32 -0
  639. package/runtime/delivery/execution-model.ts +102 -0
  640. package/runtime/delivery/execution-store.ts +411 -0
  641. package/runtime/delivery/existing-code.ts +45 -0
  642. package/runtime/delivery/export.ts +99 -0
  643. package/runtime/delivery/forkAudit.ts +620 -0
  644. package/runtime/delivery/hardhat.ts +38 -0
  645. package/runtime/delivery/history-registration.ts +10 -0
  646. package/runtime/delivery/identities.ts +132 -0
  647. package/runtime/delivery/input-files.ts +46 -0
  648. package/runtime/delivery/inputs.ts +204 -0
  649. package/runtime/delivery/journal.ts +205 -0
  650. package/runtime/delivery/manifest.ts +54 -0
  651. package/runtime/delivery/materialization.ts +53 -0
  652. package/runtime/delivery/observations.ts +60 -0
  653. package/runtime/delivery/parameter-defaults.ts +75 -0
  654. package/runtime/delivery/parameters.ts +367 -0
  655. package/runtime/delivery/pending.ts +98 -0
  656. package/runtime/delivery/plan.ts +337 -0
  657. package/runtime/delivery/planning.ts +411 -0
  658. package/runtime/delivery/policy.ts +9 -0
  659. package/runtime/delivery/preparation.ts +240 -0
  660. package/runtime/delivery/production-environment.ts +7 -0
  661. package/runtime/delivery/production-finalization.ts +181 -0
  662. package/runtime/delivery/production-intent.ts +14 -0
  663. package/runtime/delivery/production.ts +415 -0
  664. package/runtime/delivery/project-files.ts +63 -0
  665. package/runtime/delivery/project-rpc.ts +116 -0
  666. package/runtime/delivery/project.ts +129 -0
  667. package/runtime/delivery/protocol.ts +94 -0
  668. package/runtime/delivery/public-calldata.ts +74 -0
  669. package/runtime/delivery/references.ts +106 -0
  670. package/runtime/delivery/release-graph.ts +79 -0
  671. package/runtime/delivery/release-history-capture.ts +32 -0
  672. package/runtime/delivery/release-history.ts +178 -0
  673. package/runtime/delivery/release-inputs.ts +107 -0
  674. package/runtime/delivery/release.ts +166 -0
  675. package/runtime/delivery/safe-manifest.ts +11 -0
  676. package/runtime/delivery/safe-observation.ts +626 -0
  677. package/runtime/delivery/safe-prepare.ts +101 -0
  678. package/runtime/delivery/safe.ts +355 -0
  679. package/runtime/delivery/same-fork-baseline.ts +17 -0
  680. package/runtime/delivery/setup.ts +184 -0
  681. package/runtime/delivery/source.ts +130 -0
  682. package/runtime/delivery/target-fields.ts +7 -0
  683. package/runtime/delivery/task-identity.ts +85 -0
  684. package/runtime/delivery/toolchain.ts +48 -0
  685. package/runtime/delivery/validation.ts +252 -0
  686. package/runtime/delivery/verification.ts +47 -0
  687. package/runtime/migrate.ts +1 -0
  688. package/runtime/miner/binary.ts +41 -0
  689. package/runtime/miner/cli.ts +87 -0
  690. package/runtime/miner/index.ts +5 -0
  691. package/runtime/miner/request.ts +54 -0
  692. package/runtime/miner/runner.ts +90 -0
  693. package/runtime/miner/types.ts +71 -0
  694. package/runtime/miner/verify.ts +61 -0
  695. package/runtime/vendor/plan-codec/index.cjs +897 -0
  696. package/runtime/vendor/plan-codec/index.d.cts +38 -0
  697. package/runtime/vendor/plan-codec/provenance.json +25 -0
  698. package/runtime/workflow/engine.ts +174 -0
  699. package/runtime/workflow/lib/authority.ts +3 -3
  700. package/runtime/workflow/lib/calls.ts +47 -37
  701. package/runtime/workflow/lib/canonicalData.ts +45 -0
  702. package/runtime/workflow/lib/checkCodeRunner.ts +7 -3
  703. package/runtime/workflow/lib/config.ts +1 -1
  704. package/runtime/workflow/lib/context.ts +77 -0
  705. package/runtime/workflow/lib/create2.ts +18 -121
  706. package/runtime/workflow/lib/deploymentInfo.ts +8 -0
  707. package/runtime/workflow/lib/deploymentRecords.ts +3 -1
  708. package/runtime/workflow/lib/deployments.ts +6 -14
  709. package/runtime/workflow/lib/evidencePorts.ts +20 -0
  710. package/runtime/workflow/lib/executionPlan.ts +17 -268
  711. package/runtime/workflow/lib/externalExecutionScanner.ts +2 -1
  712. package/runtime/workflow/lib/gateTool.ts +22 -10
  713. package/runtime/workflow/lib/gateToolSync.ts +11 -3
  714. package/runtime/workflow/lib/operationNames.ts +32 -0
  715. package/runtime/workflow/lib/parameters.ts +8 -21
  716. package/runtime/workflow/lib/pendingDeploymentReuse.ts +4 -56
  717. package/runtime/workflow/lib/pendingUupsBinding.ts +43 -0
  718. package/runtime/workflow/lib/plan.ts +334 -0
  719. package/runtime/workflow/lib/planCli.ts +279 -0
  720. package/runtime/workflow/lib/preparationEvidence.ts +14 -0
  721. package/runtime/workflow/lib/proxy.ts +6 -3
  722. package/runtime/workflow/lib/runtime.ts +46 -0
  723. package/runtime/workflow/lib/signer.ts +8 -5
  724. package/runtime/workflow/lib/simulation.ts +41 -17
  725. package/runtime/workflow/lib/state.ts +3 -3
  726. package/runtime/workflow/lib/staticValidation.ts +92 -11
  727. package/runtime/workflow/lib/transactionPlanner.ts +314 -0
  728. package/runtime/workflow/lib/typedValue.ts +46 -0
  729. package/runtime/workflow/lib/validation.ts +50 -0
  730. package/runtime/workflow/planAdd.ts +8 -0
  731. package/runtime/workflow/planRead.ts +8 -0
  732. package/runtime/workflow/planStatus.ts +8 -0
  733. package/runtime/workflow/planWrite.ts +8 -0
  734. package/runtime/workflow/run.ts +42 -176
  735. package/runtime/workflow/staticValidate.ts +8 -3
  736. package/runtime/workflow/steps/call.ts +1 -1
  737. package/runtime/workflow/steps/check.ts +1 -1
  738. package/runtime/workflow/steps/custom.ts +1 -1
  739. package/runtime/workflow/steps/deploy.ts +99 -58
  740. package/runtime/workflow/steps/upgrade.ts +88 -57
  741. package/runtime/workflow/steps/view.ts +1 -1
  742. package/bin/workflow.cjs +0 -19
@@ -1,6 +1,6 @@
1
+ import type { WorkflowValidationPort } from './validation';
1
2
  import fs from "fs";
2
3
  import path from "path";
3
- import hardhat from "../../projectHardhat";
4
4
  import {
5
5
  canonicalPreparationJson,
6
6
  hashPreparationRequest,
@@ -21,8 +21,10 @@ export interface PrepareGateToolWorkflowOptions {
21
21
  evidenceDir: string;
22
22
  evidenceName: string;
23
23
  request: GateToolPreparationRequestV1;
24
- hre?: GateToolPreparationHre;
24
+ hre: GateToolPreparationHre;
25
25
  readBlockTag?: number;
26
+ expected?: PreparedGateToolWorkflow;
27
+ validation?: WorkflowValidationPort;
26
28
  }
27
29
 
28
30
  export interface PreparedGateToolWorkflow {
@@ -149,7 +151,7 @@ const readRegularJson = (
149
151
  }
150
152
  };
151
153
 
152
- const expectedTransactionPurposes = (
154
+ export const expectedTransactionPurposes = (
153
155
  plan: GateToolPreparationPlanV1,
154
156
  ): GateToolTransactionPurpose[] => {
155
157
  const requiredRoles = new Set(
@@ -160,7 +162,7 @@ const expectedTransactionPurposes = (
160
162
  if (plan.kind === "create2-deploy") {
161
163
  return requiredRoles.has("contract") ? ["deploy-contract"] : [];
162
164
  }
163
- if (plan.kind === "uups-placeholder-deploy") {
165
+ if (plan.kind === "uups-placeholder-deploy" || plan.kind === "transparent-deploy") {
164
166
  if (!requiredRoles.has("proxy")) {
165
167
  if (requiredRoles.has("implementation")) {
166
168
  throw new Error(
@@ -172,7 +174,7 @@ const expectedTransactionPurposes = (
172
174
  return [
173
175
  ...(requiredRoles.has("implementation") ? ["deploy-implementation" as const] : []),
174
176
  "deploy-proxy",
175
- "upgrade-proxy",
177
+ ...(plan.kind === "uups-placeholder-deploy" ? ["upgrade-proxy" as const] : []),
176
178
  ];
177
179
  }
178
180
  return [
@@ -185,8 +187,9 @@ const assertPlanMatchesRequest = async (
185
187
  hre: GateToolPreparationHre,
186
188
  request: GateToolPreparationRequestV1,
187
189
  rawPlan: unknown,
190
+ validation?: WorkflowValidationPort,
188
191
  ): Promise<GateToolPreparationPlanV1> => {
189
- const plan = normalizePreparationPlan(rawPlan);
192
+ const plan = normalizePreparationPlan(validation ? validation.preparation.data(rawPlan) : rawPlan);
190
193
  const provider = (hre as GateToolPreparationHre & {
191
194
  ethers?: { provider?: { getNetwork(): Promise<{ chainId: bigint | number | string }> } };
192
195
  }).ethers?.provider;
@@ -214,20 +217,28 @@ const assertPlanMatchesRequest = async (
214
217
  ) {
215
218
  throw new Error("GateTool plan transaction order does not match its deployment evidence");
216
219
  }
220
+ await validation?.preparationPlan(request, plan);
217
221
  return plan;
218
222
  };
219
223
 
220
224
  export const prepareGateToolWorkflow = async (
221
225
  options: PrepareGateToolWorkflowOptions,
222
226
  ): Promise<PreparedGateToolWorkflow> => {
227
+ if (!options.hre) throw new Error("GateTool requires an explicit Hardhat runtime");
223
228
  if (!SAFE_FILE_ID.test(options.evidenceName)) {
224
229
  throw new Error(`GateTool evidenceName must match ${SAFE_FILE_ID}`);
225
230
  }
226
- const request = normalizePreparationRequest(options.request);
231
+ const request = normalizePreparationRequest(options.validation ? options.validation.preparation.data(options.request) : options.request);
227
232
  const runtime = pinGateToolReadBlockTag(
228
- options.hre ?? hardhat as unknown as GateToolPreparationHre,
233
+ options.hre,
229
234
  options.readBlockTag,
230
235
  );
236
+ if (options.expected) {
237
+ const expectedRequest = normalizePreparationRequest(options.validation ? options.validation.preparation.data(options.expected.request) : options.expected.request);
238
+ if (canonicalPreparationJson(expectedRequest) !== canonicalPreparationJson(request)) throw new Error("Expected GateTool request differs from replay");
239
+ const plan = await assertPlanMatchesRequest(runtime, request, options.expected.plan, options.validation);
240
+ return { ...options.expected, request, plan };
241
+ }
231
242
  const evidenceDir = confinedPath(options.root, options.evidenceDir, "GateTool evidence directory");
232
243
  const requestPath = path.join(evidenceDir, `${options.evidenceName}-request.json`);
233
244
  const planPath = path.join(evidenceDir, `${options.evidenceName}-plan.json`);
@@ -248,13 +259,14 @@ export const prepareGateToolWorkflow = async (
248
259
  runtime,
249
260
  request,
250
261
  readRegularJson(planPath, options.root, "GateTool plan evidence"),
262
+ options.validation,
251
263
  );
252
264
  return { request, requestPath, plan, planPath };
253
265
  }
254
266
 
267
+ const prepared = await prepareWorkflow(runtime, request, options.validation?.preparation);
268
+ const plan = await assertPlanMatchesRequest(runtime, request, prepared, options.validation);
255
269
  writeCanonicalJsonAtomic(requestPath, request, options.root);
256
- const prepared = await prepareWorkflow(runtime, request);
257
- const plan = await assertPlanMatchesRequest(runtime, request, prepared);
258
270
  writePreparationPlanAtomic(planPath, plan, options.root);
259
271
 
260
272
  return { request, requestPath, plan, planPath };
@@ -1,7 +1,6 @@
1
1
  import crypto from "crypto";
2
2
  import fs from "fs";
3
3
  import path from "path";
4
- import hardhat from "../../projectHardhat";
5
4
  import { syncWithHre } from "gate-evm-tools/sync";
6
5
  import { writeJsonFile } from "./config";
7
6
 
@@ -21,11 +20,14 @@ export interface SyncGateToolUupsOptions {
21
20
  target: string;
22
21
  manifestDir: string;
23
22
  proxy: string;
23
+ proxyKind?: "uups" | "transparent";
24
+ proxyAdminAddress?: string;
25
+ proxyAdminOwner?: string;
24
26
  implementation: string;
25
27
  contract: string;
26
28
  constructorArgs: unknown[];
27
29
  transactionHash: string;
28
- hre?: GateToolSyncHre;
30
+ hre: GateToolSyncHre;
29
31
  }
30
32
 
31
33
  const SAFE_FILE_ID = /^[A-Za-z0-9][A-Za-z0-9_-]{0,199}$/;
@@ -164,6 +166,9 @@ const validateEvidenceIdentity = (
164
166
  || raw.scheme !== options.scheme
165
167
  || raw.network !== options.network
166
168
  || raw.target !== options.target
169
+ || raw.proxyKind !== options.proxyKind
170
+ || raw.proxyAdminAddress !== options.proxyAdminAddress
171
+ || raw.proxyAdminOwner !== options.proxyAdminOwner
167
172
  || raw.manifestDir !== options.manifestDir
168
173
  || raw.contract !== options.contract
169
174
  || JSON.stringify(raw.constructorArgs) !== JSON.stringify(options.constructorArgs)
@@ -240,6 +245,7 @@ const buildSyncEvidence = (
240
245
  network: options.network,
241
246
  target: options.target,
242
247
  manifestDir: options.manifestDir,
248
+ ...(options.proxyKind?{proxyKind:options.proxyKind,proxyAdminAddress:options.proxyAdminAddress,proxyAdminOwner:options.proxyAdminOwner}:{}),
243
249
  proxy: options.proxy.toLowerCase(),
244
250
  implementation: options.implementation.toLowerCase(),
245
251
  contract: options.contract,
@@ -254,6 +260,7 @@ const buildSyncEvidence = (
254
260
  export const syncGateToolUups = async (
255
261
  options: SyncGateToolUupsOptions,
256
262
  ): Promise<GateToolSyncEvidence> => {
263
+ if (!options.hre) throw new Error("GateTool requires an explicit Hardhat runtime");
257
264
  if (!SAFE_FILE_ID.test(options.evidenceName)) {
258
265
  throw new Error(`GateTool sync evidenceName must match ${SAFE_FILE_ID}`);
259
266
  }
@@ -335,12 +342,13 @@ export const syncGateToolUups = async (
335
342
  network: options.network,
336
343
  target: options.target,
337
344
  proxy: options.proxy,
345
+ ...(options.proxyKind?{proxyKind:options.proxyKind,proxyAdminAddress:options.proxyAdminAddress,proxyAdminOwner:options.proxyAdminOwner}:{}),
338
346
  contract: options.contract,
339
347
  constructorArgs: options.constructorArgs,
340
348
  ...(options.scheme === "evm"
341
349
  ? { skipTxHash: true }
342
350
  : { transactionHash: options.transactionHash }),
343
- }, options.hre ?? hardhat, options.root), "GateTool sync result");
351
+ }, options.hre, options.root), "GateTool sync result");
344
352
  const returnedProxy = typeof rawResult.proxyAddress === "string"
345
353
  ? rawResult.proxyAddress
346
354
  : stringField(rawResult, "proxy");
@@ -0,0 +1,32 @@
1
+ import type { WorkflowStep } from "./parameters";
2
+ export const validateDeploySaveAs = (steps: WorkflowStep[]): void => {
3
+ const seen = new Set<string>();
4
+
5
+ for (const step of steps) {
6
+ if (step.kind !== "deploy") continue;
7
+
8
+ const saveAs = typeof step.saveAs === "string" ? step.saveAs.trim() : "";
9
+ if (!saveAs) {
10
+ throw new Error(`Deploy step ${step.id} requires saveAs`);
11
+ }
12
+ if (saveAs.includes(":")) {
13
+ throw new Error(`Deploy step ${step.id} saveAs "${saveAs}" must not contain ":"`);
14
+ }
15
+ if (seen.has(saveAs)) {
16
+ throw new Error(`Duplicate deploy saveAs "${saveAs}"`);
17
+ }
18
+ seen.add(saveAs);
19
+ }
20
+ };
21
+
22
+ export const deploymentInstanceId = (instanceId: string): string => {
23
+ const normalizedInstanceId = instanceId.trim();
24
+ if (!normalizedInstanceId) {
25
+ throw new Error("Deployment saveAs must not be empty");
26
+ }
27
+ if (normalizedInstanceId.includes(":")) {
28
+ throw new Error(`Deployment saveAs "${normalizedInstanceId}" must not contain ":"`);
29
+ }
30
+ return normalizedInstanceId;
31
+ };
32
+
@@ -77,25 +77,8 @@ export const validateWorkflowStepIds = (steps: WorkflowStep[]): void => {
77
77
  }
78
78
  };
79
79
 
80
- export const validateDeploySaveAs = (steps: WorkflowStep[]): void => {
81
- const seen = new Set<string>();
82
-
83
- for (const step of steps) {
84
- if (step.kind !== "deploy") continue;
85
-
86
- const saveAs = typeof step.saveAs === "string" ? step.saveAs.trim() : "";
87
- if (!saveAs) {
88
- throw new Error(`Deploy step ${step.id} requires saveAs`);
89
- }
90
- if (saveAs.includes(":")) {
91
- throw new Error(`Deploy step ${step.id} saveAs "${saveAs}" must not contain ":"`);
92
- }
93
- if (seen.has(saveAs)) {
94
- throw new Error(`Duplicate deploy saveAs "${saveAs}"`);
95
- }
96
- seen.add(saveAs);
97
- }
98
- };
80
+ export { validateDeploySaveAs } from "./operationNames";
81
+ import { validateDeploySaveAs } from "./operationNames";
99
82
 
100
83
  export const validateWorkflowStepKinds = (steps: WorkflowStep[]): void => {
101
84
  for (const step of steps) {
@@ -263,6 +246,10 @@ export const validateDeployCreate2Strategy = (steps: WorkflowStep[]): void => {
263
246
  }
264
247
 
265
248
  if (step.proxy !== undefined) {
249
+ if(asObject(step.proxy).kind === "transparent") {
250
+ if(step.upgradeableStrategy!=="transparent-proxy"||step.firstUpgrade!==undefined)throw new Error(`Deploy step ${step.id} requires transparent-proxy strategy without firstUpgrade`);
251
+ continue;
252
+ }
266
253
  if (step.upgradeableStrategy !== "uups-placeholder-proxy") {
267
254
  throw new Error(`Deploy step ${step.id} requires upgradeableStrategy: uups-placeholder-proxy`);
268
255
  }
@@ -386,7 +373,7 @@ const readPath = (source: Record<string, unknown>, pathExpression: string): unkn
386
373
  let current: unknown = source;
387
374
 
388
375
  for (const part of parts) {
389
- if (typeof current !== "object" || current === null || !(part in current)) {
376
+ if (typeof current !== "object" || current === null || !Object.hasOwn(current, part)) {
390
377
  throw new Error(`Reference not found: ${pathExpression}`);
391
378
  }
392
379
  current = (current as Record<string, unknown>)[part];
@@ -412,7 +399,7 @@ export const resolveValue = (value: unknown, context: ResolveContext): unknown =
412
399
 
413
400
  if (typeof value === "object" && value !== null) {
414
401
  const objectValue = value as Record<string, unknown>;
415
- if (typeof objectValue.$ref === "string") {
402
+ if (Object.hasOwn(objectValue, "$ref") && typeof objectValue.$ref === "string") {
416
403
  const ref = objectValue.$ref;
417
404
  if (ref.startsWith("state.")) {
418
405
  return context.state.get(ref.slice("state.".length));
@@ -1,12 +1,11 @@
1
+ import { assertPendingUupsPreparation, assertPendingUupsCurrentState, planDeployment, sameAddress } from "./pendingUupsBinding";
1
2
  import fs from "fs";
2
3
  import path from "path";
3
4
  import type { Provider } from "ethers";
4
5
  import {
5
6
  canonicalPreparationJson,
6
- hashPreparationRequest,
7
7
  normalizePreparationPlan,
8
8
  normalizePreparationRequest,
9
- type GateToolPreparationPlanV1,
10
9
  } from "gate-evm-tools/workflow";
11
10
  import { readJsonFile } from "./config";
12
11
  import {
@@ -18,7 +17,6 @@ import {
18
17
  type DeploymentChange,
19
18
  type PendingDeploymentReuseEvidence,
20
19
  } from "./deploymentRecords";
21
- import { getERC1967Implementation } from "./erc1967";
22
20
  import { loadReleaseExecutionPlan } from "./executionPlan";
23
21
  import { readParameterLockExecution } from "./lock";
24
22
  import { loadOperatorExecutionResult } from "./operatorExecution";
@@ -55,12 +53,6 @@ const isRecord = (value: unknown): value is Record<string, unknown> => (
55
53
  !!value && typeof value === "object" && !Array.isArray(value)
56
54
  );
57
55
 
58
- const sameAddress = (left: unknown, right: unknown): boolean => (
59
- typeof left === "string"
60
- && typeof right === "string"
61
- && left.toLowerCase() === right.toLowerCase()
62
- );
63
-
64
56
  const sameFingerprint = (left: ReleaseFingerprint, right: ReleaseFingerprint): boolean => (
65
57
  left.manifestHash === right.manifestHash
66
58
  && left.artifactHash === right.artifactHash
@@ -90,17 +82,6 @@ const pendingCandidateFiles = (root: string): string[] => fs.readdirSync(root)
90
82
  .filter((name) => /^contractInfo\.pending\.[A-Za-z0-9][A-Za-z0-9_-]{0,199}\.json$/.test(name))
91
83
  .map((name) => path.join(root, name));
92
84
 
93
- const planDeployment = (
94
- plan: GateToolPreparationPlanV1,
95
- role: "implementation" | "proxy",
96
- ) => {
97
- const matches = plan.deployments.filter((deployment) => deployment.role === role);
98
- if (matches.length !== 1) {
99
- throw new Error(`GateTool plan must contain exactly one ${role} deployment`);
100
- }
101
- return matches[0];
102
- };
103
-
104
85
  const assertSuccessfulVerification = (
105
86
  input: PendingUupsReuseInput,
106
87
  executionId: string,
@@ -283,28 +264,8 @@ const verifyCandidate = async (
283
264
  ));
284
265
  const implementation = planDeployment(plan, "implementation");
285
266
  const proxy = planDeployment(plan, "proxy");
286
- if (
287
- plan.kind !== "uups-placeholder-deploy"
288
- || plan.scheme !== input.scheme
289
- || plan.network !== input.network
290
- || plan.target !== input.network
291
- || request.kind !== "uups-placeholder-deploy"
292
- || request.scheme !== input.scheme
293
- || request.network !== input.network
294
- || request.target !== input.network
295
- || hashPreparationRequest(request) !== plan.requestHash
296
- || !sameAddress(request.factory, input.factory)
297
- || request.proxySalt.toLowerCase() !== input.proxySalt.toLowerCase()
298
- || request.implementationSalt.toLowerCase() !== change.implementationSalt!.toLowerCase()
299
- || !sameAddress(request.placeholderImplementation, input.placeholderImplementationAddress)
300
- || !sameAddress(proxy.address, change.address)
301
- || proxy.salt.toLowerCase() !== input.proxySalt.toLowerCase()
302
- || !sameAddress(implementation.address, change.implementationAddress)
303
- || implementation.salt.toLowerCase() !== change.implementationSalt!.toLowerCase()
304
- || !/^[0-9a-f]{64}$/.test(plan.artifact.digest)
305
- ) {
306
- throw new Error("Pending GateTool evidence does not match the current UUPS deployment");
307
- }
267
+ if (plan.network !== input.network || request.network !== input.network) throw new Error("Pending GateTool network differs from the legacy target");
268
+ assertPendingUupsPreparation(input, change, request, plan);
308
269
 
309
270
  const executionPlan = loadReleaseExecutionPlan({
310
271
  root: input.root,
@@ -344,20 +305,7 @@ const verifyCandidate = async (
344
305
  }
345
306
  }
346
307
 
347
- const proxyCode = await input.provider.getCode(proxy.address, input.blockTag);
348
- const implementationCode = await input.provider.getCode(implementation.address, input.blockTag);
349
- const currentImplementation = await getERC1967Implementation(
350
- input.provider,
351
- proxy.address,
352
- input.blockTag,
353
- );
354
- if (
355
- !proxyCode || proxyCode === "0x"
356
- || !implementationCode || implementationCode === "0x"
357
- || !sameAddress(currentImplementation, implementation.address)
358
- ) {
359
- throw new Error("Pending deployment does not match current on-chain UUPS state");
360
- }
308
+ await assertPendingUupsCurrentState(input, proxy.address, implementation.address);
361
309
 
362
310
  const deploymentRecordPath = path.join(
363
311
  input.taskDir,
@@ -0,0 +1,43 @@
1
+ import type { Provider } from 'ethers';
2
+ import { hashPreparationRequest, type GateToolPreparationPlanV1, type GateToolPreparationRequestV1 } from 'gate-evm-tools/workflow';
3
+ import type { DeploymentChange, PendingDeploymentReuseEvidence } from './deploymentRecords';
4
+ import { getERC1967Implementation } from './erc1967';
5
+ export interface PendingUupsBindingInput {
6
+ taskId: string; network: string; stepId: string; instanceId: string; actualContract: string;
7
+ contractInfoKey: string; scheme: 'evm' | 'zksync-eravm'; factory: string; multicall: string;
8
+ proxySalt: string; expectedAddress?: string; placeholderImplementationAddress: string;
9
+ provider: Pick<Provider, 'getCode' | 'getStorage'>; blockTag?: number;
10
+ }
11
+ export interface PendingReuseBinding { executionId: string; target: string; planHash: string; artifactDigest: string; observationIds: string[] }
12
+ export interface PendingUupsResolution {
13
+ implementationAddress: string; implementationSalt: string; proxyAddress: string; artifactDigest: string;
14
+ legacyEvidence?: PendingDeploymentReuseEvidence;
15
+ binding?: PendingReuseBinding;
16
+ }
17
+ export interface PendingUupsResolverPort { resolve(input: PendingUupsBindingInput): Promise<PendingUupsResolution | undefined> }
18
+ export const sameAddress = (left: unknown, right: unknown): boolean => typeof left === 'string' && typeof right === 'string' && left.toLowerCase() === right.toLowerCase();
19
+ export function planDeployment(plan: GateToolPreparationPlanV1, role: 'implementation' | 'proxy') {
20
+ const matches = plan.deployments.filter(d => d.role === role);
21
+ if (matches.length !== 1) throw new Error(`GateTool plan must contain exactly one ${role} deployment`);
22
+ return matches[0];
23
+ }
24
+ /** Common semantic predicate; no lock, filesystem, finalSimulation or recorder lifecycle. */
25
+ export function assertPendingUupsPreparation(input: PendingUupsBindingInput, change: DeploymentChange, request: GateToolPreparationRequestV1, plan: GateToolPreparationPlanV1): void {
26
+ const implementation = planDeployment(plan, 'implementation'), proxy = planDeployment(plan, 'proxy');
27
+ if (change.stepId !== input.stepId || change.instanceId !== input.instanceId || change.kind !== 'deploy' || change.actualContract !== input.actualContract || change.contractInfoKey !== input.contractInfoKey || change.strategy !== 'create2' || change.proxyKind !== 'uups'
28
+ || !sameAddress(change.factory, input.factory) || !sameAddress(change.multicall, input.multicall) || change.salt?.toLowerCase() !== input.proxySalt.toLowerCase() || !sameAddress(change.placeholderImplementationAddress, input.placeholderImplementationAddress)
29
+ || (input.expectedAddress && !sameAddress(input.expectedAddress, proxy.address))
30
+ || plan.kind !== 'uups-placeholder-deploy' || plan.scheme !== input.scheme || plan.target !== input.network
31
+ || request.kind !== 'uups-placeholder-deploy' || request.scheme !== input.scheme || request.target !== input.network
32
+ || request.network !== plan.network || plan.contract !== request.contract || plan.artifact.contractName !== input.actualContract
33
+ || hashPreparationRequest(request) !== plan.requestHash || !sameAddress(request.factory, input.factory)
34
+ || request.proxySalt.toLowerCase() !== input.proxySalt.toLowerCase() || request.implementationSalt.toLowerCase() !== change.implementationSalt?.toLowerCase()
35
+ || !sameAddress(request.placeholderImplementation, input.placeholderImplementationAddress)
36
+ || !sameAddress(proxy.address, change.address ?? change.predictedAddress) || proxy.salt.toLowerCase() !== input.proxySalt.toLowerCase()
37
+ || !sameAddress(implementation.address, change.implementationAddress) || implementation.salt.toLowerCase() !== change.implementationSalt?.toLowerCase()
38
+ || !/^[0-9a-f]{64}$/.test(plan.artifact.digest)) throw new Error('Pending GateTool evidence does not match the current UUPS deployment');
39
+ }
40
+ export async function assertPendingUupsCurrentState(input: Pick<PendingUupsBindingInput, 'provider' | 'blockTag'>, proxy: string, implementation: string): Promise<void> {
41
+ const [proxyCode, implementationCode, current] = await Promise.all([input.provider.getCode(proxy, input.blockTag), input.provider.getCode(implementation, input.blockTag), getERC1967Implementation(input.provider, proxy, input.blockTag)]);
42
+ if (!proxyCode || proxyCode === '0x' || !implementationCode || implementationCode === '0x' || !sameAddress(current, implementation)) throw new Error('Pending deployment does not match current on-chain UUPS state');
43
+ }