@aztec/pxe 0.0.1-commit.b6e433891 → 0.0.1-commit.b9865e97

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 +26 -13
  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 -103
  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 -46
  65. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  66. package/dest/contract_function_simulator/oracle/oracle.js +407 -292
  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 -36
  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 -52
  77. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +95 -59
  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 +365 -162
  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 +6 -9
  90. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  91. package/dest/contract_sync/contract_sync_service.js +71 -50
  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 +138 -91
  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 +44 -16
  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 -176
  252. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  253. package/src/contract_function_simulator/oracle/oracle.ts +498 -462
  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 -71
  258. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +534 -267
  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 +97 -89
  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 +226 -95
  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 -42
  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 -135
  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,584 +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);
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
+ });
246
+ }
189
247
 
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();
248
+ // eslint-disable-next-line camelcase
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
+ });
197
256
  }
198
257
 
199
258
  // 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);
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
+ });
265
+ }
206
266
 
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();
267
+ // eslint-disable-next-line camelcase
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
+ });
214
274
  }
215
275
 
216
276
  // 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);
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
+ });
283
+ }
223
284
 
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();
285
+ // eslint-disable-next-line camelcase
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
+ });
231
292
  }
232
293
 
233
294
  // eslint-disable-next-line camelcase
234
- async aztec_utl_getBlockHeader([blockNumber]: ACVMField[]): Promise<ACVMField[]> {
235
- const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
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
+ });
338
+ }
236
339
 
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);
340
+ // eslint-disable-next-line camelcase
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
+ });
242
349
  }
243
350
 
244
351
  // 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)];
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
+ });
252
359
  }
253
360
 
254
361
  // 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);
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
+ });
368
+ }
258
369
 
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
- }
370
+ // eslint-disable-next-line camelcase
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
+ });
268
378
  }
269
379
 
270
380
  // 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
- );
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
+ }
310
388
 
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
- );
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
+ }
322
398
 
323
- // Now we convert each sub-array to an array of ACVMField
324
- const returnDataAsArrayOfACVMFieldArrays = returnDataAsArrayOfPackedHintedNotes.map(subArray =>
325
- subArray.map(toACVMField),
326
- );
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
+ });
407
+ }
327
408
 
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([]);
409
+ // eslint-disable-next-line camelcase
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
+ });
352
417
  }
353
418
 
354
419
  // 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 [];
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
+ });
362
428
  }
363
429
 
364
430
  // eslint-disable-next-line camelcase
365
- async aztec_prv_notifyCreatedNullifier([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
366
- await this.handlerAsPrivate().notifyCreatedNullifier(Fr.fromString(innerNullifier));
367
- return [];
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
+ });
368
437
  }
369
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.
370
441
  // 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)];
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
+ });
380
455
  }
381
456
 
382
457
  // 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)];
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
+ });
386
464
  }
387
465
 
388
466
  // 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();
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
+ });
400
474
  }
401
475
 
402
476
  // 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)];
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
+ });
416
483
  }
417
484
 
418
485
  // 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);
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
+ });
492
+ }
427
493
 
428
- this.handlerAsPrivate().notifyCreatedContractClassLog(log, +counter);
429
- return Promise.resolve([]);
494
+ // eslint-disable-next-line camelcase
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
+ });
430
501
  }
431
502
 
432
503
  // 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 [];
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
+ });
444
510
  }
445
511
 
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
512
  // 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)];
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
+ });
464
524
  }
465
525
 
466
526
  // eslint-disable-next-line camelcase
467
- async aztec_prv_validatePublicCalldata([calldataHash]: ACVMField[]): Promise<ACVMField[]> {
468
- await this.handlerAsPrivate().validatePublicCalldata(Fr.fromString(calldataHash));
469
- return [];
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
+ });
470
533
  }
471
534
 
472
535
  // 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([]);
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
+ });
476
542
  }
477
543
 
478
544
  // 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)]);
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
+ });
482
551
  }
483
552
 
484
553
  // 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)];
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
+ });
491
562
  }
492
563
 
493
564
  // eslint-disable-next-line camelcase
494
- async aztec_utl_fetchTaggedLogs([pendingTaggedLogArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]> {
495
- await this.handlerAsUtility().fetchTaggedLogs(Fr.fromString(pendingTaggedLogArrayBaseSlot));
496
- return [];
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
+ });
497
572
  }
498
573
 
499
574
  // 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
- );
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
+ });
583
+ }
514
584
 
515
- return [];
585
+ // eslint-disable-next-line camelcase
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
+ });
516
593
  }
517
594
 
518
595
  // 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 [];
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
+ });
530
602
  }
531
603
 
532
604
  // 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 [];
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
+ });
544
611
  }
545
612
 
546
613
  // 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 [];
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
+ });
558
620
  }
559
621
 
560
622
  // 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
- );
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
+ });
631
+ }
570
632
 
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
- }
633
+ // eslint-disable-next-line camelcase
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
+ });
580
640
  }
581
641
 
582
642
  // 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 [];
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
+ });
589
651
  }
590
652
 
591
653
  // 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 [];
605
- }
606
-
607
- // eslint-disable-next-line camelcase
608
- async aztec_utl_tryAes128Decrypt(
609
- ciphertextBVecStorage: ACVMField[],
610
- [ciphertextLength]: ACVMField[],
611
- iv: ACVMField[],
612
- symKey: ACVMField[],
613
- ): Promise<(ACVMField | ACVMField[])[]> {
614
- const ciphertext = fromUintBoundedVec(ciphertextBVecStorage, ciphertextLength, 8);
615
- const ivBuffer = fromUintArray(iv, 8);
616
- const symKeyBuffer = fromUintArray(symKey, 8);
617
-
618
- // Noir Option<BoundedVec> is encoded as [is_some: Field, storage: Field[], length: Field].
619
- try {
620
- const plaintext = await this.handlerAsUtility().aes128Decrypt(ciphertext, ivBuffer, symKeyBuffer);
621
- const [storage, length] = bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
622
- return [toACVMField(1), storage, length];
623
- } catch {
624
- const zeroStorage = Array(ciphertextBVecStorage.length).fill(toACVMField(0));
625
- return [toACVMField(0), zeroStorage, toACVMField(0)];
626
- }
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
+ });
627
662
  }
628
663
 
629
664
  // eslint-disable-next-line camelcase
630
- async aztec_utl_getSharedSecret(
631
- [address]: ACVMField[],
632
- [ephPKField0]: ACVMField[],
633
- [ephPKField1]: ACVMField[],
634
- [ephPKField2]: ACVMField[],
635
- ): Promise<ACVMField[]> {
636
- const secret = await this.handlerAsUtility().getSharedSecret(
637
- AztecAddress.fromField(Fr.fromString(address)),
638
- Point.fromFields([ephPKField0, ephPKField1, ephPKField2].map(Fr.fromString)),
639
- );
640
- return secret.toFields().map(toACVMField);
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
+ });
641
671
  }
642
672
 
643
673
  // eslint-disable-next-line camelcase
644
- aztec_utl_invalidateContractSyncCache(
645
- [contractAddress]: ACVMField[],
646
- scopes: ACVMField[],
647
- [scopeCount]: ACVMField[],
648
- ): Promise<ACVMField[]> {
649
- const scopeAddresses = scopes.slice(0, +scopeCount).map(s => AztecAddress.fromField(Fr.fromString(s)));
650
- this.handlerAsUtility().invalidateContractSyncCache(
651
- AztecAddress.fromField(Fr.fromString(contractAddress)),
652
- scopeAddresses,
653
- );
654
- return Promise.resolve([]);
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
+ });
655
681
  }
656
682
 
657
683
  // eslint-disable-next-line camelcase
658
- async aztec_utl_emitOffchainEffect(data: ACVMField[]) {
659
- await this.handlerAsUtility().emitOffchainEffect(data.map(Fr.fromString));
660
- 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
+ });
661
692
  }
662
693
 
663
694
  // eslint-disable-next-line camelcase
664
- async aztec_prv_getSenderForTags(): Promise<ACVMField[]> {
665
- const sender = await this.handlerAsPrivate().getSenderForTags();
666
- // Return [1, address] for Some(address), [0, 0] for None
667
- 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
+ });
668
701
  }
669
702
 
670
703
  // eslint-disable-next-line camelcase
671
- async aztec_prv_setSenderForTags([senderForTags]: ACVMField[]): Promise<ACVMField[]> {
672
- await this.handlerAsPrivate().setSenderForTags(AztecAddress.fromField(Fr.fromString(senderForTags)));
673
- return [];
704
+ aztec_prv_getSenderForTags(): Promise<(ACVMField | ACVMField[])[]> {
705
+ return callHandler({
706
+ oracle: 'aztec_prv_getSenderForTags',
707
+ inputs: [],
708
+ handler: () => this.handlerAsPrivate().getSenderForTags(),
709
+ });
674
710
  }
675
711
  }