@aztec/pxe 0.0.1-commit.2448fdb → 0.0.1-commit.2606882

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 (279) hide show
  1. package/dest/bin/check_oracle_version.js +40 -96
  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 +5 -3
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +21 -11
  14. package/dest/config/index.d.ts +8 -2
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +13 -15
  17. package/dest/config/package_info.js +1 -1
  18. package/dest/contract_function_simulator/contract_function_simulator.d.ts +4 -1
  19. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/contract_function_simulator.js +20 -12
  21. package/dest/contract_function_simulator/execution_note_cache.d.ts +2 -2
  22. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -9
  24. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -7
  26. package/dest/contract_function_simulator/index.d.ts +13 -2
  27. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/index.js +10 -0
  29. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +48 -0
  30. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  31. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +45 -0
  32. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  33. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  34. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  35. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -2
  36. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +3 -2
  38. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +12 -2
  39. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +34 -3
  41. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  42. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  43. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  44. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -2
  45. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  46. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +3 -2
  47. package/dest/contract_function_simulator/noir-structs/option.d.ts +61 -0
  48. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  49. package/dest/contract_function_simulator/noir-structs/option.js +62 -0
  50. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +11 -0
  51. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  52. package/dest/contract_function_simulator/noir-structs/provided_secret.js +24 -0
  53. package/dest/contract_function_simulator/oracle/interfaces.d.ts +16 -114
  54. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  55. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  56. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  57. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  58. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  59. package/dest/contract_function_simulator/oracle/oracle.d.ts +55 -57
  60. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  61. package/dest/contract_function_simulator/oracle/oracle.js +343 -344
  62. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +127 -0
  63. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  64. package/dest/contract_function_simulator/oracle/oracle_registry.js +786 -0
  65. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +139 -0
  66. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  67. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +560 -0
  68. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +27 -29
  69. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  70. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +55 -47
  71. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +59 -39
  72. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  73. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +244 -149
  74. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  75. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  76. package/dest/contract_function_simulator/proxied_contract_data_source.js +35 -67
  77. package/dest/contract_sync/contract_sync_service.d.ts +4 -6
  78. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  79. package/dest/contract_sync/contract_sync_service.js +43 -24
  80. package/dest/contract_sync/helpers.d.ts +2 -3
  81. package/dest/contract_sync/helpers.d.ts.map +1 -1
  82. package/dest/contract_sync/helpers.js +12 -19
  83. package/dest/debug/pxe_debug_utils.d.ts +1 -6
  84. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  85. package/dest/debug/pxe_debug_utils.js +0 -6
  86. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  87. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  88. package/dest/entrypoints/client/bundle/utils.js +11 -3
  89. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  90. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  91. package/dest/entrypoints/client/lazy/utils.js +11 -3
  92. package/dest/entrypoints/pxe_creation_options.d.ts +7 -1
  93. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  94. package/dest/entrypoints/server/index.d.ts +2 -1
  95. package/dest/entrypoints/server/index.d.ts.map +1 -1
  96. package/dest/entrypoints/server/index.js +1 -0
  97. package/dest/entrypoints/server/utils.d.ts +3 -2
  98. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  99. package/dest/entrypoints/server/utils.js +11 -3
  100. package/dest/events/event_service.d.ts +13 -5
  101. package/dest/events/event_service.d.ts.map +1 -1
  102. package/dest/events/event_service.js +30 -9
  103. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  104. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  105. package/dest/hooks/authorize_utility_call.js +4 -0
  106. package/dest/hooks/execution_hooks.d.ts +42 -0
  107. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  108. package/dest/hooks/execution_hooks.js +9 -0
  109. package/dest/hooks/index.d.ts +4 -0
  110. package/dest/hooks/index.d.ts.map +1 -0
  111. package/dest/hooks/index.js +1 -0
  112. package/dest/logs/log_service.d.ts +6 -5
  113. package/dest/logs/log_service.d.ts.map +1 -1
  114. package/dest/logs/log_service.js +112 -48
  115. package/dest/messages/message_context_service.d.ts +1 -1
  116. package/dest/messages/message_context_service.d.ts.map +1 -1
  117. package/dest/messages/message_context_service.js +28 -9
  118. package/dest/notes/note_service.d.ts +25 -3
  119. package/dest/notes/note_service.d.ts.map +1 -1
  120. package/dest/notes/note_service.js +80 -65
  121. package/dest/oracle_version.d.ts +3 -3
  122. package/dest/oracle_version.js +4 -4
  123. package/dest/private_kernel/batch_planner.d.ts +47 -0
  124. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  125. package/dest/private_kernel/batch_planner.js +104 -0
  126. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +1 -1
  127. package/dest/private_kernel/hints/test_utils.d.ts +1 -1
  128. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
  129. package/dest/private_kernel/hints/test_utils.js +2 -3
  130. package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
  131. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  132. package/dest/private_kernel/private_kernel_execution_prover.js +148 -52
  133. package/dest/private_kernel/private_kernel_oracle.d.ts +6 -6
  134. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  135. package/dest/private_kernel/private_kernel_oracle.js +12 -7
  136. package/dest/pxe.d.ts +54 -7
  137. package/dest/pxe.d.ts.map +1 -1
  138. package/dest/pxe.js +126 -84
  139. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  140. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  141. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  142. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  143. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  144. package/dest/storage/backwards_compatibility_tests/schema_tests.js +591 -0
  145. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  146. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  147. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  148. package/dest/storage/contract_store/contract_store.d.ts +1 -1
  149. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  150. package/dest/storage/contract_store/contract_store.js +5 -24
  151. package/dest/storage/metadata.d.ts +1 -1
  152. package/dest/storage/metadata.js +1 -1
  153. package/dest/storage/open_pxe_stores.d.ts +33 -0
  154. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  155. package/dest/storage/open_pxe_stores.js +27 -0
  156. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  157. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  158. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  159. package/dest/storage/tagging_store/sender_tagging_store.d.ts +5 -5
  160. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  161. package/dest/storage/tagging_store/sender_tagging_store.js +3 -3
  162. package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
  163. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  164. package/dest/tagging/get_all_logs_by_tags.js +36 -37
  165. package/dest/tagging/index.d.ts +5 -4
  166. package/dest/tagging/index.d.ts.map +1 -1
  167. package/dest/tagging/index.js +4 -3
  168. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  169. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  170. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  171. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +56 -0
  172. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  173. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +163 -0
  174. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  175. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  176. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  177. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  178. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  179. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -5
  180. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  181. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +26 -14
  182. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -6
  183. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  184. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +21 -0
  185. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -4
  186. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  187. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +2 -2
  188. package/package.json +20 -17
  189. package/src/bin/check_oracle_version.ts +46 -119
  190. package/src/bin/index.ts +1 -0
  191. package/src/bin/oracle_version_helpers.ts +121 -0
  192. package/src/block_synchronizer/block_stream_source.ts +81 -0
  193. package/src/block_synchronizer/block_synchronizer.ts +22 -12
  194. package/src/config/index.ts +15 -9
  195. package/src/config/package_info.ts +1 -1
  196. package/src/contract_function_simulator/contract_function_simulator.ts +34 -11
  197. package/src/contract_function_simulator/execution_note_cache.ts +1 -1
  198. package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -9
  199. package/src/contract_function_simulator/index.ts +50 -1
  200. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +55 -0
  201. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  202. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +3 -2
  203. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +35 -2
  204. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  205. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +3 -2
  206. package/src/contract_function_simulator/noir-structs/option.ts +69 -0
  207. package/src/contract_function_simulator/noir-structs/provided_secret.ts +27 -0
  208. package/src/contract_function_simulator/oracle/interfaces.ts +12 -204
  209. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  210. package/src/contract_function_simulator/oracle/oracle.ts +406 -556
  211. package/src/contract_function_simulator/oracle/oracle_registry.ts +585 -0
  212. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +553 -0
  213. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +74 -67
  214. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +350 -304
  215. package/src/contract_function_simulator/proxied_contract_data_source.ts +40 -70
  216. package/src/contract_sync/contract_sync_service.ts +56 -43
  217. package/src/contract_sync/helpers.ts +11 -23
  218. package/src/debug/pxe_debug_utils.ts +0 -8
  219. package/src/entrypoints/client/bundle/utils.ts +8 -2
  220. package/src/entrypoints/client/lazy/utils.ts +8 -2
  221. package/src/entrypoints/pxe_creation_options.ts +7 -0
  222. package/src/entrypoints/server/index.ts +1 -0
  223. package/src/entrypoints/server/utils.ts +13 -3
  224. package/src/events/event_service.ts +54 -19
  225. package/src/hooks/authorize_utility_call.ts +44 -0
  226. package/src/hooks/execution_hooks.ts +48 -0
  227. package/src/hooks/index.ts +7 -0
  228. package/src/logs/log_service.ts +137 -92
  229. package/src/messages/message_context_service.ts +42 -24
  230. package/src/notes/note_service.ts +115 -91
  231. package/src/oracle_version.ts +4 -4
  232. package/src/private_kernel/batch_planner.ts +169 -0
  233. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +1 -1
  234. package/src/private_kernel/hints/test_utils.ts +2 -9
  235. package/src/private_kernel/private_kernel_execution_prover.ts +236 -73
  236. package/src/private_kernel/private_kernel_oracle.ts +21 -11
  237. package/src/pxe.ts +208 -85
  238. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  239. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  240. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  241. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  242. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  243. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +46 -0
  244. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +36 -0
  245. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  246. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
  247. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +16 -0
  248. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
  249. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +97 -0
  250. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  251. package/src/storage/backwards_compatibility_tests/schema_tests.ts +712 -0
  252. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  253. package/src/storage/contract_store/contract_store.ts +6 -29
  254. package/src/storage/metadata.ts +1 -1
  255. package/src/storage/open_pxe_stores.ts +49 -0
  256. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  257. package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
  258. package/src/storage/tagging_store/sender_tagging_store.ts +6 -6
  259. package/src/tagging/get_all_logs_by_tags.ts +78 -50
  260. package/src/tagging/index.ts +4 -3
  261. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  262. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +240 -0
  263. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  264. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  265. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +41 -19
  266. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +23 -8
  267. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +4 -5
  268. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +0 -9
  269. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +0 -1
  270. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +0 -47
  271. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
  272. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  273. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -85
  274. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
  275. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  276. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
  277. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +0 -104
  278. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -130
  279. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
@@ -1,24 +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
 
18
3
  import { ORACLE_VERSION_MAJOR, ORACLE_VERSION_MINOR } from '../../oracle_version.js';
19
4
  import type { IMiscOracle, IPrivateExecutionOracle, IUtilityExecutionOracle } from './interfaces.js';
20
- import { buildLegacyOracleCallbacks } from './legacy_oracle_mappings.js';
21
- import { packAsHintedNote } from './note_packing_utils.js';
5
+ import { callHandler } from './oracle_registry.js';
22
6
 
23
7
  export class UnavailableOracleError extends Error {
24
8
  constructor(oracleName: string) {
@@ -49,7 +33,7 @@ export class UnavailableOracleError extends Error {
49
33
  * - Standalone verbs (`delete`, `copy`, `decrypt`, `log`, etc) are used when no generic verb fits.
50
34
  */
51
35
  export class Oracle {
52
- constructor(private handler: IMiscOracle | IUtilityExecutionOracle | IPrivateExecutionOracle) {}
36
+ constructor(private handler: IMiscOracle & (IUtilityExecutionOracle | IPrivateExecutionOracle)) {}
53
37
 
54
38
  private handlerAsMisc(): IMiscOracle {
55
39
  if (!('isMisc' in this.handler)) {
@@ -93,9 +77,9 @@ export class Oracle {
93
77
  // Validate oracle names - these must be prefixed with either "aztec_prv_" or "aztec_utl_" to indicate their scope
94
78
  // and must correspond to a function on the Oracle class.
95
79
  oracleNames.forEach(name => {
96
- if (!name.startsWith('aztec_prv_') && !name.startsWith('aztec_utl_')) {
80
+ if (!name.startsWith('aztec_prv_') && !name.startsWith('aztec_utl_') && !name.startsWith('aztec_misc_')) {
97
81
  throw new Error(
98
- `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`,
99
83
  );
100
84
  }
101
85
 
@@ -112,13 +96,11 @@ export class Oracle {
112
96
  return acc;
113
97
  }, {} as ACIRCallback);
114
98
 
115
- const allCallbacks = { ...callback, ...buildLegacyOracleCallbacks(this) };
116
-
117
99
  // Wrap in a Proxy to intercept access to missing oracle names and provide enhanced error messages when the
118
100
  // contract's minor version is higher than the PXE's (i.e. the contract expects oracles that were added in a newer
119
101
  // minor version).
120
102
  const handler = this.handler;
121
- return new Proxy(allCallbacks, {
103
+ return new Proxy(callback, {
122
104
  get(target, prop: string) {
123
105
  if (prop in target) {
124
106
  return target[prop];
@@ -168,694 +150,562 @@ export class Oracle {
168
150
  }
169
151
 
170
152
  // eslint-disable-next-line camelcase
171
- aztec_utl_assertCompatibleOracleVersionV2([major]: ACVMField[], [minor]: ACVMField[]) {
172
- this.handlerAsMisc().assertCompatibleOracleVersion(
173
- Fr.fromString(major).toNumber(),
174
- Fr.fromString(minor).toNumber(),
175
- );
176
- 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
+ });
177
161
  }
178
162
 
179
163
  // eslint-disable-next-line camelcase
180
- aztec_utl_getRandomField(): Promise<ACVMField[]> {
181
- const val = this.handlerAsMisc().getRandomField();
182
- 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
+ });
183
170
  }
184
171
 
185
172
  // eslint-disable-next-line camelcase
186
- aztec_prv_setHashPreimage(values: ACVMField[], [hash]: ACVMField[]): Promise<ACVMField[]> {
187
- this.handlerAsPrivate().setHashPreimage(values.map(Fr.fromString), Fr.fromString(hash));
188
- 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
+ });
189
181
  }
190
182
 
191
183
  // eslint-disable-next-line camelcase
192
- async aztec_prv_getHashPreimage([returnsHash]: ACVMField[]): Promise<ACVMField[][]> {
193
- const values = await this.handlerAsPrivate().getHashPreimage(Fr.fromString(returnsHash));
194
- 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
+ });
195
190
  }
196
191
 
197
192
  // eslint-disable-next-line camelcase
198
193
  aztec_utl_getUtilityContext(): Promise<(ACVMField | ACVMField[])[]> {
199
- const context = this.handlerAsUtility().getUtilityContext();
200
- return Promise.resolve(context.toNoirRepresentation());
194
+ return callHandler({
195
+ oracle: 'aztec_utl_getUtilityContext',
196
+ inputs: [],
197
+ handler: () => this.handlerAsUtility().getUtilityContext(),
198
+ });
201
199
  }
202
200
 
203
201
  // eslint-disable-next-line camelcase
204
- async aztec_utl_getKeyValidationRequest([pkMHash]: ACVMField[]): Promise<ACVMField[]> {
205
- const keyValidationRequest = await this.handlerAsUtility().getKeyValidationRequest(Fr.fromString(pkMHash));
206
-
207
- 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
+ });
208
208
  }
209
209
 
210
210
  // eslint-disable-next-line camelcase
211
- async aztec_utl_getContractInstance([address]: ACVMField[]): Promise<ACVMField[]> {
212
- const instance = await this.handlerAsUtility().getContractInstance(AztecAddress.fromField(Fr.fromString(address)));
213
-
214
- return [
215
- instance.salt,
216
- instance.deployer,
217
- instance.currentContractClassId,
218
- instance.initializationHash,
219
- ...instance.publicKeys.toFields(),
220
- ].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
+ });
221
217
  }
222
218
 
223
219
  // eslint-disable-next-line camelcase
224
- async aztec_utl_getNoteHashMembershipWitness(
225
- [anchorBlockHash]: ACVMField[],
226
- [noteHash]: ACVMField[],
227
- ): Promise<(ACVMField | ACVMField[])[]> {
228
- const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
229
- const parsedNoteHash = Fr.fromString(noteHash);
230
-
231
- const witness = await this.handlerAsUtility().getNoteHashMembershipWitness(parsedAnchorBlockHash, parsedNoteHash);
232
- if (!witness) {
233
- throw new Error(
234
- `Note hash ${noteHash} not found in the note hash tree at anchor block hash ${parsedAnchorBlockHash.toString()}.`,
235
- );
236
- }
237
- 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
+ });
238
227
  }
239
228
 
240
229
  // eslint-disable-next-line camelcase
241
- async aztec_utl_getBlockHashMembershipWitness(
242
- [anchorBlockHash]: ACVMField[],
243
- [blockHash]: ACVMField[],
244
- ): Promise<(ACVMField | ACVMField[])[]> {
245
- const parsedAnchorBlockHash = BlockHash.fromString(anchorBlockHash);
246
- const parsedBlockHash = BlockHash.fromString(blockHash);
247
-
248
- const witness = await this.handlerAsUtility().getBlockHashMembershipWitness(parsedAnchorBlockHash, parsedBlockHash);
249
- if (!witness) {
250
- throw new Error(
251
- `Block hash ${parsedBlockHash.toString()} not found in the archive tree at anchor block ${parsedAnchorBlockHash.toString()}.`,
252
- );
253
- }
254
- 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
+ });
255
237
  }
256
238
 
257
239
  // eslint-disable-next-line camelcase
258
- async aztec_utl_getNullifierMembershipWitness(
259
- [blockHash]: ACVMField[],
260
- [nullifier]: ACVMField[], // nullifier, we try to find the witness for (to prove inclusion)
261
- ): Promise<(ACVMField | ACVMField[])[]> {
262
- const parsedBlockHash = BlockHash.fromString(blockHash);
263
- const parsedNullifier = Fr.fromString(nullifier);
264
-
265
- const witness = await this.handlerAsUtility().getNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
266
- if (!witness) {
267
- throw new Error(
268
- `Nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
269
- );
270
- }
271
- 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
+ });
272
246
  }
273
247
 
274
248
  // eslint-disable-next-line camelcase
275
- async aztec_utl_getLowNullifierMembershipWitness(
276
- [blockHash]: ACVMField[],
277
- [nullifier]: ACVMField[], // nullifier, we try to find the low nullifier witness for (to prove non-inclusion)
278
- ): Promise<(ACVMField | ACVMField[])[]> {
279
- const parsedBlockHash = BlockHash.fromString(blockHash);
280
- const parsedNullifier = Fr.fromString(nullifier);
281
-
282
- const witness = await this.handlerAsUtility().getLowNullifierMembershipWitness(parsedBlockHash, parsedNullifier);
283
- if (!witness) {
284
- throw new Error(
285
- `Low nullifier witness not found for nullifier ${parsedNullifier} at block hash ${parsedBlockHash.toString()}.`,
286
- );
287
- }
288
- return witness.toNoirRepresentation();
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
+ });
289
256
  }
290
257
 
291
258
  // eslint-disable-next-line camelcase
292
- async aztec_utl_getPublicDataWitness(
293
- [blockHash]: ACVMField[],
294
- [leafSlot]: ACVMField[],
295
- ): Promise<(ACVMField | ACVMField[])[]> {
296
- const parsedBlockHash = BlockHash.fromString(blockHash);
297
- const parsedLeafSlot = Fr.fromString(leafSlot);
298
-
299
- const witness = await this.handlerAsUtility().getPublicDataWitness(parsedBlockHash, parsedLeafSlot);
300
- if (!witness) {
301
- throw new Error(
302
- `Public data witness not found for slot ${parsedLeafSlot} at block hash ${parsedBlockHash.toString()}.`,
303
- );
304
- }
305
- return witness.toNoirRepresentation();
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
+ });
306
265
  }
307
266
 
308
267
  // eslint-disable-next-line camelcase
309
- async aztec_utl_getBlockHeader([blockNumber]: ACVMField[]): Promise<ACVMField[]> {
310
- const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
311
-
312
- const header = await this.handlerAsUtility().getBlockHeader(BlockNumber(parsedBlockNumber));
313
- if (!header) {
314
- throw new Error(`Block header not found for block ${parsedBlockNumber}.`);
315
- }
316
- return header.toFields().map(toACVMField);
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
+ });
317
274
  }
318
275
 
319
276
  // eslint-disable-next-line camelcase
320
- async aztec_utl_getAuthWitness([messageHash]: ACVMField[]): Promise<ACVMField[][]> {
321
- const messageHashField = Fr.fromString(messageHash);
322
- const witness = await this.handlerAsUtility().getAuthWitness(messageHashField);
323
- if (!witness) {
324
- throw new Error(`Unknown auth witness for message hash ${messageHashField}`);
325
- }
326
- return [witness.map(toACVMField)];
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
+ });
327
283
  }
328
284
 
329
285
  // eslint-disable-next-line camelcase
330
- async aztec_utl_getPublicKeysAndPartialAddress([address]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]> {
331
- const parsedAddress = AztecAddress.fromField(Fr.fromString(address));
332
- const result = await this.handlerAsUtility().getPublicKeysAndPartialAddress(parsedAddress);
333
-
334
- // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
335
- // with two fields: `some` (a boolean) and `value` (a field array in this case).
336
- if (result === undefined) {
337
- // No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
338
- return [toACVMField(0), Array(13).fill(toACVMField(0))];
339
- } else {
340
- // Data was found so we set `some` to 1 and return it along with `value`.
341
- return [toACVMField(1), [...result.publicKeys.toFields(), result.partialAddress].map(toACVMField)];
342
- }
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
+ });
343
292
  }
344
293
 
345
294
  // eslint-disable-next-line camelcase
346
- async aztec_utl_getNotes(
347
- [ownerSome]: ACVMField[],
348
- [ownerValue]: ACVMField[],
349
- [storageSlot]: ACVMField[],
350
- [numSelects]: ACVMField[],
351
- selectByIndexes: ACVMField[],
352
- selectByOffsets: ACVMField[],
353
- selectByLengths: ACVMField[],
354
- selectValues: ACVMField[],
355
- selectComparators: ACVMField[],
356
- sortByIndexes: ACVMField[],
357
- sortByOffsets: ACVMField[],
358
- sortByLengths: ACVMField[],
359
- sortOrder: ACVMField[],
360
- [limit]: ACVMField[],
361
- [offset]: ACVMField[],
362
- [status]: ACVMField[],
363
- [maxNotes]: ACVMField[],
364
- [packedHintedNoteLength]: ACVMField[],
365
- ): Promise<(ACVMField | ACVMField[])[]> {
366
- // Parse Option<AztecAddress>: ownerSome is 0 for None, 1 for Some
367
- const owner = Fr.fromString(ownerSome).toNumber() === 1 ? AztecAddress.fromString(ownerValue) : undefined;
368
- const noteDatas = await this.handlerAsUtility().getNotes(
369
- owner,
370
- Fr.fromString(storageSlot),
371
- +numSelects,
372
- selectByIndexes.map(s => +s),
373
- selectByOffsets.map(s => +s),
374
- selectByLengths.map(s => +s),
375
- selectValues.map(Fr.fromString),
376
- selectComparators.map(s => +s),
377
- sortByIndexes.map(s => +s),
378
- sortByOffsets.map(s => +s),
379
- sortByLengths.map(s => +s),
380
- sortOrder.map(s => +s),
381
- +limit,
382
- +offset,
383
- +status,
384
- );
385
-
386
- const returnDataAsArrayOfPackedHintedNotes = noteDatas.map(noteData =>
387
- packAsHintedNote({
388
- contractAddress: noteData.contractAddress,
389
- owner: noteData.owner,
390
- randomness: noteData.randomness,
391
- storageSlot: noteData.storageSlot,
392
- noteNonce: noteData.noteNonce,
393
- isPending: noteData.isPending,
394
- note: noteData.note,
395
- }),
396
- );
397
-
398
- // Now we convert each sub-array to an array of ACVMField
399
- const returnDataAsArrayOfACVMFieldArrays = returnDataAsArrayOfPackedHintedNotes.map(subArray =>
400
- subArray.map(toACVMField),
401
- );
402
-
403
- // At last we convert the array of arrays to a bounded vec of arrays
404
- return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +packedHintedNoteLength);
405
- }
406
-
407
- // eslint-disable-next-line camelcase
408
- aztec_prv_notifyCreatedNote(
409
- [owner]: ACVMField[],
410
- [storageSlot]: ACVMField[],
411
- [randomness]: ACVMField[],
412
- [noteTypeId]: ACVMField[],
413
- note: ACVMField[],
414
- [noteHash]: ACVMField[],
415
- [counter]: ACVMField[],
416
- ): Promise<ACVMField[]> {
417
- this.handlerAsPrivate().notifyCreatedNote(
418
- AztecAddress.fromString(owner),
419
- Fr.fromString(storageSlot),
420
- Fr.fromString(randomness),
421
- NoteSelector.fromField(Fr.fromString(noteTypeId)),
422
- note.map(Fr.fromString),
423
- Fr.fromString(noteHash),
424
- +counter,
425
- );
426
- return Promise.resolve([]);
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
+ });
427
338
  }
428
339
 
429
340
  // eslint-disable-next-line camelcase
430
- async aztec_prv_notifyNullifiedNote(
431
- [innerNullifier]: ACVMField[],
432
- [noteHash]: ACVMField[],
433
- [counter]: ACVMField[],
434
- ): Promise<ACVMField[]> {
435
- await this.handlerAsPrivate().notifyNullifiedNote(Fr.fromString(innerNullifier), Fr.fromString(noteHash), +counter);
436
- return [];
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
+ });
437
349
  }
438
350
 
439
351
  // eslint-disable-next-line camelcase
440
- async aztec_prv_notifyCreatedNullifier([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
441
- await this.handlerAsPrivate().notifyCreatedNullifier(Fr.fromString(innerNullifier));
442
- return [];
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
+ });
443
359
  }
444
360
 
445
361
  // eslint-disable-next-line camelcase
446
- async aztec_prv_isNullifierPending(
447
- [innerNullifier]: ACVMField[],
448
- [contractAddress]: ACVMField[],
449
- ): Promise<ACVMField[]> {
450
- const isPending = await this.handlerAsPrivate().isNullifierPending(
451
- Fr.fromString(innerNullifier),
452
- AztecAddress.fromString(contractAddress),
453
- );
454
- return [toACVMField(isPending)];
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
+ });
455
368
  }
456
369
 
457
370
  // eslint-disable-next-line camelcase
458
- async aztec_utl_doesNullifierExist([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
459
- const exists = await this.handlerAsUtility().doesNullifierExist(Fr.fromString(innerNullifier));
460
- return [toACVMField(exists)];
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
+ });
461
378
  }
462
379
 
463
380
  // eslint-disable-next-line camelcase
464
- async aztec_utl_getL1ToL2MembershipWitness(
465
- [contractAddress]: ACVMField[],
466
- [messageHash]: ACVMField[],
467
- [secret]: ACVMField[],
468
- ): Promise<(ACVMField | ACVMField[])[]> {
469
- const message = await this.handlerAsUtility().getL1ToL2MembershipWitness(
470
- AztecAddress.fromString(contractAddress),
471
- Fr.fromString(messageHash),
472
- Fr.fromString(secret),
473
- );
474
- return message.toNoirRepresentation();
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
+ });
475
387
  }
476
388
 
477
389
  // eslint-disable-next-line camelcase
478
- async aztec_utl_getFromPublicStorage(
479
- [blockHash]: ACVMField[],
480
- [contractAddress]: ACVMField[],
481
- [startStorageSlot]: ACVMField[],
482
- [numberOfElements]: ACVMField[],
483
- ): Promise<ACVMField[][]> {
484
- const values = await this.handlerAsUtility().getFromPublicStorage(
485
- BlockHash.fromString(blockHash),
486
- new AztecAddress(Fr.fromString(contractAddress)),
487
- Fr.fromString(startStorageSlot),
488
- +numberOfElements,
489
- );
490
- return [values.map(toACVMField)];
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
+ });
491
397
  }
492
398
 
493
399
  // eslint-disable-next-line camelcase
494
- aztec_prv_notifyCreatedContractClassLog(
495
- [contractAddress]: ACVMField[],
496
- message: ACVMField[],
497
- [length]: ACVMField[],
498
- [counter]: ACVMField[],
499
- ): Promise<ACVMField[]> {
500
- const logFields = new ContractClassLogFields(message.map(Fr.fromString));
501
- const log = new ContractClassLog(new AztecAddress(Fr.fromString(contractAddress)), logFields, +length);
502
-
503
- this.handlerAsPrivate().notifyCreatedContractClassLog(log, +counter);
504
- return Promise.resolve([]);
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
+ });
505
407
  }
506
408
 
507
409
  // eslint-disable-next-line camelcase
508
- async aztec_utl_log(
509
- level: ACVMField[],
510
- message: ACVMField[],
511
- _ignoredFieldsSize: ACVMField[],
512
- fields: ACVMField[],
513
- ): Promise<ACVMField[]> {
514
- const levelFr = Fr.fromString(level[0]);
515
- const messageStr = message.map(acvmField => String.fromCharCode(Fr.fromString(acvmField).toNumber())).join('');
516
- const fieldsFr = fields.map(Fr.fromString);
517
- await this.handlerAsMisc().log(levelFr.toNumber(), messageStr, fieldsFr);
518
- 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
+ });
519
417
  }
520
418
 
521
- // This function's name is directly hardcoded in `circuit_recorder.ts`. Don't forget to update it there if you
522
- // change the name here.
523
419
  // eslint-disable-next-line camelcase
524
- async aztec_prv_callPrivateFunction(
525
- [contractAddress]: ACVMField[],
526
- [functionSelector]: ACVMField[],
527
- [argsHash]: ACVMField[],
528
- [sideEffectCounter]: ACVMField[],
529
- [isStaticCall]: ACVMField[],
530
- ): Promise<ACVMField[][]> {
531
- const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().callPrivateFunction(
532
- AztecAddress.fromField(Fr.fromString(contractAddress)),
533
- FunctionSelector.fromField(Fr.fromString(functionSelector)),
534
- Fr.fromString(argsHash),
535
- Fr.fromString(sideEffectCounter).toNumber(),
536
- Fr.fromString(isStaticCall).toBool(),
537
- );
538
- return [[endSideEffectCounter, returnsHash].map(toACVMField)];
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
+ });
539
428
  }
540
429
 
541
430
  // eslint-disable-next-line camelcase
542
- async aztec_prv_assertValidPublicCalldata([calldataHash]: ACVMField[]): Promise<ACVMField[]> {
543
- await this.handlerAsPrivate().assertValidPublicCalldata(Fr.fromString(calldataHash));
544
- 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
+ });
545
437
  }
546
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.
547
441
  // eslint-disable-next-line camelcase
548
- async aztec_prv_notifyRevertiblePhaseStart([minRevertibleSideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
549
- await this.handlerAsPrivate().notifyRevertiblePhaseStart(Fr.fromString(minRevertibleSideEffectCounter).toNumber());
550
- return Promise.resolve([]);
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
+ });
551
455
  }
552
456
 
553
457
  // eslint-disable-next-line camelcase
554
- async aztec_prv_isExecutionInRevertiblePhase([sideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
555
- const isRevertible = await this.handlerAsPrivate().isExecutionInRevertiblePhase(
556
- Fr.fromString(sideEffectCounter).toNumber(),
557
- );
558
- return Promise.resolve([toACVMField(isRevertible)]);
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
+ });
559
464
  }
560
465
 
561
466
  // eslint-disable-next-line camelcase
562
- async aztec_prv_getNextAppTagAsSender([sender]: ACVMField[], [recipient]: ACVMField[]): Promise<ACVMField[]> {
563
- const tag = await this.handlerAsPrivate().getNextAppTagAsSender(
564
- AztecAddress.fromString(sender),
565
- AztecAddress.fromString(recipient),
566
- );
567
- return [toACVMField(tag.value)];
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
+ });
568
474
  }
569
475
 
570
476
  // eslint-disable-next-line camelcase
571
- async aztec_utl_getPendingTaggedLogs(
572
- [pendingTaggedLogArrayBaseSlot]: ACVMField[],
573
- [scope]: ACVMField[],
574
- ): Promise<ACVMField[]> {
575
- await this.handlerAsUtility().getPendingTaggedLogs(
576
- Fr.fromString(pendingTaggedLogArrayBaseSlot),
577
- AztecAddress.fromString(scope),
578
- );
579
- return [];
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
+ });
580
483
  }
581
484
 
582
485
  // eslint-disable-next-line camelcase
583
- async aztec_utl_getPendingTaggedLogs_v2([scope]: ACVMField[]): Promise<ACVMField[]> {
584
- const slot = await this.handlerAsUtility().getPendingTaggedLogsV2(AztecAddress.fromString(scope));
585
- return [toACVMField(slot)];
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
+ });
586
492
  }
587
493
 
588
494
  // eslint-disable-next-line camelcase
589
- async aztec_utl_validateAndStoreEnqueuedNotesAndEvents(
590
- [contractAddress]: ACVMField[],
591
- [noteValidationRequestsArrayBaseSlot]: ACVMField[],
592
- [eventValidationRequestsArrayBaseSlot]: ACVMField[],
593
- [maxNotePackedLen]: ACVMField[],
594
- [maxEventSerializedLen]: ACVMField[],
595
- [scope]: ACVMField[],
596
- ): Promise<ACVMField[]> {
597
- await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(
598
- AztecAddress.fromString(contractAddress),
599
- Fr.fromString(noteValidationRequestsArrayBaseSlot),
600
- Fr.fromString(eventValidationRequestsArrayBaseSlot),
601
- Fr.fromString(maxNotePackedLen).toNumber(),
602
- Fr.fromString(maxEventSerializedLen).toNumber(),
603
- AztecAddress.fromString(scope),
604
- );
605
-
606
- 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
+ });
607
501
  }
608
502
 
609
503
  // eslint-disable-next-line camelcase
610
- async aztec_utl_validateAndStoreEnqueuedNotesAndEvents_v2(
611
- [noteValidationRequestsArrayBaseSlot]: ACVMField[],
612
- [eventValidationRequestsArrayBaseSlot]: ACVMField[],
613
- [maxNotePackedLen]: ACVMField[],
614
- [maxEventSerializedLen]: ACVMField[],
615
- [scope]: ACVMField[],
616
- ): Promise<ACVMField[]> {
617
- await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEventsV2(
618
- Fr.fromString(noteValidationRequestsArrayBaseSlot),
619
- Fr.fromString(eventValidationRequestsArrayBaseSlot),
620
- Fr.fromString(maxNotePackedLen).toNumber(),
621
- Fr.fromString(maxEventSerializedLen).toNumber(),
622
- AztecAddress.fromString(scope),
623
- );
624
- 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
+ });
625
510
  }
626
511
 
627
512
  // eslint-disable-next-line camelcase
628
- async aztec_utl_getLogsByTag(
629
- [contractAddress]: ACVMField[],
630
- [logRetrievalRequestsArrayBaseSlot]: ACVMField[],
631
- [logRetrievalResponsesArrayBaseSlot]: ACVMField[],
632
- [scope]: ACVMField[],
633
- ): Promise<ACVMField[]> {
634
- await this.handlerAsUtility().getLogsByTag(
635
- AztecAddress.fromString(contractAddress),
636
- Fr.fromString(logRetrievalRequestsArrayBaseSlot),
637
- Fr.fromString(logRetrievalResponsesArrayBaseSlot),
638
- AztecAddress.fromString(scope),
639
- );
640
- 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
+ });
641
524
  }
642
525
 
643
526
  // eslint-disable-next-line camelcase
644
- async aztec_utl_getMessageContextsByTxHash(
645
- [contractAddress]: ACVMField[],
646
- [messageContextRequestsArrayBaseSlot]: ACVMField[],
647
- [messageContextResponsesArrayBaseSlot]: ACVMField[],
648
- [scope]: ACVMField[],
649
- ): Promise<ACVMField[]> {
650
- await this.handlerAsUtility().getMessageContextsByTxHash(
651
- AztecAddress.fromString(contractAddress),
652
- Fr.fromString(messageContextRequestsArrayBaseSlot),
653
- Fr.fromString(messageContextResponsesArrayBaseSlot),
654
- AztecAddress.fromString(scope),
655
- );
656
- 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
+ });
657
533
  }
658
534
 
659
535
  // eslint-disable-next-line camelcase
660
- async aztec_utl_getLogsByTag_v2([requestArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]> {
661
- const responseSlot = await this.handlerAsUtility().getLogsByTagV2(Fr.fromString(requestArrayBaseSlot));
662
- return [toACVMField(responseSlot)];
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
+ });
663
542
  }
664
543
 
665
544
  // eslint-disable-next-line camelcase
666
- async aztec_utl_getMessageContextsByTxHash_v2([requestArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]> {
667
- const responseSlot = await this.handlerAsUtility().getMessageContextsByTxHashV2(
668
- Fr.fromString(requestArrayBaseSlot),
669
- );
670
- return [toACVMField(responseSlot)];
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
+ });
671
551
  }
672
552
 
673
553
  // eslint-disable-next-line camelcase
674
- aztec_utl_setCapsule(
675
- [contractAddress]: ACVMField[],
676
- [slot]: ACVMField[],
677
- capsule: ACVMField[],
678
- [scope]: ACVMField[],
679
- ): Promise<ACVMField[]> {
680
- this.handlerAsUtility().setCapsule(
681
- AztecAddress.fromField(Fr.fromString(contractAddress)),
682
- Fr.fromString(slot),
683
- capsule.map(Fr.fromString),
684
- AztecAddress.fromField(Fr.fromString(scope)),
685
- );
686
- return Promise.resolve([]);
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
+ });
687
562
  }
688
563
 
689
564
  // eslint-disable-next-line camelcase
690
- async aztec_utl_getCapsule(
691
- [contractAddress]: ACVMField[],
692
- [slot]: ACVMField[],
693
- [tSize]: ACVMField[],
694
- [scope]: ACVMField[],
695
- ): Promise<(ACVMField | ACVMField[])[]> {
696
- const values = await this.handlerAsUtility().getCapsule(
697
- AztecAddress.fromField(Fr.fromString(contractAddress)),
698
- Fr.fromString(slot),
699
- AztecAddress.fromField(Fr.fromString(scope)),
700
- );
701
-
702
- // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
703
- // with two fields: `some` (a boolean) and `value` (a field array in this case).
704
- if (values === null) {
705
- // No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
706
- return [toACVMField(0), Array(Fr.fromString(tSize).toNumber()).fill(toACVMField(0))];
707
- } else {
708
- // Data was found so we set `some` to 1 and return it along with `value`.
709
- return [toACVMField(1), values.map(toACVMField)];
710
- }
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
+ });
711
572
  }
712
573
 
713
574
  // eslint-disable-next-line camelcase
714
- aztec_utl_deleteCapsule(
715
- [contractAddress]: ACVMField[],
716
- [slot]: ACVMField[],
717
- [scope]: ACVMField[],
718
- ): Promise<ACVMField[]> {
719
- this.handlerAsUtility().deleteCapsule(
720
- AztecAddress.fromField(Fr.fromString(contractAddress)),
721
- Fr.fromString(slot),
722
- AztecAddress.fromField(Fr.fromString(scope)),
723
- );
724
- return Promise.resolve([]);
725
- }
726
-
727
- // eslint-disable-next-line camelcase
728
- async aztec_utl_copyCapsule(
729
- [contractAddress]: ACVMField[],
730
- [srcSlot]: ACVMField[],
731
- [dstSlot]: ACVMField[],
732
- [numEntries]: ACVMField[],
733
- [scope]: ACVMField[],
734
- ): Promise<ACVMField[]> {
735
- await this.handlerAsUtility().copyCapsule(
736
- AztecAddress.fromField(Fr.fromString(contractAddress)),
737
- Fr.fromString(srcSlot),
738
- Fr.fromString(dstSlot),
739
- Fr.fromString(numEntries).toNumber(),
740
- AztecAddress.fromField(Fr.fromString(scope)),
741
- );
742
- return [];
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
+ });
743
583
  }
744
584
 
745
585
  // eslint-disable-next-line camelcase
746
- aztec_utl_pushEphemeral([slot]: ACVMField[], elements: ACVMField[]): Promise<ACVMField[]> {
747
- const newLen = this.handlerAsUtility().pushEphemeral(Fr.fromString(slot), elements.map(Fr.fromString));
748
- return Promise.resolve([toACVMField(newLen)]);
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
+ });
749
593
  }
750
594
 
751
595
  // eslint-disable-next-line camelcase
752
- aztec_utl_popEphemeral([slot]: ACVMField[]): Promise<ACVMField[][]> {
753
- const element = this.handlerAsUtility().popEphemeral(Fr.fromString(slot));
754
- return Promise.resolve([element.map(toACVMField)]);
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
+ });
755
602
  }
756
603
 
757
604
  // eslint-disable-next-line camelcase
758
- aztec_utl_getEphemeral([slot]: ACVMField[], [index]: ACVMField[]): Promise<ACVMField[][]> {
759
- const element = this.handlerAsUtility().getEphemeral(Fr.fromString(slot), Fr.fromString(index).toNumber());
760
- return Promise.resolve([element.map(toACVMField)]);
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
+ });
761
611
  }
762
612
 
763
613
  // eslint-disable-next-line camelcase
764
- aztec_utl_setEphemeral([slot]: ACVMField[], [index]: ACVMField[], elements: ACVMField[]): Promise<ACVMField[]> {
765
- this.handlerAsUtility().setEphemeral(
766
- Fr.fromString(slot),
767
- Fr.fromString(index).toNumber(),
768
- elements.map(Fr.fromString),
769
- );
770
- return Promise.resolve([]);
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
+ });
771
620
  }
772
621
 
773
622
  // eslint-disable-next-line camelcase
774
- aztec_utl_getEphemeralLen([slot]: ACVMField[]): Promise<ACVMField[]> {
775
- const len = this.handlerAsUtility().getEphemeralLen(Fr.fromString(slot));
776
- return Promise.resolve([toACVMField(len)]);
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
+ });
777
631
  }
778
632
 
779
633
  // eslint-disable-next-line camelcase
780
- aztec_utl_removeEphemeral([slot]: ACVMField[], [index]: ACVMField[]): Promise<ACVMField[]> {
781
- this.handlerAsUtility().removeEphemeral(Fr.fromString(slot), Fr.fromString(index).toNumber());
782
- return Promise.resolve([]);
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
+ });
783
640
  }
784
641
 
785
642
  // eslint-disable-next-line camelcase
786
- aztec_utl_clearEphemeral([slot]: ACVMField[]): Promise<ACVMField[]> {
787
- this.handlerAsUtility().clearEphemeral(Fr.fromString(slot));
788
- return Promise.resolve([]);
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
+ });
789
651
  }
790
652
 
791
653
  // eslint-disable-next-line camelcase
792
- async aztec_utl_decryptAes128(
793
- ciphertextBVecStorage: ACVMField[],
794
- [ciphertextLength]: ACVMField[],
795
- iv: ACVMField[],
796
- symKey: ACVMField[],
797
- ): Promise<(ACVMField | ACVMField[])[]> {
798
- const ciphertext = fromUintBoundedVec(ciphertextBVecStorage, ciphertextLength, 8);
799
- const ivBuffer = fromUintArray(iv, 8);
800
- const symKeyBuffer = fromUintArray(symKey, 8);
801
-
802
- // Noir Option<BoundedVec> is encoded as [is_some: Field, storage: Field[], length: Field].
803
- try {
804
- const plaintext = await this.handlerAsUtility().decryptAes128(ciphertext, ivBuffer, symKeyBuffer);
805
- const [storage, length] = bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
806
- return [toACVMField(1), storage, length];
807
- } catch {
808
- const zeroStorage = Array(ciphertextBVecStorage.length).fill(toACVMField(0));
809
- return [toACVMField(0), zeroStorage, toACVMField(0)];
810
- }
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
+ });
811
662
  }
812
663
 
813
664
  // eslint-disable-next-line camelcase
814
- async aztec_utl_getSharedSecret(
815
- [address]: ACVMField[],
816
- [ephPKField0]: ACVMField[],
817
- [ephPKField1]: ACVMField[],
818
- [ephPKField2]: ACVMField[],
819
- [contractAddress]: ACVMField[],
820
- ): Promise<ACVMField[]> {
821
- const secret = await this.handlerAsUtility().getSharedSecret(
822
- AztecAddress.fromField(Fr.fromString(address)),
823
- Point.fromFields([ephPKField0, ephPKField1, ephPKField2].map(Fr.fromString)),
824
- AztecAddress.fromField(Fr.fromString(contractAddress)),
825
- );
826
- return [toACVMField(secret)];
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
+ });
827
671
  }
828
672
 
829
673
  // eslint-disable-next-line camelcase
830
- aztec_utl_setContractSyncCacheInvalid(
831
- [contractAddress]: ACVMField[],
832
- scopes: ACVMField[],
833
- [scopeCount]: ACVMField[],
834
- ): Promise<ACVMField[]> {
835
- const scopeAddresses = scopes.slice(0, +scopeCount).map(s => AztecAddress.fromField(Fr.fromString(s)));
836
- this.handlerAsUtility().setContractSyncCacheInvalid(
837
- AztecAddress.fromField(Fr.fromString(contractAddress)),
838
- scopeAddresses,
839
- );
840
- 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
+ });
841
681
  }
842
682
 
843
683
  // eslint-disable-next-line camelcase
844
- async aztec_utl_emitOffchainEffect(data: ACVMField[]) {
845
- await this.handlerAsUtility().emitOffchainEffect(data.map(Fr.fromString));
846
- 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
+ });
847
692
  }
848
693
 
849
694
  // eslint-disable-next-line camelcase
850
- async aztec_prv_getSenderForTags(): Promise<ACVMField[]> {
851
- const sender = await this.handlerAsPrivate().getSenderForTags();
852
- // Return [1, address] for Some(address), [0, 0] for None
853
- 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
+ });
854
701
  }
855
702
 
856
703
  // eslint-disable-next-line camelcase
857
- async aztec_prv_setSenderForTags([senderForTags]: ACVMField[]): Promise<ACVMField[]> {
858
- await this.handlerAsPrivate().setSenderForTags(AztecAddress.fromField(Fr.fromString(senderForTags)));
859
- return [];
704
+ aztec_prv_getSenderForTags(): Promise<(ACVMField | ACVMField[])[]> {
705
+ return callHandler({
706
+ oracle: 'aztec_prv_getSenderForTags',
707
+ inputs: [],
708
+ handler: () => this.handlerAsPrivate().getSenderForTags(),
709
+ });
860
710
  }
861
711
  }