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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/README.md +1 -1
  2. package/dest/account/account.d.ts +60 -0
  3. package/dest/account/account.d.ts.map +1 -0
  4. package/dest/account/account.js +59 -0
  5. package/dest/account/{contract.d.ts → account_contract.d.ts} +16 -10
  6. package/dest/account/account_contract.d.ts.map +1 -0
  7. package/dest/account/{contract.js → account_contract.js} +7 -4
  8. package/dest/{wallet/account_wallet_with_private_key.d.ts → account/account_with_secret_key.d.ts} +7 -8
  9. package/dest/account/account_with_secret_key.d.ts.map +1 -0
  10. package/dest/{wallet/account_wallet_with_private_key.js → account/account_with_secret_key.js} +5 -5
  11. package/dest/account/index.d.ts +3 -7
  12. package/dest/account/index.d.ts.map +1 -1
  13. package/dest/account/index.js +2 -6
  14. package/dest/account/interface.d.ts +1 -13
  15. package/dest/account/interface.d.ts.map +1 -1
  16. package/dest/account/interface.js +1 -0
  17. package/dest/account/signerless_account.d.ts +24 -0
  18. package/dest/account/signerless_account.d.ts.map +1 -0
  19. package/dest/account/signerless_account.js +27 -0
  20. package/dest/api/abi.d.ts +2 -1
  21. package/dest/api/abi.d.ts.map +1 -1
  22. package/dest/api/abi.js +1 -1
  23. package/dest/api/account.d.ts +5 -2
  24. package/dest/api/account.d.ts.map +1 -1
  25. package/dest/api/account.js +3 -1
  26. package/dest/api/addresses.d.ts +1 -0
  27. package/dest/api/addresses.d.ts.map +1 -1
  28. package/dest/api/addresses.js +1 -0
  29. package/dest/api/authorization.d.ts +5 -0
  30. package/dest/api/authorization.d.ts.map +1 -0
  31. package/dest/api/authorization.js +4 -0
  32. package/dest/api/block.d.ts +3 -0
  33. package/dest/api/block.d.ts.map +1 -0
  34. package/dest/api/block.js +2 -0
  35. package/dest/{contract/index.d.ts → api/contract.d.ts} +15 -11
  36. package/dest/api/contract.d.ts.map +1 -0
  37. package/dest/{contract/index.js → api/contract.js} +14 -10
  38. package/dest/api/crypto.d.ts +2 -0
  39. package/dest/api/crypto.d.ts.map +1 -0
  40. package/dest/api/crypto.js +1 -0
  41. package/dest/api/deployment.d.ts +4 -3
  42. package/dest/api/deployment.d.ts.map +1 -1
  43. package/dest/api/deployment.js +4 -3
  44. package/dest/api/ethereum.d.ts +2 -0
  45. package/dest/api/ethereum.d.ts.map +1 -0
  46. package/dest/api/ethereum.js +1 -0
  47. package/dest/api/events.d.ts +12 -0
  48. package/dest/api/events.d.ts.map +1 -0
  49. package/dest/api/events.js +30 -0
  50. package/dest/api/fee.d.ts +1 -1
  51. package/dest/api/fee.d.ts.map +1 -1
  52. package/dest/api/fee.js +1 -1
  53. package/dest/api/fee_testing.d.ts +2 -0
  54. package/dest/api/fee_testing.d.ts.map +1 -0
  55. package/dest/api/fee_testing.js +1 -0
  56. package/dest/api/keys.d.ts +4 -0
  57. package/dest/api/keys.d.ts.map +1 -0
  58. package/dest/api/keys.js +3 -0
  59. package/dest/api/log.d.ts +1 -0
  60. package/dest/api/log.d.ts.map +1 -1
  61. package/dest/api/log.js +1 -0
  62. package/dest/api/messaging.d.ts +3 -0
  63. package/dest/api/messaging.d.ts.map +1 -0
  64. package/dest/api/messaging.js +2 -0
  65. package/dest/api/node.d.ts +21 -0
  66. package/dest/api/node.d.ts.map +1 -0
  67. package/dest/api/node.js +18 -0
  68. package/dest/api/note.d.ts +2 -0
  69. package/dest/api/note.d.ts.map +1 -0
  70. package/dest/api/note.js +1 -0
  71. package/dest/api/protocol.d.ts +3 -0
  72. package/dest/api/protocol.d.ts.map +1 -0
  73. package/dest/api/protocol.js +2 -0
  74. package/dest/api/trees.d.ts +3 -0
  75. package/dest/api/trees.d.ts.map +1 -0
  76. package/dest/api/trees.js +2 -0
  77. package/dest/api/tx.d.ts +2 -0
  78. package/dest/api/tx.d.ts.map +1 -0
  79. package/dest/api/tx.js +1 -0
  80. package/dest/api/utils.d.ts +13 -0
  81. package/dest/api/utils.d.ts.map +1 -0
  82. package/dest/api/utils.js +12 -0
  83. package/dest/api/wallet.d.ts +4 -1
  84. package/dest/api/wallet.d.ts.map +1 -1
  85. package/dest/api/wallet.js +4 -1
  86. package/dest/authorization/call_authorization_request.d.ts +67 -0
  87. package/dest/authorization/call_authorization_request.d.ts.map +1 -0
  88. package/dest/authorization/call_authorization_request.js +49 -0
  89. package/dest/contract/base_contract_interaction.d.ts +16 -79
  90. package/dest/contract/base_contract_interaction.d.ts.map +1 -1
  91. package/dest/contract/base_contract_interaction.js +15 -128
  92. package/dest/contract/batch_call.d.ts +13 -14
  93. package/dest/contract/batch_call.d.ts.map +1 -1
  94. package/dest/contract/batch_call.js +60 -60
  95. package/dest/contract/checker.d.ts +1 -1
  96. package/dest/contract/checker.d.ts.map +1 -1
  97. package/dest/contract/checker.js +2 -2
  98. package/dest/contract/contract.d.ts +7 -6
  99. package/dest/contract/contract.d.ts.map +1 -1
  100. package/dest/contract/contract.js +7 -16
  101. package/dest/contract/contract_base.d.ts +3 -9
  102. package/dest/contract/contract_base.d.ts.map +1 -1
  103. package/dest/contract/contract_base.js +2 -2
  104. package/dest/contract/contract_function_interaction.d.ts +52 -44
  105. package/dest/contract/contract_function_interaction.d.ts.map +1 -1
  106. package/dest/contract/contract_function_interaction.js +75 -74
  107. package/dest/contract/deploy_method.d.ts +102 -57
  108. package/dest/contract/deploy_method.d.ts.map +1 -1
  109. package/dest/contract/deploy_method.js +122 -132
  110. package/dest/contract/deploy_sent_tx.d.ts +3 -5
  111. package/dest/contract/deploy_sent_tx.d.ts.map +1 -1
  112. package/dest/contract/deploy_sent_tx.js +10 -13
  113. package/dest/contract/get_gas_limits.d.ts +5 -6
  114. package/dest/contract/get_gas_limits.d.ts.map +1 -1
  115. package/dest/contract/get_gas_limits.js +9 -3
  116. package/dest/contract/interaction_options.d.ts +114 -0
  117. package/dest/contract/interaction_options.d.ts.map +1 -0
  118. package/dest/contract/interaction_options.js +52 -0
  119. package/dest/contract/protocol_contracts.d.ts +6 -6
  120. package/dest/contract/protocol_contracts.d.ts.map +1 -1
  121. package/dest/contract/protocol_contracts.js +7 -7
  122. package/dest/contract/sent_tx.d.ts +8 -18
  123. package/dest/contract/sent_tx.d.ts.map +1 -1
  124. package/dest/contract/sent_tx.js +30 -42
  125. package/dest/contract/unsafe_contract.d.ts +1 -1
  126. package/dest/contract/unsafe_contract.d.ts.map +1 -1
  127. package/dest/contract/wait_for_proven.d.ts +17 -0
  128. package/dest/contract/wait_for_proven.d.ts.map +1 -0
  129. package/dest/contract/wait_for_proven.js +17 -0
  130. package/dest/deployment/broadcast_function.d.ts +3 -3
  131. package/dest/deployment/broadcast_function.d.ts.map +1 -1
  132. package/dest/deployment/broadcast_function.js +27 -23
  133. package/dest/deployment/contract_deployer.d.ts +1 -1
  134. package/dest/deployment/contract_deployer.d.ts.map +1 -1
  135. package/dest/deployment/publish_class.d.ts +6 -0
  136. package/dest/deployment/publish_class.d.ts.map +1 -0
  137. package/dest/deployment/publish_class.js +17 -0
  138. package/dest/deployment/publish_instance.d.ts +10 -0
  139. package/dest/deployment/publish_instance.d.ts.map +1 -0
  140. package/dest/deployment/publish_instance.js +11 -0
  141. package/dest/{api/ethereum → ethereum}/portal_manager.d.ts +29 -25
  142. package/dest/ethereum/portal_manager.d.ts.map +1 -0
  143. package/dest/{api/ethereum → ethereum}/portal_manager.js +106 -73
  144. package/dest/fee/fee_juice_payment_method_with_claim.d.ts +16 -11
  145. package/dest/fee/fee_juice_payment_method_with_claim.d.ts.map +1 -1
  146. package/dest/fee/fee_juice_payment_method_with_claim.js +26 -16
  147. package/dest/fee/fee_payment_method.d.ts +11 -7
  148. package/dest/fee/fee_payment_method.d.ts.map +1 -1
  149. package/dest/fee/private_fee_payment_method.d.ts +25 -8
  150. package/dest/fee/private_fee_payment_method.d.ts.map +1 -1
  151. package/dest/fee/private_fee_payment_method.js +43 -21
  152. package/dest/fee/public_fee_payment_method.d.ts +26 -9
  153. package/dest/fee/public_fee_payment_method.d.ts.map +1 -1
  154. package/dest/fee/public_fee_payment_method.js +45 -23
  155. package/dest/fee/sponsored_fee_payment.d.ts +17 -0
  156. package/dest/fee/sponsored_fee_payment.d.ts.map +1 -0
  157. package/dest/fee/sponsored_fee_payment.js +34 -0
  158. package/dest/utils/abi_types.d.ts +0 -2
  159. package/dest/utils/abi_types.d.ts.map +1 -1
  160. package/dest/utils/authwit.d.ts +81 -24
  161. package/dest/utils/authwit.d.ts.map +1 -1
  162. package/dest/utils/authwit.js +226 -40
  163. package/dest/utils/cross_chain.d.ts +24 -0
  164. package/dest/utils/cross_chain.d.ts.map +1 -0
  165. package/dest/utils/cross_chain.js +30 -0
  166. package/dest/utils/fee_juice.d.ts +3 -2
  167. package/dest/utils/fee_juice.d.ts.map +1 -1
  168. package/dest/utils/fee_juice.js +3 -2
  169. package/dest/utils/field_compressed_string.d.ts.map +1 -1
  170. package/dest/utils/node.d.ts.map +1 -1
  171. package/dest/utils/node.js +1 -1
  172. package/dest/utils/pub_key.d.ts.map +1 -1
  173. package/dest/utils/pub_key.js +1 -2
  174. package/dest/wallet/account_entrypoint_meta_payment_method.d.ts +34 -0
  175. package/dest/wallet/account_entrypoint_meta_payment_method.d.ts.map +1 -0
  176. package/dest/wallet/account_entrypoint_meta_payment_method.js +76 -0
  177. package/dest/wallet/account_manager.d.ts +69 -0
  178. package/dest/wallet/account_manager.d.ts.map +1 -0
  179. package/dest/wallet/account_manager.js +113 -0
  180. package/dest/wallet/base_wallet.d.ts +81 -63
  181. package/dest/wallet/base_wallet.d.ts.map +1 -1
  182. package/dest/wallet/base_wallet.js +221 -106
  183. package/dest/wallet/deploy_account_method.d.ts +52 -0
  184. package/dest/wallet/deploy_account_method.d.ts.map +1 -0
  185. package/dest/wallet/deploy_account_method.js +77 -0
  186. package/dest/wallet/index.d.ts +3 -16
  187. package/dest/wallet/index.d.ts.map +1 -1
  188. package/dest/wallet/index.js +3 -20
  189. package/dest/wallet/wallet.d.ts +2478 -0
  190. package/dest/wallet/wallet.d.ts.map +1 -0
  191. package/dest/wallet/wallet.js +202 -0
  192. package/package.json +40 -32
  193. package/src/account/account.ts +97 -0
  194. package/src/account/{contract.ts → account_contract.ts} +24 -13
  195. package/src/{wallet/account_wallet_with_private_key.ts → account/account_with_secret_key.ts} +6 -8
  196. package/src/account/index.ts +3 -7
  197. package/src/account/interface.ts +1 -12
  198. package/src/account/signerless_account.ts +46 -0
  199. package/src/api/abi.ts +26 -0
  200. package/src/api/account.ts +5 -9
  201. package/src/api/addresses.ts +1 -0
  202. package/src/api/authorization.ts +14 -0
  203. package/src/api/block.ts +2 -0
  204. package/src/{contract/index.ts → api/contract.ts} +37 -13
  205. package/src/api/crypto.ts +1 -0
  206. package/src/api/deployment.ts +4 -3
  207. package/src/api/ethereum.ts +10 -0
  208. package/src/api/events.ts +44 -0
  209. package/src/api/fee.ts +1 -1
  210. package/src/api/fee_testing.ts +1 -0
  211. package/src/api/keys.ts +8 -0
  212. package/src/api/log.ts +1 -0
  213. package/src/api/messaging.ts +2 -0
  214. package/src/api/node.ts +20 -0
  215. package/src/api/note.ts +1 -0
  216. package/src/api/protocol.ts +2 -0
  217. package/src/api/trees.ts +2 -0
  218. package/src/api/tx.ts +11 -0
  219. package/src/api/utils.ts +14 -0
  220. package/src/api/wallet.ts +33 -5
  221. package/src/authorization/call_authorization_request.ts +63 -0
  222. package/src/contract/base_contract_interaction.ts +24 -166
  223. package/src/contract/batch_call.ts +81 -49
  224. package/src/contract/checker.ts +8 -3
  225. package/src/contract/contract.ts +8 -17
  226. package/src/contract/contract_base.ts +4 -11
  227. package/src/contract/contract_function_interaction.ts +136 -106
  228. package/src/contract/deploy_method.ts +199 -129
  229. package/src/contract/deploy_sent_tx.ts +9 -15
  230. package/src/contract/get_gas_limits.ts +15 -8
  231. package/src/contract/interaction_options.ts +169 -0
  232. package/src/contract/protocol_contracts.ts +10 -10
  233. package/src/contract/sent_tx.ts +40 -51
  234. package/src/contract/unsafe_contract.ts +1 -1
  235. package/src/contract/wait_for_proven.ts +38 -0
  236. package/src/deployment/broadcast_function.ts +57 -57
  237. package/src/deployment/contract_deployer.ts +1 -1
  238. package/src/deployment/publish_class.ts +34 -0
  239. package/src/deployment/publish_instance.ts +26 -0
  240. package/src/{api/ethereum → ethereum}/portal_manager.ts +120 -74
  241. package/src/fee/fee_juice_payment_method_with_claim.ts +46 -33
  242. package/src/fee/fee_payment_method.ts +11 -7
  243. package/src/fee/private_fee_payment_method.ts +77 -57
  244. package/src/fee/public_fee_payment_method.ts +91 -67
  245. package/src/fee/sponsored_fee_payment.ts +44 -0
  246. package/src/utils/authwit.ts +255 -53
  247. package/src/utils/cross_chain.ts +53 -0
  248. package/src/utils/fee_juice.ts +4 -4
  249. package/src/utils/node.ts +1 -1
  250. package/src/utils/pub_key.ts +1 -2
  251. package/src/wallet/account_entrypoint_meta_payment_method.ts +105 -0
  252. package/src/wallet/account_manager.ts +154 -0
  253. package/src/wallet/base_wallet.ts +295 -143
  254. package/src/wallet/deploy_account_method.ts +125 -0
  255. package/src/wallet/index.ts +3 -33
  256. package/src/wallet/wallet.ts +362 -0
  257. package/dest/account/contract.d.ts.map +0 -1
  258. package/dest/account/wallet.d.ts +0 -11
  259. package/dest/account/wallet.d.ts.map +0 -1
  260. package/dest/account/wallet.js +0 -3
  261. package/dest/account_manager/deploy_account_method.d.ts +0 -15
  262. package/dest/account_manager/deploy_account_method.d.ts.map +0 -1
  263. package/dest/account_manager/deploy_account_method.js +0 -43
  264. package/dest/account_manager/deploy_account_sent_tx.d.ts +0 -30
  265. package/dest/account_manager/deploy_account_sent_tx.d.ts.map +0 -1
  266. package/dest/account_manager/deploy_account_sent_tx.js +0 -29
  267. package/dest/account_manager/index.d.ts +0 -108
  268. package/dest/account_manager/index.d.ts.map +0 -1
  269. package/dest/account_manager/index.js +0 -159
  270. package/dest/api/cheat_codes.d.ts +0 -26
  271. package/dest/api/cheat_codes.d.ts.map +0 -1
  272. package/dest/api/cheat_codes.js +0 -25
  273. package/dest/api/entrypoint.d.ts +0 -2
  274. package/dest/api/entrypoint.d.ts.map +0 -1
  275. package/dest/api/entrypoint.js +0 -1
  276. package/dest/api/ethereum/anvil_test_watcher.d.ts +0 -32
  277. package/dest/api/ethereum/anvil_test_watcher.d.ts.map +0 -1
  278. package/dest/api/ethereum/anvil_test_watcher.js +0 -133
  279. package/dest/api/ethereum/chain_monitor.d.ts +0 -25
  280. package/dest/api/ethereum/chain_monitor.d.ts.map +0 -1
  281. package/dest/api/ethereum/chain_monitor.js +0 -74
  282. package/dest/api/ethereum/cheat_codes.d.ts +0 -63
  283. package/dest/api/ethereum/cheat_codes.d.ts.map +0 -1
  284. package/dest/api/ethereum/cheat_codes.js +0 -162
  285. package/dest/api/ethereum/index.d.ts +0 -7
  286. package/dest/api/ethereum/index.d.ts.map +0 -1
  287. package/dest/api/ethereum/index.js +0 -6
  288. package/dest/api/ethereum/l1_contracts.d.ts +0 -3
  289. package/dest/api/ethereum/l1_contracts.d.ts.map +0 -1
  290. package/dest/api/ethereum/l1_contracts.js +0 -13
  291. package/dest/api/ethereum/portal_manager.d.ts.map +0 -1
  292. package/dest/api/interfaces/pxe.d.ts +0 -2
  293. package/dest/api/interfaces/pxe.d.ts.map +0 -1
  294. package/dest/api/interfaces/pxe.js +0 -1
  295. package/dest/api/log_id.d.ts +0 -2
  296. package/dest/api/log_id.d.ts.map +0 -1
  297. package/dest/api/log_id.js +0 -1
  298. package/dest/api/tx_hash.d.ts +0 -2
  299. package/dest/api/tx_hash.d.ts.map +0 -1
  300. package/dest/api/tx_hash.js +0 -1
  301. package/dest/contract/deploy_proven_tx.d.ts +0 -21
  302. package/dest/contract/deploy_proven_tx.d.ts.map +0 -1
  303. package/dest/contract/deploy_proven_tx.js +0 -19
  304. package/dest/contract/index.d.ts.map +0 -1
  305. package/dest/contract/proven_tx.d.ts +0 -17
  306. package/dest/contract/proven_tx.d.ts.map +0 -1
  307. package/dest/contract/proven_tx.js +0 -22
  308. package/dest/deployment/deploy_instance.d.ts +0 -10
  309. package/dest/deployment/deploy_instance.d.ts.map +0 -1
  310. package/dest/deployment/deploy_instance.js +0 -14
  311. package/dest/deployment/index.d.ts +0 -2
  312. package/dest/deployment/index.d.ts.map +0 -1
  313. package/dest/deployment/index.js +0 -1
  314. package/dest/deployment/register_class.d.ts +0 -6
  315. package/dest/deployment/register_class.d.ts.map +0 -1
  316. package/dest/deployment/register_class.js +0 -22
  317. package/dest/entrypoint/default_entrypoint.d.ts +0 -12
  318. package/dest/entrypoint/default_entrypoint.d.ts.map +0 -1
  319. package/dest/entrypoint/default_entrypoint.js +0 -28
  320. package/dest/entrypoint/default_multi_call_entrypoint.d.ts +0 -15
  321. package/dest/entrypoint/default_multi_call_entrypoint.d.ts.map +0 -1
  322. package/dest/entrypoint/default_multi_call_entrypoint.js +0 -130
  323. package/dest/entrypoint/entrypoint.d.ts +0 -35
  324. package/dest/entrypoint/entrypoint.d.ts.map +0 -1
  325. package/dest/entrypoint/entrypoint.js +0 -4
  326. package/dest/entrypoint/payload.d.ts +0 -128
  327. package/dest/entrypoint/payload.d.ts.map +0 -1
  328. package/dest/entrypoint/payload.js +0 -143
  329. package/dest/fee/fee_juice_payment_method.d.ts +0 -14
  330. package/dest/fee/fee_juice_payment_method.d.ts.map +0 -1
  331. package/dest/fee/fee_juice_payment_method.js +0 -20
  332. package/dest/index.d.ts +0 -66
  333. package/dest/index.d.ts.map +0 -1
  334. package/dest/index.js +0 -69
  335. package/dest/rpc_clients/index.d.ts +0 -3
  336. package/dest/rpc_clients/index.d.ts.map +0 -1
  337. package/dest/rpc_clients/index.js +0 -2
  338. package/dest/rpc_clients/node/index.d.ts +0 -12
  339. package/dest/rpc_clients/node/index.d.ts.map +0 -1
  340. package/dest/rpc_clients/node/index.js +0 -78
  341. package/dest/rpc_clients/pxe_client.d.ts +0 -10
  342. package/dest/rpc_clients/pxe_client.d.ts.map +0 -1
  343. package/dest/rpc_clients/pxe_client.js +0 -23
  344. package/dest/utils/aztec_cheatcodes.d.ts +0 -59
  345. package/dest/utils/aztec_cheatcodes.d.ts.map +0 -1
  346. package/dest/utils/aztec_cheatcodes.js +0 -62
  347. package/dest/utils/index.d.ts +0 -8
  348. package/dest/utils/index.d.ts.map +0 -1
  349. package/dest/utils/index.js +0 -6
  350. package/dest/utils/pxe.d.ts +0 -4
  351. package/dest/utils/pxe.d.ts.map +0 -1
  352. package/dest/utils/pxe.js +0 -14
  353. package/dest/wallet/account_wallet.d.ts +0 -76
  354. package/dest/wallet/account_wallet.d.ts.map +0 -1
  355. package/dest/wallet/account_wallet.js +0 -231
  356. package/dest/wallet/account_wallet_with_private_key.d.ts.map +0 -1
  357. package/dest/wallet/signerless_wallet.d.ts +0 -25
  358. package/dest/wallet/signerless_wallet.d.ts.map +0 -1
  359. package/dest/wallet/signerless_wallet.js +0 -36
  360. package/src/account/wallet.ts +0 -13
  361. package/src/account_manager/deploy_account_method.ts +0 -86
  362. package/src/account_manager/deploy_account_sent_tx.ts +0 -42
  363. package/src/account_manager/index.ts +0 -229
  364. package/src/api/cheat_codes.ts +0 -35
  365. package/src/api/entrypoint.ts +0 -1
  366. package/src/api/ethereum/anvil_test_watcher.ts +0 -158
  367. package/src/api/ethereum/chain_monitor.ts +0 -88
  368. package/src/api/ethereum/cheat_codes.ts +0 -184
  369. package/src/api/ethereum/index.ts +0 -19
  370. package/src/api/ethereum/l1_contracts.ts +0 -21
  371. package/src/api/interfaces/pxe.ts +0 -1
  372. package/src/api/log_id.ts +0 -1
  373. package/src/api/tx_hash.ts +0 -1
  374. package/src/contract/deploy_proven_tx.ts +0 -34
  375. package/src/contract/proven_tx.ts +0 -42
  376. package/src/deployment/deploy_instance.ts +0 -31
  377. package/src/deployment/index.ts +0 -1
  378. package/src/deployment/register_class.ts +0 -44
  379. package/src/entrypoint/default_entrypoint.ts +0 -39
  380. package/src/entrypoint/default_multi_call_entrypoint.ts +0 -93
  381. package/src/entrypoint/entrypoint.ts +0 -39
  382. package/src/entrypoint/payload.ts +0 -238
  383. package/src/fee/fee_juice_payment_method.ts +0 -26
  384. package/src/index.ts +0 -106
  385. package/src/rpc_clients/index.ts +0 -2
  386. package/src/rpc_clients/node/index.ts +0 -77
  387. package/src/rpc_clients/pxe_client.ts +0 -25
  388. package/src/utils/aztec_cheatcodes.ts +0 -77
  389. package/src/utils/index.ts +0 -21
  390. package/src/utils/pxe.ts +0 -17
  391. package/src/wallet/account_wallet.ts +0 -242
  392. package/src/wallet/signerless_wallet.ts +0 -52
@@ -1,30 +1,11 @@
1
- import { type FunctionAbi, FunctionCall } from '@aztec/stdlib/abi';
1
+ import { ExecutionPayload } from '@aztec/entrypoints/payload';
2
+ import { type FunctionAbi, FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
3
+ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
2
4
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
- import type { PrivateKernelProverProfileResult } from '@aztec/stdlib/kernel';
4
- import type { TxExecutionRequest } from '@aztec/stdlib/tx';
5
- import type { Wallet } from '../account/wallet.js';
6
- import { BaseContractInteraction, type SendMethodOptions } from './base_contract_interaction.js';
7
- export type { SendMethodOptions };
8
- /**
9
- * Represents the options for simulating a contract function interaction.
10
- * Allows specifying the address from which the view method should be called.
11
- * Disregarded for simulation of public functions
12
- */
13
- export type SimulateMethodOptions = Pick<SendMethodOptions, 'fee'> & {
14
- /** The sender's Aztec address. */
15
- from?: AztecAddress;
16
- /** Simulate without checking for the validity of the resulting transaction, e.g. whether it emits any existing nullifiers. */
17
- skipTxValidation?: boolean;
18
- /** Whether to ensure the fee payer is not empty and has enough balance to pay for the fee. */
19
- skipFeeEnforcement?: boolean;
20
- };
21
- /**
22
- * The result of a profile() call.
23
- */
24
- export type ProfileResult = PrivateKernelProverProfileResult & {
25
- /** The result of the transaction as returned by the contract function. */
26
- returnValues: any;
27
- };
5
+ import { type Capsule, type HashedValues, type TxProfileResult } from '@aztec/stdlib/tx';
6
+ import type { Wallet } from '../wallet/wallet.js';
7
+ import { BaseContractInteraction } from './base_contract_interaction.js';
8
+ import { type ProfileInteractionOptions, type RequestInteractionOptions, type SimulateInteractionOptions, type SimulationReturn } from './interaction_options.js';
28
9
  /**
29
10
  * This is the class that is returned when calling e.g. `contract.methods.myMethod(arg0, arg1)`.
30
11
  * It contains available interactions one can call on a method, including view.
@@ -33,36 +14,63 @@ export declare class ContractFunctionInteraction extends BaseContractInteraction
33
14
  protected contractAddress: AztecAddress;
34
15
  protected functionDao: FunctionAbi;
35
16
  protected args: any[];
36
- constructor(wallet: Wallet, contractAddress: AztecAddress, functionDao: FunctionAbi, args: any[]);
17
+ private extraHashedArgs;
18
+ constructor(wallet: Wallet, contractAddress: AztecAddress, functionDao: FunctionAbi, args: any[], authWitnesses?: AuthWitness[], capsules?: Capsule[], extraHashedArgs?: HashedValues[]);
37
19
  /**
38
- * Create a transaction execution request that represents this call, encoded and authenticated by the
39
- * user's wallet, ready to be simulated.
40
- * @param opts - An optional object containing additional configuration for the transaction.
41
- * @returns A Promise that resolves to a transaction instance.
20
+ * Returns the encoded function call wrapped by this interaction
21
+ * Useful when generating authwits
22
+ * @returns An encoded function call
42
23
  */
43
- create(opts?: SendMethodOptions): Promise<TxExecutionRequest>;
24
+ getFunctionCall(): Promise<{
25
+ name: string;
26
+ args: import("@aztec/foundation/schemas").Fr[];
27
+ selector: FunctionSelector;
28
+ type: FunctionType;
29
+ to: AztecAddress;
30
+ isStatic: boolean;
31
+ hideMsgSender: boolean; /** Only set to `true` for enqueued public function calls */
32
+ returnTypes: import("@aztec/stdlib/abi").AbiType[];
33
+ }>;
44
34
  /**
45
- * Returns an execution request that represents this operation. Useful as a building
46
- * block for constructing batch requests.
47
- * @returns An execution request wrapped in promise.
35
+ * Returns the execution payload that allows this operation to happen on chain.
36
+ * @param options - Configuration options.
37
+ * @returns The execution payload for this operation
48
38
  */
49
- request(): Promise<FunctionCall>;
39
+ request(options?: RequestInteractionOptions): Promise<ExecutionPayload>;
50
40
  /**
51
- * Simulate a transaction and get its return values
41
+ * Simulate a transaction and get information from its execution.
52
42
  * Differs from prove in a few important ways:
53
- * 1. It returns the values of the function execution
54
- * 2. It supports `unconstrained`, `private` and `public` functions
43
+ * 1. It returns the values of the function execution, plus additional metadata if requested
44
+ * 2. It supports `utility`, `private` and `public` functions
55
45
  *
56
- * @param options - An optional object containing additional configuration for the transaction.
57
- * @returns The result of the transaction as returned by the contract function.
46
+ * @param options - An optional object containing additional configuration for the simulation.
47
+ * @returns Depending on the simulation options, this method directly returns the result value of the executed
48
+ * function or a rich object containing extra metadata, such as estimated gas costs (if requested via options),
49
+ * execution statistics and emitted offchain effects
58
50
  */
59
- simulate(options?: SimulateMethodOptions): Promise<any>;
51
+ simulate<T extends SimulateInteractionOptions>(options: T): Promise<SimulationReturn<Exclude<T['fee'], undefined>['estimateGas']>>;
52
+ simulate<T extends SimulateInteractionOptions>(options: T): Promise<SimulationReturn<T['includeMetadata']>>;
60
53
  /**
61
54
  * Simulate a transaction and profile the gate count for each function in the transaction.
62
- * @param options - Same options as `simulate`.
55
+ * @param options - Same options as `simulate`, plus profiling method
63
56
  *
64
57
  * @returns An object containing the function return value and profile result.
65
58
  */
66
- simulateWithProfile(options?: SimulateMethodOptions): Promise<ProfileResult>;
59
+ profile(options: ProfileInteractionOptions): Promise<TxProfileResult>;
60
+ /**
61
+ * Augments this ContractFunctionInteraction with additional metadata, such as authWitnesses, capsules, and extraHashedArgs.
62
+ * This is useful when creating a "batteries included" interaction, such as registering a contract class with its associated
63
+ * capsule instead of having the user provide them externally.
64
+ * @param options - An object containing the metadata to add to the interaction
65
+ * @returns A new ContractFunctionInteraction with the added metadata, but calling the same original function in the same manner
66
+ */
67
+ with({ authWitnesses, capsules, extraHashedArgs, }: {
68
+ /** The authWitnesses to add to the interaction */
69
+ authWitnesses?: AuthWitness[];
70
+ /** The capsules to add to the interaction */
71
+ capsules?: Capsule[];
72
+ /** The extra hashed args to add to the interaction */
73
+ extraHashedArgs?: HashedValues[];
74
+ }): ContractFunctionInteraction;
67
75
  }
68
76
  //# sourceMappingURL=contract_function_interaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract_function_interaction.d.ts","sourceRoot":"","sources":["../../src/contract/contract_function_interaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,YAAY,EAKb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEjG,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,GAAG;IACnE,kCAAkC;IAClC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,8HAA8H;IAC9H,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8FAA8F;IAC9F,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,gCAAgC,GAAG;IAC7D,0EAA0E;IAC1E,YAAY,EAAE,GAAG,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,qBAAa,2BAA4B,SAAQ,uBAAuB;IAGpE,SAAS,CAAC,eAAe,EAAE,YAAY;IACvC,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE;gBAHrB,MAAM,EAAE,MAAM,EACJ,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,GAAG,EAAE;IASvB;;;;;OAKG;IACU,MAAM,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAa9E;;;;OAIG;IACU,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;IAe7C;;;;;;;;OAQG;IACU,QAAQ,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,GAAG,CAAC;IAkCxE;;;;;OAKG;IACU,mBAAmB,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,aAAa,CAAC;CA0B9F"}
1
+ {"version":3,"file":"contract_function_interaction.d.ts","sourceRoot":"","sources":["../../src/contract/contract_function_interaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA0B,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,KAAK,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAkC,MAAM,mBAAmB,CAAC;AACrH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAA0B,MAAM,kBAAkB,CAAC;AAEjH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EAGtB,MAAM,0BAA0B,CAAC;AAElC;;;GAGG;AACH,qBAAa,2BAA4B,SAAQ,uBAAuB;IAGpE,SAAS,CAAC,eAAe,EAAE,YAAY;IACvC,SAAS,CAAC,WAAW,EAAE,WAAW;IAClC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE;IAGrB,OAAO,CAAC,eAAe;gBANvB,MAAM,EAAE,MAAM,EACJ,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,GAAG,EAAE,EACrB,aAAa,GAAE,WAAW,EAAO,EACjC,QAAQ,GAAE,OAAO,EAAO,EAChB,eAAe,GAAE,YAAY,EAAO;IAQ9C;;;;OAIG;IACU,eAAe;;;;;;;gCASH,4DAA4D;;;IAKrF;;;;OAIG;IACmB,OAAO,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmBjG;;;;;;;;;;OAUG;IACU,QAAQ,CAAC,CAAC,SAAS,0BAA0B,EACxD,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAE5D,QAAQ,CAAC,CAAC,SAAS,0BAA0B,EACxD,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;IA4DlD;;;;;OAKG;IACU,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC;IASlF;;;;;;OAMG;IACI,IAAI,CAAC,EACV,aAAkB,EAClB,QAAa,EACb,eAAoB,GACrB,EAAE;QACD,kDAAkD;QAClD,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;QAC9B,6CAA6C;QAC7C,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;QACrB,sDAAsD;QACtD,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;KAClC,GAAG,2BAA2B;CAWhC"}
@@ -1,7 +1,9 @@
1
+ import { ExecutionPayload, mergeExecutionPayloads } from '@aztec/entrypoints/payload';
1
2
  import { FunctionSelector, FunctionType, decodeFromAbi, encodeArguments } from '@aztec/stdlib/abi';
2
- import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
- import { FeeJuicePaymentMethod } from '../fee/fee_juice_payment_method.js';
3
+ import { collectOffchainEffects } from '@aztec/stdlib/tx';
4
4
  import { BaseContractInteraction } from './base_contract_interaction.js';
5
+ import { getGasLimits } from './get_gas_limits.js';
6
+ import { toProfileOptions, toSimulateOptions } from './interaction_options.js';
5
7
  /**
6
8
  * This is the class that is returned when calling e.g. `contract.methods.myMethod(arg0, arg1)`.
7
9
  * It contains available interactions one can call on a method, including view.
@@ -9,48 +11,18 @@ import { BaseContractInteraction } from './base_contract_interaction.js';
9
11
  contractAddress;
10
12
  functionDao;
11
13
  args;
12
- constructor(wallet, contractAddress, functionDao, args){
13
- super(wallet), this.contractAddress = contractAddress, this.functionDao = functionDao, this.args = args;
14
+ extraHashedArgs;
15
+ constructor(wallet, contractAddress, functionDao, args, authWitnesses = [], capsules = [], extraHashedArgs = []){
16
+ super(wallet, authWitnesses, capsules), this.contractAddress = contractAddress, this.functionDao = functionDao, this.args = args, this.extraHashedArgs = extraHashedArgs;
14
17
  if (args.some((arg)=>arg === undefined || arg === null)) {
15
- throw new Error('All function interaction arguments must be defined and not null. Received: ' + args);
18
+ throw new Error(`All function interaction arguments must be defined and not null. Received: ${args}`);
16
19
  }
17
20
  }
18
- // docs:start:create
19
21
  /**
20
- * Create a transaction execution request that represents this call, encoded and authenticated by the
21
- * user's wallet, ready to be simulated.
22
- * @param opts - An optional object containing additional configuration for the transaction.
23
- * @returns A Promise that resolves to a transaction instance.
24
- */ async create(opts = {}) {
25
- // docs:end:create
26
- if (this.functionDao.functionType === FunctionType.UNCONSTRAINED) {
27
- throw new Error("Can't call `create` on an unconstrained function.");
28
- }
29
- const calls = [
30
- await this.request()
31
- ];
32
- const capsules = this.getCapsules();
33
- const fee = await this.getFeeOptions({
34
- calls,
35
- capsules,
36
- ...opts
37
- });
38
- const { nonce, cancellable } = opts;
39
- return await this.wallet.createTxExecutionRequest({
40
- calls,
41
- fee,
42
- nonce,
43
- cancellable,
44
- capsules
45
- });
46
- }
47
- // docs:start:request
48
- /**
49
- * Returns an execution request that represents this operation. Useful as a building
50
- * block for constructing batch requests.
51
- * @returns An execution request wrapped in promise.
52
- */ async request() {
53
- // docs:end:request
22
+ * Returns the encoded function call wrapped by this interaction
23
+ * Useful when generating authwits
24
+ * @returns An encoded function call
25
+ */ async getFunctionCall() {
54
26
  const args = encodeArguments(this.functionDao, this.args);
55
27
  return {
56
28
  name: this.functionDao.name,
@@ -59,30 +31,43 @@ import { BaseContractInteraction } from './base_contract_interaction.js';
59
31
  type: this.functionDao.functionType,
60
32
  to: this.contractAddress,
61
33
  isStatic: this.functionDao.isStatic,
34
+ hideMsgSender: false,
62
35
  returnTypes: this.functionDao.returnTypes
63
36
  };
64
37
  }
65
- // docs:start:simulate
66
38
  /**
67
- * Simulate a transaction and get its return values
68
- * Differs from prove in a few important ways:
69
- * 1. It returns the values of the function execution
70
- * 2. It supports `unconstrained`, `private` and `public` functions
71
- *
72
- * @param options - An optional object containing additional configuration for the transaction.
73
- * @returns The result of the transaction as returned by the contract function.
74
- */ async simulate(options = {}) {
39
+ * Returns the execution payload that allows this operation to happen on chain.
40
+ * @param options - Configuration options.
41
+ * @returns The execution payload for this operation
42
+ */ async request(options = {}) {
43
+ const calls = [
44
+ await this.getFunctionCall()
45
+ ];
46
+ const { authWitnesses, capsules } = options;
47
+ const feeExecutionPayload = options.fee?.paymentMethod ? await options.fee.paymentMethod.getExecutionPayload() : undefined;
48
+ const functionExecutionPayload = new ExecutionPayload(calls, this.authWitnesses.concat(authWitnesses ?? []), this.capsules.concat(capsules ?? []), this.extraHashedArgs);
49
+ const finalExecutionPayload = feeExecutionPayload ? mergeExecutionPayloads([
50
+ feeExecutionPayload,
51
+ functionExecutionPayload
52
+ ]) : functionExecutionPayload;
53
+ return finalExecutionPayload;
54
+ }
55
+ // eslint-disable-next-line jsdoc/require-jsdoc
56
+ async simulate(options) {
75
57
  // docs:end:simulate
76
- if (this.functionDao.functionType == FunctionType.UNCONSTRAINED) {
77
- return this.wallet.simulateUnconstrained(this.functionDao.name, this.args, this.contractAddress, options?.from);
58
+ if (this.functionDao.functionType == FunctionType.UTILITY) {
59
+ const utilityResult = await this.wallet.simulateUtility(this.functionDao.name, this.args, this.contractAddress, options.authWitnesses ?? []);
60
+ if (options.includeMetadata) {
61
+ return {
62
+ stats: utilityResult.stats,
63
+ result: utilityResult.result
64
+ };
65
+ } else {
66
+ return utilityResult.result;
67
+ }
78
68
  }
79
- const fee = options.fee ?? {
80
- paymentMethod: new FeeJuicePaymentMethod(AztecAddress.ZERO)
81
- };
82
- const txRequest = await this.create({
83
- fee
84
- });
85
- const simulatedTx = await this.wallet.simulateTx(txRequest, true, options.from, options.skipTxValidation, options.skipFeeEnforcement ?? true);
69
+ const executionPayload = await this.request(options);
70
+ const simulatedTx = await this.wallet.simulateTx(executionPayload, await toSimulateOptions(options));
86
71
  let rawReturnValues;
87
72
  if (this.functionDao.functionType == FunctionType.PRIVATE) {
88
73
  if (simulatedTx.getPrivateReturnValues().nested.length > 0) {
@@ -95,28 +80,44 @@ import { BaseContractInteraction } from './base_contract_interaction.js';
95
80
  }
96
81
  } else {
97
82
  // For public functions we retrieve the first values directly from the public output.
98
- rawReturnValues = simulatedTx.getPublicReturnValues()?.[0].values;
83
+ rawReturnValues = simulatedTx.getPublicReturnValues()?.[0]?.values;
84
+ }
85
+ const returnValue = rawReturnValues ? decodeFromAbi(this.functionDao.returnTypes, rawReturnValues) : [];
86
+ if (options.includeMetadata || options.fee?.estimateGas) {
87
+ const { gasLimits, teardownGasLimits } = getGasLimits(simulatedTx, options.fee?.estimatedGasPadding);
88
+ this.log.verbose(`Estimated gas limits for tx: DA=${gasLimits.daGas} L2=${gasLimits.l2Gas} teardownDA=${teardownGasLimits.daGas} teardownL2=${teardownGasLimits.l2Gas}`);
89
+ return {
90
+ stats: simulatedTx.stats,
91
+ offchainEffects: collectOffchainEffects(simulatedTx.privateExecutionResult),
92
+ result: returnValue,
93
+ estimatedGas: {
94
+ gasLimits,
95
+ teardownGasLimits
96
+ }
97
+ };
98
+ } else {
99
+ return returnValue;
99
100
  }
100
- return rawReturnValues ? decodeFromAbi(this.functionDao.returnTypes, rawReturnValues) : [];
101
101
  }
102
102
  /**
103
103
  * Simulate a transaction and profile the gate count for each function in the transaction.
104
- * @param options - Same options as `simulate`.
104
+ * @param options - Same options as `simulate`, plus profiling method
105
105
  *
106
106
  * @returns An object containing the function return value and profile result.
107
- */ async simulateWithProfile(options = {}) {
108
- if (this.functionDao.functionType == FunctionType.UNCONSTRAINED) {
109
- throw new Error("Can't profile an unconstrained function.");
107
+ */ async profile(options) {
108
+ if (this.functionDao.functionType == FunctionType.UTILITY) {
109
+ throw new Error("Can't profile a utility function.");
110
110
  }
111
- const txRequest = await this.create({
112
- fee: options.fee
113
- });
114
- const simulatedTx = await this.wallet.simulateTx(txRequest, true, options?.from, options?.skipTxValidation, undefined, true);
115
- const rawReturnValues = this.functionDao.functionType == FunctionType.PRIVATE ? simulatedTx.getPrivateReturnValues().nested?.[0].values : simulatedTx.getPublicReturnValues()?.[0].values;
116
- const rawReturnValuesDecoded = rawReturnValues ? decodeFromAbi(this.functionDao.returnTypes, rawReturnValues) : [];
117
- return {
118
- returnValues: rawReturnValuesDecoded,
119
- gateCounts: simulatedTx.profileResult.gateCounts
120
- };
111
+ const executionPayload = await this.request(options);
112
+ return await this.wallet.profileTx(executionPayload, await toProfileOptions(options));
113
+ }
114
+ /**
115
+ * Augments this ContractFunctionInteraction with additional metadata, such as authWitnesses, capsules, and extraHashedArgs.
116
+ * This is useful when creating a "batteries included" interaction, such as registering a contract class with its associated
117
+ * capsule instead of having the user provide them externally.
118
+ * @param options - An object containing the metadata to add to the interaction
119
+ * @returns A new ContractFunctionInteraction with the added metadata, but calling the same original function in the same manner
120
+ */ with({ authWitnesses = [], capsules = [], extraHashedArgs = [] }) {
121
+ return new ContractFunctionInteraction(this.wallet, this.contractAddress, this.functionDao, this.args, this.authWitnesses.concat(authWitnesses), this.capsules.concat(capsules), this.extraHashedArgs.concat(extraHashedArgs));
121
122
  }
122
123
  }
@@ -1,113 +1,158 @@
1
- import type { Fr } from '@aztec/foundation/fields';
1
+ import { ExecutionPayload } from '@aztec/entrypoints/payload';
2
+ import { Fr } from '@aztec/foundation/fields';
2
3
  import { type ContractArtifact, type FunctionArtifact } from '@aztec/stdlib/abi';
4
+ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
3
5
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
6
  import { type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
5
- import type { GasSettings } from '@aztec/stdlib/gas';
6
7
  import type { PublicKeys } from '@aztec/stdlib/keys';
7
- import type { TxExecutionRequest } from '@aztec/stdlib/tx';
8
- import type { Wallet } from '../account/index.js';
9
- import type { ExecutionRequestInit } from '../entrypoint/entrypoint.js';
10
- import { BaseContractInteraction, type SendMethodOptions } from './base_contract_interaction.js';
8
+ import { type Capsule, type TxProfileResult } from '@aztec/stdlib/tx';
9
+ import type { Wallet } from '../wallet/wallet.js';
10
+ import { BaseContractInteraction } from './base_contract_interaction.js';
11
11
  import type { Contract } from './contract.js';
12
12
  import type { ContractBase } from './contract_base.js';
13
- import { DeployProvenTx } from './deploy_proven_tx.js';
14
13
  import { DeploySentTx } from './deploy_sent_tx.js';
14
+ import { type ProfileInteractionOptions, type RequestInteractionOptions, type SendInteractionOptions, type SimulationInteractionFeeOptions, type SimulationReturn } from './interaction_options.js';
15
15
  /**
16
16
  * Options for deploying a contract on the Aztec network.
17
- * Allows specifying a contract address salt, and additional send method options.
17
+ * Allows specifying a contract address salt and different options to tweak contract publication
18
+ * and initialization
18
19
  */
19
- export type DeployOptions = {
20
+ export type RequestDeployOptions = RequestInteractionOptions & {
20
21
  /** An optional salt value used to deterministically calculate the contract address. */
21
22
  contractAddressSalt?: Fr;
22
- /** Set to true to *not* include the sender in the address computation. */
23
- universalDeploy?: boolean;
24
- /** Skip contract class registration. */
25
- skipClassRegistration?: boolean;
26
- /** Skip public deployment, instead just privately initialize the contract. */
27
- skipPublicDeployment?: boolean;
23
+ /**
24
+ * Deployer address that will be used for the deployed contract's address computation.
25
+ * If set to 0, the sender's address won't be mixed in
26
+ */
27
+ deployer?: AztecAddress;
28
+ /** Skip contract class publication. */
29
+ skipClassPublication?: boolean;
30
+ /** Skip publication, instead just privately initialize the contract. */
31
+ skipInstancePublication?: boolean;
28
32
  /** Skip contract initialization. */
29
33
  skipInitialization?: boolean;
30
- } & SendMethodOptions;
34
+ };
35
+ /**
36
+ * Extends the deployment options with the required parameters to send the transaction
37
+ */
38
+ export type DeployOptions = Omit<RequestDeployOptions, 'deployer'> & {
39
+ /**
40
+ * Set to true to *not* include the sender in the address computation. This option
41
+ * is mutually exclusive with "deployer"
42
+ */
43
+ universalDeploy?: boolean;
44
+ } & Pick<SendInteractionOptions, 'from' | 'fee'>;
45
+ /**
46
+ * Options for simulating the deployment of a contract
47
+ * Allows skipping certain validations and computing gas estimations
48
+ */
49
+ export type SimulateDeployOptions = Omit<DeployOptions, 'fee'> & {
50
+ /** The fee options for the transaction. */
51
+ fee?: SimulationInteractionFeeOptions;
52
+ /** Simulate without checking for the validity of the resulting transaction,
53
+ * e.g. whether it emits any existing nullifiers. */
54
+ skipTxValidation?: boolean;
55
+ /** Whether to ensure the fee payer is not empty and has enough balance to pay for the fee. */
56
+ skipFeeEnforcement?: boolean;
57
+ /** Whether to include metadata such as offchain effects and performance statistics
58
+ * (e.g. timing information of the different circuits and oracles) in
59
+ * the simulation result, instead of just the return value of the function */
60
+ includeMetadata?: boolean;
61
+ };
31
62
  /**
32
- * Contract interaction for deployment. Handles class registration, public instance deployment,
33
- * and initialization of the contract. Extends the BaseContractInteraction class.
63
+ * Contract interaction for deployment.
64
+ * Handles class publication, instance publication, and initialization of the contract.
65
+ *
66
+ * Note that for some contracts, a tx is not required as part of its "creation":
67
+ * If there are no public functions, and if there are no initialization functions,
68
+ * then technically the contract has already been "created", and all of the contract's
69
+ * functions (private and utility) can be interacted-with immediately, without any
70
+ * "deployment tx".
71
+ *
72
+ * Extends the BaseContractInteraction class.
34
73
  */
35
74
  export declare class DeployMethod<TContract extends ContractBase = Contract> extends BaseContractInteraction {
36
75
  private publicKeys;
37
- private artifact;
38
- private postDeployCtor;
76
+ protected artifact: ContractArtifact;
77
+ protected postDeployCtor: (address: AztecAddress, wallet: Wallet) => Promise<TContract>;
39
78
  private args;
40
79
  /** The contract instance to be deployed. */
41
80
  private instance?;
42
81
  /** Constructor function to call. */
43
82
  private constructorArtifact;
44
- constructor(publicKeys: PublicKeys, wallet: Wallet, artifact: ContractArtifact, postDeployCtor: (address: AztecAddress, wallet: Wallet) => Promise<TContract>, args?: any[], constructorNameOrArtifact?: string | FunctionArtifact);
83
+ constructor(publicKeys: PublicKeys, wallet: Wallet, artifact: ContractArtifact, postDeployCtor: (address: AztecAddress, wallet: Wallet) => Promise<TContract>, args?: any[], constructorNameOrArtifact?: string | FunctionArtifact, authWitnesses?: AuthWitness[], capsules?: Capsule[]);
45
84
  /**
46
- * Create a contract deployment transaction, given the deployment options.
47
- * This function internally calls `request()` and `sign()` methods to prepare
48
- * the transaction for deployment. The resulting signed transaction can be
49
- * later sent using the `send()` method.
50
- *
51
- * @param options - An object containing optional deployment settings, contractAddressSalt, and from.
52
- * @returns A Promise resolving to an object containing the signed transaction data and other relevant information.
85
+ * Returns the execution payload that allows this operation to happen on chain.
86
+ * @param options - Configuration options.
87
+ * @returns The execution payload for this operation
53
88
  */
54
- create(options?: DeployOptions): Promise<TxExecutionRequest>;
89
+ request(options?: RequestDeployOptions): Promise<ExecutionPayload>;
90
+ convertDeployOptionsToRequestOptions(options: DeployOptions): RequestDeployOptions;
55
91
  /**
56
- * Returns an array of function calls that represent this operation. Useful as a building
57
- * block for constructing batch requests.
92
+ * Adds this contract to the wallet and returns the Contract object.
58
93
  * @param options - Deployment options.
59
- * @returns An array of function calls.
60
- * @remarks This method does not have the same return type as the `request` in the ContractInteraction object,
61
- * it returns a promise for an array instead of a function call directly.
62
94
  */
63
- request(options?: DeployOptions): Promise<ExecutionRequestInit>;
95
+ register(options?: RequestDeployOptions): Promise<TContract>;
64
96
  /**
65
- * Register this contract in the PXE and returns the Contract object.
66
- * @param options - Deployment options.
67
- */
68
- register(options?: DeployOptions): Promise<TContract>;
69
- /**
70
- * Returns calls for registration of the class and deployment of the instance, depending on the provided options.
71
- * @param options - Deployment options.
72
- * @returns A function call array with potentially requests to the class registerer and instance deployer.
97
+ * Returns an execution payload for:
98
+ * - publication of the contract class and
99
+ * - publication of the contract instance to enable public execution
100
+ * depending on the provided options.
101
+ * @param options - Contract creation options.
102
+ * @returns An execution payload with potentially calls (and bytecode capsule) to the class registry and instance registry.
73
103
  */
74
- protected getDeploymentFunctionCalls(options?: DeployOptions): Promise<Pick<ExecutionRequestInit, 'calls' | 'authWitnesses' | 'hashedArguments' | 'capsules'>>;
104
+ protected getPublicationExecutionPayload(options?: RequestDeployOptions): Promise<ExecutionPayload>;
75
105
  /**
76
106
  * Returns the calls necessary to initialize the contract.
77
107
  * @param options - Deployment options.
78
108
  * @returns - An array of function calls.
79
109
  */
80
- protected getInitializeFunctionCalls(options: DeployOptions): Promise<Pick<ExecutionRequestInit, 'calls' | 'authWitnesses' | 'hashedArguments' | 'capsules'>>;
110
+ protected getInitializationExecutionPayload(options?: RequestDeployOptions): Promise<ExecutionPayload>;
81
111
  /**
82
- * Send the contract deployment transaction using the provided options.
112
+ * Send a contract deployment transaction (initialize and/or publish) using the provided options.
83
113
  * This function extends the 'send' method from the ContractFunctionInteraction class,
84
114
  * allowing us to send a transaction specifically for contract deployment.
85
115
  *
86
116
  * @param options - An object containing various deployment options such as contractAddressSalt and from.
87
117
  * @returns A SentTx object that returns the receipt and the deployed contract instance.
88
118
  */
89
- send(options?: DeployOptions): DeploySentTx<TContract>;
119
+ send(options: DeployOptions): DeploySentTx<TContract>;
90
120
  /**
91
- * Builds the contract instance to be deployed and returns it.
121
+ * Builds the contract instance and returns it.
92
122
  *
93
- * @param options - An object containing various deployment options.
123
+ * @param options - An object containing various initialization and publication options.
94
124
  * @returns An instance object.
95
125
  */
96
- getInstance(options?: DeployOptions): Promise<ContractInstanceWithAddress>;
126
+ getInstance(options?: RequestDeployOptions): Promise<ContractInstanceWithAddress>;
97
127
  /**
98
- * Prove the request.
99
- * @param options - Deployment options.
100
- * @returns The proven tx.
128
+ * Simulate the deployment
129
+ *
130
+ * @param options - An optional object containing additional configuration for the simulation.
131
+ * @returns A simulation result object containing metadata of the execution, including gas
132
+ * estimations (if requested via options), execution statistics and emitted offchain effects
101
133
  */
102
- prove(options: DeployOptions): Promise<DeployProvenTx<TContract>>;
134
+ simulate(options: SimulateDeployOptions): Promise<SimulationReturn<true>>;
103
135
  /**
104
- * Estimates gas cost for this deployment operation.
105
- * @param options - Options.
136
+ * Simulate a deployment and profile the gate count for each function in the transaction.
137
+ * @param options - Same options as `send`, plus extra profiling options.
138
+ *
139
+ * @returns An object containing the function return value and profile result.
106
140
  */
107
- estimateGas(options?: Omit<DeployOptions, 'estimateGas' | 'skipPublicSimulation'>): Promise<Pick<GasSettings, 'gasLimits' | 'teardownGasLimits'>>;
141
+ profile(options: DeployOptions & ProfileInteractionOptions): Promise<TxProfileResult>;
108
142
  /** Return this deployment address. */
109
143
  get address(): AztecAddress | undefined;
110
144
  /** Returns the partial address for this deployment. */
111
145
  get partialAddress(): Promise<Fr> | undefined;
146
+ /**
147
+ * Augments this DeployMethod with additional metadata, such as authWitnesses and capsules.
148
+ * @param options - An object containing the metadata to add to the interaction
149
+ * @returns A new DeployMethod with the added metadata, but calling the same original function in the same manner
150
+ */
151
+ with({ authWitnesses, capsules, }: {
152
+ /** The authWitnesses to add to the deployment */
153
+ authWitnesses?: AuthWitness[];
154
+ /** The capsules to add to the deployment */
155
+ capsules?: Capsule[];
156
+ }): DeployMethod;
112
157
  }
113
158
  //# sourceMappingURL=deploy_method.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy_method.d.ts","sourceRoot":"","sources":["../../src/contract/deploy_method.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy_method.d.ts","sourceRoot":"","sources":["../../src/contract/deploy_method.ts"],"names":[],"mappings":"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"}