@aztec/ethereum 0.0.0-test.1 → 0.0.1-commit.1142ef1

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 (276) hide show
  1. package/dest/account.d.ts +2 -0
  2. package/dest/account.d.ts.map +1 -0
  3. package/dest/account.js +4 -0
  4. package/dest/chain.d.ts +1 -1
  5. package/dest/client.d.ts +6 -4
  6. package/dest/client.d.ts.map +1 -1
  7. package/dest/client.js +21 -3
  8. package/dest/config.d.ts +74 -16
  9. package/dest/config.d.ts.map +1 -1
  10. package/dest/config.js +144 -22
  11. package/dest/constants.d.ts +1 -1
  12. package/dest/contracts/empire_base.d.ts +25 -8
  13. package/dest/contracts/empire_base.d.ts.map +1 -1
  14. package/dest/contracts/empire_base.js +75 -2
  15. package/dest/contracts/empire_slashing_proposer.d.ts +67 -0
  16. package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -0
  17. package/dest/contracts/empire_slashing_proposer.js +209 -0
  18. package/dest/contracts/errors.d.ts +7 -0
  19. package/dest/contracts/errors.d.ts.map +1 -0
  20. package/dest/contracts/errors.js +12 -0
  21. package/dest/contracts/fee_asset_handler.d.ts +20 -0
  22. package/dest/contracts/fee_asset_handler.d.ts.map +1 -0
  23. package/dest/contracts/fee_asset_handler.js +57 -0
  24. package/dest/contracts/fee_juice.d.ts +6 -7
  25. package/dest/contracts/fee_juice.d.ts.map +1 -1
  26. package/dest/contracts/fee_juice.js +27 -20
  27. package/dest/contracts/governance.d.ts +43 -32
  28. package/dest/contracts/governance.d.ts.map +1 -1
  29. package/dest/contracts/governance.js +87 -84
  30. package/dest/contracts/governance_proposer.d.ts +17 -13
  31. package/dest/contracts/governance_proposer.d.ts.map +1 -1
  32. package/dest/contracts/governance_proposer.js +428 -25
  33. package/dest/contracts/gse.d.ts +32 -0
  34. package/dest/contracts/gse.d.ts.map +1 -0
  35. package/dest/contracts/gse.js +72 -0
  36. package/dest/contracts/inbox.d.ts +30 -0
  37. package/dest/contracts/inbox.d.ts.map +1 -0
  38. package/dest/contracts/inbox.js +49 -0
  39. package/dest/contracts/index.d.ts +10 -3
  40. package/dest/contracts/index.d.ts.map +1 -1
  41. package/dest/contracts/index.js +9 -2
  42. package/dest/contracts/multicall.d.ts +21 -0
  43. package/dest/contracts/multicall.d.ts.map +1 -0
  44. package/dest/contracts/multicall.js +156 -0
  45. package/dest/contracts/outbox.d.ts +41 -0
  46. package/dest/contracts/outbox.d.ts.map +1 -0
  47. package/dest/contracts/outbox.js +86 -0
  48. package/dest/contracts/registry.d.ts +10 -5
  49. package/dest/contracts/registry.d.ts.map +1 -1
  50. package/dest/contracts/registry.js +44 -16
  51. package/dest/contracts/rollup.d.ts +266 -53
  52. package/dest/contracts/rollup.d.ts.map +1 -1
  53. package/dest/contracts/rollup.js +1059 -116
  54. package/dest/contracts/slasher_contract.d.ts +44 -0
  55. package/dest/contracts/slasher_contract.d.ts.map +1 -0
  56. package/dest/contracts/slasher_contract.js +75 -0
  57. package/dest/contracts/tally_slashing_proposer.d.ts +140 -0
  58. package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -0
  59. package/dest/contracts/tally_slashing_proposer.js +313 -0
  60. package/dest/contracts/utils.d.ts +3 -0
  61. package/dest/contracts/utils.d.ts.map +1 -0
  62. package/dest/contracts/utils.js +11 -0
  63. package/dest/deploy_aztec_l1_contracts.d.ts +255 -0
  64. package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -0
  65. package/dest/deploy_aztec_l1_contracts.js +385 -0
  66. package/dest/deploy_l1_contract.d.ts +68 -0
  67. package/dest/deploy_l1_contract.d.ts.map +1 -0
  68. package/dest/deploy_l1_contract.js +312 -0
  69. package/dest/eth-signer/eth-signer.d.ts +21 -0
  70. package/dest/eth-signer/eth-signer.d.ts.map +1 -0
  71. package/dest/eth-signer/eth-signer.js +5 -0
  72. package/dest/eth-signer/index.d.ts +2 -0
  73. package/dest/eth-signer/index.d.ts.map +1 -0
  74. package/dest/eth-signer/index.js +1 -0
  75. package/dest/forwarder_proxy.d.ts +32 -0
  76. package/dest/forwarder_proxy.d.ts.map +1 -0
  77. package/dest/forwarder_proxy.js +93 -0
  78. package/dest/l1_artifacts.d.ts +79812 -0
  79. package/dest/l1_artifacts.d.ts.map +1 -0
  80. package/dest/l1_artifacts.js +166 -0
  81. package/dest/l1_contract_addresses.d.ts +24 -4
  82. package/dest/l1_contract_addresses.d.ts.map +1 -1
  83. package/dest/l1_contract_addresses.js +25 -21
  84. package/dest/l1_reader.d.ts +4 -2
  85. package/dest/l1_reader.d.ts.map +1 -1
  86. package/dest/l1_reader.js +14 -8
  87. package/dest/l1_tx_utils/config.d.ts +59 -0
  88. package/dest/l1_tx_utils/config.d.ts.map +1 -0
  89. package/dest/l1_tx_utils/config.js +96 -0
  90. package/dest/l1_tx_utils/constants.d.ts +12 -0
  91. package/dest/l1_tx_utils/constants.d.ts.map +1 -0
  92. package/dest/l1_tx_utils/constants.js +39 -0
  93. package/dest/l1_tx_utils/factory.d.ts +24 -0
  94. package/dest/l1_tx_utils/factory.d.ts.map +1 -0
  95. package/dest/l1_tx_utils/factory.js +12 -0
  96. package/dest/l1_tx_utils/fee-strategies/index.d.ts +10 -0
  97. package/dest/l1_tx_utils/fee-strategies/index.d.ts.map +1 -0
  98. package/dest/l1_tx_utils/fee-strategies/index.js +12 -0
  99. package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts +8 -0
  100. package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts.map +1 -0
  101. package/dest/l1_tx_utils/fee-strategies/p75_competitive.js +129 -0
  102. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts +23 -0
  103. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts.map +1 -0
  104. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.js +191 -0
  105. package/dest/l1_tx_utils/fee-strategies/types.d.ts +51 -0
  106. package/dest/l1_tx_utils/fee-strategies/types.d.ts.map +1 -0
  107. package/dest/l1_tx_utils/fee-strategies/types.js +3 -0
  108. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +41 -0
  109. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -0
  110. package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +48 -0
  111. package/dest/l1_tx_utils/index-blobs.d.ts +3 -0
  112. package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -0
  113. package/dest/l1_tx_utils/index-blobs.js +2 -0
  114. package/dest/l1_tx_utils/index.d.ts +12 -0
  115. package/dest/l1_tx_utils/index.d.ts.map +1 -0
  116. package/dest/l1_tx_utils/index.js +12 -0
  117. package/dest/l1_tx_utils/interfaces.d.ts +76 -0
  118. package/dest/l1_tx_utils/interfaces.d.ts.map +1 -0
  119. package/dest/l1_tx_utils/interfaces.js +4 -0
  120. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts +233 -0
  121. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts.map +1 -0
  122. package/dest/l1_tx_utils/l1_fee_analyzer.js +506 -0
  123. package/dest/l1_tx_utils/l1_tx_utils.d.ts +94 -0
  124. package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -0
  125. package/dest/l1_tx_utils/l1_tx_utils.js +623 -0
  126. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts +26 -0
  127. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts.map +1 -0
  128. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.js +26 -0
  129. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +83 -0
  130. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -0
  131. package/dest/l1_tx_utils/readonly_l1_tx_utils.js +323 -0
  132. package/dest/l1_tx_utils/signer.d.ts +4 -0
  133. package/dest/l1_tx_utils/signer.d.ts.map +1 -0
  134. package/dest/l1_tx_utils/signer.js +16 -0
  135. package/dest/l1_tx_utils/types.d.ts +67 -0
  136. package/dest/l1_tx_utils/types.d.ts.map +1 -0
  137. package/dest/l1_tx_utils/types.js +26 -0
  138. package/dest/l1_tx_utils/utils.d.ts +4 -0
  139. package/dest/l1_tx_utils/utils.d.ts.map +1 -0
  140. package/dest/l1_tx_utils/utils.js +14 -0
  141. package/dest/l1_types.d.ts +6 -0
  142. package/dest/l1_types.d.ts.map +1 -0
  143. package/dest/l1_types.js +1 -0
  144. package/dest/publisher_manager.d.ts +15 -0
  145. package/dest/publisher_manager.d.ts.map +1 -0
  146. package/dest/publisher_manager.js +88 -0
  147. package/dest/queries.d.ts +4 -2
  148. package/dest/queries.d.ts.map +1 -1
  149. package/dest/queries.js +58 -12
  150. package/dest/test/chain_monitor.d.ts +75 -0
  151. package/dest/test/chain_monitor.d.ts.map +1 -0
  152. package/dest/test/chain_monitor.js +213 -0
  153. package/dest/test/delayed_tx_utils.d.ts +8 -3
  154. package/dest/test/delayed_tx_utils.d.ts.map +1 -1
  155. package/dest/test/delayed_tx_utils.js +13 -6
  156. package/dest/test/eth_cheat_codes.d.ts +217 -0
  157. package/dest/test/eth_cheat_codes.d.ts.map +1 -0
  158. package/dest/test/eth_cheat_codes.js +560 -0
  159. package/dest/test/eth_cheat_codes_with_state.d.ts +2 -2
  160. package/dest/test/eth_cheat_codes_with_state.d.ts.map +1 -1
  161. package/dest/test/eth_cheat_codes_with_state.js +1 -1
  162. package/dest/test/index.d.ts +4 -1
  163. package/dest/test/index.d.ts.map +1 -1
  164. package/dest/test/index.js +3 -0
  165. package/dest/test/rollup_cheat_codes.d.ts +88 -0
  166. package/dest/test/rollup_cheat_codes.d.ts.map +1 -0
  167. package/dest/test/rollup_cheat_codes.js +283 -0
  168. package/dest/test/start_anvil.d.ts +9 -1
  169. package/dest/test/start_anvil.d.ts.map +1 -1
  170. package/dest/test/start_anvil.js +16 -7
  171. package/dest/test/tx_delayer.d.ts +18 -7
  172. package/dest/test/tx_delayer.d.ts.map +1 -1
  173. package/dest/test/tx_delayer.js +97 -20
  174. package/dest/test/upgrade_utils.d.ts +6 -5
  175. package/dest/test/upgrade_utils.d.ts.map +1 -1
  176. package/dest/test/upgrade_utils.js +23 -16
  177. package/dest/types.d.ts +62 -8
  178. package/dest/types.d.ts.map +1 -1
  179. package/dest/types.js +3 -1
  180. package/dest/utils.d.ts +16 -3
  181. package/dest/utils.d.ts.map +1 -1
  182. package/dest/utils.js +61 -88
  183. package/dest/zkPassportVerifierAddress.d.ts +15 -0
  184. package/dest/zkPassportVerifierAddress.d.ts.map +1 -0
  185. package/dest/zkPassportVerifierAddress.js +11 -0
  186. package/package.json +50 -23
  187. package/src/account.ts +5 -0
  188. package/src/client.ts +43 -5
  189. package/src/config.ts +196 -31
  190. package/src/contracts/empire_base.ts +77 -7
  191. package/src/contracts/empire_slashing_proposer.ts +270 -0
  192. package/src/contracts/errors.ts +13 -0
  193. package/src/contracts/fee_asset_handler.ts +64 -0
  194. package/src/contracts/fee_juice.ts +29 -15
  195. package/src/contracts/governance.ts +80 -77
  196. package/src/contracts/governance_proposer.ts +71 -24
  197. package/src/contracts/gse.ts +88 -0
  198. package/src/contracts/inbox.ts +68 -0
  199. package/src/contracts/index.ts +9 -2
  200. package/src/contracts/multicall.ts +155 -0
  201. package/src/contracts/outbox.ts +98 -0
  202. package/src/contracts/registry.ts +51 -26
  203. package/src/contracts/rollup.ts +784 -90
  204. package/src/contracts/slasher_contract.ts +89 -0
  205. package/src/contracts/tally_slashing_proposer.ts +318 -0
  206. package/src/contracts/utils.ts +14 -0
  207. package/src/deploy_aztec_l1_contracts.ts +605 -0
  208. package/src/deploy_l1_contract.ts +362 -0
  209. package/src/eth-signer/eth-signer.ts +25 -0
  210. package/src/eth-signer/index.ts +1 -0
  211. package/src/forwarder_proxy.ts +108 -0
  212. package/src/l1_artifacts.ts +254 -0
  213. package/src/l1_contract_addresses.ts +49 -34
  214. package/src/l1_reader.ts +17 -9
  215. package/src/l1_tx_utils/README.md +177 -0
  216. package/src/l1_tx_utils/config.ts +161 -0
  217. package/src/l1_tx_utils/constants.ts +29 -0
  218. package/src/l1_tx_utils/factory.ts +64 -0
  219. package/src/l1_tx_utils/fee-strategies/index.ts +22 -0
  220. package/src/l1_tx_utils/fee-strategies/p75_competitive.ts +163 -0
  221. package/src/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.ts +245 -0
  222. package/src/l1_tx_utils/fee-strategies/types.ts +56 -0
  223. package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +119 -0
  224. package/src/l1_tx_utils/index-blobs.ts +2 -0
  225. package/src/l1_tx_utils/index.ts +14 -0
  226. package/src/l1_tx_utils/interfaces.ts +86 -0
  227. package/src/l1_tx_utils/l1_fee_analyzer.ts +803 -0
  228. package/src/l1_tx_utils/l1_tx_utils.ts +738 -0
  229. package/src/l1_tx_utils/l1_tx_utils_with_blobs.ts +77 -0
  230. package/src/l1_tx_utils/readonly_l1_tx_utils.ts +419 -0
  231. package/src/l1_tx_utils/signer.ts +28 -0
  232. package/src/l1_tx_utils/types.ts +85 -0
  233. package/src/l1_tx_utils/utils.ts +16 -0
  234. package/src/l1_types.ts +6 -0
  235. package/src/publisher_manager.ts +106 -0
  236. package/src/queries.ts +79 -15
  237. package/src/test/chain_monitor.ts +245 -0
  238. package/src/test/delayed_tx_utils.ts +34 -6
  239. package/src/test/eth_cheat_codes.ts +588 -0
  240. package/src/test/eth_cheat_codes_with_state.ts +1 -1
  241. package/src/test/index.ts +3 -0
  242. package/src/test/rollup_cheat_codes.ts +321 -0
  243. package/src/test/start_anvil.ts +24 -5
  244. package/src/test/tx_delayer.ts +130 -27
  245. package/src/test/upgrade_utils.ts +30 -21
  246. package/src/types.ts +71 -7
  247. package/src/utils.ts +79 -91
  248. package/src/zkPassportVerifierAddress.ts +15 -0
  249. package/dest/contracts/forwarder.d.ts +0 -24
  250. package/dest/contracts/forwarder.d.ts.map +0 -1
  251. package/dest/contracts/forwarder.js +0 -101
  252. package/dest/contracts/slashing_proposer.d.ts +0 -21
  253. package/dest/contracts/slashing_proposer.d.ts.map +0 -1
  254. package/dest/contracts/slashing_proposer.js +0 -47
  255. package/dest/deploy_l1_contracts.d.ts +0 -21210
  256. package/dest/deploy_l1_contracts.d.ts.map +0 -1
  257. package/dest/deploy_l1_contracts.js +0 -687
  258. package/dest/eth_cheat_codes.d.ts +0 -147
  259. package/dest/eth_cheat_codes.d.ts.map +0 -1
  260. package/dest/eth_cheat_codes.js +0 -303
  261. package/dest/index.d.ts +0 -14
  262. package/dest/index.d.ts.map +0 -1
  263. package/dest/index.js +0 -13
  264. package/dest/l1_tx_utils.d.ts +0 -192
  265. package/dest/l1_tx_utils.d.ts.map +0 -1
  266. package/dest/l1_tx_utils.js +0 -641
  267. package/dest/l1_tx_utils_with_blobs.d.ts +0 -12
  268. package/dest/l1_tx_utils_with_blobs.d.ts.map +0 -1
  269. package/dest/l1_tx_utils_with_blobs.js +0 -64
  270. package/src/contracts/forwarder.ts +0 -132
  271. package/src/contracts/slashing_proposer.ts +0 -51
  272. package/src/deploy_l1_contracts.ts +0 -948
  273. package/src/eth_cheat_codes.ts +0 -314
  274. package/src/index.ts +0 -13
  275. package/src/l1_tx_utils.ts +0 -847
  276. package/src/l1_tx_utils_with_blobs.ts +0 -86
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empire_slashing_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/empire_slashing_proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAK3D,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAGL,KAAK,GAAG,EACR,KAAK,GAAG,EACR,KAAK,mBAAmB,EAGzB,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,KAAK,WAAW,EAA8D,MAAM,kBAAkB,CAAC;AAEhH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,YAAY,KAAK,EAAE,MAAM,EAExB;CACF;AAED,qBAAa,8BAA+B,SAAQ,YAAa,YAAW,WAAW;aAOnE,MAAM,EAAE,UAAU;IANpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+D;IACtF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsE;IAE/F,SAAgB,IAAI,WAAqB;IAEzC,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAQ1B;IAED,IAAW,OAAO,eAEjB;IAEM,aAAa,oBAEnB;IAEM,YAAY,oBAElB;IAEM,mBAAmB,oBAEzB;IAEM,yBAAyB,oBAE/B;IAEM,eAAe,oBAErB;IAEM,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAErD;IAEM,WAAW,2BAEjB;IAEY,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,cAAc,EAAE,UAAU,CAAC;QAAC,sBAAsB,EAAE,GAAG,CAAC;QAAC,aAAa,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAYjH;IAEM,iBAAiB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAEzF;IAEM,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW,CAKpD;IAEY,gCAAgC,CAC3C,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,GACjD,OAAO,CAAC,WAAW,CAAC,CAatB;IAEM,2BAA2B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,+CAexG;IAEM,wBAAwB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,+CAcrG;IAEM,oBAAoB,CACzB,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,+CAehG;IAED,6EAA6E;IACtE,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAS1D;IAED,qEAAqE;IAC9D,+BAA+B,CAAC,IAAI,EAAE,GAAG,EAAE;;;;;;kBAEjD;IAED;;;;;;OAMG;IACI,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,sBAAsB,GAAE,MAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAavF;IAEY,YAAY,CACvB,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,UAAU,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,CAgDtD;CACF"}
@@ -0,0 +1,209 @@
1
+ import { SlotNumber } from '@aztec/foundation/branded-types';
2
+ import { EthAddress } from '@aztec/foundation/eth-address';
3
+ import { createLogger } from '@aztec/foundation/log';
4
+ import { retryUntil } from '@aztec/foundation/retry';
5
+ import { EmpireSlashingProposerAbi } from '@aztec/l1-artifacts/EmpireSlashingProposerAbi';
6
+ import EventEmitter from 'events';
7
+ import { encodeFunctionData, getContract } from 'viem';
8
+ import { FormattedViemError, tryExtractEvent } from '../utils.js';
9
+ import { encodeSignal, encodeSignalWithSignature, signSignalWithSig } from './empire_base.js';
10
+ export class ProposalAlreadyExecutedError extends Error {
11
+ constructor(round){
12
+ super(`Proposal already executed: ${round}`);
13
+ }
14
+ }
15
+ export class EmpireSlashingProposerContract extends EventEmitter {
16
+ client;
17
+ logger;
18
+ proposer;
19
+ type;
20
+ constructor(client, address){
21
+ super(), this.client = client, this.logger = createLogger('ethereum:contracts:empire_slashing_proposer'), this.type = 'empire';
22
+ this.proposer = getContract({
23
+ address: typeof address === 'string' ? address : address.toString(),
24
+ abi: EmpireSlashingProposerAbi,
25
+ client
26
+ });
27
+ }
28
+ get address() {
29
+ return EthAddress.fromString(this.proposer.address);
30
+ }
31
+ getQuorumSize() {
32
+ return this.proposer.read.QUORUM_SIZE();
33
+ }
34
+ getRoundSize() {
35
+ return this.proposer.read.ROUND_SIZE();
36
+ }
37
+ getLifetimeInRounds() {
38
+ return this.proposer.read.LIFETIME_IN_ROUNDS();
39
+ }
40
+ getExecutionDelayInRounds() {
41
+ return this.proposer.read.EXECUTION_DELAY_IN_ROUNDS();
42
+ }
43
+ getCurrentRound() {
44
+ return this.proposer.read.getCurrentRound();
45
+ }
46
+ computeRound(slot) {
47
+ return this.proposer.read.computeRound([
48
+ BigInt(slot)
49
+ ]);
50
+ }
51
+ getInstance() {
52
+ return this.proposer.read.getInstance();
53
+ }
54
+ async getRoundInfo(rollupAddress, round) {
55
+ const result = await this.proposer.read.getRoundData([
56
+ rollupAddress,
57
+ round
58
+ ]);
59
+ const [signalCount, quorum] = await Promise.all([
60
+ this.proposer.read.signalCount([
61
+ rollupAddress,
62
+ round,
63
+ result.payloadWithMostSignals
64
+ ]),
65
+ this.getQuorumSize()
66
+ ]);
67
+ return {
68
+ lastSignalSlot: SlotNumber.fromBigInt(result.lastSignalSlot),
69
+ payloadWithMostSignals: result.payloadWithMostSignals,
70
+ quorumReached: signalCount >= quorum,
71
+ executed: result.executed
72
+ };
73
+ }
74
+ getPayloadSignals(rollupAddress, round, payload) {
75
+ return this.proposer.read.signalCount([
76
+ rollupAddress,
77
+ round,
78
+ payload
79
+ ]);
80
+ }
81
+ createSignalRequest(payload) {
82
+ return {
83
+ to: this.address.toString(),
84
+ data: encodeSignal(payload)
85
+ };
86
+ }
87
+ async createSignalRequestWithSignature(payload, slot, chainId, signerAddress, signer) {
88
+ const signature = await signSignalWithSig(signer, payload, slot, await this.getInstance(), this.address.toString(), chainId);
89
+ return {
90
+ to: this.address.toString(),
91
+ data: encodeSignalWithSignature(payload, signature)
92
+ };
93
+ }
94
+ listenToSubmittablePayloads(callback) {
95
+ return this.proposer.watchEvent.PayloadSubmittable({}, {
96
+ strict: true,
97
+ onLogs: (logs)=>{
98
+ for (const log of logs){
99
+ const { payload, round } = log.args;
100
+ if (payload && round) {
101
+ callback({
102
+ payload,
103
+ round
104
+ });
105
+ }
106
+ }
107
+ }
108
+ });
109
+ }
110
+ listenToPayloadSubmitted(callback) {
111
+ return this.proposer.watchEvent.PayloadSubmitted({}, {
112
+ onLogs: (logs)=>{
113
+ for (const log of logs){
114
+ const { payload, round } = log.args;
115
+ if (round && payload) {
116
+ callback({
117
+ round,
118
+ payload
119
+ });
120
+ }
121
+ }
122
+ }
123
+ });
124
+ }
125
+ listenToSignalCasted(callback) {
126
+ return this.proposer.watchEvent.SignalCast({}, {
127
+ onLogs: (logs)=>{
128
+ for (const log of logs){
129
+ const { round, payload, signaler } = log.args;
130
+ if (round && payload && signaler) {
131
+ callback({
132
+ round,
133
+ payload,
134
+ signaler
135
+ });
136
+ }
137
+ }
138
+ }
139
+ });
140
+ }
141
+ /** Creates an L1TxRequest to submit the round winner for the given round. */ buildExecuteRoundRequest(round) {
142
+ return {
143
+ to: this.address.toString(),
144
+ data: encodeFunctionData({
145
+ abi: EmpireSlashingProposerAbi,
146
+ functionName: 'submitRoundWinner',
147
+ args: [
148
+ round
149
+ ]
150
+ })
151
+ };
152
+ }
153
+ /** Tries to extract a PayloadSubmitted event from the given logs. */ tryExtractPayloadSubmittedEvent(logs) {
154
+ return tryExtractEvent(logs, this.address.toString(), EmpireSlashingProposerAbi, 'PayloadSubmitted');
155
+ }
156
+ /**
157
+ * Wait for a round to be reached.
158
+ *
159
+ * @param round - The round to wait for.
160
+ * @param pollingIntervalSeconds - The interval in seconds to poll for the round.
161
+ * @returns True if the round was reached, false otherwise.
162
+ */ waitForRound(round, pollingIntervalSeconds = 1) {
163
+ return retryUntil(async ()=>{
164
+ const currentRound = await this.proposer.read.getCurrentRound().catch((e)=>{
165
+ this.logger.error('Error getting current round', e);
166
+ return undefined;
167
+ });
168
+ return currentRound !== undefined && currentRound >= round;
169
+ }, `Waiting for round ${round} to be reached`, 0, pollingIntervalSeconds).catch(()=>false);
170
+ }
171
+ async executeRound(txUtils, round) {
172
+ if (typeof round === 'number') {
173
+ round = BigInt(round);
174
+ }
175
+ const args = {
176
+ abi: EmpireSlashingProposerAbi,
177
+ functionName: 'submitRoundWinner',
178
+ args: [
179
+ round
180
+ ]
181
+ };
182
+ const data = encodeFunctionData(args);
183
+ const response = await txUtils.sendAndMonitorTransaction({
184
+ to: this.address.toString(),
185
+ data
186
+ }, {
187
+ // Gas estimation is way off for this, likely because we are creating the contract/selector to call
188
+ // for the actual slashing dynamically.
189
+ gasLimitBufferPercentage: 50
190
+ }).catch((err)=>{
191
+ if (err instanceof FormattedViemError && err.message.includes('ProposalAlreadyExecuted')) {
192
+ throw new ProposalAlreadyExecutedError(round);
193
+ }
194
+ throw err;
195
+ });
196
+ if (response.receipt.status === 'reverted') {
197
+ const error = await txUtils.tryGetErrorFromRevertedTx(data, {
198
+ ...args,
199
+ address: this.address.toString()
200
+ }, undefined, []);
201
+ if (error?.includes('ProposalAlreadyExecuted')) {
202
+ throw new ProposalAlreadyExecutedError(round);
203
+ }
204
+ const errorMessage = `Failed to execute round ${round}, TxHash: ${response.receipt.transactionHash}, Error: ${error ?? 'Unknown error'}`;
205
+ throw new Error(errorMessage);
206
+ }
207
+ return response;
208
+ }
209
+ }
@@ -0,0 +1,7 @@
1
+ export declare class BlockTagTooOldError extends Error {
2
+ constructor(blockTag: bigint | number, latestBlock: bigint | number);
3
+ }
4
+ export declare class NoCommitteeError extends Error {
5
+ constructor();
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBYSxtQkFBb0IsU0FBUSxLQUFLO0lBQzVDLFlBQVksUUFBUSxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBR2xFO0NBQ0Y7QUFFRCxxQkFBYSxnQkFBaUIsU0FBUSxLQUFLO0lBQ3pDLGNBR0M7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/contracts/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAGlE;CACF;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,cAGC;CACF"}
@@ -0,0 +1,12 @@
1
+ export class BlockTagTooOldError extends Error {
2
+ constructor(blockTag, latestBlock){
3
+ super(`Block tag ${blockTag} is more than 128 blocks behind the latest block ${latestBlock}`);
4
+ this.name = 'BlockTagTooOldError';
5
+ }
6
+ }
7
+ export class NoCommitteeError extends Error {
8
+ constructor(){
9
+ super('The committee does not exist on L1');
10
+ this.name = 'NoCommitteeError';
11
+ }
12
+ }
@@ -0,0 +1,20 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { type Hex } from 'viem';
3
+ import type { L1TxUtils } from '../l1_tx_utils/index.js';
4
+ import type { ViemClient } from '../types.js';
5
+ export declare class FeeAssetHandlerContract {
6
+ readonly client: ViemClient;
7
+ address: EthAddress;
8
+ constructor(client: ViemClient, address: Hex | EthAddress);
9
+ getOwner(): Promise<EthAddress>;
10
+ getMintAmount(): Promise<bigint>;
11
+ mint(txUtils: L1TxUtils, recipient: Hex | EthAddress): Promise<{
12
+ receipt: import("viem").TransactionReceipt;
13
+ state: import("../l1_tx_utils/types.js").L1TxState;
14
+ }>;
15
+ setMintAmount(txUtils: L1TxUtils, amount: bigint): Promise<{
16
+ receipt: import("viem").TransactionReceipt;
17
+ state: import("../l1_tx_utils/types.js").L1TxState;
18
+ }>;
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX2Fzc2V0X2hhbmRsZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvZmVlX2Fzc2V0X2hhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzNELE9BQU8sRUFBRSxLQUFLLEdBQUcsRUFBbUMsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlDLHFCQUFhLHVCQUF1QjthQUloQixNQUFNLEVBQUUsVUFBVTtJQUg3QixPQUFPLEVBQUUsVUFBVSxDQUFDO0lBRTNCLFlBQ2tCLE1BQU0sRUFBRSxVQUFVLEVBQ2xDLE9BQU8sRUFBRSxHQUFHLEdBQUcsVUFBVSxFQU0xQjtJQUVZLFFBQVEsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBTzNDO0lBRU0sYUFBYSxvQkFPbkI7SUFFTSxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxHQUFHLFVBQVU7OztPQVkxRDtJQUVNLGFBQWEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNOzs7T0FTdEQ7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fee_asset_handler.d.ts","sourceRoot":"","sources":["../../src/contracts/fee_asset_handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,KAAK,GAAG,EAAmC,MAAM,MAAM,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,qBAAa,uBAAuB;aAIhB,MAAM,EAAE,UAAU;IAH7B,OAAO,EAAE,UAAU,CAAC;IAE3B,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAM1B;IAEY,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,CAO3C;IAEM,aAAa,oBAOnB;IAEM,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,UAAU;;;OAY1D;IAEM,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;;;OAStD;CACF"}
@@ -0,0 +1,57 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { FeeAssetHandlerAbi } from '@aztec/l1-artifacts/FeeAssetHandlerAbi';
3
+ import { encodeFunctionData, getContract } from 'viem';
4
+ export class FeeAssetHandlerContract {
5
+ client;
6
+ address;
7
+ constructor(client, address){
8
+ this.client = client;
9
+ if (address instanceof EthAddress) {
10
+ address = address.toString();
11
+ }
12
+ this.address = EthAddress.fromString(address);
13
+ }
14
+ async getOwner() {
15
+ const contract = getContract({
16
+ abi: FeeAssetHandlerAbi,
17
+ address: this.address.toString(),
18
+ client: this.client
19
+ });
20
+ return EthAddress.fromString(await contract.read.owner());
21
+ }
22
+ getMintAmount() {
23
+ const contract = getContract({
24
+ abi: FeeAssetHandlerAbi,
25
+ address: this.address.toString(),
26
+ client: this.client
27
+ });
28
+ return contract.read.mintAmount();
29
+ }
30
+ mint(txUtils, recipient) {
31
+ if (recipient instanceof EthAddress) {
32
+ recipient = recipient.toString();
33
+ }
34
+ return txUtils.sendAndMonitorTransaction({
35
+ to: this.address.toString(),
36
+ data: encodeFunctionData({
37
+ abi: FeeAssetHandlerAbi,
38
+ functionName: 'mint',
39
+ args: [
40
+ recipient
41
+ ]
42
+ })
43
+ });
44
+ }
45
+ setMintAmount(txUtils, amount) {
46
+ return txUtils.sendAndMonitorTransaction({
47
+ to: this.address.toString(),
48
+ data: encodeFunctionData({
49
+ abi: FeeAssetHandlerAbi,
50
+ functionName: 'setMintAmount',
51
+ args: [
52
+ amount
53
+ ]
54
+ })
55
+ });
56
+ }
57
+ }
@@ -1,15 +1,14 @@
1
1
  import { EthAddress } from '@aztec/foundation/eth-address';
2
2
  import { type Hex } from 'viem';
3
- import type { L1Clients } from '../types.js';
3
+ import { type ViemClient } from '../types.js';
4
4
  export declare class FeeJuiceContract {
5
- readonly publicClient: L1Clients['publicClient'];
6
- readonly walletClient: L1Clients['walletClient'] | undefined;
7
- private readonly publicFeeJuice;
8
- private readonly walletFeeJuice;
9
- constructor(address: Hex, publicClient: L1Clients['publicClient'], walletClient: L1Clients['walletClient'] | undefined);
5
+ readonly client: ViemClient;
6
+ private readonly feeJuiceContract;
7
+ constructor(address: Hex | EthAddress, client: ViemClient);
10
8
  get address(): EthAddress;
9
+ getOwner(): Promise<EthAddress>;
11
10
  private assertWalletFeeJuice;
12
11
  mint(to: Hex, amount: bigint): Promise<void>;
13
12
  approve(spender: Hex, amount: bigint): Promise<void>;
14
13
  }
15
- //# sourceMappingURL=fee_juice.d.ts.map
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX2p1aWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2ZlZV9qdWljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUE4QixLQUFLLEdBQUcsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUV6RSxPQUFPLEVBQWlDLEtBQUssVUFBVSxFQUFvQixNQUFNLGFBQWEsQ0FBQztBQUUvRixxQkFBYSxnQkFBZ0I7YUFLVCxNQUFNLEVBQUUsVUFBVTtJQUpwQyxPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUF3RDtJQUV6RixZQUNFLE9BQU8sRUFBRSxHQUFHLEdBQUcsVUFBVSxFQUNULE1BQU0sRUFBRSxVQUFVLEVBTW5DO0lBRUQsSUFBVyxPQUFPLGVBRWpCO0lBRVksUUFBUSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FFM0M7SUFFRCxPQUFPLENBQUMsb0JBQW9CO0lBT2YsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBU3hDO0lBRVksT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBU2hEO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"fee_juice.d.ts","sourceRoot":"","sources":["../../src/contracts/fee_juice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAA8B,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;AAEzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,qBAAa,gBAAgB;aAMT,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC;aACvC,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS;IANrE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuE;IACtG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmF;gBAGhH,OAAO,EAAE,GAAG,EACI,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,EACvC,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS;IAMrE,IAAW,OAAO,eAEjB;IAED,OAAO,CAAC,oBAAoB;IAOf,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM;IAM5B,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM;CAKlD"}
1
+ {"version":3,"file":"fee_juice.d.ts","sourceRoot":"","sources":["../../src/contracts/fee_juice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAA8B,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;AAEzE,OAAO,EAAiC,KAAK,UAAU,EAAoB,MAAM,aAAa,CAAC;AAE/F,qBAAa,gBAAgB;aAKT,MAAM,EAAE,UAAU;IAJpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwD;IAEzF,YACE,OAAO,EAAE,GAAG,GAAG,UAAU,EACT,MAAM,EAAE,UAAU,EAMnC;IAED,IAAW,OAAO,eAEjB;IAEY,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,CAE3C;IAED,OAAO,CAAC,oBAAoB;IAOf,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,iBASxC;IAEY,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,iBAShD;CACF"}
@@ -1,33 +1,32 @@
1
1
  import { EthAddress } from '@aztec/foundation/eth-address';
2
- import { TestERC20Abi as FeeJuiceAbi } from '@aztec/l1-artifacts';
2
+ import { TestERC20Abi as FeeJuiceAbi } from '@aztec/l1-artifacts/TestERC20Abi';
3
3
  import { getContract } from 'viem';
4
+ import { isExtendedClient } from '../types.js';
4
5
  export class FeeJuiceContract {
5
- publicClient;
6
- walletClient;
7
- publicFeeJuice;
8
- walletFeeJuice;
9
- constructor(address, publicClient, walletClient){
10
- this.publicClient = publicClient;
11
- this.walletClient = walletClient;
12
- this.publicFeeJuice = getContract({
6
+ client;
7
+ feeJuiceContract;
8
+ constructor(address, client){
9
+ this.client = client;
10
+ if (address instanceof EthAddress) {
11
+ address = address.toString();
12
+ }
13
+ this.feeJuiceContract = getContract({
13
14
  address,
14
15
  abi: FeeJuiceAbi,
15
- client: publicClient
16
+ client
16
17
  });
17
- this.walletFeeJuice = walletClient ? getContract({
18
- address,
19
- abi: FeeJuiceAbi,
20
- client: walletClient
21
- }) : undefined;
22
18
  }
23
19
  get address() {
24
- return EthAddress.fromString(this.publicFeeJuice.address);
20
+ return EthAddress.fromString(this.feeJuiceContract.address);
21
+ }
22
+ async getOwner() {
23
+ return EthAddress.fromString(await this.feeJuiceContract.read.owner());
25
24
  }
26
25
  assertWalletFeeJuice() {
27
- if (!this.walletFeeJuice) {
26
+ if (!isExtendedClient(this.client)) {
28
27
  throw new Error('Wallet client is required for this operation');
29
28
  }
30
- return this.walletFeeJuice;
29
+ return this.feeJuiceContract;
31
30
  }
32
31
  async mint(to, amount) {
33
32
  const walletFeeJuice = this.assertWalletFeeJuice();
@@ -35,9 +34,13 @@ export class FeeJuiceContract {
35
34
  to,
36
35
  amount
37
36
  ]);
38
- await this.publicClient.waitForTransactionReceipt({
37
+ const receipt = await this.client.waitForTransactionReceipt({
39
38
  hash: tx
40
39
  });
40
+ if (receipt.status === 'success') {
41
+ return;
42
+ }
43
+ throw new Error('Mint failed');
41
44
  }
42
45
  async approve(spender, amount) {
43
46
  const walletFeeJuice = this.assertWalletFeeJuice();
@@ -45,8 +48,12 @@ export class FeeJuiceContract {
45
48
  spender,
46
49
  amount
47
50
  ]);
48
- await this.publicClient.waitForTransactionReceipt({
51
+ const receipt = await this.client.waitForTransactionReceipt({
49
52
  hash: tx
50
53
  });
54
+ if (receipt.status === 'success') {
55
+ return;
56
+ }
57
+ throw new Error('Approve failed');
51
58
  }
52
59
  }
@@ -1,9 +1,9 @@
1
1
  import { EthAddress } from '@aztec/foundation/eth-address';
2
2
  import type { Logger } from '@aztec/foundation/log';
3
- import { type Hex } from 'viem';
3
+ import { GovernanceAbi } from '@aztec/l1-artifacts/GovernanceAbi';
4
+ import { type GetContractReturnType, type Hex, type Log } from 'viem';
4
5
  import type { L1ContractAddresses } from '../l1_contract_addresses.js';
5
- import type { ViemPublicClient, ViemWalletClient } from '../types.js';
6
- import { GovernanceProposerContract } from './governance_proposer.js';
6
+ import { type ExtendedViemWalletClient, type ViemClient } from '../types.js';
7
7
  export type L1GovernanceContractAddresses = Pick<L1ContractAddresses, 'governanceAddress' | 'rollupAddress' | 'registryAddress' | 'governanceProposerAddress'>;
8
8
  export declare enum ProposalState {
9
9
  Pending = 0,
@@ -15,45 +15,46 @@ export declare enum ProposalState {
15
15
  Dropped = 6,
16
16
  Expired = 7
17
17
  }
18
- export declare class GovernanceContract {
19
- readonly publicClient: ViemPublicClient;
20
- readonly walletClient: ViemWalletClient | undefined;
21
- private readonly publicGovernance;
22
- private readonly walletGovernance;
23
- constructor(address: Hex, publicClient: ViemPublicClient, walletClient: ViemWalletClient | undefined);
18
+ export declare function extractProposalIdFromLogs(logs: Log[]): bigint;
19
+ export declare class ReadOnlyGovernanceContract {
20
+ readonly client: ViemClient;
21
+ protected readonly governanceContract: GetContractReturnType<typeof GovernanceAbi, ViemClient>;
22
+ constructor(address: Hex, client: ViemClient);
24
23
  get address(): EthAddress;
25
- getProposer(): Promise<GovernanceProposerContract>;
26
- getGovernanceAddresses(): Promise<L1GovernanceContractAddresses>;
24
+ getGovernanceProposerAddress(): Promise<EthAddress>;
25
+ getConfiguration(): Promise<{
26
+ executionDelay: bigint;
27
+ gracePeriod: bigint;
28
+ minimumVotes: bigint;
29
+ proposeConfig: {
30
+ lockAmount: bigint;
31
+ lockDelay: bigint;
32
+ };
33
+ quorum: bigint;
34
+ requiredYeaMargin: bigint;
35
+ votingDelay: bigint;
36
+ votingDuration: bigint;
37
+ }>;
27
38
  getProposal(proposalId: bigint): Promise<{
39
+ cachedState: number;
28
40
  config: {
29
- proposeConfig: {
30
- lockDelay: bigint;
31
- lockAmount: bigint;
32
- };
33
- votingDelay: bigint;
34
- votingDuration: bigint;
35
41
  executionDelay: bigint;
36
42
  gracePeriod: bigint;
37
- quorum: bigint;
38
- voteDifferential: bigint;
39
43
  minimumVotes: bigint;
44
+ quorum: bigint;
45
+ requiredYeaMargin: bigint;
46
+ votingDelay: bigint;
47
+ votingDuration: bigint;
40
48
  };
41
- state: number;
42
- payload: `0x${string}`;
43
- governanceProposer: `0x${string}`;
44
49
  creation: bigint;
50
+ payload: `0x${string}`;
51
+ proposer: `0x${string}`;
45
52
  summedBallot: {
53
+ nay: bigint;
46
54
  yea: bigint;
47
- nea: bigint;
48
55
  };
49
56
  }>;
50
57
  getProposalState(proposalId: bigint): Promise<ProposalState>;
51
- private assertWalletGovernance;
52
- deposit(onBehalfOf: Hex, amount: bigint): Promise<void>;
53
- proposeWithLock({ payloadAddress, withdrawAddress, }: {
54
- payloadAddress: Hex;
55
- withdrawAddress: Hex;
56
- }): Promise<number>;
57
58
  awaitProposalActive({ proposalId, logger }: {
58
59
  proposalId: bigint;
59
60
  logger: Logger;
@@ -62,18 +63,28 @@ export declare class GovernanceContract {
62
63
  proposalId: bigint;
63
64
  logger: Logger;
64
65
  }): Promise<void>;
66
+ }
67
+ export declare class GovernanceContract extends ReadOnlyGovernanceContract {
68
+ readonly client: ExtendedViemWalletClient;
69
+ protected readonly governanceContract: GetContractReturnType<typeof GovernanceAbi, ExtendedViemWalletClient>;
70
+ constructor(address: Hex | EthAddress, client: ExtendedViemWalletClient);
71
+ deposit(onBehalfOf: Hex, amount: bigint): Promise<void>;
72
+ proposeWithLock({ payloadAddress, withdrawAddress }: {
73
+ payloadAddress: Hex;
74
+ withdrawAddress: Hex;
75
+ }): Promise<bigint>;
65
76
  getPower(): Promise<bigint>;
66
- vote({ proposalId, voteAmount, inFavor, retries, logger, }: {
77
+ vote({ proposalId, voteAmount, inFavor, retries, logger }: {
67
78
  proposalId: bigint;
68
79
  voteAmount: bigint | undefined;
69
80
  inFavor: boolean;
70
81
  retries: number;
71
82
  logger: Logger;
72
83
  }): Promise<void>;
73
- executeProposal({ proposalId, retries, logger, }: {
84
+ executeProposal({ proposalId, retries, logger }: {
74
85
  proposalId: bigint;
75
86
  retries: number;
76
87
  logger: Logger;
77
88
  }): Promise<void>;
78
89
  }
79
- //# sourceMappingURL=governance.d.ts.map
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9nb3Zlcm5hbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbEUsT0FBTyxFQUVMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssR0FBRyxFQUNSLEtBQUssR0FBRyxFQUlULE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsS0FBSyx3QkFBd0IsRUFBRSxLQUFLLFVBQVUsRUFBb0IsTUFBTSxhQUFhLENBQUM7QUFFL0YsTUFBTSxNQUFNLDZCQUE2QixHQUFHLElBQUksQ0FDOUMsbUJBQW1CLEVBQ25CLG1CQUFtQixHQUFHLGVBQWUsR0FBRyxpQkFBaUIsR0FBRywyQkFBMkIsQ0FDeEYsQ0FBQztBQUdGLG9CQUFZLGFBQWE7SUFDdkIsT0FBTyxJQUFBO0lBQ1AsTUFBTSxJQUFBO0lBQ04sTUFBTSxJQUFBO0lBQ04sVUFBVSxJQUFBO0lBQ1YsUUFBUSxJQUFBO0lBQ1IsUUFBUSxJQUFBO0lBQ1IsT0FBTyxJQUFBO0lBQ1AsT0FBTyxJQUFBO0NBQ1I7QUFFRCx3QkFBZ0IseUJBQXlCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FXN0Q7QUFFRCxxQkFBYSwwQkFBMEI7YUFLbkIsTUFBTSxFQUFFLFVBQVU7SUFKcEMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUUvRixZQUNFLE9BQU8sRUFBRSxHQUFHLEVBQ0ksTUFBTSxFQUFFLFVBQVUsRUFHbkM7SUFFRCxJQUFXLE9BQU8sZUFFakI7SUFFWSw0QkFBNEIsd0JBRXhDO0lBRU0sZ0JBQWdCOzs7Ozs7Ozs7Ozs7T0FFdEI7SUFFTSxXQUFXLENBQUMsVUFBVSxFQUFFLE1BQU07Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUVwQztJQUVZLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQU94RTtJQUVZLG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQztRQUFDLE1BQU0sRUFBRSxNQUFNLENBQUE7S0FBRSxpQkFvQjlGO0lBRVksdUJBQXVCLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDO1FBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQTtLQUFFLGlCQXlCbEc7Q0FDRjtBQUVELHFCQUFhLGtCQUFtQixTQUFRLDBCQUEwQjthQUtyQyxNQUFNLEVBQUUsd0JBQXdCO0lBSjNELG1CQUE0QixrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLGFBQWEsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBRXRILFlBQ0UsT0FBTyxFQUFFLEdBQUcsR0FBRyxVQUFVLEVBQ0EsTUFBTSxFQUFFLHdCQUF3QixFQVUxRDtJQUVZLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUduRDtJQUVZLGVBQWUsQ0FBQyxFQUMzQixjQUFjLEVBQ2QsZUFBZSxFQUNoQixFQUFFO1FBQ0QsY0FBYyxFQUFFLEdBQUcsQ0FBQztRQUNwQixlQUFlLEVBQUUsR0FBRyxDQUFDO0tBQ3RCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQU9sQjtJQUVZLFFBQVEsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBR3ZDO0lBRVksSUFBSSxDQUFDLEVBQ2hCLFVBQVUsRUFDVixVQUFVLEVBQ1YsT0FBTyxFQUNQLE9BQVksRUFDWixNQUFNLEVBQ1AsRUFBRTtRQUNELFVBQVUsRUFBRSxNQUFNLENBQUM7UUFDbkIsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDL0IsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUNqQixPQUFPLEVBQUUsTUFBTSxDQUFDO1FBQ2hCLE1BQU0sRUFBRSxNQUFNLENBQUM7S0FDaEIsaUJBK0NBO0lBRVksZUFBZSxDQUFDLEVBQzNCLFVBQVUsRUFDVixPQUFZLEVBQ1osTUFBTSxFQUNQLEVBQUU7UUFDRCxVQUFVLEVBQUUsTUFBTSxDQUFDO1FBQ25CLE9BQU8sRUFBRSxNQUFNLENBQUM7UUFDaEIsTUFBTSxFQUFFLE1BQU0sQ0FBQztLQUNoQixpQkF5Q0E7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/contracts/governance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAGL,KAAK,GAAG,EAGT,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,mBAAmB,EACnB,mBAAmB,GAAG,eAAe,GAAG,iBAAiB,GAAG,2BAA2B,CACxF,CAAC;AAGF,oBAAY,aAAa;IACvB,OAAO,IAAA;IACP,MAAM,IAAA;IACN,MAAM,IAAA;IACN,UAAU,IAAA;IACV,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED,qBAAa,kBAAkB;aAMX,YAAY,EAAE,gBAAgB;aAC9B,YAAY,EAAE,gBAAgB,GAAG,SAAS;IAN5D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgE;IACjG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4E;gBAG3G,OAAO,EAAE,GAAG,EACI,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,gBAAgB,GAAG,SAAS;IAQ5D,IAAW,OAAO,eAEjB;IAEY,WAAW;IAKX,sBAAsB,IAAI,OAAO,CAAC,6BAA6B,CAAC;IActE,WAAW,CAAC,UAAU,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;IAIxB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAQzE,OAAO,CAAC,sBAAsB;IAOjB,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM;IAMvC,eAAe,CAAC,EAC3B,cAAc,EACd,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,GAAG,CAAC;QACpB,eAAe,EAAE,GAAG,CAAC;KACtB,GAAG,OAAO,CAAC,MAAM,CAAC;IAYN,mBAAmB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAsBlF,uBAAuB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IA2BtF,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAM3B,IAAI,CAAC,EAChB,UAAU,EACV,UAAU,EACV,OAAO,EACP,OAAY,EACZ,MAAM,GACP,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB;IAkDY,eAAe,CAAC,EAC3B,UAAU,EACV,OAAY,EACZ,MAAM,GACP,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB;CA2CF"}
1
+ {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/contracts/governance.ts"],"names":[],"mappings":"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"}