@aztec/aztec.js 0.0.0-test.1 → 0.0.1-commit.5daedc8

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 (403) hide show
  1. package/README.md +1 -1
  2. package/dest/account/account.d.ts +59 -0
  3. package/dest/account/account.d.ts.map +1 -0
  4. package/dest/account/account.js +59 -0
  5. package/dest/account/account_contract.d.ts +43 -0
  6. package/dest/account/account_contract.d.ts.map +1 -0
  7. package/dest/account/{contract.js → account_contract.js} +7 -4
  8. package/dest/account/account_with_secret_key.d.ts +24 -0
  9. package/dest/account/account_with_secret_key.d.ts.map +1 -0
  10. package/dest/{wallet/account_wallet_with_private_key.js → account/account_with_secret_key.js} +5 -5
  11. package/dest/account/index.d.ts +4 -8
  12. package/dest/account/index.d.ts.map +1 -1
  13. package/dest/account/index.js +2 -6
  14. package/dest/account/interface.d.ts +2 -14
  15. package/dest/account/interface.d.ts.map +1 -1
  16. package/dest/account/interface.js +1 -0
  17. package/dest/account/signerless_account.d.ts +23 -0
  18. package/dest/account/signerless_account.d.ts.map +1 -0
  19. package/dest/account/signerless_account.js +27 -0
  20. package/dest/api/abi.d.ts +3 -2
  21. package/dest/api/abi.d.ts.map +1 -1
  22. package/dest/api/abi.js +1 -1
  23. package/dest/api/account.d.ts +7 -3
  24. package/dest/api/account.d.ts.map +1 -1
  25. package/dest/api/account.js +4 -1
  26. package/dest/api/addresses.d.ts +2 -1
  27. package/dest/api/addresses.d.ts.map +1 -1
  28. package/dest/api/addresses.js +1 -0
  29. package/dest/api/authorization.d.ts +5 -0
  30. package/dest/api/authorization.d.ts.map +1 -0
  31. package/dest/api/authorization.js +4 -0
  32. package/dest/api/block.d.ts +3 -0
  33. package/dest/api/block.d.ts.map +1 -0
  34. package/dest/api/block.js +2 -0
  35. package/dest/api/contract.d.ts +49 -0
  36. package/dest/api/contract.d.ts.map +1 -0
  37. package/dest/{contract/index.js → api/contract.js} +15 -11
  38. package/dest/api/crypto.d.ts +2 -0
  39. package/dest/api/crypto.d.ts.map +1 -0
  40. package/dest/api/crypto.js +1 -0
  41. package/dest/api/deployment.d.ts +5 -4
  42. package/dest/api/deployment.d.ts.map +1 -1
  43. package/dest/api/deployment.js +4 -3
  44. package/dest/api/eth_address.d.ts +1 -1
  45. package/dest/api/ethereum.d.ts +2 -0
  46. package/dest/api/ethereum.d.ts.map +1 -0
  47. package/dest/api/ethereum.js +1 -0
  48. package/dest/api/events.d.ts +12 -0
  49. package/dest/api/events.d.ts.map +1 -0
  50. package/dest/api/events.js +30 -0
  51. package/dest/api/fee.d.ts +2 -2
  52. package/dest/api/fee.d.ts.map +1 -1
  53. package/dest/api/fee.js +1 -1
  54. package/dest/api/fee_testing.d.ts +2 -0
  55. package/dest/api/fee_testing.d.ts.map +1 -0
  56. package/dest/api/fee_testing.js +1 -0
  57. package/dest/api/fields.d.ts +1 -1
  58. package/dest/api/keys.d.ts +4 -0
  59. package/dest/api/keys.d.ts.map +1 -0
  60. package/dest/api/keys.js +3 -0
  61. package/dest/api/log.d.ts +2 -1
  62. package/dest/api/log.d.ts.map +1 -1
  63. package/dest/api/log.js +1 -0
  64. package/dest/api/messaging.d.ts +3 -0
  65. package/dest/api/messaging.d.ts.map +1 -0
  66. package/dest/api/messaging.js +2 -0
  67. package/dest/api/node.d.ts +21 -0
  68. package/dest/api/node.d.ts.map +1 -0
  69. package/dest/api/node.js +18 -0
  70. package/dest/api/note.d.ts +2 -0
  71. package/dest/api/note.d.ts.map +1 -0
  72. package/dest/api/note.js +1 -0
  73. package/dest/api/protocol.d.ts +3 -0
  74. package/dest/api/protocol.d.ts.map +1 -0
  75. package/dest/api/protocol.js +2 -0
  76. package/dest/api/trees.d.ts +3 -0
  77. package/dest/api/trees.d.ts.map +1 -0
  78. package/dest/api/trees.js +2 -0
  79. package/dest/api/tx.d.ts +2 -0
  80. package/dest/api/tx.d.ts.map +1 -0
  81. package/dest/api/tx.js +1 -0
  82. package/dest/api/utils.d.ts +13 -0
  83. package/dest/api/utils.d.ts.map +1 -0
  84. package/dest/api/utils.js +12 -0
  85. package/dest/api/wallet.d.ts +4 -2
  86. package/dest/api/wallet.d.ts.map +1 -1
  87. package/dest/api/wallet.js +3 -1
  88. package/dest/authorization/call_authorization_request.d.ts +46 -0
  89. package/dest/authorization/call_authorization_request.d.ts.map +1 -0
  90. package/dest/authorization/call_authorization_request.js +49 -0
  91. package/dest/contract/base_contract_interaction.d.ts +16 -80
  92. package/dest/contract/base_contract_interaction.d.ts.map +1 -1
  93. package/dest/contract/base_contract_interaction.js +15 -128
  94. package/dest/contract/batch_call.d.ts +19 -21
  95. package/dest/contract/batch_call.d.ts.map +1 -1
  96. package/dest/contract/batch_call.js +86 -68
  97. package/dest/contract/checker.d.ts +2 -2
  98. package/dest/contract/checker.d.ts.map +1 -1
  99. package/dest/contract/checker.js +2 -2
  100. package/dest/contract/contract.d.ts +9 -8
  101. package/dest/contract/contract.d.ts.map +1 -1
  102. package/dest/contract/contract.js +10 -20
  103. package/dest/contract/contract_base.d.ts +7 -20
  104. package/dest/contract/contract_base.d.ts.map +1 -1
  105. package/dest/contract/contract_base.js +7 -14
  106. package/dest/contract/contract_function_interaction.d.ts +53 -45
  107. package/dest/contract/contract_function_interaction.d.ts.map +1 -1
  108. package/dest/contract/contract_function_interaction.js +78 -74
  109. package/dest/contract/deploy_method.d.ts +106 -60
  110. package/dest/contract/deploy_method.d.ts.map +1 -1
  111. package/dest/contract/deploy_method.js +125 -133
  112. package/dest/contract/deploy_sent_tx.d.ts +14 -11
  113. package/dest/contract/deploy_sent_tx.d.ts.map +1 -1
  114. package/dest/contract/deploy_sent_tx.js +18 -15
  115. package/dest/contract/get_gas_limits.d.ts +6 -7
  116. package/dest/contract/get_gas_limits.d.ts.map +1 -1
  117. package/dest/contract/get_gas_limits.js +9 -3
  118. package/dest/contract/interaction_options.d.ts +114 -0
  119. package/dest/contract/interaction_options.d.ts.map +1 -0
  120. package/dest/contract/interaction_options.js +46 -0
  121. package/dest/contract/protocol_contracts.d.ts +7 -7
  122. package/dest/contract/protocol_contracts.d.ts.map +1 -1
  123. package/dest/contract/protocol_contracts.js +7 -7
  124. package/dest/contract/sent_tx.d.ts +9 -19
  125. package/dest/contract/sent_tx.d.ts.map +1 -1
  126. package/dest/contract/sent_tx.js +31 -43
  127. package/dest/contract/unsafe_contract.d.ts +2 -2
  128. package/dest/contract/unsafe_contract.d.ts.map +1 -1
  129. package/dest/contract/unsafe_contract.js +1 -1
  130. package/dest/contract/wait_for_proven.d.ts +17 -0
  131. package/dest/contract/wait_for_proven.d.ts.map +1 -0
  132. package/dest/contract/wait_for_proven.js +17 -0
  133. package/dest/deployment/broadcast_function.d.ts +4 -4
  134. package/dest/deployment/broadcast_function.d.ts.map +1 -1
  135. package/dest/deployment/broadcast_function.js +27 -23
  136. package/dest/deployment/contract_deployer.d.ts +2 -2
  137. package/dest/deployment/contract_deployer.d.ts.map +1 -1
  138. package/dest/deployment/contract_deployer.js +1 -1
  139. package/dest/deployment/publish_class.d.ts +6 -0
  140. package/dest/deployment/publish_class.d.ts.map +1 -0
  141. package/dest/deployment/publish_class.js +17 -0
  142. package/dest/deployment/publish_instance.d.ts +10 -0
  143. package/dest/deployment/publish_instance.d.ts.map +1 -0
  144. package/dest/deployment/publish_instance.js +11 -0
  145. package/dest/ethereum/portal_manager.d.ts +138 -0
  146. package/dest/ethereum/portal_manager.d.ts.map +1 -0
  147. package/dest/{api/ethereum → ethereum}/portal_manager.js +136 -76
  148. package/dest/fee/fee_juice_payment_method_with_claim.d.ts +17 -12
  149. package/dest/fee/fee_juice_payment_method_with_claim.d.ts.map +1 -1
  150. package/dest/fee/fee_juice_payment_method_with_claim.js +26 -16
  151. package/dest/fee/fee_payment_method.d.ts +12 -8
  152. package/dest/fee/fee_payment_method.d.ts.map +1 -1
  153. package/dest/fee/private_fee_payment_method.d.ts +26 -9
  154. package/dest/fee/private_fee_payment_method.d.ts.map +1 -1
  155. package/dest/fee/private_fee_payment_method.js +44 -22
  156. package/dest/fee/public_fee_payment_method.d.ts +27 -10
  157. package/dest/fee/public_fee_payment_method.d.ts.map +1 -1
  158. package/dest/fee/public_fee_payment_method.js +46 -24
  159. package/dest/fee/sponsored_fee_payment.d.ts +17 -0
  160. package/dest/fee/sponsored_fee_payment.d.ts.map +1 -0
  161. package/dest/fee/sponsored_fee_payment.js +34 -0
  162. package/dest/utils/abi_types.d.ts +1 -3
  163. package/dest/utils/abi_types.d.ts.map +1 -1
  164. package/dest/utils/authwit.d.ts +82 -25
  165. package/dest/utils/authwit.d.ts.map +1 -1
  166. package/dest/utils/authwit.js +237 -40
  167. package/dest/utils/cross_chain.d.ts +24 -0
  168. package/dest/utils/cross_chain.d.ts.map +1 -0
  169. package/dest/utils/cross_chain.js +30 -0
  170. package/dest/utils/fee_juice.d.ts +4 -3
  171. package/dest/utils/fee_juice.d.ts.map +1 -1
  172. package/dest/utils/fee_juice.js +3 -2
  173. package/dest/utils/field_compressed_string.d.ts +1 -1
  174. package/dest/utils/field_compressed_string.d.ts.map +1 -1
  175. package/dest/utils/node.d.ts +2 -2
  176. package/dest/utils/node.d.ts.map +1 -1
  177. package/dest/utils/node.js +1 -1
  178. package/dest/utils/pub_key.d.ts +1 -1
  179. package/dest/utils/pub_key.d.ts.map +1 -1
  180. package/dest/utils/pub_key.js +1 -2
  181. package/dest/wallet/account_entrypoint_meta_payment_method.d.ts +34 -0
  182. package/dest/wallet/account_entrypoint_meta_payment_method.d.ts.map +1 -0
  183. package/dest/wallet/account_entrypoint_meta_payment_method.js +76 -0
  184. package/dest/wallet/account_manager.d.ts +66 -0
  185. package/dest/wallet/account_manager.d.ts.map +1 -0
  186. package/dest/wallet/account_manager.js +113 -0
  187. package/dest/wallet/deploy_account_method.d.ts +52 -0
  188. package/dest/wallet/deploy_account_method.d.ts.map +1 -0
  189. package/dest/wallet/deploy_account_method.js +77 -0
  190. package/dest/wallet/index.d.ts +3 -17
  191. package/dest/wallet/index.d.ts.map +1 -1
  192. package/dest/wallet/index.js +2 -20
  193. package/dest/wallet/wallet.d.ts +1965 -0
  194. package/dest/wallet/wallet.d.ts.map +1 -0
  195. package/dest/wallet/wallet.js +186 -0
  196. package/package.json +44 -35
  197. package/src/account/account.ts +96 -0
  198. package/src/account/{contract.ts → account_contract.ts} +24 -13
  199. package/src/{wallet/account_wallet_with_private_key.ts → account/account_with_secret_key.ts} +6 -8
  200. package/src/account/index.ts +3 -7
  201. package/src/account/interface.ts +1 -12
  202. package/src/account/signerless_account.ts +45 -0
  203. package/src/api/abi.ts +26 -0
  204. package/src/api/account.ts +6 -9
  205. package/src/api/addresses.ts +1 -0
  206. package/src/api/authorization.ts +14 -0
  207. package/src/api/block.ts +2 -0
  208. package/src/{contract/index.ts → api/contract.ts} +39 -14
  209. package/src/api/crypto.ts +1 -0
  210. package/src/api/deployment.ts +4 -3
  211. package/src/api/ethereum.ts +10 -0
  212. package/src/api/events.ts +44 -0
  213. package/src/api/fee.ts +1 -1
  214. package/src/api/fee_testing.ts +1 -0
  215. package/src/api/keys.ts +8 -0
  216. package/src/api/log.ts +1 -0
  217. package/src/api/messaging.ts +2 -0
  218. package/src/api/node.ts +20 -0
  219. package/src/api/note.ts +1 -0
  220. package/src/api/protocol.ts +2 -0
  221. package/src/api/trees.ts +2 -0
  222. package/src/api/tx.ts +13 -0
  223. package/src/api/utils.ts +14 -0
  224. package/src/api/wallet.ts +27 -5
  225. package/src/authorization/call_authorization_request.ts +63 -0
  226. package/src/contract/base_contract_interaction.ts +23 -166
  227. package/src/contract/batch_call.ts +106 -57
  228. package/src/contract/checker.ts +8 -3
  229. package/src/contract/contract.ts +14 -21
  230. package/src/contract/contract_base.ts +9 -26
  231. package/src/contract/contract_function_interaction.ts +135 -106
  232. package/src/contract/deploy_method.ts +205 -134
  233. package/src/contract/deploy_sent_tx.ts +24 -23
  234. package/src/contract/get_gas_limits.ts +15 -8
  235. package/src/contract/interaction_options.ts +163 -0
  236. package/src/contract/protocol_contracts.ts +10 -10
  237. package/src/contract/sent_tx.ts +41 -52
  238. package/src/contract/unsafe_contract.ts +2 -2
  239. package/src/contract/wait_for_proven.ts +38 -0
  240. package/src/deployment/broadcast_function.ts +57 -57
  241. package/src/deployment/contract_deployer.ts +4 -3
  242. package/src/deployment/publish_class.ts +34 -0
  243. package/src/deployment/publish_instance.ts +26 -0
  244. package/src/{api/ethereum → ethereum}/portal_manager.ts +164 -83
  245. package/src/fee/fee_juice_payment_method_with_claim.ts +48 -33
  246. package/src/fee/fee_payment_method.ts +11 -7
  247. package/src/fee/private_fee_payment_method.ts +79 -57
  248. package/src/fee/public_fee_payment_method.ts +93 -67
  249. package/src/fee/sponsored_fee_payment.ts +46 -0
  250. package/src/utils/authwit.ts +261 -53
  251. package/src/utils/cross_chain.ts +53 -0
  252. package/src/utils/fee_juice.ts +4 -4
  253. package/src/utils/node.ts +1 -1
  254. package/src/utils/pub_key.ts +1 -2
  255. package/src/wallet/account_entrypoint_meta_payment_method.ts +106 -0
  256. package/src/wallet/account_manager.ts +154 -0
  257. package/src/wallet/deploy_account_method.ts +126 -0
  258. package/src/wallet/index.ts +2 -33
  259. package/src/wallet/wallet.ts +318 -0
  260. package/dest/account/contract.d.ts +0 -37
  261. package/dest/account/contract.d.ts.map +0 -1
  262. package/dest/account/wallet.d.ts +0 -11
  263. package/dest/account/wallet.d.ts.map +0 -1
  264. package/dest/account/wallet.js +0 -3
  265. package/dest/account_manager/deploy_account_method.d.ts +0 -15
  266. package/dest/account_manager/deploy_account_method.d.ts.map +0 -1
  267. package/dest/account_manager/deploy_account_method.js +0 -43
  268. package/dest/account_manager/deploy_account_sent_tx.d.ts +0 -30
  269. package/dest/account_manager/deploy_account_sent_tx.d.ts.map +0 -1
  270. package/dest/account_manager/deploy_account_sent_tx.js +0 -29
  271. package/dest/account_manager/index.d.ts +0 -108
  272. package/dest/account_manager/index.d.ts.map +0 -1
  273. package/dest/account_manager/index.js +0 -159
  274. package/dest/api/cheat_codes.d.ts +0 -26
  275. package/dest/api/cheat_codes.d.ts.map +0 -1
  276. package/dest/api/cheat_codes.js +0 -25
  277. package/dest/api/entrypoint.d.ts +0 -2
  278. package/dest/api/entrypoint.d.ts.map +0 -1
  279. package/dest/api/entrypoint.js +0 -1
  280. package/dest/api/ethereum/anvil_test_watcher.d.ts +0 -32
  281. package/dest/api/ethereum/anvil_test_watcher.d.ts.map +0 -1
  282. package/dest/api/ethereum/anvil_test_watcher.js +0 -133
  283. package/dest/api/ethereum/chain_monitor.d.ts +0 -25
  284. package/dest/api/ethereum/chain_monitor.d.ts.map +0 -1
  285. package/dest/api/ethereum/chain_monitor.js +0 -74
  286. package/dest/api/ethereum/cheat_codes.d.ts +0 -63
  287. package/dest/api/ethereum/cheat_codes.d.ts.map +0 -1
  288. package/dest/api/ethereum/cheat_codes.js +0 -162
  289. package/dest/api/ethereum/index.d.ts +0 -7
  290. package/dest/api/ethereum/index.d.ts.map +0 -1
  291. package/dest/api/ethereum/index.js +0 -6
  292. package/dest/api/ethereum/l1_contracts.d.ts +0 -3
  293. package/dest/api/ethereum/l1_contracts.d.ts.map +0 -1
  294. package/dest/api/ethereum/l1_contracts.js +0 -13
  295. package/dest/api/ethereum/portal_manager.d.ts +0 -136
  296. package/dest/api/ethereum/portal_manager.d.ts.map +0 -1
  297. package/dest/api/interfaces/pxe.d.ts +0 -2
  298. package/dest/api/interfaces/pxe.d.ts.map +0 -1
  299. package/dest/api/interfaces/pxe.js +0 -1
  300. package/dest/api/log_id.d.ts +0 -2
  301. package/dest/api/log_id.d.ts.map +0 -1
  302. package/dest/api/log_id.js +0 -1
  303. package/dest/api/tx_hash.d.ts +0 -2
  304. package/dest/api/tx_hash.d.ts.map +0 -1
  305. package/dest/api/tx_hash.js +0 -1
  306. package/dest/contract/deploy_proven_tx.d.ts +0 -21
  307. package/dest/contract/deploy_proven_tx.d.ts.map +0 -1
  308. package/dest/contract/deploy_proven_tx.js +0 -19
  309. package/dest/contract/index.d.ts +0 -45
  310. package/dest/contract/index.d.ts.map +0 -1
  311. package/dest/contract/proven_tx.d.ts +0 -17
  312. package/dest/contract/proven_tx.d.ts.map +0 -1
  313. package/dest/contract/proven_tx.js +0 -22
  314. package/dest/deployment/deploy_instance.d.ts +0 -10
  315. package/dest/deployment/deploy_instance.d.ts.map +0 -1
  316. package/dest/deployment/deploy_instance.js +0 -14
  317. package/dest/deployment/index.d.ts +0 -2
  318. package/dest/deployment/index.d.ts.map +0 -1
  319. package/dest/deployment/index.js +0 -1
  320. package/dest/deployment/register_class.d.ts +0 -6
  321. package/dest/deployment/register_class.d.ts.map +0 -1
  322. package/dest/deployment/register_class.js +0 -22
  323. package/dest/entrypoint/default_entrypoint.d.ts +0 -12
  324. package/dest/entrypoint/default_entrypoint.d.ts.map +0 -1
  325. package/dest/entrypoint/default_entrypoint.js +0 -28
  326. package/dest/entrypoint/default_multi_call_entrypoint.d.ts +0 -15
  327. package/dest/entrypoint/default_multi_call_entrypoint.d.ts.map +0 -1
  328. package/dest/entrypoint/default_multi_call_entrypoint.js +0 -130
  329. package/dest/entrypoint/entrypoint.d.ts +0 -35
  330. package/dest/entrypoint/entrypoint.d.ts.map +0 -1
  331. package/dest/entrypoint/entrypoint.js +0 -4
  332. package/dest/entrypoint/payload.d.ts +0 -128
  333. package/dest/entrypoint/payload.d.ts.map +0 -1
  334. package/dest/entrypoint/payload.js +0 -143
  335. package/dest/fee/fee_juice_payment_method.d.ts +0 -14
  336. package/dest/fee/fee_juice_payment_method.d.ts.map +0 -1
  337. package/dest/fee/fee_juice_payment_method.js +0 -20
  338. package/dest/index.d.ts +0 -66
  339. package/dest/index.d.ts.map +0 -1
  340. package/dest/index.js +0 -69
  341. package/dest/rpc_clients/index.d.ts +0 -3
  342. package/dest/rpc_clients/index.d.ts.map +0 -1
  343. package/dest/rpc_clients/index.js +0 -2
  344. package/dest/rpc_clients/node/index.d.ts +0 -12
  345. package/dest/rpc_clients/node/index.d.ts.map +0 -1
  346. package/dest/rpc_clients/node/index.js +0 -78
  347. package/dest/rpc_clients/pxe_client.d.ts +0 -10
  348. package/dest/rpc_clients/pxe_client.d.ts.map +0 -1
  349. package/dest/rpc_clients/pxe_client.js +0 -23
  350. package/dest/utils/aztec_cheatcodes.d.ts +0 -59
  351. package/dest/utils/aztec_cheatcodes.d.ts.map +0 -1
  352. package/dest/utils/aztec_cheatcodes.js +0 -62
  353. package/dest/utils/index.d.ts +0 -8
  354. package/dest/utils/index.d.ts.map +0 -1
  355. package/dest/utils/index.js +0 -6
  356. package/dest/utils/pxe.d.ts +0 -4
  357. package/dest/utils/pxe.d.ts.map +0 -1
  358. package/dest/utils/pxe.js +0 -14
  359. package/dest/wallet/account_wallet.d.ts +0 -76
  360. package/dest/wallet/account_wallet.d.ts.map +0 -1
  361. package/dest/wallet/account_wallet.js +0 -231
  362. package/dest/wallet/account_wallet_with_private_key.d.ts +0 -26
  363. package/dest/wallet/account_wallet_with_private_key.d.ts.map +0 -1
  364. package/dest/wallet/base_wallet.d.ts +0 -73
  365. package/dest/wallet/base_wallet.d.ts.map +0 -1
  366. package/dest/wallet/base_wallet.js +0 -123
  367. package/dest/wallet/signerless_wallet.d.ts +0 -25
  368. package/dest/wallet/signerless_wallet.d.ts.map +0 -1
  369. package/dest/wallet/signerless_wallet.js +0 -36
  370. package/src/account/wallet.ts +0 -13
  371. package/src/account_manager/deploy_account_method.ts +0 -86
  372. package/src/account_manager/deploy_account_sent_tx.ts +0 -42
  373. package/src/account_manager/index.ts +0 -229
  374. package/src/api/cheat_codes.ts +0 -35
  375. package/src/api/entrypoint.ts +0 -1
  376. package/src/api/ethereum/anvil_test_watcher.ts +0 -158
  377. package/src/api/ethereum/chain_monitor.ts +0 -88
  378. package/src/api/ethereum/cheat_codes.ts +0 -184
  379. package/src/api/ethereum/index.ts +0 -19
  380. package/src/api/ethereum/l1_contracts.ts +0 -21
  381. package/src/api/interfaces/pxe.ts +0 -1
  382. package/src/api/log_id.ts +0 -1
  383. package/src/api/tx_hash.ts +0 -1
  384. package/src/contract/deploy_proven_tx.ts +0 -34
  385. package/src/contract/proven_tx.ts +0 -42
  386. package/src/deployment/deploy_instance.ts +0 -31
  387. package/src/deployment/index.ts +0 -1
  388. package/src/deployment/register_class.ts +0 -44
  389. package/src/entrypoint/default_entrypoint.ts +0 -39
  390. package/src/entrypoint/default_multi_call_entrypoint.ts +0 -93
  391. package/src/entrypoint/entrypoint.ts +0 -39
  392. package/src/entrypoint/payload.ts +0 -238
  393. package/src/fee/fee_juice_payment_method.ts +0 -26
  394. package/src/index.ts +0 -106
  395. package/src/rpc_clients/index.ts +0 -2
  396. package/src/rpc_clients/node/index.ts +0 -77
  397. package/src/rpc_clients/pxe_client.ts +0 -25
  398. package/src/utils/aztec_cheatcodes.ts +0 -77
  399. package/src/utils/index.ts +0 -21
  400. package/src/utils/pxe.ts +0 -17
  401. package/src/wallet/account_wallet.ts +0 -242
  402. package/src/wallet/base_wallet.ts +0 -198
  403. package/src/wallet/signerless_wallet.ts +0 -52
@@ -0,0 +1,26 @@
1
+ import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
2
+
3
+ import type { ContractFunctionInteraction } from '../contract/contract_function_interaction.js';
4
+ import { getInstanceRegistryContract } from '../contract/protocol_contracts.js';
5
+ import type { Wallet } from '../wallet/wallet.js';
6
+
7
+ /**
8
+ * Sets up a call to the canonical contract instance registry to publish a contract instance.
9
+ * @param wallet - The wallet to use for the publication (setup) tx.
10
+ * @param instance - The instance to publish.
11
+ */
12
+ export async function publishInstance(
13
+ wallet: Wallet,
14
+ instance: ContractInstanceWithAddress,
15
+ ): Promise<ContractFunctionInteraction> {
16
+ const contractInstanceRegistry = await getInstanceRegistryContract(wallet);
17
+ const { salt, currentContractClassId: contractClassId, publicKeys, deployer: instanceDeployer } = instance;
18
+ const isUniversalDeploy = instanceDeployer.isZero();
19
+ return contractInstanceRegistry.methods.publish_for_public_execution(
20
+ salt,
21
+ contractClassId,
22
+ instance.initializationHash,
23
+ publicKeys,
24
+ isUniversalDeploy,
25
+ );
26
+ }
@@ -1,19 +1,22 @@
1
- import type { ViemPublicClient, ViemWalletClient } from '@aztec/ethereum';
1
+ import type { ExtendedViemWalletClient, ViemContract } from '@aztec/ethereum';
2
2
  import { extractEvent } from '@aztec/ethereum/utils';
3
3
  import { sha256ToField } from '@aztec/foundation/crypto';
4
4
  import { EthAddress } from '@aztec/foundation/eth-address';
5
5
  import { Fr } from '@aztec/foundation/fields';
6
6
  import type { Logger } from '@aztec/foundation/log';
7
7
  import type { SiblingPath } from '@aztec/foundation/trees';
8
- import { FeeJuicePortalAbi, OutboxAbi, TestERC20Abi, TokenPortalAbi } from '@aztec/l1-artifacts';
8
+ import { FeeAssetHandlerAbi } from '@aztec/l1-artifacts/FeeAssetHandlerAbi';
9
+ import { FeeJuicePortalAbi } from '@aztec/l1-artifacts/FeeJuicePortalAbi';
10
+ import { OutboxAbi } from '@aztec/l1-artifacts/OutboxAbi';
11
+ import { TestERC20Abi } from '@aztec/l1-artifacts/TestERC20Abi';
12
+ import { TokenPortalAbi } from '@aztec/l1-artifacts/TokenPortalAbi';
9
13
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
10
- import { computeSecretHash } from '@aztec/stdlib/hash';
11
- import type { PXE } from '@aztec/stdlib/interfaces/client';
14
+ import { computeL2ToL1MessageHash, computeSecretHash } from '@aztec/stdlib/hash';
15
+ import type { AztecNode } from '@aztec/stdlib/interfaces/client';
16
+ import { getL2ToL1MessageLeafId } from '@aztec/stdlib/messaging';
12
17
 
13
- import { type GetContractReturnType, type Hex, getContract, toFunctionSelector } from 'viem';
18
+ import { type Hex, getContract, toFunctionSelector } from 'viem';
14
19
 
15
- // docs:start:claim_type
16
- // docs:start:claim_type_amount
17
20
  /** L1 to L2 message info to claim it on L2. */
18
21
  export type L2Claim = {
19
22
  /** Secret for claiming. */
@@ -25,11 +28,9 @@ export type L2Claim = {
25
28
  /** Leaf index in the L1 to L2 message tree. */
26
29
  messageLeafIndex: bigint;
27
30
  };
28
- // docs:end:claim_type
29
31
 
30
32
  /** L1 to L2 message info that corresponds to an amount to claim. */
31
33
  export type L2AmountClaim = L2Claim & { /** Amount to claim */ claimAmount: bigint };
32
- // docs:end:claim_type_amount
33
34
 
34
35
  /** L1 to L2 message info that corresponds to an amount to claim with associated recipient. */
35
36
  export type L2AmountClaimWithRecipient = L2AmountClaim & {
@@ -51,20 +52,39 @@ export async function generateClaimSecret(logger?: Logger): Promise<[Fr, Fr]> {
51
52
 
52
53
  /** Helper for managing an ERC20 on L1. */
53
54
  export class L1TokenManager {
54
- private contract: GetContractReturnType<typeof TestERC20Abi, ViemWalletClient>;
55
+ private contract: ViemContract<typeof TestERC20Abi>;
56
+ private handler: ViemContract<typeof FeeAssetHandlerAbi> | undefined;
55
57
 
56
58
  public constructor(
57
59
  /** Address of the ERC20 contract. */
58
- public readonly address: EthAddress,
59
- private publicClient: ViemPublicClient,
60
- private walletClient: ViemWalletClient,
60
+ public readonly tokenAddress: EthAddress,
61
+ /** Address of the handler/faucet contract. */
62
+ public readonly handlerAddress: EthAddress | undefined,
63
+ private readonly extendedClient: ExtendedViemWalletClient,
61
64
  private logger: Logger,
62
65
  ) {
63
66
  this.contract = getContract({
64
- address: this.address.toString(),
67
+ address: this.tokenAddress.toString(),
65
68
  abi: TestERC20Abi,
66
- client: this.walletClient,
69
+ client: this.extendedClient,
67
70
  });
71
+ if (this.handlerAddress) {
72
+ this.handler = getContract({
73
+ address: this.handlerAddress.toString(),
74
+ abi: FeeAssetHandlerAbi,
75
+ client: this.extendedClient,
76
+ });
77
+ }
78
+ }
79
+
80
+ /** Returns the amount of tokens available to mint via the handler.
81
+ * @throws if the handler is not provided.
82
+ */
83
+ public async getMintAmount() {
84
+ if (!this.handler) {
85
+ throw new Error('Minting handler was not provided');
86
+ }
87
+ return await this.handler.read.mintAmount();
68
88
  }
69
89
 
70
90
  /**
@@ -76,16 +96,18 @@ export class L1TokenManager {
76
96
  }
77
97
 
78
98
  /**
79
- * Mints tokens for the given address. Returns once the tx has been mined.
80
- * @param amount - Amount to mint.
99
+ * Mints a fixed amount of tokens for the given address. Returns once the tx has been mined.
81
100
  * @param address - Address to mint the tokens for.
82
101
  * @param addressName - Optional name of the address for logging.
83
102
  */
84
- public async mint(amount: bigint, address: Hex, addressName?: string) {
85
- this.logger.info(`Minting ${amount} tokens for ${stringifyEthAddress(address, addressName)}`);
86
- await this.publicClient.waitForTransactionReceipt({
87
- hash: await this.contract.write.mint([address, amount]),
88
- });
103
+ public async mint(address: Hex, addressName?: string) {
104
+ if (!this.handler) {
105
+ throw new Error('Minting handler was not provided');
106
+ }
107
+ const mintAmount = await this.getMintAmount();
108
+ this.logger.info(`Minting ${mintAmount} tokens for ${stringifyEthAddress(address, addressName)}`);
109
+ // NOTE: the handler mints a fixed amount.
110
+ await this.handler.write.mint([address]);
89
111
  }
90
112
 
91
113
  /**
@@ -96,7 +118,7 @@ export class L1TokenManager {
96
118
  */
97
119
  public async approve(amount: bigint, address: Hex, addressName = '') {
98
120
  this.logger.info(`Approving ${amount} tokens for ${stringifyEthAddress(address, addressName)}`);
99
- await this.publicClient.waitForTransactionReceipt({
121
+ await this.extendedClient.waitForTransactionReceipt({
100
122
  hash: await this.contract.write.approve([address, amount]),
101
123
  });
102
124
  }
@@ -105,20 +127,20 @@ export class L1TokenManager {
105
127
  /** Helper for interacting with the FeeJuicePortal on L1. */
106
128
  export class L1FeeJuicePortalManager {
107
129
  private readonly tokenManager: L1TokenManager;
108
- private readonly contract: GetContractReturnType<typeof FeeJuicePortalAbi, ViemWalletClient>;
130
+ private readonly contract: ViemContract<typeof FeeJuicePortalAbi>;
109
131
 
110
132
  constructor(
111
133
  portalAddress: EthAddress,
112
134
  tokenAddress: EthAddress,
113
- private readonly publicClient: ViemPublicClient,
114
- private readonly walletClient: ViemWalletClient,
135
+ handlerAddress: EthAddress,
136
+ private readonly extendedClient: ExtendedViemWalletClient,
115
137
  private readonly logger: Logger,
116
138
  ) {
117
- this.tokenManager = new L1TokenManager(tokenAddress, publicClient, walletClient, logger);
139
+ this.tokenManager = new L1TokenManager(tokenAddress, handlerAddress, extendedClient, logger);
118
140
  this.contract = getContract({
119
141
  address: portalAddress.toString(),
120
142
  abi: FeeJuicePortalAbi,
121
- client: this.walletClient,
143
+ client: extendedClient,
122
144
  });
123
145
  }
124
146
 
@@ -133,39 +155,59 @@ export class L1FeeJuicePortalManager {
133
155
  * @param amount - Amount of tokens to send.
134
156
  * @param mint - Whether to mint the tokens before sending (only during testing).
135
157
  */
136
- public async bridgeTokensPublic(to: AztecAddress, amount: bigint, mint = false): Promise<L2AmountClaim> {
158
+ public async bridgeTokensPublic(to: AztecAddress, amount: bigint | undefined, mint = false): Promise<L2AmountClaim> {
137
159
  const [claimSecret, claimSecretHash] = await generateClaimSecret();
160
+ const mintableAmount = await this.tokenManager.getMintAmount();
161
+ const amountToBridge = amount ?? mintableAmount;
138
162
  if (mint) {
139
- await this.tokenManager.mint(amount, this.walletClient.account.address);
163
+ if (amountToBridge !== mintableAmount) {
164
+ throw new Error(`Minting amount must be ${mintableAmount}`);
165
+ }
166
+ await this.tokenManager.mint(this.extendedClient.account.address);
140
167
  }
141
168
 
142
- await this.tokenManager.approve(amount, this.contract.address, 'FeeJuice Portal');
169
+ await this.tokenManager.approve(amountToBridge, this.contract.address, 'FeeJuice Portal');
143
170
 
144
171
  this.logger.info('Sending L1 Fee Juice to L2 to be claimed publicly');
145
- const args = [to.toString(), amount, claimSecretHash.toString()] as const;
172
+ const args = [to.toString(), amountToBridge, claimSecretHash.toString()] as const;
146
173
 
147
174
  await this.contract.simulate.depositToAztecPublic(args);
148
175
 
149
- const txReceipt = await this.publicClient.waitForTransactionReceipt({
176
+ const txReceipt = await this.extendedClient.waitForTransactionReceipt({
150
177
  hash: await this.contract.write.depositToAztecPublic(args),
151
178
  });
152
179
 
153
- this.logger.info('Deposited to Aztec public successfully');
180
+ this.logger.info('Deposited to Aztec public successfully', { txReceipt });
154
181
 
155
182
  const log = extractEvent(
156
183
  txReceipt.logs,
157
184
  this.contract.address,
158
185
  this.contract.abi,
159
186
  'DepositToAztecPublic',
160
- log =>
161
- log.args.secretHash === claimSecretHash.toString() &&
162
- log.args.amount === amount &&
163
- log.args.to === to.toString(),
187
+ log => {
188
+ // Normalize hex strings for comparison (case-insensitive, handle different formats)
189
+ const normalizeHex = (val: string | bigint | number) => {
190
+ const hexStr = typeof val === 'string' ? val : `0x${val.toString(16).padStart(64, '0')}`;
191
+ return hexStr.toLowerCase();
192
+ };
193
+
194
+ const secretHashMatch = normalizeHex(log.args.secretHash) === normalizeHex(claimSecretHash.toString());
195
+ const amountMatch = log.args.amount === amountToBridge;
196
+ const toMatch = normalizeHex(log.args.to) === normalizeHex(to.toString());
197
+
198
+ this.logger.debug(
199
+ `Event filter matching: secretHash=${secretHashMatch} (${log.args.secretHash} vs ${claimSecretHash.toString()}), ` +
200
+ `amount=${amountMatch} (${log.args.amount} vs ${amountToBridge}), ` +
201
+ `to=${toMatch} (${log.args.to} vs ${to.toString()})`,
202
+ );
203
+
204
+ return secretHashMatch && amountMatch && toMatch;
205
+ },
164
206
  this.logger,
165
207
  );
166
208
 
167
209
  return {
168
- claimAmount: amount,
210
+ claimAmount: amountToBridge,
169
211
  claimSecret,
170
212
  claimSecretHash,
171
213
  messageHash: log.args.key,
@@ -175,46 +217,53 @@ export class L1FeeJuicePortalManager {
175
217
 
176
218
  /**
177
219
  * Creates a new instance
178
- * @param pxe - PXE client used for retrieving the L1 contract addresses.
179
- * @param publicClient - L1 public client.
180
- * @param walletClient - L1 wallet client.
220
+ * @param node - Aztec node client used for retrieving the L1 contract addresses.
221
+ * @param extendedClient - Wallet client, extended with public actions.
181
222
  * @param logger - Logger.
182
223
  */
183
224
  public static async new(
184
- pxe: PXE,
185
- publicClient: ViemPublicClient,
186
- walletClient: ViemWalletClient,
225
+ node: AztecNode,
226
+ extendedClient: ExtendedViemWalletClient,
187
227
  logger: Logger,
188
228
  ): Promise<L1FeeJuicePortalManager> {
189
229
  const {
190
- l1ContractAddresses: { feeJuiceAddress, feeJuicePortalAddress },
191
- } = await pxe.getNodeInfo();
230
+ l1ContractAddresses: { feeJuiceAddress, feeJuicePortalAddress, feeAssetHandlerAddress },
231
+ } = await node.getNodeInfo();
192
232
 
193
233
  if (feeJuiceAddress.isZero() || feeJuicePortalAddress.isZero()) {
194
234
  throw new Error('Portal or token not deployed on L1');
195
235
  }
236
+ if (!feeAssetHandlerAddress || feeAssetHandlerAddress.isZero()) {
237
+ throw new Error('Handler not deployed on L1, or handler address is zero');
238
+ }
196
239
 
197
- return new L1FeeJuicePortalManager(feeJuicePortalAddress, feeJuiceAddress, publicClient, walletClient, logger);
240
+ return new L1FeeJuicePortalManager(
241
+ feeJuicePortalAddress,
242
+ feeJuiceAddress,
243
+ feeAssetHandlerAddress,
244
+ extendedClient,
245
+ logger,
246
+ );
198
247
  }
199
248
  }
200
249
 
201
250
  /** Helper for interacting with a test TokenPortal on L1 for sending tokens to L2. */
202
251
  export class L1ToL2TokenPortalManager {
203
- protected readonly portal: GetContractReturnType<typeof TokenPortalAbi, ViemWalletClient>;
252
+ protected readonly portal: ViemContract<typeof TokenPortalAbi>;
204
253
  protected readonly tokenManager: L1TokenManager;
205
254
 
206
255
  constructor(
207
256
  portalAddress: EthAddress,
208
257
  tokenAddress: EthAddress,
209
- protected publicClient: ViemPublicClient,
210
- protected walletClient: ViemWalletClient,
258
+ handlerAddress: EthAddress | undefined,
259
+ protected extendedClient: ExtendedViemWalletClient,
211
260
  protected logger: Logger,
212
261
  ) {
213
- this.tokenManager = new L1TokenManager(tokenAddress, publicClient, walletClient, logger);
262
+ this.tokenManager = new L1TokenManager(tokenAddress, handlerAddress, extendedClient, logger);
214
263
  this.portal = getContract({
215
264
  address: portalAddress.toString(),
216
265
  abi: TokenPortalAbi,
217
- client: this.walletClient,
266
+ client: extendedClient,
218
267
  });
219
268
  }
220
269
 
@@ -239,8 +288,8 @@ export class L1ToL2TokenPortalManager {
239
288
  claimSecretHash.toString(),
240
289
  ]);
241
290
 
242
- const txReceipt = await this.publicClient.waitForTransactionReceipt({
243
- hash: await this.walletClient.writeContract(request),
291
+ const txReceipt = await this.extendedClient.waitForTransactionReceipt({
292
+ hash: await this.extendedClient.writeContract(request),
244
293
  });
245
294
 
246
295
  const log = extractEvent(
@@ -248,10 +297,19 @@ export class L1ToL2TokenPortalManager {
248
297
  this.portal.address,
249
298
  this.portal.abi,
250
299
  'DepositToAztecPublic',
251
- log =>
252
- log.args.secretHash === claimSecretHash.toString() &&
253
- log.args.amount === amount &&
254
- log.args.to === to.toString(),
300
+ log => {
301
+ // Normalize hex strings for comparison (case-insensitive, handle different formats)
302
+ const normalizeHex = (val: string | bigint | number) => {
303
+ const hexStr = typeof val === 'string' ? val : `0x${val.toString(16).padStart(64, '0')}`;
304
+ return hexStr.toLowerCase();
305
+ };
306
+
307
+ return (
308
+ normalizeHex(log.args.secretHash) === normalizeHex(claimSecretHash.toString()) &&
309
+ log.args.amount === amount &&
310
+ normalizeHex(log.args.to) === normalizeHex(to.toString())
311
+ );
312
+ },
255
313
  this.logger,
256
314
  );
257
315
 
@@ -280,8 +338,8 @@ export class L1ToL2TokenPortalManager {
280
338
  this.logger.info('Sending L1 tokens to L2 to be claimed privately');
281
339
  const { request } = await this.portal.simulate.depositToAztecPrivate([amount, claimSecretHash.toString()]);
282
340
 
283
- const txReceipt = await this.publicClient.waitForTransactionReceipt({
284
- hash: await this.walletClient.writeContract(request),
341
+ const txReceipt = await this.extendedClient.waitForTransactionReceipt({
342
+ hash: await this.extendedClient.writeContract(request),
285
343
  });
286
344
 
287
345
  const log = extractEvent(
@@ -289,7 +347,18 @@ export class L1ToL2TokenPortalManager {
289
347
  this.portal.address,
290
348
  this.portal.abi,
291
349
  'DepositToAztecPrivate',
292
- log => log.args.amount === amount && log.args.secretHashForL2MessageConsumption === claimSecretHash.toString(),
350
+ log => {
351
+ // Normalize hex strings for comparison (case-insensitive, handle different formats)
352
+ const normalizeHex = (val: string | bigint | number) => {
353
+ const hexStr = typeof val === 'string' ? val : `0x${val.toString(16).padStart(64, '0')}`;
354
+ return hexStr.toLowerCase();
355
+ };
356
+
357
+ return (
358
+ log.args.amount === amount &&
359
+ normalizeHex(log.args.secretHashForL2MessageConsumption) === normalizeHex(claimSecretHash.toString())
360
+ );
361
+ },
293
362
  this.logger,
294
363
  );
295
364
 
@@ -309,7 +378,11 @@ export class L1ToL2TokenPortalManager {
309
378
 
310
379
  private async bridgeSetup(amount: bigint, mint: boolean) {
311
380
  if (mint) {
312
- await this.tokenManager.mint(amount, this.walletClient.account.address);
381
+ const mintableAmount = await this.tokenManager.getMintAmount();
382
+ if (amount !== mintableAmount) {
383
+ throw new Error(`Minting amount must be ${mintableAmount} for testing`);
384
+ }
385
+ await this.tokenManager.mint(this.extendedClient.account.address);
313
386
  }
314
387
  await this.tokenManager.approve(amount, this.portal.address, 'TokenPortal');
315
388
  return generateClaimSecret();
@@ -318,21 +391,21 @@ export class L1ToL2TokenPortalManager {
318
391
 
319
392
  /** Helper for interacting with a test TokenPortal on L1 for both withdrawing from and bridging to L2. */
320
393
  export class L1TokenPortalManager extends L1ToL2TokenPortalManager {
321
- private readonly outbox: GetContractReturnType<typeof OutboxAbi, ViemWalletClient>;
394
+ private readonly outbox: ViemContract<typeof OutboxAbi>;
322
395
 
323
396
  constructor(
324
397
  portalAddress: EthAddress,
325
398
  tokenAddress: EthAddress,
399
+ handlerAddress: EthAddress | undefined,
326
400
  outboxAddress: EthAddress,
327
- publicClient: ViemPublicClient,
328
- walletClient: ViemWalletClient,
401
+ extendedClient: ExtendedViemWalletClient,
329
402
  logger: Logger,
330
403
  ) {
331
- super(portalAddress, tokenAddress, publicClient, walletClient, logger);
404
+ super(portalAddress, tokenAddress, handlerAddress, extendedClient, logger);
332
405
  this.outbox = getContract({
333
406
  address: outboxAddress.toString(),
334
407
  abi: OutboxAbi,
335
- client: walletClient,
408
+ client: extendedClient,
336
409
  });
337
410
  }
338
411
 
@@ -355,9 +428,12 @@ export class L1TokenPortalManager extends L1ToL2TokenPortalManager {
355
428
  `Sending L1 tx to consume message at block ${blockNumber} index ${messageIndex} to withdraw ${amount}`,
356
429
  );
357
430
 
358
- const isConsumedBefore = await this.outbox.read.hasMessageBeenConsumedAtBlockAndIndex([blockNumber, messageIndex]);
431
+ const messageLeafId = getL2ToL1MessageLeafId({ leafIndex: messageIndex, siblingPath });
432
+ const isConsumedBefore = await this.outbox.read.hasMessageBeenConsumedAtCheckpoint([blockNumber, messageLeafId]);
359
433
  if (isConsumedBefore) {
360
- throw new Error(`L1 to L2 message at block ${blockNumber} index ${messageIndex} has already been consumed`);
434
+ throw new Error(
435
+ `L1 to L2 message at block ${blockNumber} index ${messageIndex} height ${siblingPath.pathSize} has already been consumed`,
436
+ );
361
437
  }
362
438
 
363
439
  // Call function on L1 contract to consume the message
@@ -370,11 +446,15 @@ export class L1TokenPortalManager extends L1ToL2TokenPortalManager {
370
446
  siblingPath.toBufferArray().map((buf: Buffer): Hex => `0x${buf.toString('hex')}`),
371
447
  ]);
372
448
 
373
- await this.publicClient.waitForTransactionReceipt({ hash: await this.walletClient.writeContract(withdrawRequest) });
449
+ await this.extendedClient.waitForTransactionReceipt({
450
+ hash: await this.extendedClient.writeContract(withdrawRequest),
451
+ });
374
452
 
375
- const isConsumedAfter = await this.outbox.read.hasMessageBeenConsumedAtBlockAndIndex([blockNumber, messageIndex]);
453
+ const isConsumedAfter = await this.outbox.read.hasMessageBeenConsumedAtCheckpoint([blockNumber, messageLeafId]);
376
454
  if (!isConsumedAfter) {
377
- throw new Error(`L1 to L2 message at block ${blockNumber} index ${messageIndex} not consumed after withdrawal`);
455
+ throw new Error(
456
+ `L1 to L2 message at block ${blockNumber} index ${messageIndex} height ${siblingPath.pathSize} not consumed after withdrawal`,
457
+ );
378
458
  }
379
459
  }
380
460
 
@@ -385,26 +465,27 @@ export class L1TokenPortalManager extends L1ToL2TokenPortalManager {
385
465
  * @param l2Bridge - Address of the L2 bridge.
386
466
  * @param callerOnL1 - Caller address on L1.
387
467
  */
388
- public getL2ToL1MessageLeaf(
468
+ public async getL2ToL1MessageLeaf(
389
469
  amount: bigint,
390
470
  recipient: EthAddress,
391
471
  l2Bridge: AztecAddress,
392
472
  callerOnL1: EthAddress = EthAddress.ZERO,
393
- ): Fr {
473
+ ): Promise<Fr> {
474
+ const version = await this.outbox.read.VERSION();
475
+
394
476
  const content = sha256ToField([
395
477
  Buffer.from(toFunctionSelector('withdraw(address,uint256,address)').substring(2), 'hex'),
396
478
  recipient.toBuffer32(),
397
479
  new Fr(amount).toBuffer(),
398
480
  callerOnL1.toBuffer32(),
399
481
  ]);
400
- const leaf = sha256ToField([
401
- l2Bridge.toBuffer(),
402
- new Fr(1).toBuffer(), // aztec version
403
- EthAddress.fromString(this.portal.address).toBuffer32() ?? Buffer.alloc(32, 0),
404
- new Fr(this.publicClient.chain.id).toBuffer(), // chain id
405
- content.toBuffer(),
406
- ]);
407
482
 
408
- return leaf;
483
+ return computeL2ToL1MessageHash({
484
+ l2Sender: l2Bridge,
485
+ l1Recipient: EthAddress.fromString(this.portal.address),
486
+ content,
487
+ rollupVersion: new Fr(version),
488
+ chainId: new Fr(this.extendedClient.chain.id),
489
+ });
409
490
  }
410
491
  }
@@ -1,49 +1,64 @@
1
1
  import { Fr } from '@aztec/foundation/fields';
2
2
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
3
- import type { FunctionCall } from '@aztec/stdlib/abi';
4
3
  import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
4
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
5
+ import type { GasSettings } from '@aztec/stdlib/gas';
6
+ import { ExecutionPayload } from '@aztec/stdlib/tx';
5
7
 
6
- import type { L2AmountClaim } from '../api/ethereum/portal_manager.js';
7
- import { getFeeJuice } from '../contract/protocol_contracts.js';
8
- import type { Wallet } from '../wallet/index.js';
9
- import { FeeJuicePaymentMethod } from './fee_juice_payment_method.js';
8
+ import type { L2AmountClaim } from '../ethereum/portal_manager.js';
9
+ import type { FeePaymentMethod } from './fee_payment_method.js';
10
10
 
11
11
  /**
12
- * Pay fee directly with Fee Juice claimed on the same tx.
12
+ * Pay fee directly with Fee Juice claimed in the same tx. Claiming consumes an L1 to L2 message that "contains"
13
+ * the fee juice bridged from L1.
13
14
  */
14
- export class FeeJuicePaymentMethodWithClaim extends FeeJuicePaymentMethod {
15
+ export class FeeJuicePaymentMethodWithClaim implements FeePaymentMethod {
15
16
  constructor(
16
- private senderWallet: Wallet,
17
+ private sender: AztecAddress,
17
18
  private claim: Pick<L2AmountClaim, 'claimAmount' | 'claimSecret' | 'messageLeafIndex'>,
18
- ) {
19
- super(senderWallet.getAddress());
20
- }
19
+ ) {}
21
20
 
22
21
  /**
23
- * Creates a function call to pay the fee in Fee Juice.
24
- * @returns A function call
22
+ * Creates an execution payload to pay the fee in Fee Juice.
23
+ * @returns An execution payload that just contains the `claim_and_end_setup` function call.
25
24
  */
26
- override async getFunctionCalls(): Promise<FunctionCall[]> {
27
- const canonicalFeeJuice = await getFeeJuice(this.senderWallet);
28
- const selector = await FunctionSelector.fromNameAndParameters(
29
- canonicalFeeJuice.artifact.functions.find(f => f.name === 'claim')!,
25
+ async getExecutionPayload(): Promise<ExecutionPayload> {
26
+ const selector = await FunctionSelector.fromSignature('claim_and_end_setup((Field),u128,Field,Field)');
27
+
28
+ return new ExecutionPayload(
29
+ [
30
+ {
31
+ to: ProtocolContractAddress.FeeJuice,
32
+ name: 'claim_and_end_setup',
33
+ selector,
34
+ hideMsgSender: false,
35
+ isStatic: false,
36
+ args: [
37
+ this.sender.toField(),
38
+ new Fr(this.claim.claimAmount),
39
+ this.claim.claimSecret,
40
+ new Fr(this.claim.messageLeafIndex),
41
+ ],
42
+ returnTypes: [],
43
+ type: FunctionType.PRIVATE,
44
+ },
45
+ ],
46
+ [],
47
+ [],
48
+ [],
49
+ this.sender, // feePayer
30
50
  );
51
+ }
52
+
53
+ getAsset() {
54
+ return Promise.resolve(ProtocolContractAddress.FeeJuice);
55
+ }
56
+
57
+ getFeePayer(): Promise<AztecAddress> {
58
+ return Promise.resolve(this.sender);
59
+ }
31
60
 
32
- return Promise.resolve([
33
- {
34
- to: ProtocolContractAddress.FeeJuice,
35
- name: 'claim',
36
- selector,
37
- isStatic: false,
38
- args: [
39
- this.senderWallet.getAddress().toField(),
40
- new Fr(this.claim.claimAmount),
41
- this.claim.claimSecret,
42
- new Fr(this.claim.messageLeafIndex),
43
- ],
44
- returnTypes: [],
45
- type: FunctionType.PRIVATE,
46
- },
47
- ]);
61
+ getGasSettings(): GasSettings | undefined {
62
+ return;
48
63
  }
49
64
  }
@@ -1,6 +1,6 @@
1
- import type { FunctionCall } from '@aztec/stdlib/abi';
2
1
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
2
  import type { GasSettings } from '@aztec/stdlib/gas';
3
+ import type { ExecutionPayload } from '@aztec/stdlib/tx';
4
4
 
5
5
  /**
6
6
  * Holds information about how the fee for a transaction is to be paid.
@@ -9,14 +9,18 @@ export interface FeePaymentMethod {
9
9
  /** The asset used to pay the fee. */
10
10
  getAsset(): Promise<AztecAddress>;
11
11
  /**
12
- * Creates a function call to pay the fee in the given asset.
13
- * @param gasSettings - The gas limits and max fees.
14
- * @returns The function call to pay the fee.
12
+ * Returns the data to be added to the final execution request
13
+ * to pay the fee in the given asset
14
+ * @returns The function calls to pay the fee.
15
15
  */
16
- getFunctionCalls(gasSettings: GasSettings): Promise<FunctionCall[]>;
16
+ getExecutionPayload(): Promise<ExecutionPayload>;
17
17
  /**
18
18
  * The expected fee payer for this tx.
19
- * @param gasSettings - The gas limits and max fees.
20
19
  */
21
- getFeePayer(gasSettings: GasSettings): Promise<AztecAddress>;
20
+ getFeePayer(): Promise<AztecAddress>;
21
+ /**
22
+ * The gas settings (if any) used to compute the
23
+ * execution payload of the payment method
24
+ */
25
+ getGasSettings(): GasSettings | undefined;
22
26
  }