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

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 (397) hide show
  1. package/dest/bin/check_oracle_version.js +8 -23
  2. package/dest/bin/index.d.ts +2 -2
  3. package/dest/bin/index.d.ts.map +1 -1
  4. package/dest/bin/index.js +1 -1
  5. package/dest/bin/oracle_version_helpers.d.ts +16 -8
  6. package/dest/bin/oracle_version_helpers.d.ts.map +1 -1
  7. package/dest/bin/oracle_version_helpers.js +22 -69
  8. package/dest/block_synchronizer/block_stream_source.d.ts +5 -5
  9. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -1
  10. package/dest/block_synchronizer/block_stream_source.js +4 -29
  11. package/dest/block_synchronizer/block_synchronizer.d.ts +18 -14
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +54 -18
  14. package/dest/config/index.d.ts +2 -1
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +1 -0
  17. package/dest/contract/contract_class_service.d.ts +31 -0
  18. package/dest/contract/contract_class_service.d.ts.map +1 -0
  19. package/dest/contract/contract_class_service.js +68 -0
  20. package/dest/contract/contract_sync_service.d.ts +48 -0
  21. package/dest/contract/contract_sync_service.d.ts.map +1 -0
  22. package/dest/{contract_sync → contract}/contract_sync_service.js +26 -45
  23. package/dest/contract/helpers.d.ts +7 -0
  24. package/dest/contract/helpers.d.ts.map +1 -0
  25. package/dest/contract/helpers.js +20 -0
  26. package/dest/contract/skip_sync_contracts.d.ts +11 -0
  27. package/dest/contract/skip_sync_contracts.d.ts.map +1 -0
  28. package/dest/contract/skip_sync_contracts.js +18 -0
  29. package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
  30. package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
  31. package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
  32. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts +39 -0
  33. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts.map +1 -0
  34. package/dest/contract_function_simulator/aztec_node_read_cache.js +60 -0
  35. package/dest/contract_function_simulator/contract_function_simulator.d.ts +19 -18
  36. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/contract_function_simulator.js +63 -32
  38. package/dest/contract_function_simulator/execution_note_cache.d.ts +3 -9
  39. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/execution_note_cache.js +8 -28
  41. package/dest/contract_function_simulator/index.d.ts +19 -10
  42. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  43. package/dest/contract_function_simulator/index.js +6 -9
  44. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +8 -27
  45. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -1
  46. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +8 -23
  47. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  48. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  49. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  50. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  51. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  52. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  53. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +1 -1
  54. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  55. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  56. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  57. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  58. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  59. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  60. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +11 -12
  61. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  62. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +6 -49
  63. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +10 -8
  64. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  65. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -60
  66. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +2 -2
  67. package/dest/contract_function_simulator/noir-structs/option.d.ts +9 -11
  68. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -1
  69. package/dest/contract_function_simulator/noir-structs/option.js +18 -13
  70. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  71. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  72. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  73. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  74. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  75. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  76. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +6 -9
  77. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -1
  78. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -24
  79. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  80. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  81. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  82. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +19 -0
  83. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  84. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
  85. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
  86. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  87. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  88. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  89. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  90. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  91. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  92. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  93. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  94. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  95. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  96. package/dest/contract_function_simulator/oracle/index.js +1 -1
  97. package/dest/contract_function_simulator/oracle/interfaces.d.ts +2 -3
  98. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  99. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  100. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  101. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  102. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  103. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  104. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  105. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +43 -31
  106. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -1
  107. package/dest/contract_function_simulator/oracle/oracle_registry.js +259 -29
  108. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +180 -45
  109. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -1
  110. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1024 -341
  111. package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
  112. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  113. package/dest/contract_function_simulator/oracle/private_execution.js +2 -3
  114. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +21 -8
  115. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  116. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +132 -22
  117. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +77 -34
  118. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  119. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +247 -106
  120. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  121. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  122. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  123. package/dest/debug/pxe_debug_utils.d.ts +2 -2
  124. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  125. package/dest/entrypoints/client/bundle/index.d.ts +2 -1
  126. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  127. package/dest/entrypoints/client/bundle/index.js +1 -0
  128. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  129. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  130. package/dest/entrypoints/client/bundle/utils.js +17 -6
  131. package/dest/entrypoints/client/lazy/index.d.ts +2 -1
  132. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  133. package/dest/entrypoints/client/lazy/index.js +1 -0
  134. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  135. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  136. package/dest/entrypoints/client/lazy/utils.js +17 -6
  137. package/dest/entrypoints/client/store.d.ts +14 -0
  138. package/dest/entrypoints/client/store.d.ts.map +1 -0
  139. package/dest/entrypoints/client/store.js +42 -0
  140. package/dest/entrypoints/pxe_creation_options.d.ts +9 -3
  141. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  142. package/dest/entrypoints/server/index.d.ts +6 -3
  143. package/dest/entrypoints/server/index.d.ts.map +1 -1
  144. package/dest/entrypoints/server/index.js +4 -2
  145. package/dest/entrypoints/server/store.d.ts +18 -0
  146. package/dest/entrypoints/server/store.d.ts.map +1 -0
  147. package/dest/entrypoints/server/store.js +28 -0
  148. package/dest/entrypoints/server/utils.d.ts +1 -1
  149. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  150. package/dest/entrypoints/server/utils.js +16 -4
  151. package/dest/error_enriching.d.ts +5 -3
  152. package/dest/error_enriching.d.ts.map +1 -1
  153. package/dest/error_enriching.js +13 -11
  154. package/dest/hooks/execution_hooks.d.ts +31 -11
  155. package/dest/hooks/execution_hooks.d.ts.map +1 -1
  156. package/dest/hooks/execution_hooks.js +3 -3
  157. package/dest/hooks/index.d.ts +4 -3
  158. package/dest/hooks/index.d.ts.map +1 -1
  159. package/dest/hooks/index.js +1 -0
  160. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  161. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  162. package/dest/hooks/resolve_custom_request.js +3 -0
  163. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  164. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  165. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  166. package/dest/logs/log_service.d.ts +8 -6
  167. package/dest/logs/log_service.d.ts.map +1 -1
  168. package/dest/logs/log_service.js +88 -28
  169. package/dest/messages/tx_resolver_service.d.ts +17 -0
  170. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  171. package/dest/messages/{message_context_service.js → tx_resolver_service.js} +13 -8
  172. package/dest/notes/note_service.d.ts +1 -1
  173. package/dest/notes/note_service.js +1 -1
  174. package/dest/oracle_version.d.ts +3 -3
  175. package/dest/oracle_version.js +5 -5
  176. package/dest/private_kernel/batch_planner.d.ts +1 -1
  177. package/dest/private_kernel/batch_planner.d.ts.map +1 -1
  178. package/dest/private_kernel/batch_planner.js +1 -1
  179. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
  180. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  181. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +6 -2
  182. package/dest/private_kernel/hints/test_utils.js +1 -1
  183. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  184. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  185. package/dest/private_kernel/private_kernel_execution_prover.js +61 -40
  186. package/dest/private_kernel/private_kernel_oracle.d.ts +4 -2
  187. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  188. package/dest/private_kernel/private_kernel_oracle.js +17 -5
  189. package/dest/pxe.d.ts +114 -48
  190. package/dest/pxe.d.ts.map +1 -1
  191. package/dest/pxe.js +225 -139
  192. package/dest/storage/allowed_scopes.d.ts +6 -0
  193. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  194. package/dest/storage/allowed_scopes.js +7 -0
  195. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -6
  196. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  197. package/dest/storage/anchor_block_store/anchor_block_store.js +8 -6
  198. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +1 -1
  199. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -1
  200. package/dest/storage/backwards_compatibility_tests/schema_tests.js +129 -49
  201. package/dest/storage/capsule_store/capsule_service.d.ts +1 -1
  202. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -1
  203. package/dest/storage/capsule_store/capsule_service.js +6 -9
  204. package/dest/storage/contract_store/contract_store.d.ts +27 -24
  205. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  206. package/dest/storage/contract_store/contract_store.js +64 -75
  207. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  208. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  209. package/dest/storage/fact_store/fact_service.js +45 -0
  210. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  211. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  212. package/dest/storage/fact_store/fact_store.js +408 -0
  213. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  214. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  215. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  216. package/dest/storage/fact_store/index.d.ts +6 -0
  217. package/dest/storage/fact_store/index.d.ts.map +1 -0
  218. package/dest/storage/fact_store/index.js +4 -0
  219. package/dest/storage/fact_store/origin_state.d.ts +59 -0
  220. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  221. package/dest/storage/fact_store/origin_state.js +60 -0
  222. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  223. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  224. package/dest/storage/fact_store/stored_fact.js +64 -0
  225. package/dest/storage/index.d.ts +3 -2
  226. package/dest/storage/index.d.ts.map +1 -1
  227. package/dest/storage/index.js +2 -1
  228. package/dest/storage/metadata.d.ts +2 -2
  229. package/dest/storage/metadata.d.ts.map +1 -1
  230. package/dest/storage/metadata.js +1 -1
  231. package/dest/storage/note_store/note_store.d.ts +42 -33
  232. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  233. package/dest/storage/note_store/note_store.js +197 -168
  234. package/dest/storage/note_store/stored_note.d.ts +3 -8
  235. package/dest/storage/note_store/stored_note.d.ts.map +1 -1
  236. package/dest/storage/note_store/stored_note.js +4 -20
  237. package/dest/storage/open_pxe_stores.d.ts +5 -3
  238. package/dest/storage/open_pxe_stores.d.ts.map +1 -1
  239. package/dest/storage/open_pxe_stores.js +5 -3
  240. package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
  241. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  242. package/dest/storage/private_event_store/private_event_store.js +40 -43
  243. package/dest/storage/store_identity.d.ts +35 -0
  244. package/dest/storage/store_identity.d.ts.map +1 -0
  245. package/dest/storage/store_identity.js +44 -0
  246. package/dest/storage/tagging_store/index.d.ts +2 -2
  247. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  248. package/dest/storage/tagging_store/index.js +1 -1
  249. package/dest/storage/tagging_store/sender_tagging_store.d.ts +19 -3
  250. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  251. package/dest/storage/tagging_store/sender_tagging_store.js +48 -11
  252. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  253. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  254. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  255. package/dest/tagging/constants.d.ts +3 -2
  256. package/dest/tagging/constants.d.ts.map +1 -1
  257. package/dest/tagging/constants.js +28 -10
  258. package/dest/tagging/index.d.ts +2 -2
  259. package/dest/tagging/index.d.ts.map +1 -1
  260. package/dest/tagging/index.js +1 -1
  261. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +26 -8
  262. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -1
  263. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +95 -20
  264. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +1 -1
  265. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +1 -1
  266. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  267. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +6 -2
  268. package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
  269. package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
  270. package/dest/tagging/testing/tag_query_test_utils.js +10 -0
  271. package/package.json +17 -17
  272. package/src/bin/check_oracle_version.ts +8 -24
  273. package/src/bin/index.ts +1 -1
  274. package/src/bin/oracle_version_helpers.ts +23 -90
  275. package/src/block_synchronizer/block_stream_source.ts +6 -45
  276. package/src/block_synchronizer/block_synchronizer.ts +70 -29
  277. package/src/config/index.ts +1 -0
  278. package/src/contract/contract_class_service.ts +83 -0
  279. package/src/{contract_sync → contract}/contract_sync_service.ts +37 -50
  280. package/src/contract/helpers.ts +35 -0
  281. package/src/contract/skip_sync_contracts.ts +23 -0
  282. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  283. package/src/contract_function_simulator/aztec_node_read_cache.ts +89 -0
  284. package/src/contract_function_simulator/contract_function_simulator.ts +96 -42
  285. package/src/contract_function_simulator/execution_note_cache.ts +7 -28
  286. package/src/contract_function_simulator/index.ts +48 -13
  287. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +12 -24
  288. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  289. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  290. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
  291. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  292. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  293. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +20 -46
  294. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +13 -60
  295. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +2 -2
  296. package/src/contract_function_simulator/noir-structs/option.ts +17 -11
  297. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  298. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  299. package/src/contract_function_simulator/noir-structs/provided_secret.ts +4 -26
  300. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  301. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
  302. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
  303. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  304. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  305. package/src/contract_function_simulator/oracle/index.ts +1 -15
  306. package/src/contract_function_simulator/oracle/interfaces.ts +1 -2
  307. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  308. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  309. package/src/contract_function_simulator/oracle/oracle_registry.ts +172 -47
  310. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +814 -315
  311. package/src/contract_function_simulator/oracle/private_execution.ts +2 -3
  312. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +167 -30
  313. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +399 -135
  314. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  315. package/src/debug/pxe_debug_utils.ts +1 -1
  316. package/src/entrypoints/client/bundle/index.ts +1 -0
  317. package/src/entrypoints/client/bundle/utils.ts +24 -5
  318. package/src/entrypoints/client/lazy/index.ts +1 -0
  319. package/src/entrypoints/client/lazy/utils.ts +24 -5
  320. package/src/entrypoints/client/store.ts +54 -0
  321. package/src/entrypoints/pxe_creation_options.ts +8 -2
  322. package/src/entrypoints/server/index.ts +6 -2
  323. package/src/entrypoints/server/store.ts +47 -0
  324. package/src/entrypoints/server/utils.ts +31 -9
  325. package/src/error_enriching.ts +27 -11
  326. package/src/hooks/execution_hooks.ts +32 -12
  327. package/src/hooks/index.ts +8 -2
  328. package/src/hooks/resolve_custom_request.ts +24 -0
  329. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  330. package/src/logs/log_service.ts +100 -37
  331. package/src/messages/{message_context_service.ts → tx_resolver_service.ts} +16 -9
  332. package/src/notes/note_service.ts +1 -1
  333. package/src/oracle_version.ts +5 -5
  334. package/src/private_kernel/batch_planner.ts +0 -1
  335. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +11 -1
  336. package/src/private_kernel/hints/test_utils.ts +1 -1
  337. package/src/private_kernel/private_kernel_execution_prover.ts +112 -56
  338. package/src/private_kernel/private_kernel_oracle.ts +23 -4
  339. package/src/pxe.ts +328 -159
  340. package/src/storage/allowed_scopes.ts +14 -0
  341. package/src/storage/anchor_block_store/anchor_block_store.ts +8 -6
  342. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +6 -6
  343. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +1 -1
  344. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  345. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +12 -12
  346. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +9 -15
  347. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +24 -4
  348. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +11 -3
  349. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +12 -4
  350. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  351. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +29 -9
  352. package/src/storage/backwards_compatibility_tests/schema_tests.ts +141 -50
  353. package/src/storage/capsule_store/capsule_service.ts +8 -13
  354. package/src/storage/contract_store/contract_store.ts +86 -93
  355. package/src/storage/fact_store/fact_service.ts +69 -0
  356. package/src/storage/fact_store/fact_store.ts +487 -0
  357. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  358. package/src/storage/fact_store/index.ts +15 -0
  359. package/src/storage/fact_store/origin_state.ts +84 -0
  360. package/src/storage/fact_store/stored_fact.ts +80 -0
  361. package/src/storage/index.ts +2 -1
  362. package/src/storage/metadata.ts +1 -1
  363. package/src/storage/note_store/note_store.ts +226 -187
  364. package/src/storage/note_store/stored_note.ts +5 -27
  365. package/src/storage/open_pxe_stores.ts +6 -3
  366. package/src/storage/private_event_store/private_event_store.ts +49 -55
  367. package/src/storage/store_identity.ts +72 -0
  368. package/src/storage/tagging_store/index.ts +1 -1
  369. package/src/storage/tagging_store/sender_tagging_store.ts +62 -15
  370. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  371. package/src/tagging/constants.ts +30 -10
  372. package/src/tagging/index.ts +1 -1
  373. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +148 -30
  374. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +1 -1
  375. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +6 -2
  376. package/src/tagging/testing/tag_query_test_utils.ts +11 -0
  377. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -89
  378. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  379. package/dest/contract_function_simulator/oracle/oracle.js +0 -552
  380. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  381. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  382. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -51
  383. package/dest/contract_sync/contract_sync_service.d.ts +0 -42
  384. package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
  385. package/dest/contract_sync/helpers.d.ts +0 -27
  386. package/dest/contract_sync/helpers.d.ts.map +0 -1
  387. package/dest/contract_sync/helpers.js +0 -53
  388. package/dest/messages/message_context_service.d.ts +0 -17
  389. package/dest/messages/message_context_service.d.ts.map +0 -1
  390. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  391. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  392. package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
  393. package/src/contract_function_simulator/oracle/oracle.ts +0 -711
  394. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -60
  395. package/src/contract_sync/helpers.ts +0 -86
  396. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +0 -16
  397. package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
@@ -1,9 +1,4 @@
1
- /**
2
- * TypeScript counterpart of Noir's `BoundedVec<T, MaxLen>`.
3
- *
4
- * Carries the actual `data` plus wire-format metadata (`maxLength`, `elementSize`) so the ACVM
5
- * serializer can pad the storage slot to exactly `maxLength * elementSize` fields.
6
- */
1
+ /** TypeScript counterpart of Noir's `BoundedVec<T, MaxLen>`. */
7
2
  export class BoundedVec<T> {
8
3
  private constructor(
9
4
  public readonly data: T[],
@@ -15,16 +10,11 @@ export class BoundedVec<T> {
15
10
  * Construct a BoundedVec with data.
16
11
  *
17
12
  * @param data - Actual elements. Length must be `<= maxLength`.
18
- * @param maxLength - Maximum capacity declared at the Noir call site.
19
- * The storage slot is padded to this many elements.
20
- * @param elementSize - Number of Fr fields each element contributes when serialized.
21
- * `1` for scalar elements (u8, Field) this is the default.
22
- * `> 1` for compound elements (e.g. a packed note that spans multiple fields).
23
- *
24
- * @example A bounded vec of bytes (elementSize defaults to 1):
25
- * ```ts
26
- * BoundedVec.from({ data: plaintext, maxLength: ciphertext.maxLength })
27
- * ```
13
+ * @param maxLength - Maximum capacity declared at the Noir call site. The storage slot is padded to this many
14
+ * elements.
15
+ * @param elementSize - Number of Fr fields each element contributes when serialized. Only consulted for
16
+ * variable-width elements whose width isn't statically known from their shape (e.g. a packed note spanning
17
+ * `packedHintedNoteLength` fields); fixed-width elements derive it from the shape, so it can be omitted.
28
18
  *
29
19
  * @example A bounded vec of packed notes, each spanning `packedHintedNoteLength` fields:
30
20
  * ```ts
@@ -43,13 +33,11 @@ export class BoundedVec<T> {
43
33
  return new BoundedVec<T>(data, maxLength, elementSize);
44
34
  }
45
35
 
46
- /**
47
- * Construct an empty BoundedVec, typically used as a shape template for `Option.empty(...)`.
48
- *
49
- * @param maxLength - Maximum capacity declared at the Noir call site.
50
- * @param elementSize - Number of Fr fields each element contributes when serialized (default 1).
51
- */
52
- static empty<T>({ maxLength, elementSize = 1 }: { maxLength: number; elementSize?: number }): BoundedVec<T> {
53
- return new BoundedVec<T>([], maxLength, elementSize);
36
+ equals(other: BoundedVec<T>, innerEquals: (a: T, b: T) => boolean): boolean {
37
+ return (
38
+ this.maxLength === other.maxLength &&
39
+ this.data.length === other.data.length &&
40
+ this.data.every((value, i) => innerEquals(value, other.data[i]))
41
+ );
54
42
  }
55
43
  }
@@ -0,0 +1,9 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+
4
+ /** Wire form of a contract class log. */
5
+ export type ContractClassLogData = {
6
+ contractAddress: AztecAddress;
7
+ fields: Fr[];
8
+ emittedLength: number;
9
+ };
@@ -0,0 +1,4 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+
3
+ /** Wire form of a Grumpkin point crossing the oracle boundary: Noir's `EmbeddedCurvePoint` serializes to `[x, y]`. */
4
+ export type EmbeddedCurvePoint = { x: Fr; y: Fr };
@@ -21,7 +21,7 @@ export class EventValidationRequest {
21
21
  static fromFields(fields: Fr[] | FieldReader): EventValidationRequest {
22
22
  const reader = FieldReader.asReader(fields);
23
23
 
24
- const contractAddress = AztecAddress.fromField(reader.readField());
24
+ const contractAddress = AztecAddress.fromFieldUnsafe(reader.readField());
25
25
  const eventTypeId = EventSelector.fromField(reader.readField());
26
26
 
27
27
  const randomness = reader.readField();
@@ -0,0 +1,13 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+
3
+ import type { RetractableFactOrigin } from '../../storage/fact_store/index.js';
4
+ import type { EphemeralArray } from './ephemeral_array.js';
5
+ import type { Option } from './option.js';
6
+
7
+ /**
8
+ * A single fact returned within a fact collection by the fact store oracles.
9
+ *
10
+ * A TS version of the `Fact` struct in `facts/mod.nr`. `originBlock` is `Some` for a retractable fact (carrying its
11
+ * origin block's current chain state) and `None` for a non-retractable one.
12
+ */
13
+ export type Fact = { factTypeId: Fr; payload: EphemeralArray<Fr>; originBlock: Option<RetractableFactOrigin> };
@@ -0,0 +1,64 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+
4
+ import type { FactWithOriginState, RetractableFactOrigin } from '../../storage/fact_store/index.js';
5
+ import { OriginBlockState } from '../../storage/fact_store/index.js';
6
+ import type { EphemeralArrayService } from '../ephemeral_array_service.js';
7
+ import { EphemeralArray } from './ephemeral_array.js';
8
+ import type { Fact } from './fact.js';
9
+ import { Option } from './option.js';
10
+
11
+ /**
12
+ * A fact collection.
13
+ */
14
+ export type FactCollection = {
15
+ contractAddress: AztecAddress;
16
+ scope: AztecAddress;
17
+ factCollectionTypeId: Fr;
18
+ factCollectionId: Fr;
19
+ facts: EphemeralArray<Fact>;
20
+ };
21
+
22
+ /**
23
+ * Builds the Noir-facing `FactCollection` from stored facts.
24
+ */
25
+ export function toNoirFactCollection(
26
+ service: EphemeralArrayService,
27
+ contractAddress: AztecAddress,
28
+ scope: AztecAddress,
29
+ factCollectionTypeId: Fr,
30
+ factCollectionId: Fr,
31
+ facts: FactWithOriginState[],
32
+ ): FactCollection {
33
+ return {
34
+ contractAddress,
35
+ scope,
36
+ factCollectionTypeId,
37
+ factCollectionId,
38
+ facts: EphemeralArray.fromValues(
39
+ service,
40
+ facts.map(
41
+ (fact: FactWithOriginState): Fact => ({
42
+ factTypeId: fact.factTypeId,
43
+ payload: EphemeralArray.fromValues(service, fact.payload),
44
+ originBlock: fact.originBlock
45
+ ? Option.some(fact.originBlock)
46
+ : Option.none<RetractableFactOrigin>({
47
+ blockNumber: 0,
48
+ blockHash: Fr.ZERO,
49
+ blockState: OriginBlockState.Pending,
50
+ }),
51
+ }),
52
+ ),
53
+ ),
54
+ };
55
+ }
56
+
57
+ /**
58
+ * A zeroed `FactCollection` used only as a serialization shape template for the `None` case of
59
+ * `Option<FactCollection>`. Noir's `Option<T>` is fixed-width on the wire, so `None` must emit the same number of
60
+ * (zeroed) field slots as `Some`.
61
+ **/
62
+ export function emptyFactCollection(service: EphemeralArrayService): FactCollection {
63
+ return toNoirFactCollection(service, AztecAddress.ZERO, AztecAddress.ZERO, Fr.ZERO, Fr.ZERO, []);
64
+ }
@@ -1,8 +1,9 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
- import { FieldReader } from '@aztec/foundation/serialize';
4
- import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
- import { Tag } from '@aztec/stdlib/logs';
3
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import type { Tag } from '@aztec/stdlib/logs';
5
+
6
+ import type { Option } from './option.js';
6
7
 
7
8
  /** Discriminant for which log source to query. */
8
9
  export enum LogSource {
@@ -15,47 +16,20 @@ export enum LogSource {
15
16
  * Intermediate struct used to perform batch log retrieval by PXE. The `utilityBulkRetrieveLogs` oracle expects values of this
16
17
  * type to be stored in a `EphemeralArray`.
17
18
  */
18
- export class LogRetrievalRequest {
19
- constructor(
20
- public contractAddress: AztecAddress,
21
- public tag: Tag,
22
- public source: LogSource = LogSource.PUBLIC_AND_PRIVATE,
23
- public fromBlock?: BlockNumber,
24
- public toBlock?: BlockNumber,
25
- ) {}
26
-
27
- toFields(): Fr[] {
28
- return [
29
- this.contractAddress.toField(),
30
- this.tag.value,
31
- new Fr(this.source),
32
- new Fr(this.fromBlock !== undefined ? 1 : 0),
33
- new Fr(this.fromBlock ?? 0),
34
- new Fr(this.toBlock !== undefined ? 1 : 0),
35
- new Fr(this.toBlock ?? 0),
36
- ];
37
- }
38
-
39
- static fromFields(fields: Fr[] | FieldReader): LogRetrievalRequest {
40
- const reader = FieldReader.asReader(fields);
41
-
42
- const contractAddress = AztecAddress.fromField(reader.readField());
43
- const tag = new Tag(reader.readField());
44
- const sourceNum = reader.readField().toNumber();
45
- if (!(sourceNum in LogSource)) {
46
- const validNames = Object.keys(LogSource).filter(k => isNaN(Number(k)));
47
- throw new Error(`Invalid LogSource value ${sourceNum}, expected one of ${validNames.join(', ')}`);
48
- }
49
- const source = sourceNum as LogSource;
50
-
51
- const fromBlockIsSome = reader.readBoolean();
52
- const fromBlockValue = reader.readField();
53
- const fromBlock = fromBlockIsSome ? BlockNumber(fromBlockValue.toNumber()) : undefined;
54
-
55
- const toBlockIsSome = reader.readBoolean();
56
- const toBlockValue = reader.readField();
57
- const toBlock = toBlockIsSome ? BlockNumber(toBlockValue.toNumber()) : undefined;
58
-
59
- return new LogRetrievalRequest(contractAddress, tag, source, fromBlock, toBlock);
19
+ export type LogRetrievalRequest = {
20
+ contractAddress: AztecAddress;
21
+ tag: Tag;
22
+ source: LogSource;
23
+ fromBlock: Option<BlockNumber>;
24
+ toBlock: Option<BlockNumber>;
25
+ };
26
+
27
+ /** Parses a `LogSource` from its wire field, throwing on an out-of-range value. */
28
+ export function logSourceFromField(field: Fr): LogSource {
29
+ const sourceNum = field.toNumber();
30
+ if (!(sourceNum in LogSource)) {
31
+ const validNames = Object.keys(LogSource).filter(k => isNaN(Number(k)));
32
+ throw new Error(`Invalid LogSource value ${sourceNum}, expected one of ${validNames.join(', ')}`);
60
33
  }
34
+ return sourceNum as LogSource;
61
35
  }
@@ -1,66 +1,19 @@
1
- import { MAX_NOTE_HASHES_PER_TX, PRIVATE_LOG_CIPHERTEXT_LEN } from '@aztec/constants';
2
- import { range } from '@aztec/foundation/array';
3
- import { Fr } from '@aztec/foundation/curves/bn254';
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import type { Fr } from '@aztec/foundation/curves/bn254';
3
+ import type { BlockHash } from '@aztec/stdlib/block';
4
4
  import type { TxHash } from '@aztec/stdlib/tx';
5
-
6
- const MAX_LOG_CONTENT_LEN = PRIVATE_LOG_CIPHERTEXT_LEN;
5
+ import type { UInt64 } from '@aztec/stdlib/types';
7
6
 
8
7
  /**
9
8
  * Intermediate struct used to perform batch log retrieval by PXE. The `utilityBulkRetrieveLogs` oracle stores values of this
10
9
  * type in a `EphemeralArray`.
11
10
  */
12
- export class LogRetrievalResponse {
13
- constructor(
14
- public logPayload: Fr[],
15
- public txHash: TxHash,
16
- public uniqueNoteHashesInTx: Fr[],
17
- public firstNullifierInTx: Fr,
18
- ) {}
19
-
20
- toFields(): Fr[] {
21
- return [
22
- // We need to trim the payload since public logs can be larger than MAX_LOG_CONTENT_LEN.
23
- // This is currently not a problem since this class is only used with public logs for note completion.
24
- ...serializeBoundedVec(this.logPayload.slice(0, MAX_LOG_CONTENT_LEN), MAX_LOG_CONTENT_LEN),
25
- this.txHash.hash,
26
- ...serializeBoundedVec(this.uniqueNoteHashesInTx, MAX_NOTE_HASHES_PER_TX),
27
- this.firstNullifierInTx,
28
- ];
29
- }
30
-
31
- static toEmptyFields(): Fr[] {
32
- const serializationLen =
33
- MAX_LOG_CONTENT_LEN +
34
- 1 /* logPayload BVec */ +
35
- 1 /* txHash */ +
36
- MAX_NOTE_HASHES_PER_TX +
37
- 1 /* uniqueNoteHashesInTx BVec */ +
38
- 1; /* firstNullifierInTx */
39
- return range(serializationLen).map(_ => Fr.zero());
40
- }
41
-
42
- static toSerializedOption(response: LogRetrievalResponse | null): Fr[] {
43
- if (response) {
44
- return [new Fr(1), ...response.toFields()];
45
- } else {
46
- return [new Fr(0), ...LogRetrievalResponse.toEmptyFields()];
47
- }
48
- }
49
- }
50
-
51
- /**
52
- * Helper function to serialize a bounded vector according to Noir's BoundedVec format
53
- * @param values - The values to serialize
54
- * @param maxLength - The maximum length of the bounded vector
55
- * @returns The serialized bounded vector as Fr[]
56
- */
57
- function serializeBoundedVec(values: Fr[], maxLength: number): Fr[] {
58
- if (values.length > maxLength) {
59
- throw new Error(`Attempted to serialize ${values} values into a BoundedVec with max length ${maxLength}`);
60
- }
61
-
62
- const lengthDiff = maxLength - values.length;
63
- const zeroPaddingArray = Array(lengthDiff).fill(Fr.ZERO);
64
- const storage = values.concat(zeroPaddingArray);
65
- return [...storage, new Fr(values.length)];
66
- }
11
+ export type LogRetrievalResponse = {
12
+ logPayload: Fr[];
13
+ txHash: TxHash;
14
+ uniqueNoteHashesInTx: Fr[];
15
+ firstNullifierInTx: Fr;
16
+ blockNumber: BlockNumber;
17
+ blockTimestamp: UInt64;
18
+ blockHash: BlockHash;
19
+ };
@@ -23,8 +23,8 @@ export class NoteValidationRequest {
23
23
  static fromFields(fields: Fr[] | FieldReader): NoteValidationRequest {
24
24
  const reader = FieldReader.asReader(fields);
25
25
 
26
- const contractAddress = AztecAddress.fromField(reader.readField());
27
- const owner = AztecAddress.fromField(reader.readField());
26
+ const contractAddress = AztecAddress.fromFieldUnsafe(reader.readField());
27
+ const owner = AztecAddress.fromFieldUnsafe(reader.readField());
28
28
  const storageSlot = reader.readField();
29
29
  const randomness = reader.readField();
30
30
  const noteNonce = reader.readField();
@@ -8,7 +8,9 @@
8
8
  export class Option<T> {
9
9
  private constructor(
10
10
  public readonly value: T | undefined,
11
- public readonly template: T | undefined,
11
+ // `unknown` (not the descriptor shape) keeps this generic Option decoupled from the serialization layer's
12
+ // `{ length }`/`{ maxLength }` size descriptors; only the None-serialization path inspects it.
13
+ public readonly size: unknown,
12
14
  ) {}
13
15
 
14
16
  /**
@@ -26,25 +28,22 @@ export class Option<T> {
26
28
  /**
27
29
  * Construct an absent Option.
28
30
  *
29
- * When serialized back to ACVM, the `None` case must produce the same number of fields as `Some`.
30
- * For types whose wire size varies per call site (`BoundedVec`, `FixedArray`), pass a `template` so the
31
- * serializer knows how many zero fields to emit. Omit the template when the Option will not be
32
- * re-serialized (e.g. deserialized input params).
33
- *
34
- * @param template - A representative empty `T` whose serialization determines the zero-filled wire format.
31
+ * When serialized back to ACVM, the `None` case must produce the same number of fields as `Some`. For an inner type whose
32
+ * wire size varies per call site (`BoundedVec`, an array), pass a `size` descriptor so the inner type's shape can
33
+ * resolve how many zero fields to emit; fixed-size inners take no argument.
35
34
  *
36
35
  * @example None for a fixed-size type:
37
36
  * ```ts
38
- * return Option.none(AztecAddress.ZERO);
37
+ * return Option.none();
39
38
  * ```
40
39
  *
41
40
  * @example None for a dynamic-size type:
42
41
  * ```ts
43
- * return Option.none(BoundedVec.empty<number>({ maxLength: ciphertext.maxLength }));
42
+ * return Option.none({ maxLength: ciphertext.maxLength });
44
43
  * ```
45
44
  */
46
- static none<T>(template?: T): Option<T> {
47
- return new Option<T>(undefined, template);
45
+ static none<T>(size?: unknown): Option<T> {
46
+ return new Option<T>(undefined, size);
48
47
  }
49
48
 
50
49
  /**
@@ -66,4 +65,11 @@ export class Option<T> {
66
65
  isNone(): this is Option<T> & { value: undefined } {
67
66
  return this.value === undefined;
68
67
  }
68
+
69
+ equals(other: Option<T>, innerEquals: (a: T, b: T) => boolean): boolean {
70
+ if (this.isSome() && other.isSome()) {
71
+ return innerEquals(this.value, other.value);
72
+ }
73
+ return this.isNone() && other.isNone();
74
+ }
69
75
  }
@@ -0,0 +1,8 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+
3
+ /**
4
+ * The block a retractable fact originates from.
5
+ *
6
+ * A TS version of the `OriginBlock` struct in `facts/mod.nr`.
7
+ */
8
+ export type OriginBlock = { blockNumber: number; blockHash: Fr };
@@ -0,0 +1,12 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+
3
+ import type { ResolvedTx } from './resolved_tx.js';
4
+
5
+ /**
6
+ * Represents a pending tagged log as it is stored in the pending tagged log array to which the fetchTaggedLogs oracle
7
+ * inserts found private logs. A TS version of `pending_tagged_log.nr`.
8
+ */
9
+ export type PendingTaggedLog = {
10
+ log: Fr[];
11
+ context: ResolvedTx;
12
+ };
@@ -1,27 +1,5 @@
1
- import { Fr } from '@aztec/foundation/curves/bn254';
2
- import { FieldReader } from '@aztec/foundation/serialize';
3
- import { AppTaggingSecretKind } from '@aztec/stdlib/logs';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { AppTaggingSecretKind } from '@aztec/stdlib/logs';
4
3
 
5
- /** A tagging secret an app supplies explicitly to `getPendingTaggedLogs` when PXE cannot derive it internally. */
6
- export class ProvidedSecret {
7
- constructor(
8
- public secret: Fr,
9
- public mode: AppTaggingSecretKind,
10
- ) {}
11
-
12
- static fromFields(fields: Fr[] | FieldReader): ProvidedSecret {
13
- const reader = FieldReader.asReader(fields);
14
- return new ProvidedSecret(reader.readField(), kindFromField(reader.readField()));
15
- }
16
- }
17
-
18
- function kindFromField(mode: Fr): AppTaggingSecretKind {
19
- switch (mode.toBigInt()) {
20
- case 0n:
21
- return AppTaggingSecretKind.UNCONSTRAINED;
22
- case 1n:
23
- return AppTaggingSecretKind.CONSTRAINED;
24
- default:
25
- throw new Error(`Invalid app tagging secret kind: ${mode.toString()}`);
26
- }
27
- }
4
+ /** A tagging secret an app supplies explicitly to `getPendingTaggedLogsV2` when PXE cannot derive it internally. */
5
+ export type ProvidedSecret = { secret: Fr; mode: AppTaggingSecretKind };
@@ -0,0 +1,66 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+
3
+ // Keep in sync with aztec::messages::delivery::ResolvedTaggingStrategy
4
+ const NON_INTERACTIVE_HANDSHAKE = 1;
5
+ const UNCONSTRAINED_SECRET = 2;
6
+ const INTERACTIVE_HANDSHAKE = 3;
7
+
8
+ /**
9
+ * The tagging secret PXE hands to the contract after applying the wallet's {@link TaggingSecretStrategy} choice
10
+ * (and app-siloing). The contract uses it directly to derive the message tag, so it never sees raw key material.
11
+ */
12
+ export type ResolvedTaggingStrategy =
13
+ | {
14
+ /** A non-interactive handshake: the recipient re-derives the secret from the onchain handshake registry. */
15
+ type: 'non-interactive-handshake';
16
+ }
17
+ | {
18
+ /**
19
+ * An interactive handshake: the registry obtains the recipient's signed authorization through the custom
20
+ * request oracle, and the recipient learns the secret while signing. Nothing announcing the handshake is
21
+ * published onchain.
22
+ */
23
+ type: 'interactive-handshake';
24
+ }
25
+ | {
26
+ /**
27
+ * An app-siloed, recipient-directional secret, ready to use. Only sound for unconstrained delivery.
28
+ */
29
+ type: 'unconstrained-secret';
30
+ /** The app-siloed directional tagging secret. */
31
+ secret: Fr;
32
+ };
33
+
34
+ /** Serializes a {@link ResolvedTaggingStrategy} to its Noir `[kind, secret]` field layout, zero-filling absent fields. */
35
+ export function resolvedTaggingStrategyToFields(resolved: ResolvedTaggingStrategy): Fr[] {
36
+ switch (resolved.type) {
37
+ case 'non-interactive-handshake':
38
+ return [new Fr(NON_INTERACTIVE_HANDSHAKE), Fr.ZERO];
39
+ case 'unconstrained-secret':
40
+ return [new Fr(UNCONSTRAINED_SECRET), resolved.secret];
41
+ case 'interactive-handshake':
42
+ return [new Fr(INTERACTIVE_HANDSHAKE), Fr.ZERO];
43
+ }
44
+ }
45
+
46
+ /** Deserializes a {@link ResolvedTaggingStrategy} from its `kind` discriminant and `secret` field. */
47
+ export function resolvedTaggingStrategyFromFields(kind: number, secret: Fr): ResolvedTaggingStrategy {
48
+ switch (kind) {
49
+ case NON_INTERACTIVE_HANDSHAKE:
50
+ assertAbsentSecret(kind, secret);
51
+ return { type: 'non-interactive-handshake' };
52
+ case INTERACTIVE_HANDSHAKE:
53
+ assertAbsentSecret(kind, secret);
54
+ return { type: 'interactive-handshake' };
55
+ case UNCONSTRAINED_SECRET:
56
+ return { type: 'unconstrained-secret', secret };
57
+ default:
58
+ throw new Error(`Unrecognized resolved tagging strategy kind: ${kind}`);
59
+ }
60
+ }
61
+
62
+ function assertAbsentSecret(kind: number, secret: Fr): void {
63
+ if (!secret.isZero()) {
64
+ throw new Error(`Resolved tagging strategy ${kind} must not include a secret`);
65
+ }
66
+ }
@@ -0,0 +1,19 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { TxHash } from '@aztec/stdlib/tx';
3
+
4
+ /**
5
+ * The resolved on-chain context of a transaction.
6
+ *
7
+ * Carries the note hashes and first nullifier needed to discover notes that originated from the transaction, plus the
8
+ * number and hash of the block in which it was mined.
9
+ *
10
+ * A TS version of the `ResolvedTx` struct in `oracle/tx_resolution.nr`; its wire layout lives in the `RESOLVED_TX`
11
+ * type mapping.
12
+ */
13
+ export type ResolvedTx = {
14
+ txHash: TxHash;
15
+ uniqueNoteHashesInTx: Fr[];
16
+ firstNullifierInTx: Fr;
17
+ blockNumber: number;
18
+ blockHash: Fr;
19
+ };
@@ -0,0 +1,16 @@
1
+ import type { FieldsOf } from '@aztec/foundation/types';
2
+ import type { FlatPublicLogs } from '@aztec/stdlib/logs';
3
+ import type { TxEffect } from '@aztec/stdlib/tx';
4
+
5
+ import type { ContractClassLogData } from './contract_class_log_data.js';
6
+
7
+ /**
8
+ * Wire form of a {@link TxEffect} as the `getTxEffect` oracle returns it: identical to the domain type except its logs
9
+ * are flattened to their Noir layout and its revert code is the plain `u8` Noir declares. Keeping the conversion in
10
+ * the handler lets the `TX_EFFECT` mapping stay purely structural.
11
+ */
12
+ export type TxEffectData = Omit<FieldsOf<TxEffect>, 'revertCode' | 'publicLogs' | 'contractClassLogs'> & {
13
+ revertCode: number;
14
+ publicLogs: FlatPublicLogs;
15
+ contractClassLogs: ContractClassLogData[];
16
+ };
@@ -1,23 +1,11 @@
1
- import { toACVMField } from '@aztec/simulator/client';
2
1
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
2
  import type { BlockHeader } from '@aztec/stdlib/tx';
4
3
 
5
4
  /**
6
5
  * TypeScript counterpart of utility_context.nr. Used only as a return value for the utilityGetUtilityContext oracle.
7
6
  */
8
- export class UtilityContext {
9
- constructor(
10
- public readonly blockHeader: BlockHeader,
11
- public readonly contractAddress: AztecAddress,
12
- ) {}
13
-
14
- /**
15
- * Returns a representation of the utility context as expected by intrinsic Noir deserialization.
16
- * The order of the fields has to be the same as the order of the fields in the utility_context.nr.
17
- */
18
- public toNoirRepresentation(): (string | string[])[] {
19
- // TODO(#12874): remove the stupid as string conversion by modifying ForeignCallOutput type in acvm.js
20
- const blockHeaderFields = this.blockHeader.toFields().map(toACVMField);
21
- return [...blockHeaderFields, this.contractAddress.toString() as string];
22
- }
23
- }
7
+ export type UtilityContext = {
8
+ blockHeader: BlockHeader;
9
+ contractAddress: AztecAddress;
10
+ msgSender: AztecAddress;
11
+ };