@aztec/aztec.js 0.0.0-test.0 → 0.0.1-commit.0208eb9

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 (450) hide show
  1. package/README.md +1 -1
  2. package/dest/account/account.d.ts +44 -0
  3. package/dest/account/account.d.ts.map +1 -0
  4. package/dest/account/account.js +31 -0
  5. package/dest/account/account_contract.d.ts +42 -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 +36 -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} +22 -5
  11. package/dest/account/index.d.ts +6 -9
  12. package/dest/account/index.d.ts.map +1 -1
  13. package/dest/account/index.js +4 -6
  14. package/dest/account/signerless_account.d.ts +22 -0
  15. package/dest/account/signerless_account.d.ts.map +1 -0
  16. package/dest/account/signerless_account.js +24 -0
  17. package/dest/api/abi.d.ts +3 -2
  18. package/dest/api/abi.d.ts.map +1 -1
  19. package/dest/api/abi.js +1 -1
  20. package/dest/api/account.d.ts +5 -3
  21. package/dest/api/account.d.ts.map +1 -1
  22. package/dest/api/account.js +3 -2
  23. package/dest/api/addresses.d.ts +2 -1
  24. package/dest/api/addresses.d.ts.map +1 -1
  25. package/dest/api/addresses.js +1 -0
  26. package/dest/api/authorization.d.ts +5 -0
  27. package/dest/api/authorization.d.ts.map +1 -0
  28. package/dest/api/authorization.js +4 -0
  29. package/dest/api/block.d.ts +3 -0
  30. package/dest/api/block.d.ts.map +1 -0
  31. package/dest/api/block.js +2 -0
  32. package/dest/api/contract.d.ts +55 -0
  33. package/dest/api/contract.d.ts.map +1 -0
  34. package/dest/api/contract.js +53 -0
  35. package/dest/api/crypto.d.ts +2 -0
  36. package/dest/api/crypto.d.ts.map +1 -0
  37. package/dest/api/crypto.js +1 -0
  38. package/dest/api/deployment.d.ts +5 -4
  39. package/dest/api/deployment.d.ts.map +1 -1
  40. package/dest/api/deployment.js +4 -3
  41. package/dest/api/eth_address.d.ts +1 -1
  42. package/dest/api/ethereum.d.ts +2 -0
  43. package/dest/api/ethereum.d.ts.map +1 -0
  44. package/dest/api/ethereum.js +1 -0
  45. package/dest/api/events.d.ts +12 -0
  46. package/dest/api/events.d.ts.map +1 -0
  47. package/dest/api/events.js +30 -0
  48. package/dest/api/fee.d.ts +2 -2
  49. package/dest/api/fee.d.ts.map +1 -1
  50. package/dest/api/fee.js +1 -1
  51. package/dest/api/fee_testing.d.ts +2 -0
  52. package/dest/api/fee_testing.d.ts.map +1 -0
  53. package/dest/api/fee_testing.js +1 -0
  54. package/dest/api/fields.d.ts +3 -2
  55. package/dest/api/fields.d.ts.map +1 -1
  56. package/dest/api/fields.js +2 -1
  57. package/dest/api/keys.d.ts +4 -0
  58. package/dest/api/keys.d.ts.map +1 -0
  59. package/dest/api/keys.js +3 -0
  60. package/dest/api/log.d.ts +2 -1
  61. package/dest/api/log.d.ts.map +1 -1
  62. package/dest/api/log.js +1 -0
  63. package/dest/api/messaging.d.ts +3 -0
  64. package/dest/api/messaging.d.ts.map +1 -0
  65. package/dest/api/messaging.js +2 -0
  66. package/dest/api/node.d.ts +25 -0
  67. package/dest/api/node.d.ts.map +1 -0
  68. package/dest/api/node.js +22 -0
  69. package/dest/api/note.d.ts +2 -0
  70. package/dest/api/note.d.ts.map +1 -0
  71. package/dest/api/note.js +1 -0
  72. package/dest/api/protocol.d.ts +9 -0
  73. package/dest/api/protocol.d.ts.map +1 -0
  74. package/dest/api/protocol.js +8 -0
  75. package/dest/api/trees.d.ts +3 -0
  76. package/dest/api/trees.d.ts.map +1 -0
  77. package/dest/api/trees.js +2 -0
  78. package/dest/api/tx.d.ts +2 -0
  79. package/dest/api/tx.d.ts.map +1 -0
  80. package/dest/api/tx.js +1 -0
  81. package/dest/api/utils.d.ts +13 -0
  82. package/dest/api/utils.d.ts.map +1 -0
  83. package/dest/api/utils.js +12 -0
  84. package/dest/api/wallet.d.ts +5 -2
  85. package/dest/api/wallet.d.ts.map +1 -1
  86. package/dest/api/wallet.js +4 -1
  87. package/dest/authorization/call_authorization_request.d.ts +67 -0
  88. package/dest/authorization/call_authorization_request.d.ts.map +1 -0
  89. package/dest/authorization/call_authorization_request.js +49 -0
  90. package/dest/contract/base_contract_interaction.d.ts +18 -84
  91. package/dest/contract/base_contract_interaction.d.ts.map +1 -1
  92. package/dest/contract/base_contract_interaction.js +11 -136
  93. package/dest/contract/batch_call.d.ts +19 -21
  94. package/dest/contract/batch_call.d.ts.map +1 -1
  95. package/dest/contract/batch_call.js +89 -69
  96. package/dest/contract/checker.d.ts +2 -2
  97. package/dest/contract/checker.d.ts.map +1 -1
  98. package/dest/contract/checker.js +2 -2
  99. package/dest/contract/contract.d.ts +9 -8
  100. package/dest/contract/contract.d.ts.map +1 -1
  101. package/dest/contract/contract.js +10 -20
  102. package/dest/contract/contract_base.d.ts +8 -18
  103. package/dest/contract/contract_base.d.ts.map +1 -1
  104. package/dest/contract/contract_base.js +7 -14
  105. package/dest/contract/contract_function_interaction.d.ts +53 -45
  106. package/dest/contract/contract_function_interaction.d.ts.map +1 -1
  107. package/dest/contract/contract_function_interaction.js +78 -74
  108. package/dest/contract/deploy_method.d.ts +155 -62
  109. package/dest/contract/deploy_method.d.ts.map +1 -1
  110. package/dest/contract/deploy_method.js +152 -142
  111. package/dest/contract/get_gas_limits.d.ts +6 -7
  112. package/dest/contract/get_gas_limits.d.ts.map +1 -1
  113. package/dest/contract/get_gas_limits.js +9 -3
  114. package/dest/contract/interaction_options.d.ts +151 -0
  115. package/dest/contract/interaction_options.d.ts.map +1 -0
  116. package/dest/contract/interaction_options.js +53 -0
  117. package/dest/contract/protocol_contracts/auth-registry.d.ts +27 -0
  118. package/dest/contract/protocol_contracts/auth-registry.d.ts.map +1 -0
  119. package/dest/contract/protocol_contracts/auth-registry.js +558 -0
  120. package/dest/contract/protocol_contracts/contract-class-registry.d.ts +26 -0
  121. package/dest/contract/protocol_contracts/contract-class-registry.d.ts.map +1 -0
  122. package/dest/contract/protocol_contracts/contract-class-registry.js +385 -0
  123. package/dest/contract/protocol_contracts/contract-instance-registry.d.ts +22 -0
  124. package/dest/contract/protocol_contracts/contract-instance-registry.d.ts.map +1 -0
  125. package/dest/contract/protocol_contracts/contract-instance-registry.js +465 -0
  126. package/dest/contract/protocol_contracts/fee-juice.d.ts +21 -0
  127. package/dest/contract/protocol_contracts/fee-juice.d.ts.map +1 -0
  128. package/dest/contract/protocol_contracts/fee-juice.js +426 -0
  129. package/dest/contract/protocol_contracts/multi-call-entrypoint.d.ts +34 -0
  130. package/dest/contract/protocol_contracts/multi-call-entrypoint.d.ts.map +1 -0
  131. package/dest/contract/protocol_contracts/multi-call-entrypoint.js +585 -0
  132. package/dest/contract/protocol_contracts/public-checks.d.ts +26 -0
  133. package/dest/contract/protocol_contracts/public-checks.d.ts.map +1 -0
  134. package/dest/contract/protocol_contracts/public-checks.js +593 -0
  135. package/dest/contract/wait_for_proven.d.ts +17 -0
  136. package/dest/contract/wait_for_proven.d.ts.map +1 -0
  137. package/dest/contract/wait_for_proven.js +17 -0
  138. package/dest/contract/wait_opts.d.ts +16 -0
  139. package/dest/contract/wait_opts.d.ts.map +1 -0
  140. package/dest/contract/wait_opts.js +5 -0
  141. package/dest/deployment/broadcast_function.d.ts +4 -4
  142. package/dest/deployment/broadcast_function.d.ts.map +1 -1
  143. package/dest/deployment/broadcast_function.js +28 -24
  144. package/dest/deployment/contract_deployer.d.ts +2 -2
  145. package/dest/deployment/contract_deployer.d.ts.map +1 -1
  146. package/dest/deployment/contract_deployer.js +1 -1
  147. package/dest/deployment/publish_class.d.ts +6 -0
  148. package/dest/deployment/publish_class.d.ts.map +1 -0
  149. package/dest/deployment/publish_class.js +17 -0
  150. package/dest/deployment/publish_instance.d.ts +10 -0
  151. package/dest/deployment/publish_instance.d.ts.map +1 -0
  152. package/dest/deployment/publish_instance.js +11 -0
  153. package/dest/ethereum/portal_manager.d.ts +141 -0
  154. package/dest/ethereum/portal_manager.d.ts.map +1 -0
  155. package/dest/ethereum/portal_manager.js +345 -0
  156. package/dest/fee/fee_juice_payment_method_with_claim.d.ts +17 -12
  157. package/dest/fee/fee_juice_payment_method_with_claim.d.ts.map +1 -1
  158. package/dest/fee/fee_juice_payment_method_with_claim.js +27 -17
  159. package/dest/fee/fee_payment_method.d.ts +12 -8
  160. package/dest/fee/fee_payment_method.d.ts.map +1 -1
  161. package/dest/fee/private_fee_payment_method.d.ts +26 -9
  162. package/dest/fee/private_fee_payment_method.d.ts.map +1 -1
  163. package/dest/fee/private_fee_payment_method.js +45 -23
  164. package/dest/fee/public_fee_payment_method.d.ts +27 -10
  165. package/dest/fee/public_fee_payment_method.d.ts.map +1 -1
  166. package/dest/fee/public_fee_payment_method.js +47 -25
  167. package/dest/fee/sponsored_fee_payment.d.ts +17 -0
  168. package/dest/fee/sponsored_fee_payment.d.ts.map +1 -0
  169. package/dest/fee/sponsored_fee_payment.js +34 -0
  170. package/dest/scripts/generate_protocol_contract_types.d.ts +2 -0
  171. package/dest/scripts/generate_protocol_contract_types.d.ts.map +1 -0
  172. package/dest/scripts/generate_protocol_contract_types.js +120 -0
  173. package/dest/utils/abi_types.d.ts +2 -4
  174. package/dest/utils/abi_types.d.ts.map +1 -1
  175. package/dest/utils/authwit.d.ts +85 -26
  176. package/dest/utils/authwit.d.ts.map +1 -1
  177. package/dest/utils/authwit.js +234 -41
  178. package/dest/utils/cross_chain.d.ts +24 -0
  179. package/dest/utils/cross_chain.d.ts.map +1 -0
  180. package/dest/utils/cross_chain.js +30 -0
  181. package/dest/utils/fee_juice.d.ts +4 -3
  182. package/dest/utils/fee_juice.d.ts.map +1 -1
  183. package/dest/utils/fee_juice.js +4 -3
  184. package/dest/utils/field_compressed_string.d.ts +1 -1
  185. package/dest/utils/field_compressed_string.d.ts.map +1 -1
  186. package/dest/utils/field_compressed_string.js +1 -1
  187. package/dest/utils/node.d.ts +13 -2
  188. package/dest/utils/node.d.ts.map +1 -1
  189. package/dest/utils/node.js +47 -1
  190. package/dest/utils/pub_key.d.ts +2 -2
  191. package/dest/utils/pub_key.d.ts.map +1 -1
  192. package/dest/utils/pub_key.js +2 -3
  193. package/dest/wallet/account_entrypoint_meta_payment_method.d.ts +31 -0
  194. package/dest/wallet/account_entrypoint_meta_payment_method.d.ts.map +1 -0
  195. package/dest/wallet/account_entrypoint_meta_payment_method.js +61 -0
  196. package/dest/wallet/account_manager.d.ts +63 -0
  197. package/dest/wallet/account_manager.d.ts.map +1 -0
  198. package/dest/wallet/account_manager.js +107 -0
  199. package/dest/wallet/capabilities.d.ts +444 -0
  200. package/dest/wallet/capabilities.d.ts.map +1 -0
  201. package/dest/wallet/capabilities.js +3 -0
  202. package/dest/wallet/deploy_account_method.d.ts +80 -0
  203. package/dest/wallet/deploy_account_method.d.ts.map +1 -0
  204. package/dest/wallet/deploy_account_method.js +79 -0
  205. package/dest/wallet/index.d.ts +4 -17
  206. package/dest/wallet/index.d.ts.map +1 -1
  207. package/dest/wallet/index.js +3 -20
  208. package/dest/wallet/wallet.d.ts +2590 -0
  209. package/dest/wallet/wallet.d.ts.map +1 -0
  210. package/dest/wallet/wallet.js +291 -0
  211. package/package.json +47 -36
  212. package/src/account/account.ts +72 -0
  213. package/src/account/account_contract.ts +66 -0
  214. package/src/account/account_with_secret_key.ts +63 -0
  215. package/src/account/index.ts +5 -8
  216. package/src/account/signerless_account.ts +46 -0
  217. package/src/api/abi.ts +26 -0
  218. package/src/api/account.ts +8 -5
  219. package/src/api/addresses.ts +1 -0
  220. package/src/api/authorization.ts +15 -0
  221. package/src/api/block.ts +2 -0
  222. package/src/api/contract.ts +88 -0
  223. package/src/api/crypto.ts +1 -0
  224. package/src/api/deployment.ts +4 -3
  225. package/src/api/ethereum.ts +10 -0
  226. package/src/api/events.ts +44 -0
  227. package/src/api/fee.ts +1 -1
  228. package/src/api/fee_testing.ts +1 -0
  229. package/src/api/fields.ts +2 -1
  230. package/src/api/keys.ts +8 -0
  231. package/src/api/log.ts +1 -0
  232. package/src/api/messaging.ts +2 -0
  233. package/src/api/node.ts +24 -0
  234. package/src/api/note.ts +1 -0
  235. package/src/api/protocol.ts +9 -0
  236. package/src/api/trees.ts +2 -0
  237. package/src/api/tx.ts +15 -0
  238. package/src/api/utils.ts +14 -0
  239. package/src/api/wallet.ts +72 -5
  240. package/src/authorization/call_authorization_request.ts +63 -0
  241. package/src/contract/base_contract_interaction.ts +40 -171
  242. package/src/contract/batch_call.ts +108 -57
  243. package/src/contract/checker.ts +8 -3
  244. package/src/contract/contract.ts +14 -21
  245. package/src/contract/contract_base.ts +9 -26
  246. package/src/contract/contract_function_interaction.ts +135 -106
  247. package/src/contract/deploy_method.ts +307 -143
  248. package/src/contract/get_gas_limits.ts +15 -8
  249. package/src/contract/interaction_options.ts +208 -0
  250. package/src/contract/protocol_contracts/auth-registry.ts +351 -0
  251. package/src/contract/protocol_contracts/contract-class-registry.ts +241 -0
  252. package/src/contract/protocol_contracts/contract-instance-registry.ts +302 -0
  253. package/src/contract/protocol_contracts/fee-juice.ts +264 -0
  254. package/src/contract/protocol_contracts/multi-call-entrypoint.ts +332 -0
  255. package/src/contract/protocol_contracts/public-checks.ts +316 -0
  256. package/src/contract/wait_for_proven.ts +38 -0
  257. package/src/contract/wait_opts.ts +21 -0
  258. package/src/deployment/broadcast_function.ts +58 -58
  259. package/src/deployment/contract_deployer.ts +4 -3
  260. package/src/deployment/publish_class.ts +34 -0
  261. package/src/deployment/publish_instance.ts +23 -0
  262. package/src/{api/ethereum → ethereum}/portal_manager.ts +166 -89
  263. package/src/fee/fee_juice_payment_method_with_claim.ts +49 -34
  264. package/src/fee/fee_payment_method.ts +11 -7
  265. package/src/fee/private_fee_payment_method.ts +80 -58
  266. package/src/fee/public_fee_payment_method.ts +94 -68
  267. package/src/fee/sponsored_fee_payment.ts +46 -0
  268. package/src/scripts/generate_protocol_contract_types.ts +150 -0
  269. package/src/utils/abi_types.ts +1 -1
  270. package/src/utils/authwit.ts +274 -54
  271. package/src/utils/cross_chain.ts +53 -0
  272. package/src/utils/fee_juice.ts +5 -5
  273. package/src/utils/field_compressed_string.ts +1 -1
  274. package/src/utils/node.ts +63 -1
  275. package/src/utils/pub_key.ts +3 -4
  276. package/src/wallet/account_entrypoint_meta_payment_method.ts +74 -0
  277. package/src/wallet/account_manager.ts +146 -0
  278. package/src/wallet/capabilities.ts +491 -0
  279. package/src/wallet/deploy_account_method.ts +150 -0
  280. package/src/wallet/index.ts +3 -33
  281. package/src/wallet/wallet.ts +533 -0
  282. package/dest/account/contract.d.ts +0 -37
  283. package/dest/account/contract.d.ts.map +0 -1
  284. package/dest/account/interface.d.ts +0 -31
  285. package/dest/account/interface.d.ts.map +0 -1
  286. package/dest/account/interface.js +0 -4
  287. package/dest/account/wallet.d.ts +0 -11
  288. package/dest/account/wallet.d.ts.map +0 -1
  289. package/dest/account/wallet.js +0 -3
  290. package/dest/account_manager/deploy_account_method.d.ts +0 -15
  291. package/dest/account_manager/deploy_account_method.d.ts.map +0 -1
  292. package/dest/account_manager/deploy_account_method.js +0 -43
  293. package/dest/account_manager/deploy_account_sent_tx.d.ts +0 -30
  294. package/dest/account_manager/deploy_account_sent_tx.d.ts.map +0 -1
  295. package/dest/account_manager/deploy_account_sent_tx.js +0 -29
  296. package/dest/account_manager/index.d.ts +0 -108
  297. package/dest/account_manager/index.d.ts.map +0 -1
  298. package/dest/account_manager/index.js +0 -159
  299. package/dest/api/cheat_codes.d.ts +0 -26
  300. package/dest/api/cheat_codes.d.ts.map +0 -1
  301. package/dest/api/cheat_codes.js +0 -25
  302. package/dest/api/entrypoint.d.ts +0 -2
  303. package/dest/api/entrypoint.d.ts.map +0 -1
  304. package/dest/api/entrypoint.js +0 -1
  305. package/dest/api/ethereum/anvil_test_watcher.d.ts +0 -32
  306. package/dest/api/ethereum/anvil_test_watcher.d.ts.map +0 -1
  307. package/dest/api/ethereum/anvil_test_watcher.js +0 -133
  308. package/dest/api/ethereum/chain_monitor.d.ts +0 -25
  309. package/dest/api/ethereum/chain_monitor.d.ts.map +0 -1
  310. package/dest/api/ethereum/chain_monitor.js +0 -74
  311. package/dest/api/ethereum/cheat_codes.d.ts +0 -63
  312. package/dest/api/ethereum/cheat_codes.d.ts.map +0 -1
  313. package/dest/api/ethereum/cheat_codes.js +0 -162
  314. package/dest/api/ethereum/index.d.ts +0 -7
  315. package/dest/api/ethereum/index.d.ts.map +0 -1
  316. package/dest/api/ethereum/index.js +0 -6
  317. package/dest/api/ethereum/l1_contracts.d.ts +0 -3
  318. package/dest/api/ethereum/l1_contracts.d.ts.map +0 -1
  319. package/dest/api/ethereum/l1_contracts.js +0 -13
  320. package/dest/api/ethereum/portal_manager.d.ts +0 -136
  321. package/dest/api/ethereum/portal_manager.d.ts.map +0 -1
  322. package/dest/api/ethereum/portal_manager.js +0 -286
  323. package/dest/api/interfaces/pxe.d.ts +0 -2
  324. package/dest/api/interfaces/pxe.d.ts.map +0 -1
  325. package/dest/api/interfaces/pxe.js +0 -1
  326. package/dest/api/log_id.d.ts +0 -2
  327. package/dest/api/log_id.d.ts.map +0 -1
  328. package/dest/api/log_id.js +0 -1
  329. package/dest/api/tx_hash.d.ts +0 -2
  330. package/dest/api/tx_hash.d.ts.map +0 -1
  331. package/dest/api/tx_hash.js +0 -1
  332. package/dest/contract/deploy_proven_tx.d.ts +0 -21
  333. package/dest/contract/deploy_proven_tx.d.ts.map +0 -1
  334. package/dest/contract/deploy_proven_tx.js +0 -19
  335. package/dest/contract/deploy_sent_tx.d.ts +0 -45
  336. package/dest/contract/deploy_sent_tx.d.ts.map +0 -1
  337. package/dest/contract/deploy_sent_tx.js +0 -43
  338. package/dest/contract/index.d.ts +0 -45
  339. package/dest/contract/index.d.ts.map +0 -1
  340. package/dest/contract/index.js +0 -43
  341. package/dest/contract/protocol_contracts.d.ts +0 -9
  342. package/dest/contract/protocol_contracts.d.ts.map +0 -1
  343. package/dest/contract/protocol_contracts.js +0 -26
  344. package/dest/contract/proven_tx.d.ts +0 -17
  345. package/dest/contract/proven_tx.d.ts.map +0 -1
  346. package/dest/contract/proven_tx.js +0 -22
  347. package/dest/contract/sent_tx.d.ts +0 -61
  348. package/dest/contract/sent_tx.d.ts.map +0 -1
  349. package/dest/contract/sent_tx.js +0 -102
  350. package/dest/contract/unsafe_contract.d.ts +0 -15
  351. package/dest/contract/unsafe_contract.d.ts.map +0 -1
  352. package/dest/contract/unsafe_contract.js +0 -6
  353. package/dest/deployment/deploy_instance.d.ts +0 -10
  354. package/dest/deployment/deploy_instance.d.ts.map +0 -1
  355. package/dest/deployment/deploy_instance.js +0 -14
  356. package/dest/deployment/index.d.ts +0 -2
  357. package/dest/deployment/index.d.ts.map +0 -1
  358. package/dest/deployment/index.js +0 -1
  359. package/dest/deployment/register_class.d.ts +0 -6
  360. package/dest/deployment/register_class.d.ts.map +0 -1
  361. package/dest/deployment/register_class.js +0 -22
  362. package/dest/entrypoint/default_entrypoint.d.ts +0 -12
  363. package/dest/entrypoint/default_entrypoint.d.ts.map +0 -1
  364. package/dest/entrypoint/default_entrypoint.js +0 -28
  365. package/dest/entrypoint/default_multi_call_entrypoint.d.ts +0 -15
  366. package/dest/entrypoint/default_multi_call_entrypoint.d.ts.map +0 -1
  367. package/dest/entrypoint/default_multi_call_entrypoint.js +0 -130
  368. package/dest/entrypoint/entrypoint.d.ts +0 -35
  369. package/dest/entrypoint/entrypoint.d.ts.map +0 -1
  370. package/dest/entrypoint/entrypoint.js +0 -4
  371. package/dest/entrypoint/payload.d.ts +0 -128
  372. package/dest/entrypoint/payload.d.ts.map +0 -1
  373. package/dest/entrypoint/payload.js +0 -143
  374. package/dest/fee/fee_juice_payment_method.d.ts +0 -14
  375. package/dest/fee/fee_juice_payment_method.d.ts.map +0 -1
  376. package/dest/fee/fee_juice_payment_method.js +0 -20
  377. package/dest/index.d.ts +0 -66
  378. package/dest/index.d.ts.map +0 -1
  379. package/dest/index.js +0 -69
  380. package/dest/rpc_clients/index.d.ts +0 -3
  381. package/dest/rpc_clients/index.d.ts.map +0 -1
  382. package/dest/rpc_clients/index.js +0 -2
  383. package/dest/rpc_clients/node/index.d.ts +0 -12
  384. package/dest/rpc_clients/node/index.d.ts.map +0 -1
  385. package/dest/rpc_clients/node/index.js +0 -78
  386. package/dest/rpc_clients/pxe_client.d.ts +0 -10
  387. package/dest/rpc_clients/pxe_client.d.ts.map +0 -1
  388. package/dest/rpc_clients/pxe_client.js +0 -23
  389. package/dest/utils/aztec_cheatcodes.d.ts +0 -59
  390. package/dest/utils/aztec_cheatcodes.d.ts.map +0 -1
  391. package/dest/utils/aztec_cheatcodes.js +0 -62
  392. package/dest/utils/index.d.ts +0 -8
  393. package/dest/utils/index.d.ts.map +0 -1
  394. package/dest/utils/index.js +0 -6
  395. package/dest/utils/pxe.d.ts +0 -4
  396. package/dest/utils/pxe.d.ts.map +0 -1
  397. package/dest/utils/pxe.js +0 -14
  398. package/dest/wallet/account_wallet.d.ts +0 -76
  399. package/dest/wallet/account_wallet.d.ts.map +0 -1
  400. package/dest/wallet/account_wallet.js +0 -231
  401. package/dest/wallet/account_wallet_with_private_key.d.ts +0 -26
  402. package/dest/wallet/account_wallet_with_private_key.d.ts.map +0 -1
  403. package/dest/wallet/base_wallet.d.ts +0 -73
  404. package/dest/wallet/base_wallet.d.ts.map +0 -1
  405. package/dest/wallet/base_wallet.js +0 -123
  406. package/dest/wallet/signerless_wallet.d.ts +0 -25
  407. package/dest/wallet/signerless_wallet.d.ts.map +0 -1
  408. package/dest/wallet/signerless_wallet.js +0 -36
  409. package/src/account/contract.ts +0 -56
  410. package/src/account/interface.ts +0 -36
  411. package/src/account/wallet.ts +0 -13
  412. package/src/account_manager/deploy_account_method.ts +0 -86
  413. package/src/account_manager/deploy_account_sent_tx.ts +0 -42
  414. package/src/account_manager/index.ts +0 -229
  415. package/src/api/cheat_codes.ts +0 -35
  416. package/src/api/entrypoint.ts +0 -1
  417. package/src/api/ethereum/anvil_test_watcher.ts +0 -158
  418. package/src/api/ethereum/chain_monitor.ts +0 -88
  419. package/src/api/ethereum/cheat_codes.ts +0 -184
  420. package/src/api/ethereum/index.ts +0 -19
  421. package/src/api/ethereum/l1_contracts.ts +0 -21
  422. package/src/api/interfaces/pxe.ts +0 -1
  423. package/src/api/log_id.ts +0 -1
  424. package/src/api/tx_hash.ts +0 -1
  425. package/src/contract/deploy_proven_tx.ts +0 -34
  426. package/src/contract/deploy_sent_tx.ts +0 -74
  427. package/src/contract/index.ts +0 -48
  428. package/src/contract/protocol_contracts.ts +0 -35
  429. package/src/contract/proven_tx.ts +0 -42
  430. package/src/contract/sent_tx.ts +0 -141
  431. package/src/contract/unsafe_contract.ts +0 -19
  432. package/src/deployment/deploy_instance.ts +0 -31
  433. package/src/deployment/index.ts +0 -1
  434. package/src/deployment/register_class.ts +0 -44
  435. package/src/entrypoint/default_entrypoint.ts +0 -39
  436. package/src/entrypoint/default_multi_call_entrypoint.ts +0 -93
  437. package/src/entrypoint/entrypoint.ts +0 -39
  438. package/src/entrypoint/payload.ts +0 -238
  439. package/src/fee/fee_juice_payment_method.ts +0 -26
  440. package/src/index.ts +0 -106
  441. package/src/rpc_clients/index.ts +0 -2
  442. package/src/rpc_clients/node/index.ts +0 -77
  443. package/src/rpc_clients/pxe_client.ts +0 -25
  444. package/src/utils/aztec_cheatcodes.ts +0 -77
  445. package/src/utils/index.ts +0 -21
  446. package/src/utils/pxe.ts +0 -17
  447. package/src/wallet/account_wallet.ts +0 -242
  448. package/src/wallet/account_wallet_with_private_key.ts +0 -40
  449. package/src/wallet/base_wallet.ts +0 -198
  450. package/src/wallet/signerless_wallet.ts +0 -52
@@ -1,30 +1,16 @@
1
- import type { Fr } from '@aztec/foundation/fields';
2
1
  import { createLogger } from '@aztec/foundation/log';
3
- import { GasSettings } from '@aztec/stdlib/gas';
4
- import type { Capsule, TxExecutionRequest, TxProvingResult } from '@aztec/stdlib/tx';
5
-
6
- import type { Wallet } from '../account/wallet.js';
7
- import type { ExecutionRequestInit } from '../entrypoint/entrypoint.js';
8
- import type { FeeOptions, UserFeeOptions } from '../entrypoint/payload.js';
9
- import { FeeJuicePaymentMethod } from '../fee/fee_juice_payment_method.js';
10
- import { getGasLimits } from './get_gas_limits.js';
11
- import { ProvenTx } from './proven_tx.js';
12
- import { SentTx } from './sent_tx.js';
13
-
14
- /**
15
- * Represents options for calling a (constrained) function in a contract.
16
- * Allows the user to specify the sender address and nonce for a transaction.
17
- */
18
- export type SendMethodOptions = {
19
- /** Wether to skip the simulation of the public part of the transaction. */
20
- skipPublicSimulation?: boolean;
21
- /** The fee options for the transaction. */
22
- fee?: UserFeeOptions;
23
- /** Custom nonce to inject into the app payload of the transaction. Useful when trying to cancel an ongoing transaction by creating a new one with a higher fee */
24
- nonce?: Fr;
25
- /** Whether the transaction can be cancelled. If true, an extra nullifier will be emitted: H(nonce, GENERATOR_INDEX__TX_NULLIFIER) */
26
- cancellable?: boolean;
27
- };
2
+ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
3
+ import type { Capsule, ExecutionPayload, TxReceipt } from '@aztec/stdlib/tx';
4
+
5
+ import type { Wallet } from '../wallet/wallet.js';
6
+ import {
7
+ type InteractionWaitOptions,
8
+ type RequestInteractionOptions,
9
+ type SendInteractionOptions,
10
+ type SendInteractionOptionsWithoutWait,
11
+ type SendReturn,
12
+ toSendOptions,
13
+ } from './interaction_options.js';
28
14
 
29
15
  /**
30
16
  * Base class for an interaction with a contract, be it a deployment, a function call, or a batch.
@@ -33,160 +19,43 @@ export type SendMethodOptions = {
33
19
  export abstract class BaseContractInteraction {
34
20
  protected log = createLogger('aztecjs:contract_interaction');
35
21
 
36
- private capsules: Capsule[] = [];
37
-
38
- constructor(protected wallet: Wallet) {}
22
+ constructor(
23
+ protected wallet: Wallet,
24
+ protected authWitnesses: AuthWitness[] = [],
25
+ protected capsules: Capsule[] = [],
26
+ ) {}
39
27
 
40
28
  /**
41
- * Create a transaction execution request ready to be simulated.
29
+ * Returns an execution request that represents this operation.
30
+ * Can be used as a building block for constructing batch requests.
42
31
  * @param options - An optional object containing additional configuration for the transaction.
43
- * @returns A transaction execution request.
44
- */
45
- public abstract create(options?: SendMethodOptions): Promise<TxExecutionRequest>;
46
-
47
- /**
48
- * Creates a transaction execution request, simulates and proves it. Differs from .prove in
49
- * that its result does not include the wallet nor the composed tx object, but only the proving result.
50
- * This object can then be used to either create a ProvenTx ready to be sent, or directly send the transaction.
51
- * @param options - optional arguments to be used in the creation of the transaction
52
- * @returns The proving result.
53
- */
54
- protected async proveInternal(options: SendMethodOptions = {}): Promise<TxProvingResult> {
55
- const txRequest = await this.create(options);
56
- const txSimulationResult = await this.wallet.simulateTx(txRequest, !options.skipPublicSimulation, undefined, true);
57
- return await this.wallet.proveTx(txRequest, txSimulationResult.privateExecutionResult);
58
- }
59
-
60
- // docs:start:prove
61
- /**
62
- * Proves a transaction execution request and returns a tx object ready to be sent.
63
- * @param options - optional arguments to be used in the creation of the transaction
64
- * @returns The resulting transaction
32
+ * @returns An execution request wrapped in promise.
65
33
  */
66
- public async prove(options: SendMethodOptions = {}): Promise<ProvenTx> {
67
- // docs:end:prove
68
- const txProvingResult = await this.proveInternal(options);
69
- return new ProvenTx(this.wallet, txProvingResult.toTx());
70
- }
34
+ public abstract request(options?: RequestInteractionOptions): Promise<ExecutionPayload>;
71
35
 
72
36
  // docs:start:send
73
37
  /**
74
38
  * Sends a transaction to the contract function with the specified options.
75
- * This function throws an error if called on an unconstrained function.
76
- * It creates and signs the transaction if necessary, and returns a SentTx instance,
77
- * which can be used to track the transaction status, receipt, and events.
78
- * @param options - An optional object containing 'from' property representing
79
- * the AztecAddress of the sender. If not provided, the default address is used.
80
- * @returns A SentTx instance for tracking the transaction status and information.
81
- */
82
- public send(options: SendMethodOptions = {}): SentTx {
39
+ * By default, waits for the transaction to be mined and returns the receipt (or custom type).
40
+ * @param options - An object containing 'from' property representing
41
+ * the AztecAddress of the sender, optional fee configuration, and optional wait settings
42
+ * @returns TReturn (if wait is undefined/WaitOpts) or TxHash (if wait is NO_WAIT)
43
+ */
44
+ // Overload for when wait is not specified at all - returns TReturn
45
+ public send<TReturn = TxReceipt>(options: SendInteractionOptionsWithoutWait): Promise<TReturn>;
46
+ // Generic overload for explicit wait values
47
+ // eslint-disable-next-line jsdoc/require-jsdoc
48
+ public send<TReturn = TxReceipt, W extends InteractionWaitOptions = undefined>(
49
+ options: SendInteractionOptions<W>,
50
+ ): Promise<SendReturn<W, TReturn>>;
51
+ // eslint-disable-next-line jsdoc/require-jsdoc
52
+ public async send<TReturn = TxReceipt>(
53
+ options: SendInteractionOptions<InteractionWaitOptions>,
54
+ ): Promise<SendReturn<typeof options.wait, TReturn>> {
83
55
  // docs:end:send
84
- const promise = (async () => {
85
- const txProvingResult = await this.proveInternal(options);
86
- return this.wallet.sendTx(txProvingResult.toTx());
87
- })();
88
- return new SentTx(this.wallet, promise);
89
- }
56
+ const executionPayload = await this.request(options);
57
+ const sendOptions = toSendOptions(options);
90
58
 
91
- // docs:start:estimateGas
92
- /**
93
- * Estimates gas for a given tx request and returns gas limits for it.
94
- * @param opts - Options.
95
- * @param pad - Percentage to pad the suggested gas limits by, if empty, defaults to 10%.
96
- * @returns Gas limits.
97
- */
98
- public async estimateGas(
99
- opts?: Omit<SendMethodOptions, 'estimateGas' | 'skipPublicSimulation'>,
100
- ): Promise<Pick<GasSettings, 'gasLimits' | 'teardownGasLimits'>> {
101
- // docs:end:estimateGas
102
- const txRequest = await this.create({ ...opts, fee: { ...opts?.fee, estimateGas: false } });
103
- const simulationResult = await this.wallet.simulateTx(
104
- txRequest,
105
- true /*simulatePublic*/,
106
- undefined /* msgSender */,
107
- undefined /* skipTxValidation */,
108
- true /* skipFeeEnforcement */,
109
- );
110
- const { totalGas: gasLimits, teardownGas: teardownGasLimits } = getGasLimits(
111
- simulationResult,
112
- opts?.fee?.estimatedGasPadding,
113
- );
114
- return { gasLimits, teardownGasLimits };
115
- }
116
-
117
- /**
118
- * Returns default fee options based on the user opts without running a simulation for gas estimation.
119
- * @param fee - User-provided fee options.
120
- */
121
- protected async getDefaultFeeOptions(fee: UserFeeOptions | undefined): Promise<FeeOptions> {
122
- const maxFeesPerGas =
123
- fee?.gasSettings?.maxFeesPerGas ?? (await this.wallet.getCurrentBaseFees()).mul(1 + (fee?.baseFeePadding ?? 0.5));
124
- const paymentMethod = fee?.paymentMethod ?? new FeeJuicePaymentMethod(this.wallet.getAddress());
125
- const gasSettings: GasSettings = GasSettings.default({ ...fee?.gasSettings, maxFeesPerGas });
126
- this.log.debug(`Using L2 gas settings`, gasSettings);
127
- return { gasSettings, paymentMethod };
128
- }
129
-
130
- // docs:start:getFeeOptions
131
- /**
132
- * Return fee options based on the user opts, estimating tx gas if needed.
133
- * @param request - Request to execute for this interaction.
134
- * @param pad - Percentage to pad the suggested gas limits by, as decimal (e.g., 0.10 for 10%).
135
- * @returns Fee options for the actual transaction.
136
- */
137
- protected async getFeeOptions(
138
- request: Omit<ExecutionRequestInit, 'fee'> & { /** User-provided fee options */ fee?: UserFeeOptions },
139
- ): Promise<FeeOptions> {
140
- // docs:end:getFeeOptions
141
- const defaultFeeOptions = await this.getDefaultFeeOptions(request.fee);
142
- const paymentMethod = defaultFeeOptions.paymentMethod;
143
- const maxFeesPerGas = defaultFeeOptions.gasSettings.maxFeesPerGas;
144
- const maxPriorityFeesPerGas = defaultFeeOptions.gasSettings.maxPriorityFeesPerGas;
145
-
146
- let gasSettings = defaultFeeOptions.gasSettings;
147
- if (request.fee?.estimateGas) {
148
- const feeForEstimation: FeeOptions = { paymentMethod, gasSettings };
149
- const txRequest = await this.wallet.createTxExecutionRequest({ ...request, fee: feeForEstimation });
150
- const simulationResult = await this.wallet.simulateTx(
151
- txRequest,
152
- true /*simulatePublic*/,
153
- undefined /* msgSender */,
154
- undefined /* skipTxValidation */,
155
- true /* skipFeeEnforcement */,
156
- );
157
- const { totalGas: gasLimits, teardownGas: teardownGasLimits } = getGasLimits(
158
- simulationResult,
159
- request.fee?.estimatedGasPadding,
160
- );
161
- gasSettings = GasSettings.from({ maxFeesPerGas, maxPriorityFeesPerGas, gasLimits, teardownGasLimits });
162
- this.log.verbose(
163
- `Estimated gas limits for tx: DA=${gasLimits.daGas} L2=${gasLimits.l2Gas} teardownDA=${teardownGasLimits.daGas} teardownL2=${teardownGasLimits.l2Gas}`,
164
- );
165
- }
166
-
167
- return { gasSettings, paymentMethod };
168
- }
169
-
170
- /**
171
- * Add data passed to the oracle calls during this contract interaction.
172
- * @param capsule - Data passed to oracle calls.
173
- */
174
- public addCapsule(capsule: Capsule) {
175
- this.capsules.push(capsule);
176
- }
177
-
178
- /**
179
- * Add data passed to the oracle calls during this contract interaction.
180
- * @param capsules - Data passed to oracle calls.
181
- */
182
- public addCapsules(capsules: Capsule[]) {
183
- this.capsules.push(...capsules);
184
- }
185
-
186
- /**
187
- * Return all capsules added for this function interaction.
188
- */
189
- public getCapsules() {
190
- return this.capsules;
59
+ return (await this.wallet.sendTx(executionPayload, sendOptions as any)) as SendReturn<typeof options.wait, TReturn>;
191
60
  }
192
61
  }
@@ -1,95 +1,146 @@
1
1
  import { type FunctionCall, FunctionType, decodeFromAbi } from '@aztec/stdlib/abi';
2
- import type { TxExecutionRequest } from '@aztec/stdlib/tx';
2
+ import {
3
+ ExecutionPayload,
4
+ TxSimulationResult,
5
+ UtilitySimulationResult,
6
+ mergeExecutionPayloads,
7
+ } from '@aztec/stdlib/tx';
3
8
 
4
- import type { Wallet } from '../account/index.js';
5
- import { BaseContractInteraction, type SendMethodOptions } from './base_contract_interaction.js';
6
- import type { SimulateMethodOptions } from './contract_function_interaction.js';
9
+ import type { BatchedMethod, Wallet } from '../wallet/wallet.js';
10
+ import { BaseContractInteraction } from './base_contract_interaction.js';
11
+ import {
12
+ type RequestInteractionOptions,
13
+ type SimulateInteractionOptions,
14
+ toSimulateOptions,
15
+ } from './interaction_options.js';
7
16
 
8
17
  /** A batch of function calls to be sent as a single transaction through a wallet. */
18
+ // docs:start:batch_call_class
9
19
  export class BatchCall extends BaseContractInteraction {
10
- constructor(wallet: Wallet, protected calls: FunctionCall[]) {
20
+ constructor(
21
+ wallet: Wallet,
22
+ protected interactions: (BaseContractInteraction | ExecutionPayload)[],
23
+ ) {
11
24
  super(wallet);
12
25
  }
26
+ // docs:end:batch_call_class
13
27
 
14
28
  /**
15
- * Create a transaction execution request that represents this batch, encoded and authenticated by the
16
- * user's wallet, ready to be simulated.
17
- * @param opts - An optional object containing additional configuration for the transaction.
18
- * @returns A Promise that resolves to a transaction instance.
29
+ * Returns an execution request that represents this operation.
30
+ * @param options - An optional object containing additional configuration for the request generation.
31
+ * @returns An execution payload wrapped in promise.
19
32
  */
20
- public async create(opts?: SendMethodOptions): Promise<TxExecutionRequest> {
21
- const calls = this.calls;
22
- const capsules = this.getCapsules();
23
- const fee = await this.getFeeOptions({ calls, capsules, ...opts });
24
- return await this.wallet.createTxExecutionRequest({ calls, capsules, ...opts, fee });
33
+ public async request(options: RequestInteractionOptions = {}): Promise<ExecutionPayload> {
34
+ const requests = await this.getExecutionPayloads();
35
+ const feeExecutionPayload = options.fee?.paymentMethod
36
+ ? await options.fee.paymentMethod.getExecutionPayload()
37
+ : undefined;
38
+ const finalExecutionPayload = feeExecutionPayload
39
+ ? mergeExecutionPayloads([feeExecutionPayload, ...requests])
40
+ : mergeExecutionPayloads([...requests]);
41
+ return finalExecutionPayload;
25
42
  }
26
43
 
27
44
  /**
28
- * Simulate a transaction and get its return values
29
- * Differs from prove in a few important ways:
30
- * 1. It returns the values of the function execution
31
- * 2. It supports `unconstrained`, `private` and `public` functions
32
- *
33
- * @param options - An optional object containing additional configuration for the transaction.
34
- * @returns The result of the transaction as returned by the contract function.
45
+ * Simulates the batch, supporting private, public and utility functions. Although this is a single
46
+ * interaction with the wallet, private and public functions will be grouped into a single ExecutionPayload
47
+ * that the wallet will simulate as a single transaction. Utility function calls will simply be executed
48
+ * one by one.
49
+ * @param options - An optional object containing additional configuration for the interaction.
50
+ * @returns The results of all the interactions that make up the batch
35
51
  */
36
- public async simulate(options: SimulateMethodOptions = {}): Promise<any> {
37
- const { indexedCalls, unconstrained } = this.calls.reduce<{
52
+ public async simulate(options: SimulateInteractionOptions): Promise<any> {
53
+ const { indexedExecutionPayloads, utility } = (await this.getExecutionPayloads()).reduce<{
38
54
  /** Keep track of the number of private calls to retrieve the return values */
39
55
  privateIndex: 0;
40
56
  /** Keep track of the number of public calls to retrieve the return values */
41
57
  publicIndex: 0;
42
- /** The public and private function calls in the batch */
43
- indexedCalls: [FunctionCall, number, number][];
44
- /** The unconstrained function calls in the batch. */
45
- unconstrained: [FunctionCall, number][];
58
+ /** The public and private function execution requests in the batch */
59
+ indexedExecutionPayloads: [ExecutionPayload, number, number][];
60
+ /** The utility function calls in the batch. */
61
+ utility: [FunctionCall, number][];
46
62
  }>(
47
63
  (acc, current, index) => {
48
- if (current.type === FunctionType.UNCONSTRAINED) {
49
- acc.unconstrained.push([current, index]);
64
+ const call = current.calls[0];
65
+ if (call.type === FunctionType.UTILITY) {
66
+ acc.utility.push([call, index]);
50
67
  } else {
51
- acc.indexedCalls.push([
68
+ acc.indexedExecutionPayloads.push([
52
69
  current,
53
70
  index,
54
- current.type === FunctionType.PRIVATE ? acc.privateIndex++ : acc.publicIndex++,
71
+ call.type === FunctionType.PRIVATE ? acc.privateIndex++ : acc.publicIndex++,
55
72
  ]);
56
73
  }
57
74
  return acc;
58
75
  },
59
- { indexedCalls: [], unconstrained: [], publicIndex: 0, privateIndex: 0 },
76
+ { indexedExecutionPayloads: [], utility: [], publicIndex: 0, privateIndex: 0 },
60
77
  );
61
78
 
62
- const calls = indexedCalls.map(([call]) => call);
63
- const capsules = this.getCapsules();
64
- const fee = await this.getFeeOptions({ calls, capsules, ...options });
65
- const txRequest = await this.wallet.createTxExecutionRequest({ calls, capsules, ...options, fee });
79
+ const batchRequests: BatchedMethod[] = [];
66
80
 
67
- const unconstrainedCalls = unconstrained.map(
68
- async ([call, index]) =>
69
- [await this.wallet.simulateUnconstrained(call.name, call.args, call.to, options?.from), index] as const,
70
- );
81
+ // Add utility calls to batch
82
+ for (const [call] of utility) {
83
+ batchRequests.push({
84
+ name: 'simulateUtility' as const,
85
+ args: [call, options?.authWitnesses],
86
+ });
87
+ }
88
+
89
+ // Add tx simulation to batch if there are any private/public calls
90
+ if (indexedExecutionPayloads.length > 0) {
91
+ const payloads = indexedExecutionPayloads.map(([request]) => request);
92
+ const combinedPayload = mergeExecutionPayloads(payloads);
93
+ const executionPayload = new ExecutionPayload(
94
+ combinedPayload.calls,
95
+ combinedPayload.authWitnesses.concat(options.authWitnesses ?? []),
96
+ combinedPayload.capsules.concat(options.capsules ?? []),
97
+ combinedPayload.extraHashedArgs,
98
+ );
71
99
 
72
- const [unconstrainedResults, simulatedTx] = await Promise.all([
73
- Promise.all(unconstrainedCalls),
74
- this.wallet.simulateTx(txRequest, true, options?.from, options?.skipTxValidation),
75
- ]);
100
+ batchRequests.push({
101
+ name: 'simulateTx' as const,
102
+ args: [executionPayload, toSimulateOptions(options)],
103
+ });
104
+ }
105
+
106
+ const batchResults = batchRequests.length > 0 ? await this.wallet.batch(batchRequests) : [];
76
107
 
77
108
  const results: any[] = [];
78
109
 
79
- unconstrainedResults.forEach(([result, index]) => {
80
- results[index] = result;
81
- });
82
- indexedCalls.forEach(([call, callIndex, resultIndex]) => {
83
- // As account entrypoints are private, for private functions we retrieve the return values from the first nested call
84
- // since we're interested in the first set of values AFTER the account entrypoint
85
- // For public functions we retrieve the first values directly from the public output.
86
- const rawReturnValues =
87
- call.type == FunctionType.PRIVATE
88
- ? simulatedTx.getPrivateReturnValues()?.nested?.[resultIndex].values
89
- : simulatedTx.getPublicReturnValues()?.[resultIndex].values;
110
+ // Process utility results (they come first in batch results)
111
+ for (let i = 0; i < utility.length; i++) {
112
+ const [call, resultIndex] = utility[i];
113
+ const wrappedResult = batchResults[i];
114
+ if (wrappedResult.name === 'simulateUtility') {
115
+ const rawReturnValues = (wrappedResult.result as UtilitySimulationResult).result;
116
+ results[resultIndex] = rawReturnValues ? decodeFromAbi(call.returnTypes, rawReturnValues) : [];
117
+ }
118
+ }
119
+
120
+ // Process tx simulation result (it comes last if present)
121
+ if (indexedExecutionPayloads.length > 0) {
122
+ const txResultWrapper = batchResults[utility.length];
123
+ if (txResultWrapper.name === 'simulateTx') {
124
+ const simulatedTx = txResultWrapper.result as TxSimulationResult;
125
+ indexedExecutionPayloads.forEach(([request, callIndex, resultIndex]) => {
126
+ const call = request.calls[0];
127
+ // As account entrypoints are private, for private functions we retrieve the return values from the first nested call
128
+ // since we're interested in the first set of values AFTER the account entrypoint
129
+ // For public functions we retrieve the first values directly from the public output.
130
+ const rawReturnValues =
131
+ call.type == FunctionType.PRIVATE
132
+ ? simulatedTx.getPrivateReturnValues()?.nested?.[resultIndex].values
133
+ : simulatedTx.getPublicReturnValues()?.[resultIndex].values;
134
+
135
+ results[callIndex] = rawReturnValues ? decodeFromAbi(call.returnTypes, rawReturnValues) : [];
136
+ });
137
+ }
138
+ }
90
139
 
91
- results[callIndex] = rawReturnValues ? decodeFromAbi(call.returnTypes, rawReturnValues) : [];
92
- });
93
140
  return results;
94
141
  }
142
+
143
+ protected async getExecutionPayloads(): Promise<ExecutionPayload[]> {
144
+ return await Promise.all(this.interactions.map(i => (i instanceof ExecutionPayload ? i : i.request())));
145
+ }
95
146
  }
@@ -1,4 +1,10 @@
1
- import type { AbiType, BasicType, ContractArtifact, StructType } from '@aztec/stdlib/abi';
1
+ import {
2
+ type AbiType,
3
+ type BasicType,
4
+ type ContractArtifact,
5
+ type StructType,
6
+ getDefaultInitializer,
7
+ } from '@aztec/stdlib/abi';
2
8
 
3
9
  /**
4
10
  * Represents a type derived from input type T with the 'kind' property removed.
@@ -38,8 +44,7 @@ export function abiChecker(artifact: ContractArtifact) {
38
44
  });
39
45
  });
40
46
 
41
- // TODO: implement a better check for constructor (right now only checks if it has it or not)
42
- if (!artifact.functions.find(func => func.name === 'constructor')) {
47
+ if (!getDefaultInitializer(artifact)) {
43
48
  throw new Error('ABI has no constructor');
44
49
  }
45
50
 
@@ -1,9 +1,9 @@
1
1
  import type { ContractArtifact } from '@aztec/stdlib/abi';
2
2
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
- import { getContractClassFromArtifact } from '@aztec/stdlib/contract';
3
+ import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
4
4
  import { PublicKeys } from '@aztec/stdlib/keys';
5
5
 
6
- import type { Wallet } from '../account/index.js';
6
+ import type { Wallet } from '../wallet/wallet.js';
7
7
  import { ContractBase } from './contract_base.js';
8
8
  import { DeployMethod } from './deploy_method.js';
9
9
 
@@ -11,45 +11,37 @@ import { DeployMethod } from './deploy_method.js';
11
11
  * The Contract class represents a contract and provides utility methods for interacting with it.
12
12
  * It enables the creation of ContractFunctionInteraction instances for each function in the contract's ABI,
13
13
  * allowing users to call or send transactions to these functions. Additionally, the Contract class can be used
14
- * to attach the contract instance to a deployed contract on-chain through the PXE, which facilitates
14
+ * to attach the contract instance to a deployed contract onchain through the PXE, which facilitates
15
15
  * interaction with Aztec's privacy protocol.
16
16
  */
17
17
  export class Contract extends ContractBase {
18
18
  /**
19
- * Creates a contract instance.
20
- * @param address - The deployed contract's address.
19
+ * Gets a contract instance.
20
+ * @param address - The address of the contract instance.
21
21
  * @param artifact - Build artifact of the contract.
22
22
  * @param wallet - The wallet to use when interacting with the contract.
23
23
  * @returns A promise that resolves to a new Contract instance.
24
24
  */
25
- public static async at(address: AztecAddress, artifact: ContractArtifact, wallet: Wallet): Promise<Contract> {
26
- const instance = (await wallet.getContractMetadata(address)).contractInstance;
27
- if (instance === undefined) {
28
- throw new Error(`Contract instance at ${address.toString()} has not been registered in the wallet's PXE`);
29
- }
30
- const thisContractClass = await getContractClassFromArtifact(artifact);
31
- if (!thisContractClass.id.equals(instance.currentContractClassId)) {
32
- // wallet holds an outdated version of this contract
33
- await wallet.updateContract(address, artifact);
34
- instance.currentContractClassId = thisContractClass.id;
35
- }
36
- return new Contract(instance, artifact, wallet);
25
+ public static at(address: AztecAddress, artifact: ContractArtifact, wallet: Wallet): Contract {
26
+ return new Contract(address, artifact, wallet);
37
27
  }
38
28
 
39
29
  /**
40
- * Creates a tx to deploy a new instance of a contract.
30
+ * Creates a tx to deploy (initialize and/or publish) a new instance of a contract.
41
31
  * @param wallet - The wallet for executing the deployment.
42
32
  * @param artifact - Build artifact of the contract to deploy
43
33
  * @param args - Arguments for the constructor.
44
34
  * @param constructorName - The name of the constructor function to call.
45
35
  */
46
36
  public static deploy(wallet: Wallet, artifact: ContractArtifact, args: any[], constructorName?: string) {
47
- const postDeployCtor = (address: AztecAddress, wallet: Wallet) => Contract.at(address, artifact, wallet);
37
+ const postDeployCtor = (instance: ContractInstanceWithAddress, wallet: Wallet) =>
38
+ Contract.at(instance.address, artifact, wallet);
48
39
  return new DeployMethod(PublicKeys.default(), wallet, artifact, postDeployCtor, args, constructorName);
49
40
  }
50
41
 
51
42
  /**
52
- * Creates a tx to deploy a new instance of a contract using the specified public keys hash to derive the address.
43
+ * Creates a tx to deploy (initialize and/or publish) a new instance of a contract
44
+ * using the specified public keys hash to derive the address.
53
45
  * @param publicKeys - Hash of public keys to use for deriving the address.
54
46
  * @param wallet - The wallet for executing the deployment.
55
47
  * @param artifact - Build artifact of the contract.
@@ -63,7 +55,8 @@ export class Contract extends ContractBase {
63
55
  args: any[],
64
56
  constructorName?: string,
65
57
  ) {
66
- const postDeployCtor = (address: AztecAddress, wallet: Wallet) => Contract.at(address, artifact, wallet);
58
+ const postDeployCtor = (instance: ContractInstanceWithAddress, wallet: Wallet) =>
59
+ Contract.at(instance.address, artifact, wallet);
67
60
  return new DeployMethod(publicKeys, wallet, artifact, postDeployCtor, args, constructorName);
68
61
  }
69
62
  }
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  type ContractArtifact,
3
- type ContractNote,
4
3
  type FieldLayout,
5
- type FunctionArtifact,
4
+ type FunctionAbi,
6
5
  FunctionSelector,
6
+ getAllFunctionAbis,
7
7
  } from '@aztec/stdlib/abi';
8
- import { type ContractInstanceWithAddress, computePartialAddress } from '@aztec/stdlib/contract';
8
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
9
9
 
10
- import type { Wallet } from '../account/index.js';
10
+ import type { Wallet } from '../wallet/wallet.js';
11
11
  import { ContractFunctionInteraction } from './contract_function_interaction.js';
12
12
 
13
13
  /**
@@ -28,13 +28,6 @@ export type ContractStorageLayout<T extends string> = {
28
28
  [K in T]: FieldLayout;
29
29
  };
30
30
 
31
- /**
32
- * Type representing the notes used in a contract.
33
- */
34
- export type ContractNotes<T extends string> = {
35
- [K in T]: ContractNote;
36
- };
37
-
38
31
  /**
39
32
  * Abstract implementation of a contract extended by the Contract class and generated contract types.
40
33
  */
@@ -45,16 +38,16 @@ export class ContractBase {
45
38
  public methods: { [name: string]: ContractMethod } = {};
46
39
 
47
40
  protected constructor(
48
- /** The deployed contract instance definition. */
49
- public readonly instance: ContractInstanceWithAddress,
41
+ /** The contract's address. */
42
+ public readonly address: AztecAddress,
50
43
  /** The Application Binary Interface for the contract. */
51
44
  public readonly artifact: ContractArtifact,
52
45
  /** The wallet used for interacting with this contract. */
53
46
  public wallet: Wallet,
54
47
  ) {
55
- artifact.functions.forEach((f: FunctionArtifact) => {
48
+ getAllFunctionAbis(artifact).forEach((f: FunctionAbi) => {
56
49
  const interactionFunction = (...args: any[]) => {
57
- return new ContractFunctionInteraction(this.wallet, this.instance.address, f, args);
50
+ return new ContractFunctionInteraction(this.wallet, this.address, f, args);
58
51
  };
59
52
 
60
53
  this.methods[f.name] = Object.assign(interactionFunction, {
@@ -69,22 +62,12 @@ export class ContractBase {
69
62
  });
70
63
  }
71
64
 
72
- /** Address of the contract. */
73
- public get address() {
74
- return this.instance.address;
75
- }
76
-
77
- /** Partial address of the contract. */
78
- public get partialAddress() {
79
- return computePartialAddress(this.instance);
80
- }
81
-
82
65
  /**
83
66
  * Creates a new instance of the contract wrapper attached to a different wallet.
84
67
  * @param wallet - Wallet to use for sending txs.
85
68
  * @returns A new contract instance.
86
69
  */
87
70
  public withWallet(wallet: Wallet): this {
88
- return new ContractBase(this.instance, this.artifact, wallet) as this;
71
+ return new ContractBase(this.address, this.artifact, wallet) as this;
89
72
  }
90
73
  }