@aztec/pxe 0.0.1-commit.001888fc → 0.0.1-commit.017a351

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 (343) hide show
  1. package/dest/bin/check_oracle_version.js +43 -99
  2. package/dest/bin/index.d.ts +2 -0
  3. package/dest/bin/index.d.ts.map +1 -0
  4. package/dest/bin/index.js +1 -0
  5. package/dest/bin/oracle_version_helpers.d.ts +26 -0
  6. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  7. package/dest/bin/oracle_version_helpers.js +93 -0
  8. package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
  9. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
  10. package/dest/block_synchronizer/block_stream_source.js +62 -0
  11. package/dest/block_synchronizer/block_synchronizer.d.ts +6 -2
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +30 -10
  14. package/dest/config/index.d.ts +7 -1
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +12 -14
  17. package/dest/config/package_info.js +1 -1
  18. package/dest/contract_function_simulator/contract_function_simulator.d.ts +9 -4
  19. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/contract_function_simulator.js +35 -14
  21. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  22. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  23. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  24. package/dest/contract_function_simulator/execution_note_cache.d.ts +2 -2
  25. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  26. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -9
  27. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -7
  29. package/dest/contract_function_simulator/index.d.ts +13 -2
  30. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  31. package/dest/contract_function_simulator/index.js +10 -0
  32. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +48 -0
  33. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  34. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +45 -0
  35. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  36. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  37. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  38. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -5
  39. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +6 -8
  41. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +13 -3
  42. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  43. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +35 -4
  44. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
  45. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
  46. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  47. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  48. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  49. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +5 -5
  50. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  51. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +6 -8
  52. package/dest/contract_function_simulator/noir-structs/option.d.ts +61 -0
  53. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  54. package/dest/contract_function_simulator/noir-structs/option.js +62 -0
  55. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +11 -0
  56. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  57. package/dest/contract_function_simulator/noir-structs/provided_secret.js +24 -0
  58. package/dest/contract_function_simulator/oracle/interfaces.d.ts +16 -102
  59. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  60. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  61. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  62. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  63. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  64. package/dest/contract_function_simulator/oracle/oracle.d.ts +74 -45
  65. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  66. package/dest/contract_function_simulator/oracle/oracle.js +405 -270
  67. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +127 -0
  68. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  69. package/dest/contract_function_simulator/oracle/oracle_registry.js +786 -0
  70. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +139 -0
  71. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  72. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +560 -0
  73. package/dest/contract_function_simulator/oracle/private_execution.js +1 -1
  74. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +33 -39
  75. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  76. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +70 -54
  77. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +104 -60
  78. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  79. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +374 -160
  80. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  81. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  82. package/dest/contract_function_simulator/pick_notes.js +20 -3
  83. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  84. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  85. package/dest/contract_function_simulator/proxied_contract_data_source.js +35 -64
  86. package/dest/contract_logging.d.ts +9 -4
  87. package/dest/contract_logging.d.ts.map +1 -1
  88. package/dest/contract_logging.js +21 -6
  89. package/dest/contract_sync/contract_sync_service.d.ts +7 -8
  90. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  91. package/dest/contract_sync/contract_sync_service.js +87 -49
  92. package/dest/contract_sync/helpers.d.ts +2 -4
  93. package/dest/contract_sync/helpers.d.ts.map +1 -1
  94. package/dest/contract_sync/helpers.js +12 -14
  95. package/dest/debug/pxe_debug_utils.d.ts +3 -8
  96. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  97. package/dest/debug/pxe_debug_utils.js +0 -6
  98. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  99. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  100. package/dest/entrypoints/client/bundle/index.js +0 -1
  101. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  102. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  103. package/dest/entrypoints/client/bundle/utils.js +13 -5
  104. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  105. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  106. package/dest/entrypoints/client/lazy/index.js +0 -1
  107. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  108. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  109. package/dest/entrypoints/client/lazy/utils.js +13 -5
  110. package/dest/entrypoints/pxe_creation_options.d.ts +9 -1
  111. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  112. package/dest/entrypoints/pxe_creation_options.js +3 -1
  113. package/dest/entrypoints/server/index.d.ts +3 -3
  114. package/dest/entrypoints/server/index.d.ts.map +1 -1
  115. package/dest/entrypoints/server/index.js +2 -2
  116. package/dest/entrypoints/server/utils.d.ts +4 -3
  117. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  118. package/dest/entrypoints/server/utils.js +13 -5
  119. package/dest/events/event_service.d.ts +15 -6
  120. package/dest/events/event_service.d.ts.map +1 -1
  121. package/dest/events/event_service.js +44 -11
  122. package/dest/events/private_event_filter_validator.d.ts +3 -2
  123. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  124. package/dest/events/private_event_filter_validator.js +15 -0
  125. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  126. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  127. package/dest/hooks/authorize_utility_call.js +4 -0
  128. package/dest/hooks/execution_hooks.d.ts +42 -0
  129. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  130. package/dest/hooks/execution_hooks.js +9 -0
  131. package/dest/hooks/index.d.ts +4 -0
  132. package/dest/hooks/index.d.ts.map +1 -0
  133. package/dest/hooks/index.js +1 -0
  134. package/dest/logs/log_service.d.ts +9 -9
  135. package/dest/logs/log_service.d.ts.map +1 -1
  136. package/dest/logs/log_service.js +126 -72
  137. package/dest/messages/message_context_service.d.ts +3 -3
  138. package/dest/messages/message_context_service.d.ts.map +1 -1
  139. package/dest/messages/message_context_service.js +30 -11
  140. package/dest/notes/note_service.d.ts +27 -6
  141. package/dest/notes/note_service.d.ts.map +1 -1
  142. package/dest/notes/note_service.js +80 -56
  143. package/dest/notes_filter.d.ts +2 -3
  144. package/dest/notes_filter.d.ts.map +1 -1
  145. package/dest/oracle_version.d.ts +4 -3
  146. package/dest/oracle_version.d.ts.map +1 -1
  147. package/dest/oracle_version.js +20 -10
  148. package/dest/private_kernel/batch_planner.d.ts +47 -0
  149. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  150. package/dest/private_kernel/batch_planner.js +104 -0
  151. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +1 -1
  152. package/dest/private_kernel/hints/test_utils.d.ts +1 -1
  153. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
  154. package/dest/private_kernel/hints/test_utils.js +2 -3
  155. package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
  156. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  157. package/dest/private_kernel/private_kernel_execution_prover.js +152 -59
  158. package/dest/private_kernel/private_kernel_oracle.d.ts +10 -10
  159. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  160. package/dest/private_kernel/private_kernel_oracle.js +24 -22
  161. package/dest/pxe.d.ts +56 -10
  162. package/dest/pxe.d.ts.map +1 -1
  163. package/dest/pxe.js +139 -88
  164. package/dest/storage/anchor_block_store/anchor_block_store.js +1 -1
  165. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  166. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  167. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  168. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  169. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  170. package/dest/storage/backwards_compatibility_tests/schema_tests.js +591 -0
  171. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  172. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  173. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  174. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  175. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  176. package/dest/storage/capsule_store/capsule_service.js +50 -0
  177. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  178. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  179. package/dest/storage/capsule_store/capsule_store.js +36 -28
  180. package/dest/storage/capsule_store/index.d.ts +2 -1
  181. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  182. package/dest/storage/capsule_store/index.js +1 -0
  183. package/dest/storage/contract_store/contract_store.d.ts +1 -1
  184. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  185. package/dest/storage/contract_store/contract_store.js +9 -26
  186. package/dest/storage/metadata.d.ts +1 -1
  187. package/dest/storage/metadata.js +1 -1
  188. package/dest/storage/note_store/note_store.d.ts +1 -1
  189. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  190. package/dest/storage/note_store/note_store.js +2 -2
  191. package/dest/storage/open_pxe_stores.d.ts +33 -0
  192. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  193. package/dest/storage/open_pxe_stores.js +27 -0
  194. package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
  195. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  196. package/dest/storage/private_event_store/private_event_store.js +3 -0
  197. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  198. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  199. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  200. package/dest/storage/tagging_store/sender_tagging_store.d.ts +5 -5
  201. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  202. package/dest/storage/tagging_store/sender_tagging_store.js +3 -3
  203. package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
  204. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  205. package/dest/tagging/get_all_logs_by_tags.js +36 -37
  206. package/dest/tagging/index.d.ts +5 -4
  207. package/dest/tagging/index.d.ts.map +1 -1
  208. package/dest/tagging/index.js +4 -3
  209. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  210. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  211. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  212. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +56 -0
  213. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  214. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +163 -0
  215. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  216. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  217. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  218. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  219. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  220. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -5
  221. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  222. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +26 -14
  223. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -6
  224. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  225. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +21 -0
  226. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -4
  227. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  228. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +2 -2
  229. package/package.json +20 -17
  230. package/src/bin/check_oracle_version.ts +49 -122
  231. package/src/bin/index.ts +1 -0
  232. package/src/bin/oracle_version_helpers.ts +121 -0
  233. package/src/block_synchronizer/block_stream_source.ts +81 -0
  234. package/src/block_synchronizer/block_synchronizer.ts +33 -11
  235. package/src/config/index.ts +14 -8
  236. package/src/config/package_info.ts +1 -1
  237. package/src/contract_function_simulator/contract_function_simulator.ts +55 -17
  238. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  239. package/src/contract_function_simulator/execution_note_cache.ts +1 -1
  240. package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -9
  241. package/src/contract_function_simulator/index.ts +50 -1
  242. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +55 -0
  243. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  244. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +4 -6
  245. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +36 -3
  246. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -1
  247. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  248. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -6
  249. package/src/contract_function_simulator/noir-structs/option.ts +69 -0
  250. package/src/contract_function_simulator/noir-structs/provided_secret.ts +27 -0
  251. package/src/contract_function_simulator/oracle/interfaces.ts +12 -175
  252. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  253. package/src/contract_function_simulator/oracle/oracle.ts +498 -442
  254. package/src/contract_function_simulator/oracle/oracle_registry.ts +585 -0
  255. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +553 -0
  256. package/src/contract_function_simulator/oracle/private_execution.ts +1 -1
  257. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +93 -75
  258. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +547 -265
  259. package/src/contract_function_simulator/pick_notes.ts +22 -3
  260. package/src/contract_function_simulator/proxied_contract_data_source.ts +41 -64
  261. package/src/contract_logging.ts +18 -5
  262. package/src/contract_sync/contract_sync_service.ts +120 -83
  263. package/src/contract_sync/helpers.ts +13 -25
  264. package/src/debug/pxe_debug_utils.ts +3 -11
  265. package/src/entrypoints/client/bundle/index.ts +0 -1
  266. package/src/entrypoints/client/bundle/utils.ts +10 -5
  267. package/src/entrypoints/client/lazy/index.ts +0 -1
  268. package/src/entrypoints/client/lazy/utils.ts +10 -5
  269. package/src/entrypoints/pxe_creation_options.ts +14 -0
  270. package/src/entrypoints/server/index.ts +2 -2
  271. package/src/entrypoints/server/utils.ts +15 -6
  272. package/src/events/event_service.ts +69 -21
  273. package/src/events/private_event_filter_validator.ts +21 -1
  274. package/src/hooks/authorize_utility_call.ts +44 -0
  275. package/src/hooks/execution_hooks.ts +48 -0
  276. package/src/hooks/index.ts +7 -0
  277. package/src/logs/log_service.ts +158 -134
  278. package/src/messages/message_context_service.ts +43 -26
  279. package/src/notes/note_service.ts +119 -85
  280. package/src/notes_filter.ts +1 -3
  281. package/src/oracle_version.ts +20 -10
  282. package/src/private_kernel/batch_planner.ts +169 -0
  283. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +1 -1
  284. package/src/private_kernel/hints/test_utils.ts +2 -9
  285. package/src/private_kernel/private_kernel_execution_prover.ts +240 -82
  286. package/src/private_kernel/private_kernel_oracle.ts +35 -25
  287. package/src/pxe.ts +227 -92
  288. package/src/storage/anchor_block_store/anchor_block_store.ts +1 -1
  289. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  290. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  291. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  292. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  293. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  294. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +46 -0
  295. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +36 -0
  296. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  297. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
  298. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +16 -0
  299. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
  300. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +97 -0
  301. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  302. package/src/storage/backwards_compatibility_tests/schema_tests.ts +712 -0
  303. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  304. package/src/storage/capsule_store/capsule_service.ts +90 -0
  305. package/src/storage/capsule_store/capsule_store.ts +44 -26
  306. package/src/storage/capsule_store/index.ts +1 -0
  307. package/src/storage/contract_store/contract_store.ts +14 -35
  308. package/src/storage/metadata.ts +1 -1
  309. package/src/storage/note_store/note_store.ts +2 -5
  310. package/src/storage/open_pxe_stores.ts +49 -0
  311. package/src/storage/private_event_store/private_event_store.ts +4 -0
  312. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  313. package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
  314. package/src/storage/tagging_store/sender_tagging_store.ts +6 -6
  315. package/src/tagging/get_all_logs_by_tags.ts +78 -50
  316. package/src/tagging/index.ts +4 -3
  317. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  318. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +240 -0
  319. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  320. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  321. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +41 -19
  322. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +23 -8
  323. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +4 -5
  324. package/dest/access_scopes.d.ts +0 -9
  325. package/dest/access_scopes.d.ts.map +0 -1
  326. package/dest/access_scopes.js +0 -6
  327. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts +0 -16
  328. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +0 -1
  329. package/dest/contract_function_simulator/noir-structs/message_tx_context.js +0 -57
  330. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +0 -9
  331. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +0 -1
  332. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +0 -43
  333. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
  334. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  335. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  336. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
  337. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  338. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
  339. package/src/access_scopes.ts +0 -9
  340. package/src/contract_function_simulator/noir-structs/message_tx_context.ts +0 -55
  341. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +0 -142
  342. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -140
  343. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
@@ -1,23 +1,8 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
2
- import { Fr } from '@aztec/foundation/curves/bn254';
3
- import { Point } from '@aztec/foundation/curves/grumpkin';
4
- import {
5
- type ACIRCallback,
6
- type ACVMField,
7
- arrayOfArraysToBoundedVecOfArrays,
8
- bufferToBoundedVec,
9
- fromUintArray,
10
- fromUintBoundedVec,
11
- toACVMField,
12
- } from '@aztec/simulator/client';
13
- import { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
14
- import { AztecAddress } from '@aztec/stdlib/aztec-address';
15
- import { BlockHash } from '@aztec/stdlib/block';
16
- import { ContractClassLog, ContractClassLogFields } from '@aztec/stdlib/logs';
1
+ import type { ACIRCallback, ACVMField } from '@aztec/simulator/client';
17
2
 
3
+ import { ORACLE_VERSION_MAJOR, ORACLE_VERSION_MINOR } from '../../oracle_version.js';
18
4
  import type { IMiscOracle, IPrivateExecutionOracle, IUtilityExecutionOracle } from './interfaces.js';
19
- import { buildLegacyOracleCallbacks } from './legacy_oracle_mappings.js';
20
- import { packAsHintedNote } from './note_packing_utils.js';
5
+ import { callHandler } from './oracle_registry.js';
21
6
 
22
7
  export class UnavailableOracleError extends Error {
23
8
  constructor(oracleName: string) {
@@ -27,9 +12,28 @@ export class UnavailableOracleError extends Error {
27
12
 
28
13
  /**
29
14
  * A data source that has all the apis required by Aztec.nr.
15
+ *
16
+ * ## Oracle naming conventions
17
+ *
18
+ * We try to keep oracle naming consistent, please see below the conventions we adhere to.
19
+ *
20
+ * Each oracle method name has the form `aztec_{scope}_{verb}{Object}`, where:
21
+ *
22
+ * - **Scope prefix** indicates the execution context required:
23
+ * - `aztec_prv_` — available only during private function execution.
24
+ * - `aztec_utl_` — available during both utility and private execution.
25
+ *
26
+ * - **Verb** signals the operation's semantics (verb-first, then object):
27
+ * - `get` — read / lookup / get data from oracle into contract.
28
+ * - `does`/`is`/`has` — predicate (returns boolean).
29
+ * - `emit`/`notify` — propagate data from contract to oracle.
30
+ * - `set` — contract driven oracle state mutation (capsules, execution cache, tagging, etc).
31
+ * - `call` — trigger nested execution (control flow).
32
+ * - `assert` — validate a condition, throw on failure.
33
+ * - Standalone verbs (`delete`, `copy`, `decrypt`, `log`, etc) are used when no generic verb fits.
30
34
  */
31
35
  export class Oracle {
32
- constructor(private handler: IMiscOracle | IUtilityExecutionOracle | IPrivateExecutionOracle) {}
36
+ constructor(private handler: IMiscOracle & (IUtilityExecutionOracle | IPrivateExecutionOracle)) {}
33
37
 
34
38
  private handlerAsMisc(): IMiscOracle {
35
39
  if (!('isMisc' in this.handler)) {
@@ -73,9 +77,9 @@ export class Oracle {
73
77
  // Validate oracle names - these must be prefixed with either "aztec_prv_" or "aztec_utl_" to indicate their scope
74
78
  // and must correspond to a function on the Oracle class.
75
79
  oracleNames.forEach(name => {
76
- if (!name.startsWith('aztec_prv_') && !name.startsWith('aztec_utl_')) {
80
+ if (!name.startsWith('aztec_prv_') && !name.startsWith('aztec_utl_') && !name.startsWith('aztec_misc_')) {
77
81
  throw new Error(
78
- `Oracle function "${name}" must be prefixed with either "aztec_prv_" or "aztec_utl_" to indicate its scope`,
82
+ `Oracle function "${name}" must be prefixed with "aztec_prv_", "aztec_utl_", or "aztec_misc_" to indicate its scope`,
79
83
  );
80
84
  }
81
85
 
@@ -92,564 +96,616 @@ export class Oracle {
92
96
  return acc;
93
97
  }, {} as ACIRCallback);
94
98
 
95
- return { ...callback, ...buildLegacyOracleCallbacks(this) };
99
+ // Wrap in a Proxy to intercept access to missing oracle names and provide enhanced error messages when the
100
+ // contract's minor version is higher than the PXE's (i.e. the contract expects oracles that were added in a newer
101
+ // minor version).
102
+ const handler = this.handler;
103
+ return new Proxy(callback, {
104
+ get(target, prop: string) {
105
+ if (prop in target) {
106
+ return target[prop];
107
+ }
108
+ // Return a function that throws with an enhanced error message if applicable
109
+ return () => {
110
+ type NonOracleFunctionGetContractOracleVersion = {
111
+ nonOracleFunctionGetContractOracleVersion(): { major: number; minor: number } | undefined;
112
+ };
113
+
114
+ let contractVersion = undefined;
115
+ if ('nonOracleFunctionGetContractOracleVersion' in handler) {
116
+ contractVersion = (
117
+ handler as unknown as NonOracleFunctionGetContractOracleVersion
118
+ ).nonOracleFunctionGetContractOracleVersion();
119
+ }
120
+ if (!contractVersion) {
121
+ throw new Error(
122
+ `Oracle '${prop}' not found and the contract's oracle version is unknown (the version check oracle ` +
123
+ `was not called before '${prop}'). This usually means the contract was not compiled with the ` +
124
+ `#[aztec] macro, which injects the version check as the first oracle call in every private/utility ` +
125
+ `external function. If you're using a custom entry point, ensure assert_compatible_oracle_version() ` +
126
+ `is called before any other oracle calls. See https://docs.aztec.network/errors/8`,
127
+ );
128
+ } else if (contractVersion.minor > ORACLE_VERSION_MINOR) {
129
+ throw new Error(
130
+ `Oracle '${prop}' not found.` +
131
+ ` This usually means the contract requires a newer private execution environment than you have.` +
132
+ ` Upgrade your private execution environment to a compatible version. The contract was compiled with` +
133
+ ` Aztec.nr oracle version ${contractVersion.major}.${contractVersion.minor}, but this private` +
134
+ ` execution environment only supports up to ${ORACLE_VERSION_MAJOR}.${ORACLE_VERSION_MINOR}.` +
135
+ ` See https://docs.aztec.network/errors/8`,
136
+ );
137
+ } else {
138
+ throw new Error(
139
+ `Oracle '${prop}' not found.` +
140
+ ` The contract's oracle version (${contractVersion.major}.${contractVersion.minor}) is compatible` +
141
+ ` with this private execution environment (${ORACLE_VERSION_MAJOR}.${ORACLE_VERSION_MINOR}), so all` +
142
+ ` standard oracles should be available. This could mean the contract was compiled against a modified` +
143
+ ` version of Aztec.nr, or that it references an oracle that does not exist.` +
144
+ ` See https://docs.aztec.network/errors/8`,
145
+ );
146
+ }
147
+ };
148
+ },
149
+ });
96
150
  }
97
151
 
98
152
  // eslint-disable-next-line camelcase
99
- aztec_utl_assertCompatibleOracleVersion([version]: ACVMField[]) {
100
- this.handlerAsMisc().assertCompatibleOracleVersion(Fr.fromString(version).toNumber());
101
- return Promise.resolve([]);
153
+ aztec_misc_assertCompatibleOracleVersion(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
154
+ return callHandler({
155
+ oracle: 'aztec_misc_assertCompatibleOracleVersion',
156
+ inputs,
157
+ handler: ([major, minor]) => {
158
+ this.handlerAsMisc().assertCompatibleOracleVersion(major, minor);
159
+ },
160
+ });
102
161
  }
103
162
 
104
163
  // eslint-disable-next-line camelcase
105
- aztec_utl_getRandomField(): Promise<ACVMField[]> {
106
- const val = this.handlerAsMisc().getRandomField();
107
- return Promise.resolve([toACVMField(val)]);
164
+ aztec_misc_getRandomField(): Promise<(ACVMField | ACVMField[])[]> {
165
+ return callHandler({
166
+ oracle: 'aztec_misc_getRandomField',
167
+ inputs: [],
168
+ handler: () => this.handlerAsMisc().getRandomField(),
169
+ });
108
170
  }
109
171
 
110
172
  // eslint-disable-next-line camelcase
111
- aztec_prv_storeInExecutionCache(values: ACVMField[], [hash]: ACVMField[]): Promise<ACVMField[]> {
112
- this.handlerAsPrivate().storeInExecutionCache(values.map(Fr.fromString), Fr.fromString(hash));
113
- return Promise.resolve([]);
173
+ aztec_prv_setHashPreimage(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
174
+ return callHandler({
175
+ oracle: 'aztec_prv_setHashPreimage',
176
+ inputs,
177
+ handler: ([values, hash]) => {
178
+ this.handlerAsPrivate().setHashPreimage(values, hash);
179
+ },
180
+ });
114
181
  }
115
182
 
116
183
  // eslint-disable-next-line camelcase
117
- async aztec_prv_loadFromExecutionCache([returnsHash]: ACVMField[]): Promise<ACVMField[][]> {
118
- const values = await this.handlerAsPrivate().loadFromExecutionCache(Fr.fromString(returnsHash));
119
- return [values.map(toACVMField)];
184
+ aztec_prv_getHashPreimage(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
185
+ return callHandler({
186
+ oracle: 'aztec_prv_getHashPreimage',
187
+ inputs,
188
+ handler: ([returnsHash]) => this.handlerAsPrivate().getHashPreimage(returnsHash),
189
+ });
120
190
  }
121
191
 
122
192
  // eslint-disable-next-line camelcase
123
193
  aztec_utl_getUtilityContext(): Promise<(ACVMField | ACVMField[])[]> {
124
- const context = this.handlerAsUtility().getUtilityContext();
125
- return Promise.resolve(context.toNoirRepresentation());
194
+ return callHandler({
195
+ oracle: 'aztec_utl_getUtilityContext',
196
+ inputs: [],
197
+ handler: () => this.handlerAsUtility().getUtilityContext(),
198
+ });
126
199
  }
127
200
 
128
201
  // eslint-disable-next-line camelcase
129
- async aztec_utl_getKeyValidationRequest([pkMHash]: ACVMField[]): Promise<ACVMField[]> {
130
- const keyValidationRequest = await this.handlerAsUtility().getKeyValidationRequest(Fr.fromString(pkMHash));
131
-
132
- return keyValidationRequest.toFields().map(toACVMField);
202
+ aztec_utl_getKeyValidationRequest(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
203
+ return callHandler({
204
+ oracle: 'aztec_utl_getKeyValidationRequest',
205
+ inputs,
206
+ handler: ([pkMHash]) => this.handlerAsUtility().getKeyValidationRequest(pkMHash),
207
+ });
133
208
  }
134
209
 
135
210
  // eslint-disable-next-line camelcase
136
- async aztec_utl_getContractInstance([address]: ACVMField[]): Promise<ACVMField[]> {
137
- const instance = await this.handlerAsUtility().getContractInstance(AztecAddress.fromField(Fr.fromString(address)));
138
-
139
- return [
140
- instance.salt,
141
- instance.deployer,
142
- instance.currentContractClassId,
143
- instance.initializationHash,
144
- ...instance.publicKeys.toFields(),
145
- ].map(toACVMField);
211
+ aztec_utl_getContractInstance(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
212
+ return callHandler({
213
+ oracle: 'aztec_utl_getContractInstance',
214
+ inputs,
215
+ handler: ([address]) => this.handlerAsUtility().getContractInstance(address),
216
+ });
146
217
  }
147
218
 
148
219
  // eslint-disable-next-line camelcase
149
- async aztec_utl_getNoteHashMembershipWitness(
150
- [anchorBlockHash]: ACVMField[],
151
- [noteHash]: ACVMField[],
152
- ): Promise<(ACVMField | ACVMField[])[]> {
153
- const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
154
- const parsedNoteHash = Fr.fromString(noteHash);
155
-
156
- const witness = await this.handlerAsUtility().getNoteHashMembershipWitness(parsedAnchorBlockHash, parsedNoteHash);
157
- if (!witness) {
158
- throw new Error(
159
- `Note hash ${noteHash} not found in the note hash tree at anchor block hash ${parsedAnchorBlockHash.toString()}.`,
160
- );
161
- }
162
- return witness.toNoirRepresentation();
220
+ aztec_utl_getNoteHashMembershipWitness(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
221
+ return callHandler({
222
+ oracle: 'aztec_utl_getNoteHashMembershipWitness',
223
+ inputs,
224
+ handler: ([anchorBlockHash, noteHash]) =>
225
+ this.handlerAsUtility().getNoteHashMembershipWitness(anchorBlockHash, noteHash),
226
+ });
163
227
  }
164
228
 
165
229
  // eslint-disable-next-line camelcase
166
- async aztec_utl_getBlockHashMembershipWitness(
167
- [anchorBlockHash]: ACVMField[],
168
- [blockHash]: ACVMField[],
169
- ): Promise<(ACVMField | ACVMField[])[]> {
170
- const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
171
- const parsedBlockHash = BlockHash.fromString(blockHash);
172
-
173
- const witness = await this.handlerAsUtility().getBlockHashMembershipWitness(parsedAnchorBlockHash, parsedBlockHash);
174
- if (!witness) {
175
- throw new Error(
176
- `Block hash ${parsedBlockHash.toString()} not found in the archive tree at anchor block ${parsedAnchorBlockHash.toString()}.`,
177
- );
178
- }
179
- return witness.toNoirRepresentation();
230
+ aztec_utl_getBlockHashMembershipWitness(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
231
+ return callHandler({
232
+ oracle: 'aztec_utl_getBlockHashMembershipWitness',
233
+ inputs,
234
+ handler: ([anchorBlockHash, blockHash]) =>
235
+ this.handlerAsUtility().getBlockHashMembershipWitness(anchorBlockHash, blockHash),
236
+ });
180
237
  }
181
238
 
182
239
  // eslint-disable-next-line camelcase
183
- async aztec_utl_getNullifierMembershipWitness(
184
- [blockHash]: ACVMField[],
185
- [nullifier]: ACVMField[], // nullifier, we try to find the witness for (to prove inclusion)
186
- ): Promise<(ACVMField | ACVMField[])[]> {
187
- const parsedBlockHash = BlockHash.fromString(blockHash);
188
- const parsedNullifier = Fr.fromString(nullifier);
189
-
190
- const witness = await this.handlerAsUtility().getNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
191
- if (!witness) {
192
- throw new Error(
193
- `Nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
194
- );
195
- }
196
- return witness.toNoirRepresentation();
240
+ aztec_utl_getNullifierMembershipWitness(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
241
+ return callHandler({
242
+ oracle: 'aztec_utl_getNullifierMembershipWitness',
243
+ inputs,
244
+ handler: ([blockHash, nullifier]) => this.handlerAsUtility().getNullifierMembershipWitness(blockHash, nullifier),
245
+ });
197
246
  }
198
247
 
199
248
  // eslint-disable-next-line camelcase
200
- async aztec_utl_getLowNullifierMembershipWitness(
201
- [blockHash]: ACVMField[],
202
- [nullifier]: ACVMField[], // nullifier, we try to find the low nullifier witness for (to prove non-inclusion)
203
- ): Promise<(ACVMField | ACVMField[])[]> {
204
- const parsedBlockHash = BlockHash.fromString(blockHash);
205
- const parsedNullifier = Fr.fromString(nullifier);
249
+ aztec_utl_getLowNullifierMembershipWitness(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
250
+ return callHandler({
251
+ oracle: 'aztec_utl_getLowNullifierMembershipWitness',
252
+ inputs,
253
+ handler: ([blockHash, nullifier]) =>
254
+ this.handlerAsUtility().getLowNullifierMembershipWitness(blockHash, nullifier),
255
+ });
256
+ }
206
257
 
207
- const witness = await this.handlerAsUtility().getLowNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
208
- if (!witness) {
209
- throw new Error(
210
- `Low nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
211
- );
212
- }
213
- return witness.toNoirRepresentation();
258
+ // eslint-disable-next-line camelcase
259
+ aztec_utl_getPublicDataWitness(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
260
+ return callHandler({
261
+ oracle: 'aztec_utl_getPublicDataWitness',
262
+ inputs,
263
+ handler: ([blockHash, leafSlot]) => this.handlerAsUtility().getPublicDataWitness(blockHash, leafSlot),
264
+ });
214
265
  }
215
266
 
216
267
  // eslint-disable-next-line camelcase
217
- async aztec_utl_getPublicDataWitness(
218
- [blockHash]: ACVMField[],
219
- [leafSlot]: ACVMField[],
220
- ): Promise<(ACVMField | ACVMField[])[]> {
221
- const parsedBlockHash = BlockHash.fromString(blockHash);
222
- const parsedLeafSlot = Fr.fromString(leafSlot);
268
+ aztec_utl_getBlockHeader(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
269
+ return callHandler({
270
+ oracle: 'aztec_utl_getBlockHeader',
271
+ inputs,
272
+ handler: ([blockNumber]) => this.handlerAsUtility().getBlockHeader(blockNumber),
273
+ });
274
+ }
223
275
 
224
- const witness = await this.handlerAsUtility().getPublicDataWitness(parsedBlockHash, parsedLeafSlot);
225
- if (!witness) {
226
- throw new Error(
227
- `Public data witness not found for slot ${parsedLeafSlot} at block hash ${parsedBlockHash.toString()}.`,
228
- );
229
- }
230
- return witness.toNoirRepresentation();
276
+ // eslint-disable-next-line camelcase
277
+ aztec_utl_getAuthWitness(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
278
+ return callHandler({
279
+ oracle: 'aztec_utl_getAuthWitness',
280
+ inputs,
281
+ handler: ([messageHash]) => this.handlerAsUtility().getAuthWitness(messageHash),
282
+ });
231
283
  }
232
284
 
233
285
  // eslint-disable-next-line camelcase
234
- async aztec_utl_getBlockHeader([blockNumber]: ACVMField[]): Promise<ACVMField[]> {
235
- const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
286
+ aztec_utl_getPublicKeysAndPartialAddress(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
287
+ return callHandler({
288
+ oracle: 'aztec_utl_getPublicKeysAndPartialAddress',
289
+ inputs,
290
+ handler: ([address]) => this.handlerAsUtility().getPublicKeysAndPartialAddress(address),
291
+ });
292
+ }
236
293
 
237
- const header = await this.handlerAsUtility().getBlockHeader(BlockNumber(parsedBlockNumber));
238
- if (!header) {
239
- throw new Error(`Block header not found for block ${parsedBlockNumber}.`);
240
- }
241
- return header.toFields().map(toACVMField);
294
+ // eslint-disable-next-line camelcase
295
+ aztec_utl_getNotes(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
296
+ return callHandler({
297
+ oracle: 'aztec_utl_getNotes',
298
+ inputs,
299
+ handler: ([
300
+ owner,
301
+ storageSlot,
302
+ numSelects,
303
+ selectByIndexes,
304
+ selectByOffsets,
305
+ selectByLengths,
306
+ selectValues,
307
+ selectComparators,
308
+ sortByIndexes,
309
+ sortByOffsets,
310
+ sortByLengths,
311
+ sortOrder,
312
+ limit,
313
+ offset,
314
+ status,
315
+ maxNotes,
316
+ packedHintedNoteLength,
317
+ ]) =>
318
+ this.handlerAsUtility().getNotes(
319
+ owner,
320
+ storageSlot,
321
+ numSelects,
322
+ selectByIndexes,
323
+ selectByOffsets,
324
+ selectByLengths,
325
+ selectValues,
326
+ selectComparators,
327
+ sortByIndexes,
328
+ sortByOffsets,
329
+ sortByLengths,
330
+ sortOrder,
331
+ limit,
332
+ offset,
333
+ status,
334
+ maxNotes,
335
+ packedHintedNoteLength,
336
+ ),
337
+ });
242
338
  }
243
339
 
244
340
  // eslint-disable-next-line camelcase
245
- async aztec_utl_getAuthWitness([messageHash]: ACVMField[]): Promise<ACVMField[][]> {
246
- const messageHashField = Fr.fromString(messageHash);
247
- const witness = await this.handlerAsUtility().getAuthWitness(messageHashField);
248
- if (!witness) {
249
- throw new Error(`Unknown auth witness for message hash ${messageHashField}`);
250
- }
251
- return [witness.map(toACVMField)];
341
+ aztec_prv_notifyCreatedNote(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
342
+ return callHandler({
343
+ oracle: 'aztec_prv_notifyCreatedNote',
344
+ inputs,
345
+ handler: ([owner, storageSlot, randomness, noteTypeId, note, noteHash, counter]) => {
346
+ this.handlerAsPrivate().notifyCreatedNote(owner, storageSlot, randomness, noteTypeId, note, noteHash, counter);
347
+ },
348
+ });
252
349
  }
253
350
 
254
351
  // eslint-disable-next-line camelcase
255
- async aztec_utl_tryGetPublicKeysAndPartialAddress([address]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]> {
256
- const parsedAddress = AztecAddress.fromField(Fr.fromString(address));
257
- const result = await this.handlerAsUtility().tryGetPublicKeysAndPartialAddress(parsedAddress);
352
+ aztec_prv_notifyNullifiedNote(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
353
+ return callHandler({
354
+ oracle: 'aztec_prv_notifyNullifiedNote',
355
+ inputs,
356
+ handler: ([innerNullifier, noteHash, counter]) =>
357
+ this.handlerAsPrivate().notifyNullifiedNote(innerNullifier, noteHash, counter),
358
+ });
359
+ }
258
360
 
259
- // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
260
- // with two fields: `some` (a boolean) and `value` (a field array in this case).
261
- if (result === undefined) {
262
- // No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
263
- return [toACVMField(0), Array(13).fill(toACVMField(0))];
264
- } else {
265
- // Data was found so we set `some` to 1 and return it along with `value`.
266
- return [toACVMField(1), [...result.publicKeys.toFields(), result.partialAddress].map(toACVMField)];
267
- }
361
+ // eslint-disable-next-line camelcase
362
+ aztec_prv_notifyCreatedNullifier(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
363
+ return callHandler({
364
+ oracle: 'aztec_prv_notifyCreatedNullifier',
365
+ inputs,
366
+ handler: ([innerNullifier]) => this.handlerAsPrivate().notifyCreatedNullifier(innerNullifier),
367
+ });
268
368
  }
269
369
 
270
370
  // eslint-disable-next-line camelcase
271
- async aztec_utl_getNotes(
272
- [ownerSome]: ACVMField[],
273
- [ownerValue]: ACVMField[],
274
- [storageSlot]: ACVMField[],
275
- [numSelects]: ACVMField[],
276
- selectByIndexes: ACVMField[],
277
- selectByOffsets: ACVMField[],
278
- selectByLengths: ACVMField[],
279
- selectValues: ACVMField[],
280
- selectComparators: ACVMField[],
281
- sortByIndexes: ACVMField[],
282
- sortByOffsets: ACVMField[],
283
- sortByLengths: ACVMField[],
284
- sortOrder: ACVMField[],
285
- [limit]: ACVMField[],
286
- [offset]: ACVMField[],
287
- [status]: ACVMField[],
288
- [maxNotes]: ACVMField[],
289
- [packedHintedNoteLength]: ACVMField[],
290
- ): Promise<(ACVMField | ACVMField[])[]> {
291
- // Parse Option<AztecAddress>: ownerSome is 0 for None, 1 for Some
292
- const owner = Fr.fromString(ownerSome).toNumber() === 1 ? AztecAddress.fromString(ownerValue) : undefined;
293
- const noteDatas = await this.handlerAsUtility().getNotes(
294
- owner,
295
- Fr.fromString(storageSlot),
296
- +numSelects,
297
- selectByIndexes.map(s => +s),
298
- selectByOffsets.map(s => +s),
299
- selectByLengths.map(s => +s),
300
- selectValues.map(Fr.fromString),
301
- selectComparators.map(s => +s),
302
- sortByIndexes.map(s => +s),
303
- sortByOffsets.map(s => +s),
304
- sortByLengths.map(s => +s),
305
- sortOrder.map(s => +s),
306
- +limit,
307
- +offset,
308
- +status,
309
- );
371
+ aztec_prv_isNullifierPending(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
372
+ return callHandler({
373
+ oracle: 'aztec_prv_isNullifierPending',
374
+ inputs,
375
+ handler: ([innerNullifier, contractAddress]) =>
376
+ this.handlerAsPrivate().isNullifierPending(innerNullifier, contractAddress),
377
+ });
378
+ }
310
379
 
311
- const returnDataAsArrayOfPackedHintedNotes = noteDatas.map(noteData =>
312
- packAsHintedNote({
313
- contractAddress: noteData.contractAddress,
314
- owner: noteData.owner,
315
- randomness: noteData.randomness,
316
- storageSlot: noteData.storageSlot,
317
- noteNonce: noteData.noteNonce,
318
- isPending: noteData.isPending,
319
- note: noteData.note,
320
- }),
321
- );
380
+ // eslint-disable-next-line camelcase
381
+ aztec_utl_doesNullifierExist(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
382
+ return callHandler({
383
+ oracle: 'aztec_utl_doesNullifierExist',
384
+ inputs,
385
+ handler: ([innerNullifier]) => this.handlerAsUtility().doesNullifierExist(innerNullifier),
386
+ });
387
+ }
322
388
 
323
- // Now we convert each sub-array to an array of ACVMField
324
- const returnDataAsArrayOfACVMFieldArrays = returnDataAsArrayOfPackedHintedNotes.map(subArray =>
325
- subArray.map(toACVMField),
326
- );
389
+ // eslint-disable-next-line camelcase
390
+ aztec_utl_getL1ToL2MembershipWitness(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
391
+ return callHandler({
392
+ oracle: 'aztec_utl_getL1ToL2MembershipWitness',
393
+ inputs,
394
+ handler: ([contractAddress, messageHash, secret]) =>
395
+ this.handlerAsUtility().getL1ToL2MembershipWitness(contractAddress, messageHash, secret),
396
+ });
397
+ }
327
398
 
328
- // At last we convert the array of arrays to a bounded vec of arrays
329
- return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +packedHintedNoteLength);
330
- }
331
-
332
- // eslint-disable-next-line camelcase
333
- aztec_prv_notifyCreatedNote(
334
- [owner]: ACVMField[],
335
- [storageSlot]: ACVMField[],
336
- [randomness]: ACVMField[],
337
- [noteTypeId]: ACVMField[],
338
- note: ACVMField[],
339
- [noteHash]: ACVMField[],
340
- [counter]: ACVMField[],
341
- ): Promise<ACVMField[]> {
342
- this.handlerAsPrivate().notifyCreatedNote(
343
- AztecAddress.fromString(owner),
344
- Fr.fromString(storageSlot),
345
- Fr.fromString(randomness),
346
- NoteSelector.fromField(Fr.fromString(noteTypeId)),
347
- note.map(Fr.fromString),
348
- Fr.fromString(noteHash),
349
- +counter,
350
- );
351
- return Promise.resolve([]);
399
+ // eslint-disable-next-line camelcase
400
+ aztec_utl_getFromPublicStorage(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
401
+ return callHandler({
402
+ oracle: 'aztec_utl_getFromPublicStorage',
403
+ inputs,
404
+ handler: ([blockHash, contractAddress, startStorageSlot, numberOfElements]) =>
405
+ this.handlerAsUtility().getFromPublicStorage(blockHash, contractAddress, startStorageSlot, numberOfElements),
406
+ });
352
407
  }
353
408
 
354
409
  // eslint-disable-next-line camelcase
355
- async aztec_prv_notifyNullifiedNote(
356
- [innerNullifier]: ACVMField[],
357
- [noteHash]: ACVMField[],
358
- [counter]: ACVMField[],
359
- ): Promise<ACVMField[]> {
360
- await this.handlerAsPrivate().notifyNullifiedNote(Fr.fromString(innerNullifier), Fr.fromString(noteHash), +counter);
361
- return [];
410
+ aztec_utl_callUtilityFunction(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
411
+ return callHandler({
412
+ oracle: 'aztec_utl_callUtilityFunction',
413
+ inputs,
414
+ handler: ([contractAddress, functionSelector, args]) =>
415
+ this.handlerAsUtility().callUtilityFunction(contractAddress, functionSelector, args),
416
+ });
362
417
  }
363
418
 
364
419
  // eslint-disable-next-line camelcase
365
- async aztec_prv_notifyCreatedNullifier([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
366
- await this.handlerAsPrivate().notifyCreatedNullifier(Fr.fromString(innerNullifier));
367
- return [];
420
+ aztec_prv_notifyCreatedContractClassLog(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
421
+ return callHandler({
422
+ oracle: 'aztec_prv_notifyCreatedContractClassLog',
423
+ inputs,
424
+ handler: ([log, counter]) => {
425
+ this.handlerAsPrivate().notifyCreatedContractClassLog(log, counter);
426
+ },
427
+ });
368
428
  }
369
429
 
370
430
  // eslint-disable-next-line camelcase
371
- async aztec_prv_isNullifierPending(
372
- [innerNullifier]: ACVMField[],
373
- [contractAddress]: ACVMField[],
374
- ): Promise<ACVMField[]> {
375
- const isPending = await this.handlerAsPrivate().isNullifierPending(
376
- Fr.fromString(innerNullifier),
377
- AztecAddress.fromString(contractAddress),
378
- );
379
- return [toACVMField(isPending)];
431
+ aztec_misc_log(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
432
+ return callHandler({
433
+ oracle: 'aztec_misc_log',
434
+ inputs,
435
+ handler: ([level, message, fieldsSize, fields]) => this.handlerAsMisc().log(level, message, fieldsSize, fields),
436
+ });
380
437
  }
381
438
 
439
+ // This function's name is directly hardcoded in `circuit_recorder.ts`. Don't forget to update it there if you
440
+ // change the name here.
382
441
  // eslint-disable-next-line camelcase
383
- async aztec_utl_checkNullifierExists([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
384
- const exists = await this.handlerAsUtility().checkNullifierExists(Fr.fromString(innerNullifier));
385
- return [toACVMField(exists)];
442
+ aztec_prv_callPrivateFunction(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
443
+ return callHandler({
444
+ oracle: 'aztec_prv_callPrivateFunction',
445
+ inputs,
446
+ handler: ([contractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall]) =>
447
+ this.handlerAsPrivate().callPrivateFunction(
448
+ contractAddress,
449
+ functionSelector,
450
+ argsHash,
451
+ sideEffectCounter,
452
+ isStaticCall,
453
+ ),
454
+ });
386
455
  }
387
456
 
388
457
  // eslint-disable-next-line camelcase
389
- async aztec_utl_getL1ToL2MembershipWitness(
390
- [contractAddress]: ACVMField[],
391
- [messageHash]: ACVMField[],
392
- [secret]: ACVMField[],
393
- ): Promise<(ACVMField | ACVMField[])[]> {
394
- const message = await this.handlerAsUtility().getL1ToL2MembershipWitness(
395
- AztecAddress.fromString(contractAddress),
396
- Fr.fromString(messageHash),
397
- Fr.fromString(secret),
398
- );
399
- return message.toNoirRepresentation();
458
+ aztec_prv_assertValidPublicCalldata(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
459
+ return callHandler({
460
+ oracle: 'aztec_prv_assertValidPublicCalldata',
461
+ inputs,
462
+ handler: ([calldataHash]) => this.handlerAsPrivate().assertValidPublicCalldata(calldataHash),
463
+ });
400
464
  }
401
465
 
402
466
  // eslint-disable-next-line camelcase
403
- async aztec_utl_storageRead(
404
- [blockHash]: ACVMField[],
405
- [contractAddress]: ACVMField[],
406
- [startStorageSlot]: ACVMField[],
407
- [numberOfElements]: ACVMField[],
408
- ): Promise<ACVMField[][]> {
409
- const values = await this.handlerAsUtility().storageRead(
410
- BlockHash.fromString(blockHash),
411
- new AztecAddress(Fr.fromString(contractAddress)),
412
- Fr.fromString(startStorageSlot),
413
- +numberOfElements,
414
- );
415
- return [values.map(toACVMField)];
467
+ aztec_prv_notifyRevertiblePhaseStart(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
468
+ return callHandler({
469
+ oracle: 'aztec_prv_notifyRevertiblePhaseStart',
470
+ inputs,
471
+ handler: ([minRevertibleSideEffectCounter]) =>
472
+ this.handlerAsPrivate().notifyRevertiblePhaseStart(minRevertibleSideEffectCounter),
473
+ });
416
474
  }
417
475
 
418
476
  // eslint-disable-next-line camelcase
419
- aztec_prv_notifyCreatedContractClassLog(
420
- [contractAddress]: ACVMField[],
421
- message: ACVMField[],
422
- [length]: ACVMField[],
423
- [counter]: ACVMField[],
424
- ): Promise<ACVMField[]> {
425
- const logFields = new ContractClassLogFields(message.map(Fr.fromString));
426
- const log = new ContractClassLog(new AztecAddress(Fr.fromString(contractAddress)), logFields, +length);
477
+ aztec_prv_isExecutionInRevertiblePhase(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
478
+ return callHandler({
479
+ oracle: 'aztec_prv_isExecutionInRevertiblePhase',
480
+ inputs,
481
+ handler: ([sideEffectCounter]) => this.handlerAsPrivate().isExecutionInRevertiblePhase(sideEffectCounter),
482
+ });
483
+ }
427
484
 
428
- this.handlerAsPrivate().notifyCreatedContractClassLog(log, +counter);
429
- return Promise.resolve([]);
485
+ // eslint-disable-next-line camelcase
486
+ aztec_prv_getAppTaggingSecret(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
487
+ return callHandler({
488
+ oracle: 'aztec_prv_getAppTaggingSecret',
489
+ inputs,
490
+ handler: ([sender, recipient]) => this.handlerAsPrivate().getAppTaggingSecret(sender, recipient),
491
+ });
430
492
  }
431
493
 
432
494
  // eslint-disable-next-line camelcase
433
- async aztec_utl_log(
434
- level: ACVMField[],
435
- message: ACVMField[],
436
- _ignoredFieldsSize: ACVMField[],
437
- fields: ACVMField[],
438
- ): Promise<ACVMField[]> {
439
- const levelFr = Fr.fromString(level[0]);
440
- const messageStr = message.map(acvmField => String.fromCharCode(Fr.fromString(acvmField).toNumber())).join('');
441
- const fieldsFr = fields.map(Fr.fromString);
442
- await this.handlerAsMisc().log(levelFr.toNumber(), messageStr, fieldsFr);
443
- return [];
495
+ aztec_prv_getNextTaggingIndex(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
496
+ return callHandler({
497
+ oracle: 'aztec_prv_getNextTaggingIndex',
498
+ inputs,
499
+ handler: ([secret, mode]) => this.handlerAsPrivate().getNextTaggingIndex(secret, mode),
500
+ });
444
501
  }
445
502
 
446
- // This function's name is directly hardcoded in `circuit_recorder.ts`. Don't forget to update it there if you
447
- // change the name here.
448
503
  // eslint-disable-next-line camelcase
449
- async aztec_prv_callPrivateFunction(
450
- [contractAddress]: ACVMField[],
451
- [functionSelector]: ACVMField[],
452
- [argsHash]: ACVMField[],
453
- [sideEffectCounter]: ACVMField[],
454
- [isStaticCall]: ACVMField[],
455
- ): Promise<ACVMField[][]> {
456
- const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().callPrivateFunction(
457
- AztecAddress.fromField(Fr.fromString(contractAddress)),
458
- FunctionSelector.fromField(Fr.fromString(functionSelector)),
459
- Fr.fromString(argsHash),
460
- Fr.fromString(sideEffectCounter).toNumber(),
461
- Fr.fromString(isStaticCall).toBool(),
462
- );
463
- return [[endSideEffectCounter, returnsHash].map(toACVMField)];
504
+ aztec_utl_getPendingTaggedLogs(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
505
+ return callHandler({
506
+ oracle: 'aztec_utl_getPendingTaggedLogs',
507
+ inputs,
508
+ handler: ([scope, providedSecrets]) => this.handlerAsUtility().getPendingTaggedLogs(scope, providedSecrets),
509
+ });
464
510
  }
465
511
 
466
512
  // eslint-disable-next-line camelcase
467
- async aztec_prv_validatePublicCalldata([calldataHash]: ACVMField[]): Promise<ACVMField[]> {
468
- await this.handlerAsPrivate().validatePublicCalldata(Fr.fromString(calldataHash));
469
- return [];
513
+ aztec_utl_validateAndStoreEnqueuedNotesAndEvents(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
514
+ return callHandler({
515
+ oracle: 'aztec_utl_validateAndStoreEnqueuedNotesAndEvents',
516
+ inputs,
517
+ handler: ([noteValidationRequests, eventValidationRequests, scope]) =>
518
+ this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(
519
+ noteValidationRequests,
520
+ eventValidationRequests,
521
+ scope,
522
+ ),
523
+ });
470
524
  }
471
525
 
472
526
  // eslint-disable-next-line camelcase
473
- async aztec_prv_notifyRevertiblePhaseStart([minRevertibleSideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
474
- await this.handlerAsPrivate().notifyRevertiblePhaseStart(Fr.fromString(minRevertibleSideEffectCounter).toNumber());
475
- return Promise.resolve([]);
527
+ aztec_utl_getLogsByTag(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
528
+ return callHandler({
529
+ oracle: 'aztec_utl_getLogsByTag',
530
+ inputs,
531
+ handler: ([requests]) => this.handlerAsUtility().getLogsByTag(requests),
532
+ });
476
533
  }
477
534
 
478
535
  // eslint-disable-next-line camelcase
479
- async aztec_prv_inRevertiblePhase([sideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
480
- const isRevertible = await this.handlerAsPrivate().inRevertiblePhase(Fr.fromString(sideEffectCounter).toNumber());
481
- return Promise.resolve([toACVMField(isRevertible)]);
536
+ aztec_utl_getMessageContextsByTxHash(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
537
+ return callHandler({
538
+ oracle: 'aztec_utl_getMessageContextsByTxHash',
539
+ inputs,
540
+ handler: ([requests]) => this.handlerAsUtility().getMessageContextsByTxHash(requests),
541
+ });
482
542
  }
483
543
 
484
544
  // eslint-disable-next-line camelcase
485
- async aztec_prv_getNextAppTagAsSender([sender]: ACVMField[], [recipient]: ACVMField[]): Promise<ACVMField[]> {
486
- const tag = await this.handlerAsPrivate().getNextAppTagAsSender(
487
- AztecAddress.fromString(sender),
488
- AztecAddress.fromString(recipient),
489
- );
490
- return [toACVMField(tag.value)];
545
+ aztec_utl_getTxEffect(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
546
+ return callHandler({
547
+ oracle: 'aztec_utl_getTxEffect',
548
+ inputs,
549
+ handler: ([txHash]) => this.handlerAsUtility().getTxEffect(txHash),
550
+ });
491
551
  }
492
552
 
493
553
  // eslint-disable-next-line camelcase
494
- async aztec_utl_fetchTaggedLogs([pendingTaggedLogArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]> {
495
- await this.handlerAsUtility().fetchTaggedLogs(Fr.fromString(pendingTaggedLogArrayBaseSlot));
496
- return [];
554
+ aztec_utl_setCapsule(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
555
+ return callHandler({
556
+ oracle: 'aztec_utl_setCapsule',
557
+ inputs,
558
+ handler: ([contractAddress, slot, capsule, scope]) => {
559
+ this.handlerAsUtility().setCapsule(contractAddress, slot, capsule, scope);
560
+ },
561
+ });
497
562
  }
498
563
 
499
564
  // eslint-disable-next-line camelcase
500
- async aztec_utl_validateAndStoreEnqueuedNotesAndEvents(
501
- [contractAddress]: ACVMField[],
502
- [noteValidationRequestsArrayBaseSlot]: ACVMField[],
503
- [eventValidationRequestsArrayBaseSlot]: ACVMField[],
504
- [maxNotePackedLen]: ACVMField[],
505
- [maxEventSerializedLen]: ACVMField[],
506
- ): Promise<ACVMField[]> {
507
- await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(
508
- AztecAddress.fromString(contractAddress),
509
- Fr.fromString(noteValidationRequestsArrayBaseSlot),
510
- Fr.fromString(eventValidationRequestsArrayBaseSlot),
511
- Fr.fromString(maxNotePackedLen).toNumber(),
512
- Fr.fromString(maxEventSerializedLen).toNumber(),
513
- );
565
+ aztec_utl_getCapsule(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
566
+ return callHandler({
567
+ oracle: 'aztec_utl_getCapsule',
568
+ inputs,
569
+ handler: ([contractAddress, slot, tSize, scope]) =>
570
+ this.handlerAsUtility().getCapsule(contractAddress, slot, tSize, scope),
571
+ });
572
+ }
514
573
 
515
- return [];
574
+ // eslint-disable-next-line camelcase
575
+ aztec_utl_deleteCapsule(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
576
+ return callHandler({
577
+ oracle: 'aztec_utl_deleteCapsule',
578
+ inputs,
579
+ handler: ([contractAddress, slot, scope]) => {
580
+ this.handlerAsUtility().deleteCapsule(contractAddress, slot, scope);
581
+ },
582
+ });
516
583
  }
517
584
 
518
585
  // eslint-disable-next-line camelcase
519
- async aztec_utl_bulkRetrieveLogs(
520
- [contractAddress]: ACVMField[],
521
- [logRetrievalRequestsArrayBaseSlot]: ACVMField[],
522
- [logRetrievalResponsesArrayBaseSlot]: ACVMField[],
523
- ): Promise<ACVMField[]> {
524
- await this.handlerAsUtility().bulkRetrieveLogs(
525
- AztecAddress.fromString(contractAddress),
526
- Fr.fromString(logRetrievalRequestsArrayBaseSlot),
527
- Fr.fromString(logRetrievalResponsesArrayBaseSlot),
528
- );
529
- return [];
586
+ aztec_utl_copyCapsule(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
587
+ return callHandler({
588
+ oracle: 'aztec_utl_copyCapsule',
589
+ inputs,
590
+ handler: ([contractAddress, srcSlot, dstSlot, numEntries, scope]) =>
591
+ this.handlerAsUtility().copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, scope),
592
+ });
530
593
  }
531
594
 
532
595
  // eslint-disable-next-line camelcase
533
- async aztec_utl_utilityResolveMessageContexts(
534
- [contractAddress]: ACVMField[],
535
- [messageContextRequestsArrayBaseSlot]: ACVMField[],
536
- [messageContextResponsesArrayBaseSlot]: ACVMField[],
537
- ): Promise<ACVMField[]> {
538
- await this.handlerAsUtility().utilityResolveMessageContexts(
539
- AztecAddress.fromString(contractAddress),
540
- Fr.fromString(messageContextRequestsArrayBaseSlot),
541
- Fr.fromString(messageContextResponsesArrayBaseSlot),
542
- );
543
- return [];
596
+ aztec_utl_pushEphemeral(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
597
+ return callHandler({
598
+ oracle: 'aztec_utl_pushEphemeral',
599
+ inputs,
600
+ handler: ([slot, elements]) => this.handlerAsUtility().pushEphemeral(slot, elements),
601
+ });
544
602
  }
545
603
 
546
604
  // eslint-disable-next-line camelcase
547
- async aztec_utl_storeCapsule(
548
- [contractAddress]: ACVMField[],
549
- [slot]: ACVMField[],
550
- capsule: ACVMField[],
551
- ): Promise<ACVMField[]> {
552
- await this.handlerAsUtility().storeCapsule(
553
- AztecAddress.fromField(Fr.fromString(contractAddress)),
554
- Fr.fromString(slot),
555
- capsule.map(Fr.fromString),
556
- );
557
- return [];
605
+ aztec_utl_popEphemeral(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
606
+ return callHandler({
607
+ oracle: 'aztec_utl_popEphemeral',
608
+ inputs,
609
+ handler: ([slot]) => this.handlerAsUtility().popEphemeral(slot),
610
+ });
558
611
  }
559
612
 
560
613
  // eslint-disable-next-line camelcase
561
- async aztec_utl_loadCapsule(
562
- [contractAddress]: ACVMField[],
563
- [slot]: ACVMField[],
564
- [tSize]: ACVMField[],
565
- ): Promise<(ACVMField | ACVMField[])[]> {
566
- const values = await this.handlerAsUtility().loadCapsule(
567
- AztecAddress.fromField(Fr.fromString(contractAddress)),
568
- Fr.fromString(slot),
569
- );
614
+ aztec_utl_getEphemeral(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
615
+ return callHandler({
616
+ oracle: 'aztec_utl_getEphemeral',
617
+ inputs,
618
+ handler: ([slot, index]) => this.handlerAsUtility().getEphemeral(slot, index),
619
+ });
620
+ }
570
621
 
571
- // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
572
- // with two fields: `some` (a boolean) and `value` (a field array in this case).
573
- if (values === null) {
574
- // No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
575
- return [toACVMField(0), Array(Fr.fromString(tSize).toNumber()).fill(toACVMField(0))];
576
- } else {
577
- // Data was found so we set `some` to 1 and return it along with `value`.
578
- return [toACVMField(1), values.map(toACVMField)];
579
- }
622
+ // eslint-disable-next-line camelcase
623
+ aztec_utl_setEphemeral(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
624
+ return callHandler({
625
+ oracle: 'aztec_utl_setEphemeral',
626
+ inputs,
627
+ handler: ([slot, index, elements]) => {
628
+ this.handlerAsUtility().setEphemeral(slot, index, elements);
629
+ },
630
+ });
580
631
  }
581
632
 
582
633
  // eslint-disable-next-line camelcase
583
- async aztec_utl_deleteCapsule([contractAddress]: ACVMField[], [slot]: ACVMField[]): Promise<ACVMField[]> {
584
- await this.handlerAsUtility().deleteCapsule(
585
- AztecAddress.fromField(Fr.fromString(contractAddress)),
586
- Fr.fromString(slot),
587
- );
588
- return [];
634
+ aztec_utl_getEphemeralLen(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
635
+ return callHandler({
636
+ oracle: 'aztec_utl_getEphemeralLen',
637
+ inputs,
638
+ handler: ([slot]) => this.handlerAsUtility().getEphemeralLen(slot),
639
+ });
589
640
  }
590
641
 
591
642
  // eslint-disable-next-line camelcase
592
- async aztec_utl_copyCapsule(
593
- [contractAddress]: ACVMField[],
594
- [srcSlot]: ACVMField[],
595
- [dstSlot]: ACVMField[],
596
- [numEntries]: ACVMField[],
597
- ): Promise<ACVMField[]> {
598
- await this.handlerAsUtility().copyCapsule(
599
- AztecAddress.fromField(Fr.fromString(contractAddress)),
600
- Fr.fromString(srcSlot),
601
- Fr.fromString(dstSlot),
602
- Fr.fromString(numEntries).toNumber(),
603
- );
604
- return [];
643
+ aztec_utl_removeEphemeral(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
644
+ return callHandler({
645
+ oracle: 'aztec_utl_removeEphemeral',
646
+ inputs,
647
+ handler: ([slot, index]) => {
648
+ this.handlerAsUtility().removeEphemeral(slot, index);
649
+ },
650
+ });
605
651
  }
606
652
 
607
- // TODO(F-452): Return Option and wrap in try/catch so BB exceptions don't crash PXE.
608
653
  // eslint-disable-next-line camelcase
609
- async aztec_utl_aes128Decrypt(
610
- ciphertextBVecStorage: ACVMField[],
611
- [ciphertextLength]: ACVMField[],
612
- iv: ACVMField[],
613
- symKey: ACVMField[],
614
- ): Promise<(ACVMField | ACVMField[])[]> {
615
- const ciphertext = fromUintBoundedVec(ciphertextBVecStorage, ciphertextLength, 8);
616
- const ivBuffer = fromUintArray(iv, 8);
617
- const symKeyBuffer = fromUintArray(symKey, 8);
654
+ aztec_utl_clearEphemeral(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
655
+ return callHandler({
656
+ oracle: 'aztec_utl_clearEphemeral',
657
+ inputs,
658
+ handler: ([slot]) => {
659
+ this.handlerAsUtility().clearEphemeral(slot);
660
+ },
661
+ });
662
+ }
618
663
 
619
- const plaintext = await this.handlerAsUtility().aes128Decrypt(ciphertext, ivBuffer, symKeyBuffer);
620
- return bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
664
+ // eslint-disable-next-line camelcase
665
+ aztec_utl_decryptAes128(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
666
+ return callHandler({
667
+ oracle: 'aztec_utl_decryptAes128',
668
+ inputs,
669
+ handler: ([ciphertext, iv, symKey]) => this.handlerAsUtility().decryptAes128(ciphertext, iv, symKey),
670
+ });
621
671
  }
622
672
 
623
673
  // eslint-disable-next-line camelcase
624
- async aztec_utl_getSharedSecret(
625
- [address]: ACVMField[],
626
- [ephPKField0]: ACVMField[],
627
- [ephPKField1]: ACVMField[],
628
- [ephPKField2]: ACVMField[],
629
- ): Promise<ACVMField[]> {
630
- const secret = await this.handlerAsUtility().getSharedSecret(
631
- AztecAddress.fromField(Fr.fromString(address)),
632
- Point.fromFields([ephPKField0, ephPKField1, ephPKField2].map(Fr.fromString)),
633
- );
634
- return secret.toFields().map(toACVMField);
674
+ aztec_utl_getSharedSecrets(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
675
+ return callHandler({
676
+ oracle: 'aztec_utl_getSharedSecrets',
677
+ inputs,
678
+ handler: ([address, ephPks, contractAddress]) =>
679
+ this.handlerAsUtility().getSharedSecrets(address, ephPks, contractAddress),
680
+ });
635
681
  }
636
682
 
637
683
  // eslint-disable-next-line camelcase
638
- async aztec_utl_emitOffchainEffect(data: ACVMField[]) {
639
- await this.handlerAsUtility().emitOffchainEffect(data.map(Fr.fromString));
640
- return [];
684
+ aztec_utl_setContractSyncCacheInvalid(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
685
+ return callHandler({
686
+ oracle: 'aztec_utl_setContractSyncCacheInvalid',
687
+ inputs,
688
+ handler: ([contractAddress, scopes]) => {
689
+ this.handlerAsUtility().setContractSyncCacheInvalid(contractAddress, scopes);
690
+ },
691
+ });
641
692
  }
642
693
 
643
694
  // eslint-disable-next-line camelcase
644
- async aztec_prv_getSenderForTags(): Promise<ACVMField[]> {
645
- const sender = await this.handlerAsPrivate().getSenderForTags();
646
- // Return [1, address] for Some(address), [0, 0] for None
647
- return sender ? [toACVMField(1n), toACVMField(sender)] : [toACVMField(0n), toACVMField(0n)];
695
+ aztec_utl_emitOffchainEffect(...inputs: ACVMField[][]): Promise<(ACVMField | ACVMField[])[]> {
696
+ return callHandler({
697
+ oracle: 'aztec_utl_emitOffchainEffect',
698
+ inputs,
699
+ handler: ([data]) => this.handlerAsUtility().emitOffchainEffect(data),
700
+ });
648
701
  }
649
702
 
650
703
  // eslint-disable-next-line camelcase
651
- async aztec_prv_setSenderForTags([senderForTags]: ACVMField[]): Promise<ACVMField[]> {
652
- await this.handlerAsPrivate().setSenderForTags(AztecAddress.fromField(Fr.fromString(senderForTags)));
653
- return [];
704
+ aztec_prv_getSenderForTags(): Promise<(ACVMField | ACVMField[])[]> {
705
+ return callHandler({
706
+ oracle: 'aztec_prv_getSenderForTags',
707
+ inputs: [],
708
+ handler: () => this.handlerAsPrivate().getSenderForTags(),
709
+ });
654
710
  }
655
711
  }