@aztec/pxe 0.0.1-commit.e3c1de76 → 0.0.1-commit.e57c76e

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 (347) 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 +9 -3
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +37 -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 +66 -29
  19. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/contract_function_simulator.js +216 -75
  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 +7 -11
  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 +19 -15
  29. package/dest/contract_function_simulator/index.d.ts +14 -2
  30. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  31. package/dest/contract_function_simulator/index.js +11 -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 +3 -4
  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 +8 -9
  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 +2 -2
  45. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  46. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -4
  47. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  48. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  49. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  50. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -5
  51. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  52. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +6 -10
  53. package/dest/contract_function_simulator/noir-structs/option.d.ts +61 -0
  54. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  55. package/dest/contract_function_simulator/noir-structs/option.js +62 -0
  56. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +11 -0
  57. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  58. package/dest/contract_function_simulator/noir-structs/provided_secret.js +24 -0
  59. package/dest/contract_function_simulator/oracle/interfaces.d.ts +16 -98
  60. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  61. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  62. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  63. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  64. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  65. package/dest/contract_function_simulator/oracle/oracle.d.ts +75 -46
  66. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  67. package/dest/contract_function_simulator/oracle/oracle.js +471 -275
  68. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +127 -0
  69. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  70. package/dest/contract_function_simulator/oracle/oracle_registry.js +786 -0
  71. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +139 -0
  72. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  73. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +560 -0
  74. package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
  75. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +68 -95
  76. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  77. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +141 -110
  78. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +156 -76
  79. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  80. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +450 -166
  81. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  82. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  83. package/dest/contract_function_simulator/pick_notes.js +20 -3
  84. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  85. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  86. package/dest/contract_function_simulator/proxied_contract_data_source.js +35 -64
  87. package/dest/contract_logging.d.ts +27 -0
  88. package/dest/contract_logging.d.ts.map +1 -0
  89. package/dest/contract_logging.js +38 -0
  90. package/dest/contract_sync/contract_sync_service.d.ts +42 -0
  91. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  92. package/dest/contract_sync/contract_sync_service.js +135 -0
  93. package/dest/contract_sync/helpers.d.ts +27 -0
  94. package/dest/contract_sync/helpers.d.ts.map +1 -0
  95. package/dest/contract_sync/{index.js → helpers.js} +16 -17
  96. package/dest/debug/pxe_debug_utils.d.ts +14 -15
  97. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  98. package/dest/debug/pxe_debug_utils.js +16 -21
  99. package/dest/entrypoints/client/bundle/index.d.ts +3 -1
  100. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  101. package/dest/entrypoints/client/bundle/index.js +2 -0
  102. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  103. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  104. package/dest/entrypoints/client/bundle/utils.js +21 -5
  105. package/dest/entrypoints/client/lazy/index.d.ts +3 -1
  106. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  107. package/dest/entrypoints/client/lazy/index.js +2 -0
  108. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  109. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  110. package/dest/entrypoints/client/lazy/utils.js +21 -5
  111. package/dest/entrypoints/pxe_creation_options.d.ts +9 -1
  112. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  113. package/dest/entrypoints/pxe_creation_options.js +3 -1
  114. package/dest/entrypoints/server/index.d.ts +5 -3
  115. package/dest/entrypoints/server/index.d.ts.map +1 -1
  116. package/dest/entrypoints/server/index.js +4 -2
  117. package/dest/entrypoints/server/utils.d.ts +4 -3
  118. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  119. package/dest/entrypoints/server/utils.js +21 -5
  120. package/dest/events/event_service.d.ts +15 -6
  121. package/dest/events/event_service.d.ts.map +1 -1
  122. package/dest/events/event_service.js +44 -11
  123. package/dest/events/private_event_filter_validator.d.ts +3 -2
  124. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  125. package/dest/events/private_event_filter_validator.js +15 -0
  126. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  127. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  128. package/dest/hooks/authorize_utility_call.js +4 -0
  129. package/dest/hooks/execution_hooks.d.ts +42 -0
  130. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  131. package/dest/hooks/execution_hooks.js +9 -0
  132. package/dest/hooks/index.d.ts +4 -0
  133. package/dest/hooks/index.d.ts.map +1 -0
  134. package/dest/hooks/index.js +1 -0
  135. package/dest/logs/log_service.d.ts +9 -8
  136. package/dest/logs/log_service.d.ts.map +1 -1
  137. package/dest/logs/log_service.js +131 -84
  138. package/dest/messages/message_context_service.d.ts +17 -0
  139. package/dest/messages/message_context_service.d.ts.map +1 -0
  140. package/dest/messages/message_context_service.js +55 -0
  141. package/dest/notes/note_service.d.ts +27 -5
  142. package/dest/notes/note_service.d.ts.map +1 -1
  143. package/dest/notes/note_service.js +83 -58
  144. package/dest/notes_filter.d.ts +24 -0
  145. package/dest/notes_filter.d.ts.map +1 -0
  146. package/dest/notes_filter.js +4 -0
  147. package/dest/oracle_version.d.ts +4 -3
  148. package/dest/oracle_version.d.ts.map +1 -1
  149. package/dest/oracle_version.js +20 -10
  150. package/dest/private_kernel/batch_planner.d.ts +47 -0
  151. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  152. package/dest/private_kernel/batch_planner.js +104 -0
  153. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  154. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  155. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  156. package/dest/private_kernel/hints/index.d.ts +1 -1
  157. package/dest/private_kernel/hints/index.js +1 -1
  158. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  159. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  160. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +130 -69
  161. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  162. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  163. package/dest/private_kernel/hints/test_utils.js +202 -0
  164. package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
  165. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  166. package/dest/private_kernel/private_kernel_execution_prover.js +166 -65
  167. package/dest/private_kernel/private_kernel_oracle.d.ts +15 -11
  168. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  169. package/dest/private_kernel/private_kernel_oracle.js +31 -25
  170. package/dest/pxe.d.ts +120 -24
  171. package/dest/pxe.d.ts.map +1 -1
  172. package/dest/pxe.js +231 -134
  173. package/dest/storage/anchor_block_store/anchor_block_store.js +1 -1
  174. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  175. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  176. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  177. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  178. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  179. package/dest/storage/backwards_compatibility_tests/schema_tests.js +591 -0
  180. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  181. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  182. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  183. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  184. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  185. package/dest/storage/capsule_store/capsule_service.js +50 -0
  186. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  187. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  188. package/dest/storage/capsule_store/capsule_store.js +36 -28
  189. package/dest/storage/capsule_store/index.d.ts +2 -1
  190. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  191. package/dest/storage/capsule_store/index.js +1 -0
  192. package/dest/storage/contract_store/contract_store.d.ts +42 -15
  193. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  194. package/dest/storage/contract_store/contract_store.js +146 -87
  195. package/dest/storage/metadata.d.ts +1 -1
  196. package/dest/storage/metadata.js +1 -1
  197. package/dest/storage/note_store/note_store.d.ts +3 -3
  198. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  199. package/dest/storage/note_store/note_store.js +6 -4
  200. package/dest/storage/open_pxe_stores.d.ts +33 -0
  201. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  202. package/dest/storage/open_pxe_stores.js +27 -0
  203. package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
  204. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  205. package/dest/storage/private_event_store/private_event_store.js +3 -0
  206. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  207. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  208. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  209. package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
  210. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  211. package/dest/storage/tagging_store/sender_tagging_store.js +141 -115
  212. package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
  213. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  214. package/dest/tagging/get_all_logs_by_tags.js +45 -32
  215. package/dest/tagging/index.d.ts +6 -5
  216. package/dest/tagging/index.d.ts.map +1 -1
  217. package/dest/tagging/index.js +4 -3
  218. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  219. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  220. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  221. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +56 -0
  222. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  223. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +163 -0
  224. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  225. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  226. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  227. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  228. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  229. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  230. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -9
  231. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  232. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +32 -14
  233. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +13 -7
  234. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  235. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +41 -10
  236. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -7
  237. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  238. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +37 -25
  239. package/package.json +29 -17
  240. package/src/bin/check_oracle_version.ts +49 -122
  241. package/src/bin/index.ts +1 -0
  242. package/src/bin/oracle_version_helpers.ts +121 -0
  243. package/src/block_synchronizer/block_stream_source.ts +81 -0
  244. package/src/block_synchronizer/block_synchronizer.ts +39 -11
  245. package/src/config/index.ts +15 -9
  246. package/src/config/package_info.ts +1 -1
  247. package/src/contract_function_simulator/contract_function_simulator.ts +391 -136
  248. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  249. package/src/contract_function_simulator/execution_note_cache.ts +1 -1
  250. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -18
  251. package/src/contract_function_simulator/index.ts +51 -1
  252. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +55 -0
  253. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  254. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +9 -8
  255. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +36 -3
  256. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
  257. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  258. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -9
  259. package/src/contract_function_simulator/noir-structs/option.ts +69 -0
  260. package/src/contract_function_simulator/noir-structs/provided_secret.ts +27 -0
  261. package/src/contract_function_simulator/oracle/interfaces.ts +12 -176
  262. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  263. package/src/contract_function_simulator/oracle/oracle.ts +564 -473
  264. package/src/contract_function_simulator/oracle/oracle_registry.ts +585 -0
  265. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +553 -0
  266. package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
  267. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +173 -205
  268. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +664 -245
  269. package/src/contract_function_simulator/pick_notes.ts +22 -3
  270. package/src/contract_function_simulator/proxied_contract_data_source.ts +41 -64
  271. package/src/contract_logging.ts +52 -0
  272. package/src/contract_sync/contract_sync_service.ts +189 -0
  273. package/src/contract_sync/{index.ts → helpers.ts} +17 -29
  274. package/src/debug/pxe_debug_utils.ts +47 -25
  275. package/src/entrypoints/client/bundle/index.ts +2 -0
  276. package/src/entrypoints/client/bundle/utils.ts +19 -6
  277. package/src/entrypoints/client/lazy/index.ts +2 -0
  278. package/src/entrypoints/client/lazy/utils.ts +19 -6
  279. package/src/entrypoints/pxe_creation_options.ts +14 -0
  280. package/src/entrypoints/server/index.ts +4 -2
  281. package/src/entrypoints/server/utils.ts +22 -13
  282. package/src/events/event_service.ts +69 -21
  283. package/src/events/private_event_filter_validator.ts +21 -1
  284. package/src/hooks/authorize_utility_call.ts +44 -0
  285. package/src/hooks/execution_hooks.ts +48 -0
  286. package/src/hooks/index.ts +7 -0
  287. package/src/logs/log_service.ts +162 -145
  288. package/src/messages/message_context_service.ts +62 -0
  289. package/src/notes/note_service.ts +120 -85
  290. package/src/notes_filter.ts +24 -0
  291. package/src/oracle_version.ts +20 -10
  292. package/src/private_kernel/batch_planner.ts +169 -0
  293. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  294. package/src/private_kernel/hints/index.ts +1 -1
  295. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +165 -118
  296. package/src/private_kernel/hints/test_utils.ts +318 -0
  297. package/src/private_kernel/private_kernel_execution_prover.ts +254 -89
  298. package/src/private_kernel/private_kernel_oracle.ts +42 -32
  299. package/src/pxe.ts +416 -181
  300. package/src/storage/anchor_block_store/anchor_block_store.ts +1 -1
  301. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  302. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  303. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  304. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  305. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  306. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +46 -0
  307. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +36 -0
  308. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  309. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
  310. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +16 -0
  311. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
  312. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +97 -0
  313. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  314. package/src/storage/backwards_compatibility_tests/schema_tests.ts +712 -0
  315. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  316. package/src/storage/capsule_store/capsule_service.ts +90 -0
  317. package/src/storage/capsule_store/capsule_store.ts +44 -26
  318. package/src/storage/capsule_store/index.ts +1 -0
  319. package/src/storage/contract_store/contract_store.ts +182 -104
  320. package/src/storage/metadata.ts +1 -1
  321. package/src/storage/note_store/note_store.ts +9 -5
  322. package/src/storage/open_pxe_stores.ts +49 -0
  323. package/src/storage/private_event_store/private_event_store.ts +4 -0
  324. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  325. package/src/storage/tagging_store/recipient_tagging_store.ts +5 -5
  326. package/src/storage/tagging_store/sender_tagging_store.ts +185 -138
  327. package/src/tagging/get_all_logs_by_tags.ts +87 -35
  328. package/src/tagging/index.ts +5 -4
  329. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  330. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +240 -0
  331. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +4 -4
  332. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  333. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +52 -17
  334. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +44 -14
  335. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +27 -27
  336. package/dest/contract_sync/index.d.ts +0 -23
  337. package/dest/contract_sync/index.d.ts.map +0 -1
  338. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  339. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  340. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -15
  341. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  342. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  343. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -15
  344. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  345. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -32
  346. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -143
  347. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -49
@@ -0,0 +1,585 @@
1
+ /* eslint-disable camelcase */
2
+ import { ARCHIVE_HEIGHT, NOTE_HASH_TREE_HEIGHT } from '@aztec/constants';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
+ import { FieldReader } from '@aztec/foundation/serialize';
5
+ import { toACVMField } from '@aztec/simulator/client';
6
+
7
+ import {
8
+ ARRAY,
9
+ AZTEC_ADDRESS,
10
+ BLOCK_HASH,
11
+ BLOCK_HEADER,
12
+ BLOCK_NUMBER,
13
+ BOOL,
14
+ BOUNDED_VEC,
15
+ BUFFER,
16
+ BYTE,
17
+ CALL_PRIVATE_RESULT,
18
+ CONTRACT_CLASS_LOG_INPUT,
19
+ CONTRACT_INSTANCE,
20
+ DELIVERY_MODE,
21
+ EPHEMERAL_ARRAY,
22
+ EVENT_VALIDATION_REQUEST,
23
+ FIELD,
24
+ FUNCTION_SELECTOR,
25
+ type InputSlot,
26
+ KEY_VALIDATION_REQUEST,
27
+ LOG_RETRIEVAL_REQUEST,
28
+ LOG_RETRIEVAL_RESPONSE,
29
+ MEMBERSHIP_WITNESS,
30
+ MESSAGE_CONTEXT,
31
+ MESSAGE_LOAD_ORACLE_INPUTS,
32
+ type MaybePromise,
33
+ NOTE,
34
+ NOTE_SELECTOR,
35
+ NOTE_VALIDATION_REQUEST,
36
+ NULLIFIER_MEMBERSHIP_WITNESS,
37
+ OPTION,
38
+ type OutputSlot,
39
+ PENDING_TAGGED_LOG,
40
+ POINT,
41
+ PROVIDED_SECRET,
42
+ PUBLIC_DATA_WITNESS,
43
+ PUBLIC_KEYS_AND_PARTIAL_ADDRESS,
44
+ STR,
45
+ TX_EFFECT,
46
+ TX_HASH,
47
+ type TypeMapping,
48
+ U32,
49
+ UTILITY_CONTEXT,
50
+ assertReadersConsumed,
51
+ } from './oracle_type_mappings.js';
52
+
53
+ export {
54
+ ARRAY,
55
+ AZTEC_ADDRESS,
56
+ BIGINT,
57
+ BLOCK_NUMBER,
58
+ BOOL,
59
+ BOUNDED_VEC,
60
+ BUFFER,
61
+ BYTE,
62
+ DELIVERY_MODE,
63
+ EPHEMERAL_ARRAY,
64
+ EVENT_VALIDATION_REQUEST,
65
+ FIELD,
66
+ FUNCTION_SELECTOR,
67
+ LOG_RETRIEVAL_REQUEST,
68
+ LOG_RETRIEVAL_RESPONSE,
69
+ MEMBERSHIP_WITNESS,
70
+ MESSAGE_CONTEXT,
71
+ NOTE_VALIDATION_REQUEST,
72
+ OPTION,
73
+ PENDING_TAGGED_LOG,
74
+ POINT,
75
+ PROVIDED_SECRET,
76
+ STR,
77
+ U32,
78
+ type InputSlot,
79
+ type MaybePromise,
80
+ type OutputSlot,
81
+ type TypeMapping,
82
+ } from './oracle_type_mappings.js';
83
+
84
+ export const ORACLE_REGISTRY = {
85
+ aztec_misc_assertCompatibleOracleVersion: makeEntry({
86
+ params: [
87
+ { name: 'major', type: U32 },
88
+ { name: 'minor', type: U32 },
89
+ ],
90
+ }),
91
+
92
+ aztec_misc_getRandomField: makeEntry({ returnType: FIELD }),
93
+
94
+ aztec_misc_log: makeEntry({
95
+ params: [
96
+ { name: 'level', type: U32 },
97
+ { name: 'message', type: STR },
98
+ { name: 'fieldsSize', type: U32 },
99
+ { name: 'fields', type: ARRAY(FIELD) },
100
+ ],
101
+ }),
102
+
103
+ aztec_utl_getUtilityContext: makeEntry({ returnType: UTILITY_CONTEXT }),
104
+
105
+ aztec_utl_getKeyValidationRequest: makeEntry({
106
+ params: [{ name: 'pkMHash', type: FIELD }],
107
+ returnType: KEY_VALIDATION_REQUEST,
108
+ }),
109
+
110
+ aztec_utl_getContractInstance: makeEntry({
111
+ params: [{ name: 'address', type: AZTEC_ADDRESS }],
112
+ returnType: CONTRACT_INSTANCE,
113
+ }),
114
+
115
+ aztec_utl_getNoteHashMembershipWitness: makeEntry({
116
+ params: [
117
+ { name: 'anchorBlockHash', type: BLOCK_HASH },
118
+ { name: 'noteHash', type: FIELD },
119
+ ],
120
+ returnType: MEMBERSHIP_WITNESS(NOTE_HASH_TREE_HEIGHT),
121
+ }),
122
+
123
+ aztec_utl_getBlockHashMembershipWitness: makeEntry({
124
+ params: [
125
+ { name: 'anchorBlockHash', type: BLOCK_HASH },
126
+ { name: 'blockHash', type: BLOCK_HASH },
127
+ ],
128
+ returnType: OPTION(MEMBERSHIP_WITNESS(ARCHIVE_HEIGHT)),
129
+ }),
130
+
131
+ aztec_utl_getNullifierMembershipWitness: makeEntry({
132
+ params: [
133
+ { name: 'blockHash', type: BLOCK_HASH },
134
+ { name: 'nullifier', type: FIELD },
135
+ ],
136
+ returnType: NULLIFIER_MEMBERSHIP_WITNESS,
137
+ }),
138
+
139
+ aztec_utl_getLowNullifierMembershipWitness: makeEntry({
140
+ params: [
141
+ { name: 'blockHash', type: BLOCK_HASH },
142
+ { name: 'nullifier', type: FIELD },
143
+ ],
144
+ returnType: NULLIFIER_MEMBERSHIP_WITNESS,
145
+ }),
146
+
147
+ aztec_utl_getPublicDataWitness: makeEntry({
148
+ params: [
149
+ { name: 'blockHash', type: BLOCK_HASH },
150
+ { name: 'leafSlot', type: FIELD },
151
+ ],
152
+ returnType: PUBLIC_DATA_WITNESS,
153
+ }),
154
+
155
+ aztec_utl_getBlockHeader: makeEntry({
156
+ params: [{ name: 'blockNumber', type: BLOCK_NUMBER }],
157
+ returnType: BLOCK_HEADER,
158
+ }),
159
+
160
+ aztec_utl_getAuthWitness: makeEntry({
161
+ params: [{ name: 'messageHash', type: FIELD }],
162
+ returnType: ARRAY(FIELD),
163
+ }),
164
+
165
+ aztec_utl_getPublicKeysAndPartialAddress: makeEntry({
166
+ params: [{ name: 'address', type: AZTEC_ADDRESS }],
167
+ returnType: OPTION(PUBLIC_KEYS_AND_PARTIAL_ADDRESS),
168
+ }),
169
+
170
+ aztec_utl_doesNullifierExist: makeEntry({
171
+ params: [{ name: 'innerNullifier', type: FIELD }],
172
+ returnType: BOOL,
173
+ }),
174
+
175
+ aztec_utl_getL1ToL2MembershipWitness: makeEntry({
176
+ params: [
177
+ { name: 'contractAddress', type: AZTEC_ADDRESS },
178
+ { name: 'messageHash', type: FIELD },
179
+ { name: 'secret', type: FIELD },
180
+ ],
181
+ returnType: MESSAGE_LOAD_ORACLE_INPUTS,
182
+ }),
183
+
184
+ aztec_utl_getFromPublicStorage: makeEntry({
185
+ params: [
186
+ { name: 'blockHash', type: BLOCK_HASH },
187
+ { name: 'contractAddress', type: AZTEC_ADDRESS },
188
+ { name: 'startStorageSlot', type: FIELD },
189
+ { name: 'numberOfElements', type: U32 },
190
+ ],
191
+ returnType: ARRAY(FIELD),
192
+ }),
193
+
194
+ aztec_utl_getNotes: makeEntry({
195
+ params: [
196
+ { name: 'owner', type: OPTION(AZTEC_ADDRESS) },
197
+ { name: 'storageSlot', type: FIELD },
198
+ { name: 'numSelects', type: U32 },
199
+ { name: 'selectByIndexes', type: ARRAY(U32) },
200
+ { name: 'selectByOffsets', type: ARRAY(U32) },
201
+ { name: 'selectByLengths', type: ARRAY(U32) },
202
+ { name: 'selectValues', type: ARRAY(FIELD) },
203
+ { name: 'selectComparators', type: ARRAY(U32) },
204
+ { name: 'sortByIndexes', type: ARRAY(U32) },
205
+ { name: 'sortByOffsets', type: ARRAY(U32) },
206
+ { name: 'sortByLengths', type: ARRAY(U32) },
207
+ { name: 'sortOrder', type: ARRAY(U32) },
208
+ { name: 'limit', type: U32 },
209
+ { name: 'offset', type: U32 },
210
+ { name: 'status', type: U32 },
211
+ { name: 'maxNotes', type: U32 },
212
+ { name: 'packedHintedNoteLength', type: U32 },
213
+ ],
214
+ returnType: BOUNDED_VEC(NOTE),
215
+ }),
216
+
217
+ aztec_utl_getPendingTaggedLogs: makeEntry({
218
+ params: [
219
+ { name: 'scope', type: AZTEC_ADDRESS },
220
+ { name: 'providedSecrets', type: EPHEMERAL_ARRAY(PROVIDED_SECRET) },
221
+ ],
222
+ returnType: EPHEMERAL_ARRAY(PENDING_TAGGED_LOG),
223
+ }),
224
+
225
+ aztec_utl_validateAndStoreEnqueuedNotesAndEvents: makeEntry({
226
+ params: [
227
+ { name: 'noteValidationRequests', type: EPHEMERAL_ARRAY(NOTE_VALIDATION_REQUEST) },
228
+ { name: 'eventValidationRequests', type: EPHEMERAL_ARRAY(EVENT_VALIDATION_REQUEST) },
229
+ { name: 'scope', type: AZTEC_ADDRESS },
230
+ ],
231
+ }),
232
+
233
+ aztec_utl_getLogsByTag: makeEntry({
234
+ params: [{ name: 'requests', type: EPHEMERAL_ARRAY(LOG_RETRIEVAL_REQUEST) }],
235
+ returnType: EPHEMERAL_ARRAY(EPHEMERAL_ARRAY(LOG_RETRIEVAL_RESPONSE)),
236
+ }),
237
+
238
+ aztec_utl_getMessageContextsByTxHash: makeEntry({
239
+ params: [{ name: 'requests', type: EPHEMERAL_ARRAY(FIELD) }],
240
+ returnType: EPHEMERAL_ARRAY(OPTION(MESSAGE_CONTEXT)),
241
+ }),
242
+
243
+ aztec_utl_getTxEffect: makeEntry({
244
+ params: [{ name: 'txHash', type: TX_HASH }],
245
+ returnType: OPTION(TX_EFFECT),
246
+ }),
247
+
248
+ aztec_utl_setCapsule: makeEntry({
249
+ params: [
250
+ { name: 'contractAddress', type: AZTEC_ADDRESS },
251
+ { name: 'slot', type: FIELD },
252
+ { name: 'capsule', type: ARRAY(FIELD) },
253
+ { name: 'scope', type: AZTEC_ADDRESS },
254
+ ],
255
+ }),
256
+
257
+ aztec_utl_getCapsule: makeEntry({
258
+ params: [
259
+ { name: 'contractAddress', type: AZTEC_ADDRESS },
260
+ { name: 'slot', type: FIELD },
261
+ { name: 'tSize', type: U32 },
262
+ { name: 'scope', type: AZTEC_ADDRESS },
263
+ ],
264
+ returnType: OPTION(ARRAY(FIELD)),
265
+ }),
266
+
267
+ aztec_utl_deleteCapsule: makeEntry({
268
+ params: [
269
+ { name: 'contractAddress', type: AZTEC_ADDRESS },
270
+ { name: 'slot', type: FIELD },
271
+ { name: 'scope', type: AZTEC_ADDRESS },
272
+ ],
273
+ }),
274
+
275
+ aztec_utl_copyCapsule: makeEntry({
276
+ params: [
277
+ { name: 'contractAddress', type: AZTEC_ADDRESS },
278
+ { name: 'srcSlot', type: FIELD },
279
+ { name: 'dstSlot', type: FIELD },
280
+ { name: 'numEntries', type: U32 },
281
+ { name: 'scope', type: AZTEC_ADDRESS },
282
+ ],
283
+ }),
284
+
285
+ aztec_utl_decryptAes128: makeEntry({
286
+ params: [
287
+ { name: 'ciphertext', type: BOUNDED_VEC(BYTE) },
288
+ { name: 'iv', type: BUFFER(8) },
289
+ { name: 'symKey', type: BUFFER(8) },
290
+ ],
291
+ returnType: OPTION(BOUNDED_VEC(BYTE)),
292
+ }),
293
+
294
+ aztec_utl_getSharedSecrets: makeEntry({
295
+ params: [
296
+ { name: 'address', type: AZTEC_ADDRESS },
297
+ { name: 'ephPks', type: EPHEMERAL_ARRAY(POINT) },
298
+ { name: 'contractAddress', type: AZTEC_ADDRESS },
299
+ ],
300
+ returnType: EPHEMERAL_ARRAY(FIELD),
301
+ }),
302
+
303
+ aztec_utl_setContractSyncCacheInvalid: makeEntry({
304
+ params: [
305
+ { name: 'contractAddress', type: AZTEC_ADDRESS },
306
+ { name: 'scopes', type: BOUNDED_VEC(AZTEC_ADDRESS) },
307
+ ],
308
+ }),
309
+
310
+ aztec_utl_emitOffchainEffect: makeEntry({
311
+ params: [{ name: 'data', type: ARRAY(FIELD) }],
312
+ }),
313
+
314
+ aztec_utl_callUtilityFunction: makeEntry({
315
+ params: [
316
+ { name: 'contractAddress', type: AZTEC_ADDRESS },
317
+ { name: 'functionSelector', type: FUNCTION_SELECTOR },
318
+ { name: 'args', type: ARRAY(FIELD) },
319
+ ],
320
+ returnType: ARRAY(FIELD),
321
+ }),
322
+
323
+ aztec_utl_pushEphemeral: makeEntry({
324
+ params: [
325
+ { name: 'slot', type: FIELD },
326
+ { name: 'elements', type: ARRAY(FIELD) },
327
+ ],
328
+ returnType: U32,
329
+ }),
330
+
331
+ aztec_utl_popEphemeral: makeEntry({
332
+ params: [{ name: 'slot', type: FIELD }],
333
+ returnType: ARRAY(FIELD),
334
+ }),
335
+
336
+ aztec_utl_getEphemeral: makeEntry({
337
+ params: [
338
+ { name: 'slot', type: FIELD },
339
+ { name: 'index', type: U32 },
340
+ ],
341
+ returnType: ARRAY(FIELD),
342
+ }),
343
+
344
+ aztec_utl_setEphemeral: makeEntry({
345
+ params: [
346
+ { name: 'slot', type: FIELD },
347
+ { name: 'index', type: U32 },
348
+ { name: 'elements', type: ARRAY(FIELD) },
349
+ ],
350
+ }),
351
+
352
+ aztec_utl_getEphemeralLen: makeEntry({
353
+ params: [{ name: 'slot', type: FIELD }],
354
+ returnType: U32,
355
+ }),
356
+
357
+ aztec_utl_removeEphemeral: makeEntry({
358
+ params: [
359
+ { name: 'slot', type: FIELD },
360
+ { name: 'index', type: U32 },
361
+ ],
362
+ }),
363
+
364
+ aztec_utl_clearEphemeral: makeEntry({
365
+ params: [{ name: 'slot', type: FIELD }],
366
+ }),
367
+
368
+ aztec_prv_setHashPreimage: makeEntry({
369
+ params: [
370
+ { name: 'values', type: ARRAY(FIELD) },
371
+ { name: 'hash', type: FIELD },
372
+ ],
373
+ }),
374
+
375
+ aztec_prv_getHashPreimage: makeEntry({
376
+ params: [{ name: 'returnsHash', type: FIELD }],
377
+ returnType: ARRAY(FIELD),
378
+ }),
379
+
380
+ aztec_prv_notifyCreatedNote: makeEntry({
381
+ params: [
382
+ { name: 'owner', type: AZTEC_ADDRESS },
383
+ { name: 'storageSlot', type: FIELD },
384
+ { name: 'randomness', type: FIELD },
385
+ { name: 'noteTypeId', type: NOTE_SELECTOR },
386
+ { name: 'note', type: ARRAY(FIELD) },
387
+ { name: 'noteHash', type: FIELD },
388
+ { name: 'counter', type: U32 },
389
+ ],
390
+ }),
391
+
392
+ aztec_prv_notifyNullifiedNote: makeEntry({
393
+ params: [
394
+ { name: 'innerNullifier', type: FIELD },
395
+ { name: 'noteHash', type: FIELD },
396
+ { name: 'counter', type: U32 },
397
+ ],
398
+ }),
399
+
400
+ aztec_prv_notifyCreatedNullifier: makeEntry({
401
+ params: [{ name: 'innerNullifier', type: FIELD }],
402
+ }),
403
+
404
+ aztec_prv_isNullifierPending: makeEntry({
405
+ params: [
406
+ { name: 'innerNullifier', type: FIELD },
407
+ { name: 'contractAddress', type: AZTEC_ADDRESS },
408
+ ],
409
+ returnType: BOOL,
410
+ }),
411
+
412
+ aztec_prv_notifyCreatedContractClassLog: makeEntry({
413
+ params: [
414
+ { name: 'log', type: CONTRACT_CLASS_LOG_INPUT },
415
+ { name: 'counter', type: U32 },
416
+ ],
417
+ }),
418
+
419
+ aztec_prv_callPrivateFunction: makeEntry({
420
+ params: [
421
+ { name: 'contractAddress', type: AZTEC_ADDRESS },
422
+ { name: 'functionSelector', type: FUNCTION_SELECTOR },
423
+ { name: 'argsHash', type: FIELD },
424
+ { name: 'sideEffectCounter', type: U32 },
425
+ { name: 'isStaticCall', type: BOOL },
426
+ ],
427
+ returnType: CALL_PRIVATE_RESULT,
428
+ }),
429
+
430
+ aztec_prv_assertValidPublicCalldata: makeEntry({
431
+ params: [{ name: 'calldataHash', type: FIELD }],
432
+ }),
433
+
434
+ aztec_prv_notifyRevertiblePhaseStart: makeEntry({
435
+ params: [{ name: 'minRevertibleSideEffectCounter', type: U32 }],
436
+ }),
437
+
438
+ aztec_prv_isExecutionInRevertiblePhase: makeEntry({
439
+ params: [{ name: 'sideEffectCounter', type: U32 }],
440
+ returnType: BOOL,
441
+ }),
442
+
443
+ aztec_prv_getAppTaggingSecret: makeEntry({
444
+ params: [
445
+ { name: 'sender', type: AZTEC_ADDRESS },
446
+ { name: 'recipient', type: AZTEC_ADDRESS },
447
+ ],
448
+ returnType: OPTION(FIELD),
449
+ }),
450
+
451
+ aztec_prv_getNextTaggingIndex: makeEntry({
452
+ params: [
453
+ { name: 'secret', type: FIELD },
454
+ { name: 'deliveryMode', type: DELIVERY_MODE },
455
+ ],
456
+ returnType: U32,
457
+ }),
458
+
459
+ aztec_prv_getSenderForTags: makeEntry({ returnType: OPTION(AZTEC_ADDRESS) }),
460
+ } satisfies Record<string, OracleRegistryEntry>;
461
+
462
+ /**
463
+ * Deserializes oracle inputs, calls the handler with typed params, and serializes the result.
464
+ */
465
+ export async function callHandler<K extends keyof typeof ORACLE_REGISTRY>({
466
+ oracle,
467
+ inputs,
468
+ handler,
469
+ }: {
470
+ oracle: K;
471
+ inputs: InputSlot[];
472
+ handler: (
473
+ params: ParamTypes<ReturnType<(typeof ORACLE_REGISTRY)[K]['deserializeParams']>>,
474
+ ) => MaybePromise<Parameters<(typeof ORACLE_REGISTRY)[K]['serializeReturn']>[0]>;
475
+ }): Promise<OutputSlot[]> {
476
+ const entry = ORACLE_REGISTRY[oracle] as OracleRegistryEntry;
477
+ const named = entry.deserializeParams(inputs);
478
+ const positional = named.map(p => p.value);
479
+ const result = await handler(positional as any);
480
+ return entry.serializeReturn(result);
481
+ }
482
+
483
+ // ─── Registry Infrastructure ─────────────────────────────────────────────────
484
+
485
+ /**
486
+ * A full oracle registry entry describing param and return serialization.
487
+ *
488
+ * TDeserializedParams — the array of named pairs returned by `deserializeParams`.
489
+ * TReturnValue — the typed handler return value consumed by `serializeReturn`.
490
+ */
491
+ export interface OracleRegistryEntry<
492
+ TDeserializedParams extends readonly NamedValue[] = readonly NamedValue[],
493
+ TReturnValue = any,
494
+ > {
495
+ /** Deserialize all ACVM inputs into named pairs in positional order. */
496
+ deserializeParams(inputs: InputSlot[]): TDeserializedParams;
497
+ /** Serialize a handler return value into ACVM output slots. */
498
+ serializeReturn(result: TReturnValue): OutputSlot[];
499
+ }
500
+
501
+ export function makeEntry<const TParams extends RegistryParam[] = [], TReturnValue = void>({
502
+ params,
503
+ returnType,
504
+ }: {
505
+ params?: [...TParams];
506
+ returnType?: TypeMapping<TReturnValue>;
507
+ } = {}): OracleRegistryEntry<InferDeserializedParams<TParams>, TReturnValue> {
508
+ return {
509
+ deserializeParams(inputs: InputSlot[]): InferDeserializedParams<TParams> {
510
+ const resolvedParams: RegistryParam[] = params ?? [];
511
+ // Walk the input slots left-to-right, advancing by each param's slot count.
512
+ let offset = 0;
513
+ return resolvedParams.map(param => {
514
+ if (!param.type.deserialization) {
515
+ throw new Error(`Param '${param.name}' has no deserialization defined`);
516
+ }
517
+ // Collect the slots for this param and wrap each in a FieldReader.
518
+ const slotCount = param.type.deserialization.slots;
519
+ const readers = inputs
520
+ .slice(offset, offset + slotCount)
521
+ .map(slot => new FieldReader(slot.map(hex => Fr.fromString(hex))));
522
+ offset += slotCount;
523
+ // Delegate to the TypeMapping's deserializer, assert the param's slots are fully consumed, and tag the
524
+ // result with the param name.
525
+ const value = param.type.deserialization.fn(readers);
526
+ assertReadersConsumed(readers);
527
+ return { name: param.name, value };
528
+ }) as unknown as InferDeserializedParams<TParams>;
529
+ },
530
+ serializeReturn(result: TReturnValue): OutputSlot[] {
531
+ if (returnType?.serialization === undefined) {
532
+ return [];
533
+ }
534
+ return returnType.serialization
535
+ .fn(result)
536
+ .map(slot => (Array.isArray(slot) ? slot.map(toACVMField) : toACVMField(slot)));
537
+ },
538
+ };
539
+ }
540
+
541
+ /** A named oracle parameter with its TypeMapping. */
542
+ interface RegistryParam<TName extends string = string, T = any> {
543
+ name: TName;
544
+ type: TypeMapping<T>;
545
+ }
546
+
547
+ /** One named param entry from a deserializeParams result. */
548
+ export type NamedValue<TName extends string = string, TValue = any> = { readonly name: TName; readonly value: TValue };
549
+
550
+ /**
551
+ * Extracts the positional type tuple from a {@link OracleRegistryEntry.deserializeParams} result,
552
+ * stripping names to produce the handler's argument types.
553
+ *
554
+ * @example `ParamTypes<[NamedValue<'addr', AztecAddress>, NamedValue<'slot', Fr>]>` → `[AztecAddress, Fr]`
555
+ */
556
+ export type ParamTypes<T extends readonly NamedValue[]> = {
557
+ [K in keyof T]: T[K] extends NamedValue<string, infer V> ? V : never;
558
+ };
559
+
560
+ /**
561
+ * Maps a registry entry's `params` declaration to the return type of
562
+ * {@link OracleRegistryEntry.deserializeParams}: each `RegistryParam<Name, Type>` becomes a
563
+ * `NamedValue<Name, Type>` at the same position.
564
+ *
565
+ * @example `InferDeserializedParams<[RegistryParam<'addr', AztecAddress>, RegistryParam<'slot', Fr>]>`
566
+ * → `[NamedValue<'addr', AztecAddress>, NamedValue<'slot', Fr>]`
567
+ */
568
+ type InferDeserializedParams<T extends RegistryParam[]> = {
569
+ [K in keyof T]: T[K] extends RegistryParam<infer N, infer V> ? NamedValue<N, V> : never;
570
+ };
571
+
572
+ // ─── Derived Handler Interfaces ─────────────────────────────────────────────
573
+
574
+ /** Strips the `aztec_{scope}_` prefix from an oracle key to get the handler method name. */
575
+ export type StripOraclePrefix<K extends string> = K extends `aztec_${string}_${infer M}` ? M : never;
576
+
577
+ /** Derives the handler function signature from a registry entry's deserialization/serialization types. */
578
+ type HandlerFn<E extends OracleRegistryEntry> = (
579
+ ...args: ParamTypes<ReturnType<E['deserializeParams']>>
580
+ ) => MaybePromise<Parameters<E['serializeReturn']>[0]>;
581
+
582
+ /** Collects all oracle handler methods for a given name prefix into a single object type. */
583
+ export type HandlersForPrefix<R extends Record<string, OracleRegistryEntry>, P extends string> = {
584
+ [K in keyof R as K extends `aztec_${P}_${string}` ? StripOraclePrefix<K & string> : never]: HandlerFn<R[K]>;
585
+ };