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

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 (392) hide show
  1. package/README.md +1 -1
  2. package/dest/account/account.d.ts +60 -0
  3. package/dest/account/account.d.ts.map +1 -0
  4. package/dest/account/account.js +59 -0
  5. package/dest/account/{contract.d.ts → account_contract.d.ts} +16 -10
  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/{wallet/account_wallet_with_private_key.d.ts → account/account_with_secret_key.d.ts} +7 -8
  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 +3 -7
  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 +1 -13
  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 +24 -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 +2 -1
  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 +5 -2
  24. package/dest/api/account.d.ts.map +1 -1
  25. package/dest/api/account.js +3 -1
  26. package/dest/api/addresses.d.ts +1 -0
  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/{contract/index.d.ts → api/contract.d.ts} +15 -11
  36. package/dest/api/contract.d.ts.map +1 -0
  37. package/dest/{contract/index.js → api/contract.js} +14 -10
  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 +4 -3
  42. package/dest/api/deployment.d.ts.map +1 -1
  43. package/dest/api/deployment.js +4 -3
  44. package/dest/api/ethereum.d.ts +2 -0
  45. package/dest/api/ethereum.d.ts.map +1 -0
  46. package/dest/api/ethereum.js +1 -0
  47. package/dest/api/events.d.ts +12 -0
  48. package/dest/api/events.d.ts.map +1 -0
  49. package/dest/api/events.js +30 -0
  50. package/dest/api/fee.d.ts +1 -1
  51. package/dest/api/fee.d.ts.map +1 -1
  52. package/dest/api/fee.js +1 -1
  53. package/dest/api/fee_testing.d.ts +2 -0
  54. package/dest/api/fee_testing.d.ts.map +1 -0
  55. package/dest/api/fee_testing.js +1 -0
  56. package/dest/api/keys.d.ts +4 -0
  57. package/dest/api/keys.d.ts.map +1 -0
  58. package/dest/api/keys.js +3 -0
  59. package/dest/api/log.d.ts +1 -0
  60. package/dest/api/log.d.ts.map +1 -1
  61. package/dest/api/log.js +1 -0
  62. package/dest/api/messaging.d.ts +3 -0
  63. package/dest/api/messaging.d.ts.map +1 -0
  64. package/dest/api/messaging.js +2 -0
  65. package/dest/api/node.d.ts +21 -0
  66. package/dest/api/node.d.ts.map +1 -0
  67. package/dest/api/node.js +18 -0
  68. package/dest/api/note.d.ts +2 -0
  69. package/dest/api/note.d.ts.map +1 -0
  70. package/dest/api/note.js +1 -0
  71. package/dest/api/protocol.d.ts +3 -0
  72. package/dest/api/protocol.d.ts.map +1 -0
  73. package/dest/api/protocol.js +2 -0
  74. package/dest/api/trees.d.ts +3 -0
  75. package/dest/api/trees.d.ts.map +1 -0
  76. package/dest/api/trees.js +2 -0
  77. package/dest/api/tx.d.ts +2 -0
  78. package/dest/api/tx.d.ts.map +1 -0
  79. package/dest/api/tx.js +1 -0
  80. package/dest/api/utils.d.ts +13 -0
  81. package/dest/api/utils.d.ts.map +1 -0
  82. package/dest/api/utils.js +12 -0
  83. package/dest/api/wallet.d.ts +4 -1
  84. package/dest/api/wallet.d.ts.map +1 -1
  85. package/dest/api/wallet.js +4 -1
  86. package/dest/authorization/call_authorization_request.d.ts +67 -0
  87. package/dest/authorization/call_authorization_request.d.ts.map +1 -0
  88. package/dest/authorization/call_authorization_request.js +49 -0
  89. package/dest/contract/base_contract_interaction.d.ts +16 -79
  90. package/dest/contract/base_contract_interaction.d.ts.map +1 -1
  91. package/dest/contract/base_contract_interaction.js +15 -128
  92. package/dest/contract/batch_call.d.ts +13 -14
  93. package/dest/contract/batch_call.d.ts.map +1 -1
  94. package/dest/contract/batch_call.js +60 -60
  95. package/dest/contract/checker.d.ts +1 -1
  96. package/dest/contract/checker.d.ts.map +1 -1
  97. package/dest/contract/checker.js +2 -2
  98. package/dest/contract/contract.d.ts +7 -6
  99. package/dest/contract/contract.d.ts.map +1 -1
  100. package/dest/contract/contract.js +7 -16
  101. package/dest/contract/contract_base.d.ts +3 -9
  102. package/dest/contract/contract_base.d.ts.map +1 -1
  103. package/dest/contract/contract_base.js +2 -2
  104. package/dest/contract/contract_function_interaction.d.ts +52 -44
  105. package/dest/contract/contract_function_interaction.d.ts.map +1 -1
  106. package/dest/contract/contract_function_interaction.js +75 -74
  107. package/dest/contract/deploy_method.d.ts +102 -57
  108. package/dest/contract/deploy_method.d.ts.map +1 -1
  109. package/dest/contract/deploy_method.js +122 -132
  110. package/dest/contract/deploy_sent_tx.d.ts +3 -5
  111. package/dest/contract/deploy_sent_tx.d.ts.map +1 -1
  112. package/dest/contract/deploy_sent_tx.js +10 -13
  113. package/dest/contract/get_gas_limits.d.ts +5 -6
  114. package/dest/contract/get_gas_limits.d.ts.map +1 -1
  115. package/dest/contract/get_gas_limits.js +9 -3
  116. package/dest/contract/interaction_options.d.ts +114 -0
  117. package/dest/contract/interaction_options.d.ts.map +1 -0
  118. package/dest/contract/interaction_options.js +52 -0
  119. package/dest/contract/protocol_contracts.d.ts +6 -6
  120. package/dest/contract/protocol_contracts.d.ts.map +1 -1
  121. package/dest/contract/protocol_contracts.js +7 -7
  122. package/dest/contract/sent_tx.d.ts +8 -18
  123. package/dest/contract/sent_tx.d.ts.map +1 -1
  124. package/dest/contract/sent_tx.js +30 -42
  125. package/dest/contract/unsafe_contract.d.ts +1 -1
  126. package/dest/contract/unsafe_contract.d.ts.map +1 -1
  127. package/dest/contract/wait_for_proven.d.ts +17 -0
  128. package/dest/contract/wait_for_proven.d.ts.map +1 -0
  129. package/dest/contract/wait_for_proven.js +17 -0
  130. package/dest/deployment/broadcast_function.d.ts +3 -3
  131. package/dest/deployment/broadcast_function.d.ts.map +1 -1
  132. package/dest/deployment/broadcast_function.js +27 -23
  133. package/dest/deployment/contract_deployer.d.ts +1 -1
  134. package/dest/deployment/contract_deployer.d.ts.map +1 -1
  135. package/dest/deployment/publish_class.d.ts +6 -0
  136. package/dest/deployment/publish_class.d.ts.map +1 -0
  137. package/dest/deployment/publish_class.js +17 -0
  138. package/dest/deployment/publish_instance.d.ts +10 -0
  139. package/dest/deployment/publish_instance.d.ts.map +1 -0
  140. package/dest/deployment/publish_instance.js +11 -0
  141. package/dest/{api/ethereum → ethereum}/portal_manager.d.ts +29 -25
  142. package/dest/ethereum/portal_manager.d.ts.map +1 -0
  143. package/dest/{api/ethereum → ethereum}/portal_manager.js +106 -73
  144. package/dest/fee/fee_juice_payment_method_with_claim.d.ts +16 -11
  145. package/dest/fee/fee_juice_payment_method_with_claim.d.ts.map +1 -1
  146. package/dest/fee/fee_juice_payment_method_with_claim.js +26 -16
  147. package/dest/fee/fee_payment_method.d.ts +11 -7
  148. package/dest/fee/fee_payment_method.d.ts.map +1 -1
  149. package/dest/fee/private_fee_payment_method.d.ts +25 -8
  150. package/dest/fee/private_fee_payment_method.d.ts.map +1 -1
  151. package/dest/fee/private_fee_payment_method.js +43 -21
  152. package/dest/fee/public_fee_payment_method.d.ts +26 -9
  153. package/dest/fee/public_fee_payment_method.d.ts.map +1 -1
  154. package/dest/fee/public_fee_payment_method.js +45 -23
  155. package/dest/fee/sponsored_fee_payment.d.ts +17 -0
  156. package/dest/fee/sponsored_fee_payment.d.ts.map +1 -0
  157. package/dest/fee/sponsored_fee_payment.js +34 -0
  158. package/dest/utils/abi_types.d.ts +0 -2
  159. package/dest/utils/abi_types.d.ts.map +1 -1
  160. package/dest/utils/authwit.d.ts +81 -24
  161. package/dest/utils/authwit.d.ts.map +1 -1
  162. package/dest/utils/authwit.js +226 -40
  163. package/dest/utils/cross_chain.d.ts +24 -0
  164. package/dest/utils/cross_chain.d.ts.map +1 -0
  165. package/dest/utils/cross_chain.js +30 -0
  166. package/dest/utils/fee_juice.d.ts +3 -2
  167. package/dest/utils/fee_juice.d.ts.map +1 -1
  168. package/dest/utils/fee_juice.js +3 -2
  169. package/dest/utils/field_compressed_string.d.ts.map +1 -1
  170. package/dest/utils/node.d.ts.map +1 -1
  171. package/dest/utils/node.js +1 -1
  172. package/dest/utils/pub_key.d.ts.map +1 -1
  173. package/dest/utils/pub_key.js +1 -2
  174. package/dest/wallet/account_entrypoint_meta_payment_method.d.ts +34 -0
  175. package/dest/wallet/account_entrypoint_meta_payment_method.d.ts.map +1 -0
  176. package/dest/wallet/account_entrypoint_meta_payment_method.js +76 -0
  177. package/dest/wallet/account_manager.d.ts +69 -0
  178. package/dest/wallet/account_manager.d.ts.map +1 -0
  179. package/dest/wallet/account_manager.js +113 -0
  180. package/dest/wallet/base_wallet.d.ts +81 -63
  181. package/dest/wallet/base_wallet.d.ts.map +1 -1
  182. package/dest/wallet/base_wallet.js +221 -106
  183. package/dest/wallet/deploy_account_method.d.ts +52 -0
  184. package/dest/wallet/deploy_account_method.d.ts.map +1 -0
  185. package/dest/wallet/deploy_account_method.js +77 -0
  186. package/dest/wallet/index.d.ts +3 -16
  187. package/dest/wallet/index.d.ts.map +1 -1
  188. package/dest/wallet/index.js +3 -20
  189. package/dest/wallet/wallet.d.ts +2478 -0
  190. package/dest/wallet/wallet.d.ts.map +1 -0
  191. package/dest/wallet/wallet.js +202 -0
  192. package/package.json +40 -32
  193. package/src/account/account.ts +97 -0
  194. package/src/account/{contract.ts → account_contract.ts} +24 -13
  195. package/src/{wallet/account_wallet_with_private_key.ts → account/account_with_secret_key.ts} +6 -8
  196. package/src/account/index.ts +3 -7
  197. package/src/account/interface.ts +1 -12
  198. package/src/account/signerless_account.ts +46 -0
  199. package/src/api/abi.ts +26 -0
  200. package/src/api/account.ts +5 -9
  201. package/src/api/addresses.ts +1 -0
  202. package/src/api/authorization.ts +14 -0
  203. package/src/api/block.ts +2 -0
  204. package/src/{contract/index.ts → api/contract.ts} +37 -13
  205. package/src/api/crypto.ts +1 -0
  206. package/src/api/deployment.ts +4 -3
  207. package/src/api/ethereum.ts +10 -0
  208. package/src/api/events.ts +44 -0
  209. package/src/api/fee.ts +1 -1
  210. package/src/api/fee_testing.ts +1 -0
  211. package/src/api/keys.ts +8 -0
  212. package/src/api/log.ts +1 -0
  213. package/src/api/messaging.ts +2 -0
  214. package/src/api/node.ts +20 -0
  215. package/src/api/note.ts +1 -0
  216. package/src/api/protocol.ts +2 -0
  217. package/src/api/trees.ts +2 -0
  218. package/src/api/tx.ts +11 -0
  219. package/src/api/utils.ts +14 -0
  220. package/src/api/wallet.ts +33 -5
  221. package/src/authorization/call_authorization_request.ts +63 -0
  222. package/src/contract/base_contract_interaction.ts +24 -166
  223. package/src/contract/batch_call.ts +81 -49
  224. package/src/contract/checker.ts +8 -3
  225. package/src/contract/contract.ts +8 -17
  226. package/src/contract/contract_base.ts +4 -11
  227. package/src/contract/contract_function_interaction.ts +136 -106
  228. package/src/contract/deploy_method.ts +199 -129
  229. package/src/contract/deploy_sent_tx.ts +9 -15
  230. package/src/contract/get_gas_limits.ts +15 -8
  231. package/src/contract/interaction_options.ts +169 -0
  232. package/src/contract/protocol_contracts.ts +10 -10
  233. package/src/contract/sent_tx.ts +40 -51
  234. package/src/contract/unsafe_contract.ts +1 -1
  235. package/src/contract/wait_for_proven.ts +38 -0
  236. package/src/deployment/broadcast_function.ts +57 -57
  237. package/src/deployment/contract_deployer.ts +1 -1
  238. package/src/deployment/publish_class.ts +34 -0
  239. package/src/deployment/publish_instance.ts +26 -0
  240. package/src/{api/ethereum → ethereum}/portal_manager.ts +120 -74
  241. package/src/fee/fee_juice_payment_method_with_claim.ts +46 -33
  242. package/src/fee/fee_payment_method.ts +11 -7
  243. package/src/fee/private_fee_payment_method.ts +77 -57
  244. package/src/fee/public_fee_payment_method.ts +91 -67
  245. package/src/fee/sponsored_fee_payment.ts +44 -0
  246. package/src/utils/authwit.ts +255 -53
  247. package/src/utils/cross_chain.ts +53 -0
  248. package/src/utils/fee_juice.ts +4 -4
  249. package/src/utils/node.ts +1 -1
  250. package/src/utils/pub_key.ts +1 -2
  251. package/src/wallet/account_entrypoint_meta_payment_method.ts +105 -0
  252. package/src/wallet/account_manager.ts +154 -0
  253. package/src/wallet/base_wallet.ts +295 -143
  254. package/src/wallet/deploy_account_method.ts +125 -0
  255. package/src/wallet/index.ts +3 -33
  256. package/src/wallet/wallet.ts +362 -0
  257. package/dest/account/contract.d.ts.map +0 -1
  258. package/dest/account/wallet.d.ts +0 -11
  259. package/dest/account/wallet.d.ts.map +0 -1
  260. package/dest/account/wallet.js +0 -3
  261. package/dest/account_manager/deploy_account_method.d.ts +0 -15
  262. package/dest/account_manager/deploy_account_method.d.ts.map +0 -1
  263. package/dest/account_manager/deploy_account_method.js +0 -43
  264. package/dest/account_manager/deploy_account_sent_tx.d.ts +0 -30
  265. package/dest/account_manager/deploy_account_sent_tx.d.ts.map +0 -1
  266. package/dest/account_manager/deploy_account_sent_tx.js +0 -29
  267. package/dest/account_manager/index.d.ts +0 -108
  268. package/dest/account_manager/index.d.ts.map +0 -1
  269. package/dest/account_manager/index.js +0 -159
  270. package/dest/api/cheat_codes.d.ts +0 -26
  271. package/dest/api/cheat_codes.d.ts.map +0 -1
  272. package/dest/api/cheat_codes.js +0 -25
  273. package/dest/api/entrypoint.d.ts +0 -2
  274. package/dest/api/entrypoint.d.ts.map +0 -1
  275. package/dest/api/entrypoint.js +0 -1
  276. package/dest/api/ethereum/anvil_test_watcher.d.ts +0 -32
  277. package/dest/api/ethereum/anvil_test_watcher.d.ts.map +0 -1
  278. package/dest/api/ethereum/anvil_test_watcher.js +0 -133
  279. package/dest/api/ethereum/chain_monitor.d.ts +0 -25
  280. package/dest/api/ethereum/chain_monitor.d.ts.map +0 -1
  281. package/dest/api/ethereum/chain_monitor.js +0 -74
  282. package/dest/api/ethereum/cheat_codes.d.ts +0 -63
  283. package/dest/api/ethereum/cheat_codes.d.ts.map +0 -1
  284. package/dest/api/ethereum/cheat_codes.js +0 -162
  285. package/dest/api/ethereum/index.d.ts +0 -7
  286. package/dest/api/ethereum/index.d.ts.map +0 -1
  287. package/dest/api/ethereum/index.js +0 -6
  288. package/dest/api/ethereum/l1_contracts.d.ts +0 -3
  289. package/dest/api/ethereum/l1_contracts.d.ts.map +0 -1
  290. package/dest/api/ethereum/l1_contracts.js +0 -13
  291. package/dest/api/ethereum/portal_manager.d.ts.map +0 -1
  292. package/dest/api/interfaces/pxe.d.ts +0 -2
  293. package/dest/api/interfaces/pxe.d.ts.map +0 -1
  294. package/dest/api/interfaces/pxe.js +0 -1
  295. package/dest/api/log_id.d.ts +0 -2
  296. package/dest/api/log_id.d.ts.map +0 -1
  297. package/dest/api/log_id.js +0 -1
  298. package/dest/api/tx_hash.d.ts +0 -2
  299. package/dest/api/tx_hash.d.ts.map +0 -1
  300. package/dest/api/tx_hash.js +0 -1
  301. package/dest/contract/deploy_proven_tx.d.ts +0 -21
  302. package/dest/contract/deploy_proven_tx.d.ts.map +0 -1
  303. package/dest/contract/deploy_proven_tx.js +0 -19
  304. package/dest/contract/index.d.ts.map +0 -1
  305. package/dest/contract/proven_tx.d.ts +0 -17
  306. package/dest/contract/proven_tx.d.ts.map +0 -1
  307. package/dest/contract/proven_tx.js +0 -22
  308. package/dest/deployment/deploy_instance.d.ts +0 -10
  309. package/dest/deployment/deploy_instance.d.ts.map +0 -1
  310. package/dest/deployment/deploy_instance.js +0 -14
  311. package/dest/deployment/index.d.ts +0 -2
  312. package/dest/deployment/index.d.ts.map +0 -1
  313. package/dest/deployment/index.js +0 -1
  314. package/dest/deployment/register_class.d.ts +0 -6
  315. package/dest/deployment/register_class.d.ts.map +0 -1
  316. package/dest/deployment/register_class.js +0 -22
  317. package/dest/entrypoint/default_entrypoint.d.ts +0 -12
  318. package/dest/entrypoint/default_entrypoint.d.ts.map +0 -1
  319. package/dest/entrypoint/default_entrypoint.js +0 -28
  320. package/dest/entrypoint/default_multi_call_entrypoint.d.ts +0 -15
  321. package/dest/entrypoint/default_multi_call_entrypoint.d.ts.map +0 -1
  322. package/dest/entrypoint/default_multi_call_entrypoint.js +0 -130
  323. package/dest/entrypoint/entrypoint.d.ts +0 -35
  324. package/dest/entrypoint/entrypoint.d.ts.map +0 -1
  325. package/dest/entrypoint/entrypoint.js +0 -4
  326. package/dest/entrypoint/payload.d.ts +0 -128
  327. package/dest/entrypoint/payload.d.ts.map +0 -1
  328. package/dest/entrypoint/payload.js +0 -143
  329. package/dest/fee/fee_juice_payment_method.d.ts +0 -14
  330. package/dest/fee/fee_juice_payment_method.d.ts.map +0 -1
  331. package/dest/fee/fee_juice_payment_method.js +0 -20
  332. package/dest/index.d.ts +0 -66
  333. package/dest/index.d.ts.map +0 -1
  334. package/dest/index.js +0 -69
  335. package/dest/rpc_clients/index.d.ts +0 -3
  336. package/dest/rpc_clients/index.d.ts.map +0 -1
  337. package/dest/rpc_clients/index.js +0 -2
  338. package/dest/rpc_clients/node/index.d.ts +0 -12
  339. package/dest/rpc_clients/node/index.d.ts.map +0 -1
  340. package/dest/rpc_clients/node/index.js +0 -78
  341. package/dest/rpc_clients/pxe_client.d.ts +0 -10
  342. package/dest/rpc_clients/pxe_client.d.ts.map +0 -1
  343. package/dest/rpc_clients/pxe_client.js +0 -23
  344. package/dest/utils/aztec_cheatcodes.d.ts +0 -59
  345. package/dest/utils/aztec_cheatcodes.d.ts.map +0 -1
  346. package/dest/utils/aztec_cheatcodes.js +0 -62
  347. package/dest/utils/index.d.ts +0 -8
  348. package/dest/utils/index.d.ts.map +0 -1
  349. package/dest/utils/index.js +0 -6
  350. package/dest/utils/pxe.d.ts +0 -4
  351. package/dest/utils/pxe.d.ts.map +0 -1
  352. package/dest/utils/pxe.js +0 -14
  353. package/dest/wallet/account_wallet.d.ts +0 -76
  354. package/dest/wallet/account_wallet.d.ts.map +0 -1
  355. package/dest/wallet/account_wallet.js +0 -231
  356. package/dest/wallet/account_wallet_with_private_key.d.ts.map +0 -1
  357. package/dest/wallet/signerless_wallet.d.ts +0 -25
  358. package/dest/wallet/signerless_wallet.d.ts.map +0 -1
  359. package/dest/wallet/signerless_wallet.js +0 -36
  360. package/src/account/wallet.ts +0 -13
  361. package/src/account_manager/deploy_account_method.ts +0 -86
  362. package/src/account_manager/deploy_account_sent_tx.ts +0 -42
  363. package/src/account_manager/index.ts +0 -229
  364. package/src/api/cheat_codes.ts +0 -35
  365. package/src/api/entrypoint.ts +0 -1
  366. package/src/api/ethereum/anvil_test_watcher.ts +0 -158
  367. package/src/api/ethereum/chain_monitor.ts +0 -88
  368. package/src/api/ethereum/cheat_codes.ts +0 -184
  369. package/src/api/ethereum/index.ts +0 -19
  370. package/src/api/ethereum/l1_contracts.ts +0 -21
  371. package/src/api/interfaces/pxe.ts +0 -1
  372. package/src/api/log_id.ts +0 -1
  373. package/src/api/tx_hash.ts +0 -1
  374. package/src/contract/deploy_proven_tx.ts +0 -34
  375. package/src/contract/proven_tx.ts +0 -42
  376. package/src/deployment/deploy_instance.ts +0 -31
  377. package/src/deployment/index.ts +0 -1
  378. package/src/deployment/register_class.ts +0 -44
  379. package/src/entrypoint/default_entrypoint.ts +0 -39
  380. package/src/entrypoint/default_multi_call_entrypoint.ts +0 -93
  381. package/src/entrypoint/entrypoint.ts +0 -39
  382. package/src/entrypoint/payload.ts +0 -238
  383. package/src/fee/fee_juice_payment_method.ts +0 -26
  384. package/src/index.ts +0 -106
  385. package/src/rpc_clients/index.ts +0 -2
  386. package/src/rpc_clients/node/index.ts +0 -77
  387. package/src/rpc_clients/pxe_client.ts +0 -25
  388. package/src/utils/aztec_cheatcodes.ts +0 -77
  389. package/src/utils/index.ts +0 -21
  390. package/src/utils/pxe.ts +0 -17
  391. package/src/wallet/account_wallet.ts +0 -242
  392. package/src/wallet/signerless_wallet.ts +0 -52
@@ -1,146 +1,173 @@
1
- import type { Fr } from '@aztec/foundation/fields';
2
- import { type ContractArtifact, type FunctionArtifact, type FunctionCall, getInitializer } from '@aztec/stdlib/abi';
1
+ import { ExecutionPayload, mergeExecutionPayloads } from '@aztec/entrypoints/payload';
2
+ import { Fr } from '@aztec/foundation/fields';
3
+ import { type ContractArtifact, type FunctionAbi, type FunctionArtifact, getInitializer } from '@aztec/stdlib/abi';
4
+ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
3
5
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
6
  import {
5
7
  type ContractInstanceWithAddress,
6
8
  computePartialAddress,
7
9
  getContractClassFromArtifact,
8
- getContractInstanceFromDeployParams,
10
+ getContractInstanceFromInstantiationParams,
9
11
  } from '@aztec/stdlib/contract';
10
- import type { GasSettings } from '@aztec/stdlib/gas';
11
12
  import type { PublicKeys } from '@aztec/stdlib/keys';
12
- import type { Capsule, TxExecutionRequest } from '@aztec/stdlib/tx';
13
+ import { type Capsule, type TxProfileResult, collectOffchainEffects } from '@aztec/stdlib/tx';
13
14
 
14
- import type { Wallet } from '../account/index.js';
15
- import { deployInstance } from '../deployment/deploy_instance.js';
16
- import { registerContractClass } from '../deployment/register_class.js';
17
- import type { ExecutionRequestInit } from '../entrypoint/entrypoint.js';
18
- import { BaseContractInteraction, type SendMethodOptions } from './base_contract_interaction.js';
15
+ import { publishContractClass } from '../deployment/publish_class.js';
16
+ import { publishInstance } from '../deployment/publish_instance.js';
17
+ import type { Wallet } from '../wallet/wallet.js';
18
+ import { BaseContractInteraction } from './base_contract_interaction.js';
19
19
  import type { Contract } from './contract.js';
20
20
  import type { ContractBase } from './contract_base.js';
21
21
  import { ContractFunctionInteraction } from './contract_function_interaction.js';
22
- import { DeployProvenTx } from './deploy_proven_tx.js';
23
22
  import { DeploySentTx } from './deploy_sent_tx.js';
23
+ import { getGasLimits } from './get_gas_limits.js';
24
+ import {
25
+ type ProfileInteractionOptions,
26
+ type RequestInteractionOptions,
27
+ type SendInteractionOptions,
28
+ type SimulationInteractionFeeOptions,
29
+ type SimulationReturn,
30
+ toProfileOptions,
31
+ toSendOptions,
32
+ toSimulateOptions,
33
+ } from './interaction_options.js';
24
34
 
25
35
  /**
26
36
  * Options for deploying a contract on the Aztec network.
27
- * Allows specifying a contract address salt, and additional send method options.
37
+ * Allows specifying a contract address salt and different options to tweak contract publication
38
+ * and initialization
28
39
  */
29
- // docs:start:deploy_options
30
- export type DeployOptions = {
40
+ export type RequestDeployOptions = RequestInteractionOptions & {
31
41
  /** An optional salt value used to deterministically calculate the contract address. */
32
42
  contractAddressSalt?: Fr;
33
- /** Set to true to *not* include the sender in the address computation. */
34
- universalDeploy?: boolean;
35
- /** Skip contract class registration. */
36
- skipClassRegistration?: boolean;
37
- /** Skip public deployment, instead just privately initialize the contract. */
38
- skipPublicDeployment?: boolean;
43
+ /**
44
+ * Deployer address that will be used for the deployed contract's address computation.
45
+ * If set to 0, the sender's address won't be mixed in
46
+ */
47
+ deployer?: AztecAddress;
48
+ /** Skip contract class publication. */
49
+ skipClassPublication?: boolean;
50
+ /** Skip publication, instead just privately initialize the contract. */
51
+ skipInstancePublication?: boolean;
39
52
  /** Skip contract initialization. */
40
53
  skipInitialization?: boolean;
41
- } & SendMethodOptions;
54
+ };
55
+
56
+ /**
57
+ * Extends the deployment options with the required parameters to send the transaction
58
+ */
59
+ export type DeployOptions = Omit<RequestDeployOptions, 'deployer'> & {
60
+ /**
61
+ * Set to true to *not* include the sender in the address computation. This option
62
+ * is mutually exclusive with "deployer"
63
+ */
64
+ universalDeploy?: boolean;
65
+ } & Pick<SendInteractionOptions, 'from' | 'fee'>;
42
66
  // docs:end:deploy_options
43
67
  // TODO(@spalladino): Add unit tests for this class!
44
68
 
45
69
  /**
46
- * Contract interaction for deployment. Handles class registration, public instance deployment,
47
- * and initialization of the contract. Extends the BaseContractInteraction class.
70
+ * Options for simulating the deployment of a contract
71
+ * Allows skipping certain validations and computing gas estimations
72
+ */
73
+ export type SimulateDeployOptions = Omit<DeployOptions, 'fee'> & {
74
+ /** The fee options for the transaction. */
75
+ fee?: SimulationInteractionFeeOptions;
76
+ /** Simulate without checking for the validity of the resulting transaction,
77
+ * e.g. whether it emits any existing nullifiers. */
78
+ skipTxValidation?: boolean;
79
+ /** Whether to ensure the fee payer is not empty and has enough balance to pay for the fee. */
80
+ skipFeeEnforcement?: boolean;
81
+ /** Whether to include metadata such as offchain effects and performance statistics
82
+ * (e.g. timing information of the different circuits and oracles) in
83
+ * the simulation result, instead of just the return value of the function */
84
+ includeMetadata?: boolean;
85
+ };
86
+
87
+ /**
88
+ * Contract interaction for deployment.
89
+ * Handles class publication, instance publication, and initialization of the contract.
90
+ *
91
+ * Note that for some contracts, a tx is not required as part of its "creation":
92
+ * If there are no public functions, and if there are no initialization functions,
93
+ * then technically the contract has already been "created", and all of the contract's
94
+ * functions (private and utility) can be interacted-with immediately, without any
95
+ * "deployment tx".
96
+ *
97
+ * Extends the BaseContractInteraction class.
48
98
  */
49
99
  export class DeployMethod<TContract extends ContractBase = Contract> extends BaseContractInteraction {
50
100
  /** The contract instance to be deployed. */
51
101
  private instance?: ContractInstanceWithAddress = undefined;
52
102
 
53
103
  /** Constructor function to call. */
54
- private constructorArtifact: FunctionArtifact | undefined;
104
+ private constructorArtifact: FunctionAbi | undefined;
55
105
 
56
106
  constructor(
57
107
  private publicKeys: PublicKeys,
58
108
  wallet: Wallet,
59
- private artifact: ContractArtifact,
60
- private postDeployCtor: (address: AztecAddress, wallet: Wallet) => Promise<TContract>,
109
+ protected artifact: ContractArtifact,
110
+ protected postDeployCtor: (address: AztecAddress, wallet: Wallet) => Promise<TContract>,
61
111
  private args: any[] = [],
62
112
  constructorNameOrArtifact?: string | FunctionArtifact,
113
+ authWitnesses: AuthWitness[] = [],
114
+ capsules: Capsule[] = [],
63
115
  ) {
64
- super(wallet);
116
+ super(wallet, authWitnesses, capsules);
65
117
  this.constructorArtifact = getInitializer(artifact, constructorNameOrArtifact);
66
118
  }
67
119
 
68
120
  /**
69
- * Create a contract deployment transaction, given the deployment options.
70
- * This function internally calls `request()` and `sign()` methods to prepare
71
- * the transaction for deployment. The resulting signed transaction can be
72
- * later sent using the `send()` method.
73
- *
74
- * @param options - An object containing optional deployment settings, contractAddressSalt, and from.
75
- * @returns A Promise resolving to an object containing the signed transaction data and other relevant information.
121
+ * Returns the execution payload that allows this operation to happen on chain.
122
+ * @param options - Configuration options.
123
+ * @returns The execution payload for this operation
76
124
  */
77
- public async create(options: DeployOptions = {}): Promise<TxExecutionRequest> {
78
- return this.wallet.createTxExecutionRequest(await this.request(options));
79
- }
125
+ public async request(options?: RequestDeployOptions): Promise<ExecutionPayload> {
126
+ const publication = await this.getPublicationExecutionPayload(options);
80
127
 
81
- // REFACTOR: Having a `request` method with different semantics than the ones in the other
82
- // derived ContractInteractions is confusing. We should unify the flow of all ContractInteractions.
128
+ await this.wallet.registerContract(await this.getInstance(options), this.artifact);
83
129
 
84
- /**
85
- * Returns an array of function calls that represent this operation. Useful as a building
86
- * block for constructing batch requests.
87
- * @param options - Deployment options.
88
- * @returns An array of function calls.
89
- * @remarks This method does not have the same return type as the `request` in the ContractInteraction object,
90
- * it returns a promise for an array instead of a function call directly.
91
- */
92
- public async request(options: DeployOptions = {}): Promise<ExecutionRequestInit> {
93
- const deployment = await this.getDeploymentFunctionCalls(options);
94
-
95
- // NOTE: MEGA HACK. Remove with #10007
96
- // register the contract after generating deployment function calls in order to publicly register the class and (optioanlly) emit its bytecode
97
- //
98
- // TODO: Should we add the contracts to the DB here, or once the tx has been sent or mined?
99
- // Note that we need to run this registerContract here so it's available when computeFeeOptionsFromEstimatedGas
100
- // runs, since it needs the contract to have been registered in order to estimate gas for its initialization,
101
- // in case the initializer is public. This hints at the need of having "transient" contracts scoped to a
102
- // simulation, so we can run the simulation with a set of contracts, but only "commit" them to the wallet
103
- // once this tx has gone through.
104
- await this.wallet.registerContract({ artifact: this.artifact, instance: await this.getInstance(options) });
105
-
106
- const bootstrap = await this.getInitializeFunctionCalls(options);
107
-
108
- if (deployment.calls.length + bootstrap.calls.length === 0) {
109
- throw new Error(`No function calls needed to deploy contract ${this.artifact.name}`);
130
+ const initialization = await this.getInitializationExecutionPayload(options);
131
+ const feeExecutionPayload = options?.fee?.paymentMethod
132
+ ? await options.fee.paymentMethod.getExecutionPayload()
133
+ : undefined;
134
+ const finalExecutionPayload = feeExecutionPayload
135
+ ? mergeExecutionPayloads([feeExecutionPayload, publication, initialization])
136
+ : mergeExecutionPayloads([publication, initialization]);
137
+ if (!finalExecutionPayload.calls.length) {
138
+ throw new Error(`No transactions are needed to publish or initialize contract ${this.artifact.name}`);
110
139
  }
111
140
 
112
- const calls = [...deployment.calls, ...bootstrap.calls];
113
- const authWitnesses = [...(deployment.authWitnesses ?? []), ...(bootstrap.authWitnesses ?? [])];
114
- const hashedArguments = [...(deployment.hashedArguments ?? []), ...(bootstrap.hashedArguments ?? [])];
115
- const capsules = [...(deployment.capsules ?? []), ...(bootstrap.capsules ?? [])];
116
- const { cancellable, nonce, fee: userFee } = options;
117
-
118
- const request = { calls, authWitnesses, hashedArguments, capsules, cancellable, fee: userFee, nonce };
141
+ return finalExecutionPayload;
142
+ }
119
143
 
120
- const fee = await this.getFeeOptions(request);
121
- return { ...request, fee };
144
+ convertDeployOptionsToRequestOptions(options: DeployOptions): RequestDeployOptions {
145
+ return {
146
+ ...options,
147
+ deployer: !options?.universalDeploy ? options.from : undefined,
148
+ };
122
149
  }
123
150
 
124
151
  /**
125
- * Register this contract in the PXE and returns the Contract object.
152
+ * Adds this contract to the wallet and returns the Contract object.
126
153
  * @param options - Deployment options.
127
154
  */
128
- public async register(options: DeployOptions = {}): Promise<TContract> {
155
+ public async register(options?: RequestDeployOptions): Promise<TContract> {
129
156
  const instance = await this.getInstance(options);
130
- await this.wallet.registerContract({ artifact: this.artifact, instance });
157
+ await this.wallet.registerContract(instance, this.artifact);
131
158
  return this.postDeployCtor(instance.address, this.wallet);
132
159
  }
133
160
 
134
161
  /**
135
- * Returns calls for registration of the class and deployment of the instance, depending on the provided options.
136
- * @param options - Deployment options.
137
- * @returns A function call array with potentially requests to the class registerer and instance deployer.
162
+ * Returns an execution payload for:
163
+ * - publication of the contract class and
164
+ * - publication of the contract instance to enable public execution
165
+ * depending on the provided options.
166
+ * @param options - Contract creation options.
167
+ * @returns An execution payload with potentially calls (and bytecode capsule) to the class registry and instance registry.
138
168
  */
139
- protected async getDeploymentFunctionCalls(
140
- options: DeployOptions = {},
141
- ): Promise<Pick<ExecutionRequestInit, 'calls' | 'authWitnesses' | 'hashedArguments' | 'capsules'>> {
142
- const calls: FunctionCall[] = [];
143
- const capsules: Capsule[] = [];
169
+ protected async getPublicationExecutionPayload(options?: RequestDeployOptions): Promise<ExecutionPayload> {
170
+ const calls: ExecutionPayload[] = [];
144
171
 
145
172
  // Set contract instance object so it's available for populating the DeploySendTx object
146
173
  const instance = await this.getInstance(options);
@@ -154,30 +181,31 @@ export class DeployMethod<TContract extends ContractBase = Contract> extends Bas
154
181
  );
155
182
  }
156
183
 
157
- // Register the contract class if it hasn't been published already.
158
- if (!options.skipClassRegistration) {
184
+ // Publish the contract class if it hasn't been published already.
185
+ if (!options?.skipClassPublication) {
159
186
  if ((await this.wallet.getContractClassMetadata(contractClass.id)).isContractClassPubliclyRegistered) {
160
187
  this.log.debug(
161
- `Skipping registration of already registered contract class ${contractClass.id.toString()} for ${instance.address.toString()}`,
188
+ `Skipping publication of already-registered contract class ${contractClass.id.toString()} for ${instance.address.toString()}`,
162
189
  );
163
190
  } else {
164
191
  this.log.info(
165
- `Creating request for registering contract class ${contractClass.id.toString()} as part of deployment for ${instance.address.toString()}`,
192
+ `Creating request for publishing contract class ${contractClass.id.toString()} as part of deployment for ${instance.address.toString()}`,
166
193
  );
167
- const registerContractClassInteraction = await registerContractClass(this.wallet, this.artifact);
194
+ const registerContractClassInteraction = await publishContractClass(this.wallet, this.artifact);
168
195
  calls.push(await registerContractClassInteraction.request());
169
- capsules.push(...registerContractClassInteraction.getCapsules());
170
196
  }
171
197
  }
172
198
 
173
- // Deploy the contract via the instance deployer.
174
- if (!options.skipPublicDeployment) {
175
- const deploymentInteraction = await deployInstance(this.wallet, instance);
199
+ // Publish the contract instance:
200
+ if (!options?.skipInstancePublication) {
201
+ // TODO(https://github.com/AztecProtocol/aztec-packages/issues/15596):
202
+ // Read the artifact, and if there are no public functions, warn the caller that publication of the
203
+ // contract instance is not necessary (until such time as they wish to update the instance (i.e. change its class_id)).
204
+ const deploymentInteraction = await publishInstance(this.wallet, instance);
176
205
  calls.push(await deploymentInteraction.request());
177
- capsules.push(...deploymentInteraction.getCapsules());
178
206
  }
179
207
 
180
- return { calls, capsules };
208
+ return mergeExecutionPayloads(calls);
181
209
  }
182
210
 
183
211
  /**
@@ -185,78 +213,94 @@ export class DeployMethod<TContract extends ContractBase = Contract> extends Bas
185
213
  * @param options - Deployment options.
186
214
  * @returns - An array of function calls.
187
215
  */
188
- protected async getInitializeFunctionCalls(
189
- options: DeployOptions,
190
- ): Promise<Pick<ExecutionRequestInit, 'calls' | 'authWitnesses' | 'hashedArguments' | 'capsules'>> {
191
- const { address } = await this.getInstance(options);
192
- const calls: FunctionCall[] = [];
193
- const capsules: Capsule[] = [];
194
- if (this.constructorArtifact && !options.skipInitialization) {
216
+ protected async getInitializationExecutionPayload(options?: RequestDeployOptions): Promise<ExecutionPayload> {
217
+ const executionsPayloads: ExecutionPayload[] = [];
218
+ if (this.constructorArtifact && !options?.skipInitialization) {
219
+ const { address } = await this.getInstance(options);
195
220
  const constructorCall = new ContractFunctionInteraction(
196
221
  this.wallet,
197
222
  address,
198
223
  this.constructorArtifact,
199
224
  this.args,
200
225
  );
201
- calls.push(await constructorCall.request());
202
- capsules.push(...constructorCall.getCapsules());
226
+ executionsPayloads.push(await constructorCall.request());
203
227
  }
204
- return { calls, capsules };
228
+ return mergeExecutionPayloads(executionsPayloads);
205
229
  }
206
230
 
207
231
  /**
208
- * Send the contract deployment transaction using the provided options.
232
+ * Send a contract deployment transaction (initialize and/or publish) using the provided options.
209
233
  * This function extends the 'send' method from the ContractFunctionInteraction class,
210
234
  * allowing us to send a transaction specifically for contract deployment.
211
235
  *
212
236
  * @param options - An object containing various deployment options such as contractAddressSalt and from.
213
237
  * @returns A SentTx object that returns the receipt and the deployed contract instance.
214
238
  */
215
- public override send(options: DeployOptions = {}): DeploySentTx<TContract> {
216
- const txHashPromise = super.send(options).getTxHash();
239
+ public override send(options: DeployOptions): DeploySentTx<TContract> {
240
+ const sendTx = async () => {
241
+ const executionPayload = await this.request(this.convertDeployOptionsToRequestOptions(options));
242
+ const sendOptions = await toSendOptions(options);
243
+ return this.wallet.sendTx(executionPayload, sendOptions);
244
+ };
217
245
  this.log.debug(`Sent deployment tx of ${this.artifact.name} contract`);
218
- return new DeploySentTx(this.wallet, txHashPromise, this.postDeployCtor, () => this.getInstance(options));
246
+ return new DeploySentTx(this.wallet, sendTx, this.postDeployCtor, () => this.getInstance(options));
219
247
  }
220
248
 
221
249
  /**
222
- * Builds the contract instance to be deployed and returns it.
250
+ * Builds the contract instance and returns it.
223
251
  *
224
- * @param options - An object containing various deployment options.
252
+ * @param options - An object containing various initialization and publication options.
225
253
  * @returns An instance object.
226
254
  */
227
- public async getInstance(options: DeployOptions = {}): Promise<ContractInstanceWithAddress> {
255
+ public async getInstance(options?: RequestDeployOptions): Promise<ContractInstanceWithAddress> {
228
256
  if (!this.instance) {
229
- this.instance = await getContractInstanceFromDeployParams(this.artifact, {
257
+ this.instance = await getContractInstanceFromInstantiationParams(this.artifact, {
230
258
  constructorArgs: this.args,
231
- salt: options.contractAddressSalt,
259
+ salt: options?.contractAddressSalt ?? Fr.random(),
232
260
  publicKeys: this.publicKeys,
233
261
  constructorArtifact: this.constructorArtifact,
234
- deployer: options.universalDeploy ? AztecAddress.ZERO : this.wallet.getAddress(),
262
+ deployer: options?.deployer ? options.deployer : AztecAddress.ZERO,
235
263
  });
236
264
  }
237
265
  return this.instance;
238
266
  }
239
267
 
240
268
  /**
241
- * Prove the request.
242
- * @param options - Deployment options.
243
- * @returns The proven tx.
269
+ * Simulate the deployment
270
+ *
271
+ * @param options - An optional object containing additional configuration for the simulation.
272
+ * @returns A simulation result object containing metadata of the execution, including gas
273
+ * estimations (if requested via options), execution statistics and emitted offchain effects
244
274
  */
245
- public override async prove(options: DeployOptions): Promise<DeployProvenTx<TContract>> {
246
- const txProvingResult = await this.proveInternal(options);
247
- return new DeployProvenTx(this.wallet, txProvingResult.toTx(), this.postDeployCtor, () =>
248
- this.getInstance(options),
275
+ public async simulate(options: SimulateDeployOptions): Promise<SimulationReturn<true>> {
276
+ const executionPayload = await this.request(this.convertDeployOptionsToRequestOptions(options));
277
+ const simulatedTx = await this.wallet.simulateTx(executionPayload, await toSimulateOptions(options));
278
+
279
+ const { gasLimits, teardownGasLimits } = getGasLimits(simulatedTx, options.fee?.estimatedGasPadding);
280
+ this.log.verbose(
281
+ `Estimated gas limits for tx: DA=${gasLimits.daGas} L2=${gasLimits.l2Gas} teardownDA=${teardownGasLimits.daGas} teardownL2=${teardownGasLimits.l2Gas}`,
249
282
  );
283
+ return {
284
+ stats: simulatedTx.stats!,
285
+ offchainEffects: collectOffchainEffects(simulatedTx.privateExecutionResult),
286
+ result: undefined,
287
+ estimatedGas: { gasLimits, teardownGasLimits },
288
+ };
250
289
  }
251
290
 
252
291
  /**
253
- * Estimates gas cost for this deployment operation.
254
- * @param options - Options.
292
+ * Simulate a deployment and profile the gate count for each function in the transaction.
293
+ * @param options - Same options as `send`, plus extra profiling options.
294
+ *
295
+ * @returns An object containing the function return value and profile result.
255
296
  */
256
- public override estimateGas(
257
- options?: Omit<DeployOptions, 'estimateGas' | 'skipPublicSimulation'>,
258
- ): Promise<Pick<GasSettings, 'gasLimits' | 'teardownGasLimits'>> {
259
- return super.estimateGas(options);
297
+ public async profile(options: DeployOptions & ProfileInteractionOptions): Promise<TxProfileResult> {
298
+ const executionPayload = await this.request(this.convertDeployOptionsToRequestOptions(options));
299
+ return await this.wallet.profileTx(executionPayload, {
300
+ ...(await toProfileOptions(options)),
301
+ profileMode: options.profileMode,
302
+ skipProofGeneration: options.skipProofGeneration,
303
+ });
260
304
  }
261
305
 
262
306
  /** Return this deployment address. */
@@ -268,4 +312,30 @@ export class DeployMethod<TContract extends ContractBase = Contract> extends Bas
268
312
  public get partialAddress() {
269
313
  return this.instance && computePartialAddress(this.instance);
270
314
  }
315
+
316
+ /**
317
+ * Augments this DeployMethod with additional metadata, such as authWitnesses and capsules.
318
+ * @param options - An object containing the metadata to add to the interaction
319
+ * @returns A new DeployMethod with the added metadata, but calling the same original function in the same manner
320
+ */
321
+ public with({
322
+ authWitnesses = [],
323
+ capsules = [],
324
+ }: {
325
+ /** The authWitnesses to add to the deployment */
326
+ authWitnesses?: AuthWitness[];
327
+ /** The capsules to add to the deployment */
328
+ capsules?: Capsule[];
329
+ }): DeployMethod {
330
+ return new DeployMethod(
331
+ this.publicKeys,
332
+ this.wallet,
333
+ this.artifact,
334
+ this.postDeployCtor,
335
+ this.args,
336
+ this.constructorArtifact?.name,
337
+ this.authWitnesses.concat(authWitnesses),
338
+ this.capsules.concat(capsules),
339
+ );
340
+ }
271
341
  }
@@ -2,10 +2,9 @@ import { createLogger } from '@aztec/foundation/log';
2
2
  import type { FieldsOf } from '@aztec/foundation/types';
3
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
5
- import type { AztecNode, PXE } from '@aztec/stdlib/interfaces/client';
6
5
  import type { TxHash, TxReceipt } from '@aztec/stdlib/tx';
7
6
 
8
- import type { Wallet } from '../account/index.js';
7
+ import type { Wallet } from '../wallet/wallet.js';
9
8
  import type { Contract } from './contract.js';
10
9
  import type { ContractBase } from './contract_base.js';
11
10
  import { SentTx, type WaitOpts } from './sent_tx.js';
@@ -23,19 +22,19 @@ export type DeployTxReceipt<TContract extends ContractBase = Contract> = FieldsO
23
22
  };
24
23
 
25
24
  /**
26
- * A contract deployment transaction sent to the network, extending SentTx with methods to create a contract instance.
25
+ * A contract deployment transaction sent to the network, extending SentTx with methods to publish a contract instance.
27
26
  */
28
27
  export class DeploySentTx<TContract extends Contract = Contract> extends SentTx {
29
28
  private log = createLogger('aztecjs:deploy_sent_tx');
30
29
 
31
30
  constructor(
32
- pxeOrWallet: PXE | Wallet,
33
- txHashPromise: Promise<TxHash>,
31
+ wallet: Wallet,
32
+ sendTx: () => Promise<TxHash>,
34
33
  private postDeployCtor: (address: AztecAddress, wallet: Wallet) => Promise<TContract>,
35
34
  /** A getter for the deployed contract instance */
36
35
  public instanceGetter: () => Promise<ContractInstanceWithAddress>,
37
36
  ) {
38
- super(pxeOrWallet, txHashPromise);
37
+ super(wallet, sendTx);
39
38
  }
40
39
 
41
40
  /**
@@ -57,18 +56,13 @@ export class DeploySentTx<TContract extends Contract = Contract> extends SentTx
57
56
  */
58
57
  public override async wait(opts?: DeployedWaitOpts): Promise<DeployTxReceipt<TContract>> {
59
58
  const receipt = await super.wait(opts);
60
- const contract = await this.getContractObject(opts?.wallet);
61
- return { ...receipt, contract };
62
- }
63
-
64
- protected async getContractObject(wallet?: Wallet): Promise<TContract> {
65
- const isWallet = (pxeOrWallet: PXE | Wallet | AztecNode): pxeOrWallet is Wallet =>
66
- !!(pxeOrWallet as Wallet).createTxExecutionRequest;
67
- const contractWallet = wallet ?? (isWallet(this.pxeOrNode) && this.pxeOrNode);
59
+ // In the case of DeploySentTx we have a guarantee that this.walletOrNode is a Wallet so we can cast it to Wallet.
60
+ const contractWallet = opts?.wallet ?? (this.walletOrNode as Wallet);
68
61
  if (!contractWallet) {
69
62
  throw new Error(`A wallet is required for creating a contract instance`);
70
63
  }
71
64
  const instance = await this.instanceGetter();
72
- return this.postDeployCtor(instance.address, contractWallet) as Promise<TContract>;
65
+ const contract = (await this.postDeployCtor(instance.address, contractWallet)) as TContract;
66
+ return { ...receipt, contract };
73
67
  }
74
68
  }
@@ -1,9 +1,9 @@
1
- import type { Gas } from '@aztec/stdlib/gas';
1
+ import { AVM_MAX_PROCESSABLE_L2_GAS } from '@aztec/constants';
2
+ import { Gas } from '@aztec/stdlib/gas';
2
3
  import type { TxSimulationResult } from '@aztec/stdlib/tx';
3
4
 
4
5
  /**
5
6
  * Returns suggested total and teardown gas limits for a simulated tx.
6
- * Note that public gas usage is only accounted for if the publicOutput is present.
7
7
  * @param pad - Percentage to pad the suggested gas limits by, (as decimal, e.g., 0.10 for 10%).
8
8
  */
9
9
  export function getGasLimits(
@@ -11,16 +11,23 @@ export function getGasLimits(
11
11
  pad = 0.1,
12
12
  ): {
13
13
  /**
14
- * Total gas used across private and public
14
+ * Gas limit for the tx, excluding teardown gas
15
15
  */
16
- totalGas: Gas;
16
+ gasLimits: Gas;
17
17
  /**
18
- * Teardown gas used
18
+ * Gas limit for the teardown phase
19
19
  */
20
- teardownGas: Gas;
20
+ teardownGasLimits: Gas;
21
21
  } {
22
+ // Total gas does not use the teardown gas limit, but the actual total gas used by the tx.
23
+ const gasLimits = simulationResult.gasUsed.totalGas.mul(1 + pad);
24
+ const teardownGasLimits = simulationResult.gasUsed.teardownGas.mul(1 + pad);
25
+
26
+ if (gasLimits.l2Gas > AVM_MAX_PROCESSABLE_L2_GAS) {
27
+ throw new Error('Transaction consumes more gas than the AVM maximum processable gas');
28
+ }
22
29
  return {
23
- totalGas: simulationResult.gasUsed.totalGas.mul(1 + pad),
24
- teardownGas: simulationResult.gasUsed.teardownGas.mul(1 + pad),
30
+ gasLimits,
31
+ teardownGasLimits,
25
32
  };
26
33
  }