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

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
@@ -1,146 +1,174 @@
1
- import type { Fr } from '@aztec/foundation/fields';
2
- import { type ContractArtifact, type FunctionArtifact, type FunctionCall, getInitializer } from '@aztec/stdlib/abi';
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import { type ContractArtifact, type FunctionAbi, type FunctionArtifact, getInitializer } from '@aztec/stdlib/abi';
3
+ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
3
4
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
5
  import {
5
6
  type ContractInstanceWithAddress,
6
7
  computePartialAddress,
7
8
  getContractClassFromArtifact,
8
- getContractInstanceFromDeployParams,
9
+ getContractInstanceFromInstantiationParams,
9
10
  } from '@aztec/stdlib/contract';
10
- import type { GasSettings } from '@aztec/stdlib/gas';
11
11
  import type { PublicKeys } from '@aztec/stdlib/keys';
12
- import type { Capsule, TxExecutionRequest } from '@aztec/stdlib/tx';
12
+ import { type Capsule, type TxProfileResult, collectOffchainEffects } from '@aztec/stdlib/tx';
13
+ import { ExecutionPayload, mergeExecutionPayloads } 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';
19
- import type { Contract } from './contract.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';
20
19
  import type { ContractBase } from './contract_base.js';
21
20
  import { ContractFunctionInteraction } from './contract_function_interaction.js';
22
- import { DeployProvenTx } from './deploy_proven_tx.js';
23
21
  import { DeploySentTx } from './deploy_sent_tx.js';
22
+ import { getGasLimits } from './get_gas_limits.js';
23
+ import {
24
+ type ProfileInteractionOptions,
25
+ type RequestInteractionOptions,
26
+ type SendInteractionOptions,
27
+ type SimulationInteractionFeeOptions,
28
+ type SimulationReturn,
29
+ toProfileOptions,
30
+ toSendOptions,
31
+ toSimulateOptions,
32
+ } from './interaction_options.js';
24
33
 
25
34
  /**
26
35
  * Options for deploying a contract on the Aztec network.
27
- * Allows specifying a contract address salt, and additional send method options.
36
+ * Allows specifying a contract address salt and different options to tweak contract publication
37
+ * and initialization
28
38
  */
29
- // docs:start:deploy_options
30
- export type DeployOptions = {
39
+ export type RequestDeployOptions = RequestInteractionOptions & {
31
40
  /** An optional salt value used to deterministically calculate the contract address. */
32
41
  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;
42
+ /**
43
+ * Deployer address that will be used for the deployed contract's address computation.
44
+ * If set to 0, the sender's address won't be mixed in
45
+ */
46
+ deployer?: AztecAddress;
47
+ /** Skip contract class publication. */
48
+ skipClassPublication?: boolean;
49
+ /** Skip publication, instead just privately initialize the contract. */
50
+ skipInstancePublication?: boolean;
39
51
  /** Skip contract initialization. */
40
52
  skipInitialization?: boolean;
41
- } & SendMethodOptions;
42
- // docs:end:deploy_options
43
- // TODO(@spalladino): Add unit tests for this class!
53
+ /** Skip contract registration in the wallet */
54
+ skipRegistration?: boolean;
55
+ };
44
56
 
45
57
  /**
46
- * Contract interaction for deployment. Handles class registration, public instance deployment,
47
- * and initialization of the contract. Extends the BaseContractInteraction class.
58
+ * Extends the deployment options with the required parameters to send the transaction
48
59
  */
49
- export class DeployMethod<TContract extends ContractBase = Contract> extends BaseContractInteraction {
60
+ export type DeployOptions = Omit<RequestDeployOptions, 'deployer'> & {
61
+ /**
62
+ * Set to true to *not* include the sender in the address computation. This option
63
+ * is mutually exclusive with "deployer"
64
+ */
65
+ universalDeploy?: boolean;
66
+ } & Pick<SendInteractionOptions, 'from' | 'fee'>;
67
+
68
+ /**
69
+ * Options for simulating the deployment of a contract
70
+ * Allows skipping certain validations and computing gas estimations
71
+ */
72
+ export type SimulateDeployOptions = Omit<DeployOptions, 'fee'> & {
73
+ /** The fee options for the transaction. */
74
+ fee?: SimulationInteractionFeeOptions;
75
+ /** Simulate without checking for the validity of the resulting transaction,
76
+ * e.g. whether it emits any existing nullifiers. */
77
+ skipTxValidation?: boolean;
78
+ /** Whether to ensure the fee payer is not empty and has enough balance to pay for the fee. */
79
+ skipFeeEnforcement?: boolean;
80
+ /** Whether to include metadata such as offchain effects and performance statistics
81
+ * (e.g. timing information of the different circuits and oracles) in
82
+ * the simulation result, instead of just the return value of the function */
83
+ includeMetadata?: boolean;
84
+ };
85
+
86
+ /**
87
+ * Contract interaction for deployment.
88
+ * Handles class publication, instance publication, and initialization of the contract.
89
+ *
90
+ * Note that for some contracts, a tx is not required as part of its "creation":
91
+ * If there are no public functions, and if there are no initialization functions,
92
+ * then technically the contract has already been "created", and all of the contract's
93
+ * functions (private and utility) can be interacted-with immediately, without any
94
+ * "deployment tx".
95
+ *
96
+ * Extends the BaseContractInteraction class.
97
+ */
98
+ export class DeployMethod<TContract extends ContractBase = ContractBase> extends BaseContractInteraction {
50
99
  /** The contract instance to be deployed. */
51
100
  private instance?: ContractInstanceWithAddress = undefined;
52
101
 
53
102
  /** Constructor function to call. */
54
- private constructorArtifact: FunctionArtifact | undefined;
103
+ private constructorArtifact: FunctionAbi | undefined;
55
104
 
56
105
  constructor(
57
106
  private publicKeys: PublicKeys,
58
107
  wallet: Wallet,
59
- private artifact: ContractArtifact,
60
- private postDeployCtor: (address: AztecAddress, wallet: Wallet) => Promise<TContract>,
108
+ protected artifact: ContractArtifact,
109
+ protected postDeployCtor: (instance: ContractInstanceWithAddress, wallet: Wallet) => TContract,
61
110
  private args: any[] = [],
62
111
  constructorNameOrArtifact?: string | FunctionArtifact,
112
+ authWitnesses: AuthWitness[] = [],
113
+ capsules: Capsule[] = [],
63
114
  ) {
64
- super(wallet);
115
+ super(wallet, authWitnesses, capsules);
65
116
  this.constructorArtifact = getInitializer(artifact, constructorNameOrArtifact);
66
117
  }
67
118
 
68
119
  /**
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.
76
- */
77
- public async create(options: DeployOptions = {}): Promise<TxExecutionRequest> {
78
- return this.wallet.createTxExecutionRequest(await this.request(options));
79
- }
80
-
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.
83
-
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.
120
+ * Returns the execution payload that allows this operation to happen on chain.
121
+ * @param options - Configuration options.
122
+ * @returns The execution payload for this operation
91
123
  */
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);
124
+ public async request(options?: RequestDeployOptions): Promise<ExecutionPayload> {
125
+ const publication = await this.getPublicationExecutionPayload(options);
107
126
 
108
- if (deployment.calls.length + bootstrap.calls.length === 0) {
109
- throw new Error(`No function calls needed to deploy contract ${this.artifact.name}`);
127
+ if (!options?.skipRegistration) {
128
+ await this.wallet.registerContract(await this.getInstance(options), this.artifact);
110
129
  }
111
130
 
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;
131
+ const initialization = await this.getInitializationExecutionPayload(options);
132
+ const feeExecutionPayload = options?.fee?.paymentMethod
133
+ ? await options.fee.paymentMethod.getExecutionPayload()
134
+ : undefined;
135
+ const finalExecutionPayload = feeExecutionPayload
136
+ ? mergeExecutionPayloads([feeExecutionPayload, publication, initialization])
137
+ : mergeExecutionPayloads([publication, initialization]);
138
+ if (!finalExecutionPayload.calls.length) {
139
+ throw new Error(`No transactions are needed to publish or initialize contract ${this.artifact.name}`);
140
+ }
117
141
 
118
- const request = { calls, authWitnesses, hashedArguments, capsules, cancellable, fee: userFee, nonce };
142
+ return finalExecutionPayload;
143
+ }
119
144
 
120
- const fee = await this.getFeeOptions(request);
121
- return { ...request, fee };
145
+ convertDeployOptionsToRequestOptions(options: DeployOptions): RequestDeployOptions {
146
+ return {
147
+ ...options,
148
+ deployer: !options?.universalDeploy ? options.from : undefined,
149
+ };
122
150
  }
123
151
 
124
152
  /**
125
- * Register this contract in the PXE and returns the Contract object.
153
+ * Adds this contract to the wallet and returns the Contract object.
126
154
  * @param options - Deployment options.
127
155
  */
128
- public async register(options: DeployOptions = {}): Promise<TContract> {
156
+ public async register(options?: RequestDeployOptions): Promise<TContract> {
129
157
  const instance = await this.getInstance(options);
130
- await this.wallet.registerContract({ artifact: this.artifact, instance });
131
- return this.postDeployCtor(instance.address, this.wallet);
158
+ await this.wallet.registerContract(instance, this.artifact);
159
+ return this.postDeployCtor(instance, this.wallet);
132
160
  }
133
161
 
134
162
  /**
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.
163
+ * Returns an execution payload for:
164
+ * - publication of the contract class and
165
+ * - publication of the contract instance to enable public execution
166
+ * depending on the provided options.
167
+ * @param options - Contract creation options.
168
+ * @returns An execution payload with potentially calls (and bytecode capsule) to the class registry and instance registry.
138
169
  */
139
- protected async getDeploymentFunctionCalls(
140
- options: DeployOptions = {},
141
- ): Promise<Pick<ExecutionRequestInit, 'calls' | 'authWitnesses' | 'hashedArguments' | 'capsules'>> {
142
- const calls: FunctionCall[] = [];
143
- const capsules: Capsule[] = [];
170
+ protected async getPublicationExecutionPayload(options?: RequestDeployOptions): Promise<ExecutionPayload> {
171
+ const calls: ExecutionPayload[] = [];
144
172
 
145
173
  // Set contract instance object so it's available for populating the DeploySendTx object
146
174
  const instance = await this.getInstance(options);
@@ -154,30 +182,31 @@ export class DeployMethod<TContract extends ContractBase = Contract> extends Bas
154
182
  );
155
183
  }
156
184
 
157
- // Register the contract class if it hasn't been published already.
158
- if (!options.skipClassRegistration) {
185
+ // Publish the contract class if it hasn't been published already.
186
+ if (!options?.skipClassPublication) {
159
187
  if ((await this.wallet.getContractClassMetadata(contractClass.id)).isContractClassPubliclyRegistered) {
160
188
  this.log.debug(
161
- `Skipping registration of already registered contract class ${contractClass.id.toString()} for ${instance.address.toString()}`,
189
+ `Skipping publication of already-registered contract class ${contractClass.id.toString()} for ${instance.address.toString()}`,
162
190
  );
163
191
  } else {
164
192
  this.log.info(
165
- `Creating request for registering contract class ${contractClass.id.toString()} as part of deployment for ${instance.address.toString()}`,
193
+ `Creating request for publishing contract class ${contractClass.id.toString()} as part of deployment for ${instance.address.toString()}`,
166
194
  );
167
- const registerContractClassInteraction = await registerContractClass(this.wallet, this.artifact);
195
+ const registerContractClassInteraction = await publishContractClass(this.wallet, this.artifact);
168
196
  calls.push(await registerContractClassInteraction.request());
169
- capsules.push(...registerContractClassInteraction.getCapsules());
170
197
  }
171
198
  }
172
199
 
173
- // Deploy the contract via the instance deployer.
174
- if (!options.skipPublicDeployment) {
175
- const deploymentInteraction = await deployInstance(this.wallet, instance);
200
+ // Publish the contract instance:
201
+ if (!options?.skipInstancePublication) {
202
+ // TODO(https://github.com/AztecProtocol/aztec-packages/issues/15596):
203
+ // Read the artifact, and if there are no public functions, warn the caller that publication of the
204
+ // contract instance is not necessary (until such time as they wish to update the instance (i.e. change its class_id)).
205
+ const deploymentInteraction = await publishInstance(this.wallet, instance);
176
206
  calls.push(await deploymentInteraction.request());
177
- capsules.push(...deploymentInteraction.getCapsules());
178
207
  }
179
208
 
180
- return { calls, capsules };
209
+ return mergeExecutionPayloads(calls);
181
210
  }
182
211
 
183
212
  /**
@@ -185,78 +214,94 @@ export class DeployMethod<TContract extends ContractBase = Contract> extends Bas
185
214
  * @param options - Deployment options.
186
215
  * @returns - An array of function calls.
187
216
  */
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) {
217
+ protected async getInitializationExecutionPayload(options?: RequestDeployOptions): Promise<ExecutionPayload> {
218
+ const executionsPayloads: ExecutionPayload[] = [];
219
+ if (this.constructorArtifact && !options?.skipInitialization) {
220
+ const { address } = await this.getInstance(options);
195
221
  const constructorCall = new ContractFunctionInteraction(
196
222
  this.wallet,
197
223
  address,
198
224
  this.constructorArtifact,
199
225
  this.args,
200
226
  );
201
- calls.push(await constructorCall.request());
202
- capsules.push(...constructorCall.getCapsules());
227
+ executionsPayloads.push(await constructorCall.request());
203
228
  }
204
- return { calls, capsules };
229
+ return mergeExecutionPayloads(executionsPayloads);
205
230
  }
206
231
 
207
232
  /**
208
- * Send the contract deployment transaction using the provided options.
233
+ * Send a contract deployment transaction (initialize and/or publish) using the provided options.
209
234
  * This function extends the 'send' method from the ContractFunctionInteraction class,
210
235
  * allowing us to send a transaction specifically for contract deployment.
211
236
  *
212
237
  * @param options - An object containing various deployment options such as contractAddressSalt and from.
213
238
  * @returns A SentTx object that returns the receipt and the deployed contract instance.
214
239
  */
215
- public override send(options: DeployOptions = {}): DeploySentTx<TContract> {
216
- const txHashPromise = super.send(options).getTxHash();
240
+ public override send(options: DeployOptions): DeploySentTx<TContract> {
241
+ const sendTx = async () => {
242
+ const executionPayload = await this.request(this.convertDeployOptionsToRequestOptions(options));
243
+ const sendOptions = toSendOptions(options);
244
+ return this.wallet.sendTx(executionPayload, sendOptions);
245
+ };
217
246
  this.log.debug(`Sent deployment tx of ${this.artifact.name} contract`);
218
- return new DeploySentTx(this.wallet, txHashPromise, this.postDeployCtor, () => this.getInstance(options));
247
+ return new DeploySentTx(this.wallet, sendTx, this.postDeployCtor, () => this.getInstance(options));
219
248
  }
220
249
 
221
250
  /**
222
- * Builds the contract instance to be deployed and returns it.
251
+ * Builds the contract instance and returns it.
223
252
  *
224
- * @param options - An object containing various deployment options.
253
+ * @param options - An object containing various initialization and publication options.
225
254
  * @returns An instance object.
226
255
  */
227
- public async getInstance(options: DeployOptions = {}): Promise<ContractInstanceWithAddress> {
256
+ public async getInstance(options?: RequestDeployOptions): Promise<ContractInstanceWithAddress> {
228
257
  if (!this.instance) {
229
- this.instance = await getContractInstanceFromDeployParams(this.artifact, {
258
+ this.instance = await getContractInstanceFromInstantiationParams(this.artifact, {
230
259
  constructorArgs: this.args,
231
- salt: options.contractAddressSalt,
260
+ salt: options?.contractAddressSalt ?? Fr.random(),
232
261
  publicKeys: this.publicKeys,
233
262
  constructorArtifact: this.constructorArtifact,
234
- deployer: options.universalDeploy ? AztecAddress.ZERO : this.wallet.getAddress(),
263
+ deployer: options?.deployer ? options.deployer : AztecAddress.ZERO,
235
264
  });
236
265
  }
237
266
  return this.instance;
238
267
  }
239
268
 
240
269
  /**
241
- * Prove the request.
242
- * @param options - Deployment options.
243
- * @returns The proven tx.
270
+ * Simulate the deployment
271
+ *
272
+ * @param options - An optional object containing additional configuration for the simulation.
273
+ * @returns A simulation result object containing metadata of the execution, including gas
274
+ * estimations (if requested via options), execution statistics and emitted offchain effects
244
275
  */
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),
276
+ public async simulate(options: SimulateDeployOptions): Promise<SimulationReturn<true>> {
277
+ const executionPayload = await this.request(this.convertDeployOptionsToRequestOptions(options));
278
+ const simulatedTx = await this.wallet.simulateTx(executionPayload, toSimulateOptions(options));
279
+
280
+ const { gasLimits, teardownGasLimits } = getGasLimits(simulatedTx, options.fee?.estimatedGasPadding);
281
+ this.log.verbose(
282
+ `Estimated gas limits for tx: DA=${gasLimits.daGas} L2=${gasLimits.l2Gas} teardownDA=${teardownGasLimits.daGas} teardownL2=${teardownGasLimits.l2Gas}`,
249
283
  );
284
+ return {
285
+ stats: simulatedTx.stats!,
286
+ offchainEffects: collectOffchainEffects(simulatedTx.privateExecutionResult),
287
+ result: undefined,
288
+ estimatedGas: { gasLimits, teardownGasLimits },
289
+ };
250
290
  }
251
291
 
252
292
  /**
253
- * Estimates gas cost for this deployment operation.
254
- * @param options - Options.
293
+ * Simulate a deployment and profile the gate count for each function in the transaction.
294
+ * @param options - Same options as `send`, plus extra profiling options.
295
+ *
296
+ * @returns An object containing the function return value and profile result.
255
297
  */
256
- public override estimateGas(
257
- options?: Omit<DeployOptions, 'estimateGas' | 'skipPublicSimulation'>,
258
- ): Promise<Pick<GasSettings, 'gasLimits' | 'teardownGasLimits'>> {
259
- return super.estimateGas(options);
298
+ public async profile(options: DeployOptions & ProfileInteractionOptions): Promise<TxProfileResult> {
299
+ const executionPayload = await this.request(this.convertDeployOptionsToRequestOptions(options));
300
+ return await this.wallet.profileTx(executionPayload, {
301
+ ...toProfileOptions(options),
302
+ profileMode: options.profileMode,
303
+ skipProofGeneration: options.skipProofGeneration,
304
+ });
260
305
  }
261
306
 
262
307
  /** Return this deployment address. */
@@ -268,4 +313,30 @@ export class DeployMethod<TContract extends ContractBase = Contract> extends Bas
268
313
  public get partialAddress() {
269
314
  return this.instance && computePartialAddress(this.instance);
270
315
  }
316
+
317
+ /**
318
+ * Augments this DeployMethod with additional metadata, such as authWitnesses and capsules.
319
+ * @param options - An object containing the metadata to add to the interaction
320
+ * @returns A new DeployMethod with the added metadata, but calling the same original function in the same manner
321
+ */
322
+ public with({
323
+ authWitnesses = [],
324
+ capsules = [],
325
+ }: {
326
+ /** The authWitnesses to add to the deployment */
327
+ authWitnesses?: AuthWitness[];
328
+ /** The capsules to add to the deployment */
329
+ capsules?: Capsule[];
330
+ }): DeployMethod {
331
+ return new DeployMethod(
332
+ this.publicKeys,
333
+ this.wallet,
334
+ this.artifact,
335
+ this.postDeployCtor,
336
+ this.args,
337
+ this.constructorArtifact?.name,
338
+ this.authWitnesses.concat(authWitnesses),
339
+ this.capsules.concat(capsules),
340
+ );
341
+ }
271
342
  }
@@ -1,12 +1,9 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
2
  import type { FieldsOf } from '@aztec/foundation/types';
3
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
3
  import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
5
- import type { AztecNode, PXE } from '@aztec/stdlib/interfaces/client';
6
4
  import type { TxHash, TxReceipt } from '@aztec/stdlib/tx';
7
5
 
8
- import type { Wallet } from '../account/index.js';
9
- import type { Contract } from './contract.js';
6
+ import type { Wallet } from '../wallet/wallet.js';
10
7
  import type { ContractBase } from './contract_base.js';
11
8
  import { SentTx, type WaitOpts } from './sent_tx.js';
12
9
 
@@ -17,25 +14,35 @@ export type DeployedWaitOpts = WaitOpts & {
17
14
  };
18
15
 
19
16
  /** Extends a transaction receipt with a contract instance that represents the newly deployed contract. */
20
- export type DeployTxReceipt<TContract extends ContractBase = Contract> = FieldsOf<TxReceipt> & {
17
+ export type DeployTxReceipt<TContract extends ContractBase = ContractBase> = FieldsOf<TxReceipt> & {
21
18
  /** Instance of the newly deployed contract. */
22
19
  contract: TContract;
20
+ /** The deployed contract instance with address and metadata. */
21
+ instance: ContractInstanceWithAddress;
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
- export class DeploySentTx<TContract extends Contract = Contract> extends SentTx {
27
+ export class DeploySentTx<TContract extends ContractBase = ContractBase> extends SentTx {
29
28
  private log = createLogger('aztecjs:deploy_sent_tx');
30
29
 
31
30
  constructor(
32
- pxeOrWallet: PXE | Wallet,
33
- txHashPromise: Promise<TxHash>,
34
- private postDeployCtor: (address: AztecAddress, wallet: Wallet) => Promise<TContract>,
31
+ wallet: Wallet,
32
+ sendTx: () => Promise<TxHash>,
33
+ private postDeployCtor: (instance: ContractInstanceWithAddress, wallet: Wallet) => TContract,
35
34
  /** A getter for the deployed contract instance */
36
- public instanceGetter: () => Promise<ContractInstanceWithAddress>,
35
+ private instanceGetter: () => Promise<ContractInstanceWithAddress>,
37
36
  ) {
38
- super(pxeOrWallet, txHashPromise);
37
+ super(wallet, sendTx);
38
+ }
39
+
40
+ /**
41
+ * Returns the contract instance for this deployment.
42
+ * @returns The deployed contract instance with address and metadata.
43
+ */
44
+ public async getInstance(): Promise<ContractInstanceWithAddress> {
45
+ return await this.instanceGetter();
39
46
  }
40
47
 
41
48
  /**
@@ -45,8 +52,7 @@ export class DeploySentTx<TContract extends Contract = Contract> extends SentTx
45
52
  */
46
53
  public async deployed(opts?: DeployedWaitOpts): Promise<TContract> {
47
54
  const receipt = await this.wait(opts);
48
- const instance = await this.instanceGetter();
49
- this.log.info(`Contract ${instance.address.toString()} successfully deployed.`);
55
+ this.log.info(`Contract ${receipt.instance.address.toString()} successfully deployed.`);
50
56
  return receipt.contract;
51
57
  }
52
58
 
@@ -57,18 +63,13 @@ export class DeploySentTx<TContract extends Contract = Contract> extends SentTx
57
63
  */
58
64
  public override async wait(opts?: DeployedWaitOpts): Promise<DeployTxReceipt<TContract>> {
59
65
  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);
66
+ // In the case of DeploySentTx we have a guarantee that this.walletOrNode is a Wallet so we can cast it to Wallet.
67
+ const contractWallet = opts?.wallet ?? (this.walletOrNode as Wallet);
68
68
  if (!contractWallet) {
69
69
  throw new Error(`A wallet is required for creating a contract instance`);
70
70
  }
71
71
  const instance = await this.instanceGetter();
72
- return this.postDeployCtor(instance.address, contractWallet) as Promise<TContract>;
72
+ const contract = this.postDeployCtor(instance, contractWallet) as TContract;
73
+ return { ...receipt, contract, instance };
73
74
  }
74
75
  }
@@ -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
  }