@aztec-labs/pxe 6.0.0-nightly.20260829

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 (603) hide show
  1. package/README.md +13 -0
  2. package/dest/bin/check_oracle_version.d.ts +2 -0
  3. package/dest/bin/check_oracle_version.d.ts.map +1 -0
  4. package/dest/bin/check_oracle_version.js +22 -0
  5. package/dest/bin/index.d.ts +2 -0
  6. package/dest/bin/index.d.ts.map +1 -0
  7. package/dest/bin/index.js +1 -0
  8. package/dest/bin/oracle_version_helpers.d.ts +20 -0
  9. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  10. package/dest/bin/oracle_version_helpers.js +25 -0
  11. package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
  12. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
  13. package/dest/block_synchronizer/block_stream_source.js +37 -0
  14. package/dest/block_synchronizer/block_synchronizer.d.ts +47 -0
  15. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  16. package/dest/block_synchronizer/block_synchronizer.js +192 -0
  17. package/dest/block_synchronizer/index.d.ts +2 -0
  18. package/dest/block_synchronizer/index.d.ts.map +1 -0
  19. package/dest/block_synchronizer/index.js +1 -0
  20. package/dest/config/index.d.ts +57 -0
  21. package/dest/config/index.d.ts.map +1 -0
  22. package/dest/config/index.js +80 -0
  23. package/dest/config/package_info.d.ts +5 -0
  24. package/dest/config/package_info.d.ts.map +1 -0
  25. package/dest/config/package_info.js +6 -0
  26. package/dest/contract/contract_call_graph.d.ts +51 -0
  27. package/dest/contract/contract_call_graph.d.ts.map +1 -0
  28. package/dest/contract/contract_call_graph.js +91 -0
  29. package/dest/contract/contract_class_service.d.ts +24 -0
  30. package/dest/contract/contract_class_service.d.ts.map +1 -0
  31. package/dest/contract/contract_class_service.js +36 -0
  32. package/dest/contract/contract_sync_service.d.ts +82 -0
  33. package/dest/contract/contract_sync_service.d.ts.map +1 -0
  34. package/dest/contract/contract_sync_service.js +210 -0
  35. package/dest/contract/helpers.d.ts +7 -0
  36. package/dest/contract/helpers.d.ts.map +1 -0
  37. package/dest/contract/helpers.js +20 -0
  38. package/dest/contract/skip_sync_contracts.d.ts +11 -0
  39. package/dest/contract/skip_sync_contracts.d.ts.map +1 -0
  40. package/dest/contract/skip_sync_contracts.js +18 -0
  41. package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
  42. package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
  43. package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
  44. package/dest/contract_function_simulator/contract_function_simulator.d.ts +114 -0
  45. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -0
  46. package/dest/contract_function_simulator/contract_function_simulator.js +495 -0
  47. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  48. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  49. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  50. package/dest/contract_function_simulator/execution_note_cache.d.ts +98 -0
  51. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -0
  52. package/dest/contract_function_simulator/execution_note_cache.js +189 -0
  53. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +12 -0
  54. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -0
  55. package/dest/contract_function_simulator/execution_tagging_index_cache.js +30 -0
  56. package/dest/contract_function_simulator/hashed_values_cache.d.ts +28 -0
  57. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -0
  58. package/dest/contract_function_simulator/hashed_values_cache.js +36 -0
  59. package/dest/contract_function_simulator/index.d.ts +36 -0
  60. package/dest/contract_function_simulator/index.d.ts.map +1 -0
  61. package/dest/contract_function_simulator/index.js +20 -0
  62. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
  63. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  64. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
  65. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  66. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  67. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  68. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  69. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  70. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  71. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  72. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  73. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  74. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +20 -0
  75. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -0
  76. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +39 -0
  77. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  78. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  79. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  80. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  81. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  82. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  83. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +25 -0
  84. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -0
  85. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +14 -0
  86. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +19 -0
  87. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -0
  88. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +4 -0
  89. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  90. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  91. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  92. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +22 -0
  93. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -0
  94. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +47 -0
  95. package/dest/contract_function_simulator/noir-structs/nullifier_membership_witness_data.d.ts +12 -0
  96. package/dest/contract_function_simulator/noir-structs/nullifier_membership_witness_data.d.ts.map +1 -0
  97. package/dest/contract_function_simulator/noir-structs/nullifier_membership_witness_data.js +6 -0
  98. package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
  99. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  100. package/dest/contract_function_simulator/noir-structs/option.js +67 -0
  101. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  102. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  103. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  104. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  105. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  106. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  107. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
  108. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  109. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
  110. package/dest/contract_function_simulator/noir-structs/public_data_witness_data.d.ts +13 -0
  111. package/dest/contract_function_simulator/noir-structs/public_data_witness_data.d.ts.map +1 -0
  112. package/dest/contract_function_simulator/noir-structs/public_data_witness_data.js +3 -0
  113. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  114. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  115. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  116. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +19 -0
  117. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  118. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
  119. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
  120. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  121. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  122. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +11 -0
  123. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -0
  124. package/dest/contract_function_simulator/noir-structs/utility_context.js +3 -0
  125. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  126. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  127. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  128. package/dest/contract_function_simulator/oracle/index.d.ts +3 -0
  129. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -0
  130. package/dest/contract_function_simulator/oracle/index.js +2 -0
  131. package/dest/contract_function_simulator/oracle/interfaces.d.ts +24 -0
  132. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -0
  133. package/dest/contract_function_simulator/oracle/interfaces.js +4 -0
  134. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  135. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  136. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  137. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +28 -0
  138. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -0
  139. package/dest/contract_function_simulator/oracle/note_packing_utils.js +54 -0
  140. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +139 -0
  141. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  142. package/dest/contract_function_simulator/oracle/oracle_registry.js +1024 -0
  143. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +292 -0
  144. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  145. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1258 -0
  146. package/dest/contract_function_simulator/oracle/private_execution.d.ts +23 -0
  147. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -0
  148. package/dest/contract_function_simulator/oracle/private_execution.js +88 -0
  149. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +226 -0
  150. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -0
  151. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +585 -0
  152. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +333 -0
  153. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -0
  154. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +900 -0
  155. package/dest/contract_function_simulator/pick_notes.d.ts +85 -0
  156. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -0
  157. package/dest/contract_function_simulator/pick_notes.js +68 -0
  158. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  159. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  160. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  161. package/dest/contract_logging.d.ts +27 -0
  162. package/dest/contract_logging.d.ts.map +1 -0
  163. package/dest/contract_logging.js +38 -0
  164. package/dest/debug/pxe_debug_utils.d.ts +38 -0
  165. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  166. package/dest/debug/pxe_debug_utils.js +44 -0
  167. package/dest/entrypoints/client/bundle/index.d.ts +10 -0
  168. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -0
  169. package/dest/entrypoints/client/bundle/index.js +8 -0
  170. package/dest/entrypoints/client/bundle/utils.d.ts +16 -0
  171. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -0
  172. package/dest/entrypoints/client/bundle/utils.js +78 -0
  173. package/dest/entrypoints/client/lazy/index.d.ts +10 -0
  174. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -0
  175. package/dest/entrypoints/client/lazy/index.js +8 -0
  176. package/dest/entrypoints/client/lazy/utils.d.ts +15 -0
  177. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -0
  178. package/dest/entrypoints/client/lazy/utils.js +77 -0
  179. package/dest/entrypoints/client/store.d.ts +14 -0
  180. package/dest/entrypoints/client/store.d.ts.map +1 -0
  181. package/dest/entrypoints/client/store.js +42 -0
  182. package/dest/entrypoints/pxe_creation_options.d.ts +32 -0
  183. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -0
  184. package/dest/entrypoints/pxe_creation_options.js +3 -0
  185. package/dest/entrypoints/server/circuit_recording/circuit_recorder.d.ts +121 -0
  186. package/dest/entrypoints/server/circuit_recording/circuit_recorder.d.ts.map +1 -0
  187. package/dest/entrypoints/server/circuit_recording/circuit_recorder.js +208 -0
  188. package/dest/entrypoints/server/circuit_recording/file_circuit_recorder.d.ts +20 -0
  189. package/dest/entrypoints/server/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
  190. package/dest/entrypoints/server/circuit_recording/file_circuit_recorder.js +131 -0
  191. package/dest/entrypoints/server/circuit_recording/memory_circuit_recorder.d.ts +10 -0
  192. package/dest/entrypoints/server/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
  193. package/dest/entrypoints/server/circuit_recording/memory_circuit_recorder.js +9 -0
  194. package/dest/entrypoints/server/circuit_recording/simulator_recorder_wrapper.d.ts +18 -0
  195. package/dest/entrypoints/server/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
  196. package/dest/entrypoints/server/circuit_recording/simulator_recorder_wrapper.js +41 -0
  197. package/dest/entrypoints/server/index.d.ts +17 -0
  198. package/dest/entrypoints/server/index.d.ts.map +1 -0
  199. package/dest/entrypoints/server/index.js +14 -0
  200. package/dest/entrypoints/server/store.d.ts +18 -0
  201. package/dest/entrypoints/server/store.d.ts.map +1 -0
  202. package/dest/entrypoints/server/store.js +28 -0
  203. package/dest/entrypoints/server/utils.d.ts +9 -0
  204. package/dest/entrypoints/server/utils.d.ts.map +1 -0
  205. package/dest/entrypoints/server/utils.js +84 -0
  206. package/dest/error_enriching.d.ts +13 -0
  207. package/dest/error_enriching.d.ts.map +1 -0
  208. package/dest/error_enriching.js +80 -0
  209. package/dest/events/event_service.d.ts +30 -0
  210. package/dest/events/event_service.d.ts.map +1 -0
  211. package/dest/events/event_service.js +76 -0
  212. package/dest/events/index.d.ts +2 -0
  213. package/dest/events/index.d.ts.map +1 -0
  214. package/dest/events/index.js +1 -0
  215. package/dest/events/private_event_filter_validator.d.ts +10 -0
  216. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  217. package/dest/events/private_event_filter_validator.js +53 -0
  218. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  219. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  220. package/dest/hooks/authorize_utility_call.js +4 -0
  221. package/dest/hooks/execution_hooks.d.ts +62 -0
  222. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  223. package/dest/hooks/execution_hooks.js +9 -0
  224. package/dest/hooks/index.d.ts +5 -0
  225. package/dest/hooks/index.d.ts.map +1 -0
  226. package/dest/hooks/index.js +2 -0
  227. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  228. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  229. package/dest/hooks/resolve_custom_request.js +3 -0
  230. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  231. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  232. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  233. package/dest/logs/log_service.d.ts +40 -0
  234. package/dest/logs/log_service.d.ts.map +1 -0
  235. package/dest/logs/log_service.js +217 -0
  236. package/dest/messages/tx_resolver_service.d.ts +28 -0
  237. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  238. package/dest/messages/tx_resolver_service.js +62 -0
  239. package/dest/node/benchmarked_node.d.ts +22 -0
  240. package/dest/node/benchmarked_node.d.ts.map +1 -0
  241. package/dest/node/benchmarked_node.js +93 -0
  242. package/dest/node/caching_aztec_node.d.ts +24 -0
  243. package/dest/node/caching_aztec_node.d.ts.map +1 -0
  244. package/dest/node/caching_aztec_node.js +268 -0
  245. package/dest/notes/index.d.ts +2 -0
  246. package/dest/notes/index.d.ts.map +1 -0
  247. package/dest/notes/index.js +1 -0
  248. package/dest/notes/note_service.d.ts +77 -0
  249. package/dest/notes/note_service.d.ts.map +1 -0
  250. package/dest/notes/note_service.js +173 -0
  251. package/dest/notes_filter.d.ts +24 -0
  252. package/dest/notes_filter.d.ts.map +1 -0
  253. package/dest/notes_filter.js +4 -0
  254. package/dest/operation_lifecycle.d.ts +45 -0
  255. package/dest/operation_lifecycle.d.ts.map +1 -0
  256. package/dest/operation_lifecycle.js +68 -0
  257. package/dest/operation_queue.d.ts +75 -0
  258. package/dest/operation_queue.d.ts.map +1 -0
  259. package/dest/operation_queue.js +100 -0
  260. package/dest/oracle_version.d.ts +4 -0
  261. package/dest/oracle_version.d.ts.map +1 -0
  262. package/dest/oracle_version.js +21 -0
  263. package/dest/private_kernel/batch_planner.d.ts +47 -0
  264. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  265. package/dest/private_kernel/batch_planner.js +104 -0
  266. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  267. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  268. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.js +41 -0
  269. package/dest/private_kernel/hints/index.d.ts +3 -0
  270. package/dest/private_kernel/hints/index.d.ts.map +1 -0
  271. package/dest/private_kernel/hints/index.js +2 -0
  272. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -0
  273. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  274. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +343 -0
  275. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  276. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  277. package/dest/private_kernel/hints/test_utils.js +202 -0
  278. package/dest/private_kernel/index.d.ts +3 -0
  279. package/dest/private_kernel/index.d.ts.map +1 -0
  280. package/dest/private_kernel/index.js +2 -0
  281. package/dest/private_kernel/private_kernel_execution_prover.d.ts +49 -0
  282. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -0
  283. package/dest/private_kernel/private_kernel_execution_prover.js +408 -0
  284. package/dest/private_kernel/private_kernel_oracle.d.ts +65 -0
  285. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -0
  286. package/dest/private_kernel/private_kernel_oracle.js +110 -0
  287. package/dest/pxe.d.ts +364 -0
  288. package/dest/pxe.d.ts.map +1 -0
  289. package/dest/pxe.js +903 -0
  290. package/dest/storage/address_store/address_store.d.ts +11 -0
  291. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  292. package/dest/storage/address_store/address_store.js +49 -0
  293. package/dest/storage/address_store/index.d.ts +2 -0
  294. package/dest/storage/address_store/index.d.ts.map +1 -0
  295. package/dest/storage/address_store/index.js +1 -0
  296. package/dest/storage/allowed_scopes.d.ts +6 -0
  297. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  298. package/dest/storage/allowed_scopes.js +7 -0
  299. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +20 -0
  300. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  301. package/dest/storage/anchor_block_store/anchor_block_store.js +28 -0
  302. package/dest/storage/anchor_block_store/index.d.ts +2 -0
  303. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  304. package/dest/storage/anchor_block_store/index.js +1 -0
  305. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  306. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  307. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  308. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  309. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  310. package/dest/storage/backwards_compatibility_tests/schema_tests.js +674 -0
  311. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  312. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  313. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  314. package/dest/storage/base_staging_store.d.ts +110 -0
  315. package/dest/storage/base_staging_store.d.ts.map +1 -0
  316. package/dest/storage/base_staging_store.js +141 -0
  317. package/dest/storage/capsule_store/capsule_service.d.ts +22 -0
  318. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  319. package/dest/storage/capsule_store/capsule_service.js +47 -0
  320. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  321. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  322. package/dest/storage/capsule_store/capsule_store.js +256 -0
  323. package/dest/storage/capsule_store/index.d.ts +3 -0
  324. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  325. package/dest/storage/capsule_store/index.js +2 -0
  326. package/dest/storage/contract_store/contract_store.d.ts +96 -0
  327. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  328. package/dest/storage/contract_store/contract_store.js +282 -0
  329. package/dest/storage/contract_store/index.d.ts +2 -0
  330. package/dest/storage/contract_store/index.d.ts.map +1 -0
  331. package/dest/storage/contract_store/index.js +1 -0
  332. package/dest/storage/contract_store/private_functions_tree.d.ts +27 -0
  333. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  334. package/dest/storage/contract_store/private_functions_tree.js +48 -0
  335. package/dest/storage/fact_store/fact_service.d.ts +23 -0
  336. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  337. package/dest/storage/fact_store/fact_service.js +45 -0
  338. package/dest/storage/fact_store/fact_store.d.ts +101 -0
  339. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  340. package/dest/storage/fact_store/fact_store.js +350 -0
  341. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  342. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  343. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  344. package/dest/storage/fact_store/index.d.ts +6 -0
  345. package/dest/storage/fact_store/index.d.ts.map +1 -0
  346. package/dest/storage/fact_store/index.js +4 -0
  347. package/dest/storage/fact_store/origin_state.d.ts +59 -0
  348. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  349. package/dest/storage/fact_store/origin_state.js +60 -0
  350. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  351. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  352. package/dest/storage/fact_store/stored_fact.js +64 -0
  353. package/dest/storage/index.d.ts +10 -0
  354. package/dest/storage/index.d.ts.map +1 -0
  355. package/dest/storage/index.js +9 -0
  356. package/dest/storage/metadata.d.ts +2 -0
  357. package/dest/storage/metadata.d.ts.map +1 -0
  358. package/dest/storage/metadata.js +1 -0
  359. package/dest/storage/note_store/index.d.ts +3 -0
  360. package/dest/storage/note_store/index.d.ts.map +1 -0
  361. package/dest/storage/note_store/index.js +2 -0
  362. package/dest/storage/note_store/note_store.d.ts +92 -0
  363. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  364. package/dest/storage/note_store/note_store.js +273 -0
  365. package/dest/storage/note_store/stored_note.d.ts +11 -0
  366. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  367. package/dest/storage/note_store/stored_note.js +27 -0
  368. package/dest/storage/note_store/test_utils.d.ts +9 -0
  369. package/dest/storage/note_store/test_utils.d.ts.map +1 -0
  370. package/dest/storage/note_store/test_utils.js +10 -0
  371. package/dest/storage/open_pxe_stores.d.ts +35 -0
  372. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  373. package/dest/storage/open_pxe_stores.js +29 -0
  374. package/dest/storage/private_event_store/private_event_store.d.ts +90 -0
  375. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  376. package/dest/storage/private_event_store/private_event_store.js +276 -0
  377. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  378. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  379. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  380. package/dest/storage/rollbackable.d.ts +15 -0
  381. package/dest/storage/rollbackable.d.ts.map +1 -0
  382. package/dest/storage/rollbackable.js +3 -0
  383. package/dest/storage/staged_write_coordinator.d.ts +103 -0
  384. package/dest/storage/staged_write_coordinator.d.ts.map +1 -0
  385. package/dest/storage/staged_write_coordinator.js +141 -0
  386. package/dest/storage/store_identity.d.ts +35 -0
  387. package/dest/storage/store_identity.d.ts.map +1 -0
  388. package/dest/storage/store_identity.js +44 -0
  389. package/dest/storage/tagging_store/index.d.ts +4 -0
  390. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  391. package/dest/storage/tagging_store/index.js +3 -0
  392. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +36 -0
  393. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  394. package/dest/storage/tagging_store/recipient_tagging_store.js +74 -0
  395. package/dest/storage/tagging_store/sender_tagging_store.d.ts +113 -0
  396. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  397. package/dest/storage/tagging_store/sender_tagging_store.js +432 -0
  398. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  399. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  400. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  401. package/dest/tagging/constants.d.ts +11 -0
  402. package/dest/tagging/constants.d.ts.map +1 -0
  403. package/dest/tagging/constants.js +38 -0
  404. package/dest/tagging/get_all_logs_by_tags.d.ts +69 -0
  405. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  406. package/dest/tagging/get_all_logs_by_tags.js +79 -0
  407. package/dest/tagging/index.d.ts +18 -0
  408. package/dest/tagging/index.d.ts.map +1 -0
  409. package/dest/tagging/index.js +16 -0
  410. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +31 -0
  411. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  412. package/dest/tagging/persist_sender_tagging_index_ranges.js +43 -0
  413. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +75 -0
  414. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  415. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +235 -0
  416. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  417. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  418. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  419. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  420. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  421. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  422. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +20 -0
  423. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  424. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +77 -0
  425. package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts +22 -0
  426. package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts.map +1 -0
  427. package/dest/tagging/sender_sync/utils/classify_pending_txs.js +62 -0
  428. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +30 -0
  429. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  430. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +74 -0
  431. package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts +29 -0
  432. package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts.map +1 -0
  433. package/dest/tagging/sender_sync/utils/resolve_pending_txs.js +42 -0
  434. package/dest/tagging/sender_sync/utils/test_utils.d.ts +16 -0
  435. package/dest/tagging/sender_sync/utils/test_utils.d.ts.map +1 -0
  436. package/dest/tagging/sender_sync/utils/test_utils.js +24 -0
  437. package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
  438. package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
  439. package/dest/tagging/testing/tag_query_test_utils.js +10 -0
  440. package/dest/test_utils.d.ts +3 -0
  441. package/dest/test_utils.d.ts.map +1 -0
  442. package/dest/test_utils.js +1 -0
  443. package/package.json +119 -0
  444. package/src/bin/check_oracle_version.ts +28 -0
  445. package/src/bin/index.ts +1 -0
  446. package/src/bin/oracle_version_helpers.ts +30 -0
  447. package/src/block_synchronizer/block_stream_source.ts +48 -0
  448. package/src/block_synchronizer/block_synchronizer.ts +225 -0
  449. package/src/block_synchronizer/index.ts +1 -0
  450. package/src/config/index.ts +141 -0
  451. package/src/config/package_info.ts +3 -0
  452. package/src/contract/contract_call_graph.ts +121 -0
  453. package/src/contract/contract_class_service.ts +45 -0
  454. package/src/contract/contract_sync_service.ts +349 -0
  455. package/src/contract/helpers.ts +35 -0
  456. package/src/contract/skip_sync_contracts.ts +23 -0
  457. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  458. package/src/contract_function_simulator/contract_function_simulator.ts +928 -0
  459. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  460. package/src/contract_function_simulator/execution_note_cache.ts +232 -0
  461. package/src/contract_function_simulator/execution_tagging_index_cache.ts +33 -0
  462. package/src/contract_function_simulator/hashed_values_cache.ts +47 -0
  463. package/src/contract_function_simulator/index.ts +107 -0
  464. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
  465. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  466. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  467. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  468. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +52 -0
  469. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  470. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  471. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +35 -0
  472. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +19 -0
  473. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  474. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +59 -0
  475. package/src/contract_function_simulator/noir-structs/nullifier_membership_witness_data.ts +15 -0
  476. package/src/contract_function_simulator/noir-structs/option.ts +75 -0
  477. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  478. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  479. package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
  480. package/src/contract_function_simulator/noir-structs/public_data_witness_data.ts +13 -0
  481. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  482. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
  483. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
  484. package/src/contract_function_simulator/noir-structs/utility_context.ts +11 -0
  485. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  486. package/src/contract_function_simulator/oracle/index.ts +2 -0
  487. package/src/contract_function_simulator/oracle/interfaces.ts +20 -0
  488. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  489. package/src/contract_function_simulator/oracle/note_packing_utils.ts +68 -0
  490. package/src/contract_function_simulator/oracle/oracle_registry.ts +709 -0
  491. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +1089 -0
  492. package/src/contract_function_simulator/oracle/private_execution.ts +140 -0
  493. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +812 -0
  494. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +1341 -0
  495. package/src/contract_function_simulator/pick_notes.ts +160 -0
  496. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  497. package/src/contract_logging.ts +52 -0
  498. package/src/debug/pxe_debug_utils.ts +89 -0
  499. package/src/entrypoints/client/bundle/index.ts +9 -0
  500. package/src/entrypoints/client/bundle/utils.ts +89 -0
  501. package/src/entrypoints/client/lazy/index.ts +9 -0
  502. package/src/entrypoints/client/lazy/utils.ts +89 -0
  503. package/src/entrypoints/client/store.ts +54 -0
  504. package/src/entrypoints/pxe_creation_options.ts +34 -0
  505. package/src/entrypoints/server/circuit_recording/circuit_recorder.ts +267 -0
  506. package/src/entrypoints/server/circuit_recording/file_circuit_recorder.ts +152 -0
  507. package/src/entrypoints/server/circuit_recording/memory_circuit_recorder.ts +13 -0
  508. package/src/entrypoints/server/circuit_recording/simulator_recorder_wrapper.ts +90 -0
  509. package/src/entrypoints/server/index.ts +17 -0
  510. package/src/entrypoints/server/store.ts +46 -0
  511. package/src/entrypoints/server/utils.ts +103 -0
  512. package/src/error_enriching.ts +124 -0
  513. package/src/events/event_service.ts +129 -0
  514. package/src/events/index.ts +1 -0
  515. package/src/events/private_event_filter_validator.ts +66 -0
  516. package/src/hooks/authorize_utility_call.ts +44 -0
  517. package/src/hooks/execution_hooks.ts +68 -0
  518. package/src/hooks/index.ts +13 -0
  519. package/src/hooks/resolve_custom_request.ts +24 -0
  520. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  521. package/src/logs/log_service.ts +295 -0
  522. package/src/messages/tx_resolver_service.ts +81 -0
  523. package/src/node/benchmarked_node.ts +141 -0
  524. package/src/node/caching_aztec_node.ts +407 -0
  525. package/src/notes/index.ts +1 -0
  526. package/src/notes/note_service.ts +238 -0
  527. package/src/notes_filter.ts +24 -0
  528. package/src/operation_lifecycle.ts +99 -0
  529. package/src/operation_queue.ts +149 -0
  530. package/src/oracle_version.ts +22 -0
  531. package/src/private_kernel/batch_planner.ts +168 -0
  532. package/src/private_kernel/hints/compute_tx_expiration_timestamp.ts +58 -0
  533. package/src/private_kernel/hints/index.ts +2 -0
  534. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +553 -0
  535. package/src/private_kernel/hints/test_utils.ts +318 -0
  536. package/src/private_kernel/index.ts +2 -0
  537. package/src/private_kernel/private_kernel_execution_prover.ts +656 -0
  538. package/src/private_kernel/private_kernel_oracle.ts +184 -0
  539. package/src/pxe.ts +1417 -0
  540. package/src/storage/address_store/address_store.ts +66 -0
  541. package/src/storage/address_store/index.ts +1 -0
  542. package/src/storage/allowed_scopes.ts +14 -0
  543. package/src/storage/anchor_block_store/anchor_block_store.ts +35 -0
  544. package/src/storage/anchor_block_store/index.ts +1 -0
  545. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  546. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  547. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  548. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  549. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  550. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  551. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
  552. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
  553. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  554. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +26 -0
  555. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +30 -0
  556. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  557. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
  558. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  559. package/src/storage/backwards_compatibility_tests/schema_tests.ts +813 -0
  560. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  561. package/src/storage/base_staging_store.ts +227 -0
  562. package/src/storage/capsule_store/capsule_service.ts +97 -0
  563. package/src/storage/capsule_store/capsule_store.ts +349 -0
  564. package/src/storage/capsule_store/index.ts +2 -0
  565. package/src/storage/contract_store/contract_store.ts +403 -0
  566. package/src/storage/contract_store/index.ts +1 -0
  567. package/src/storage/contract_store/private_functions_tree.ts +68 -0
  568. package/src/storage/fact_store/fact_service.ts +70 -0
  569. package/src/storage/fact_store/fact_store.ts +424 -0
  570. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  571. package/src/storage/fact_store/index.ts +15 -0
  572. package/src/storage/fact_store/origin_state.ts +84 -0
  573. package/src/storage/fact_store/stored_fact.ts +80 -0
  574. package/src/storage/index.ts +9 -0
  575. package/src/storage/metadata.ts +1 -0
  576. package/src/storage/note_store/index.ts +2 -0
  577. package/src/storage/note_store/note_store.ts +367 -0
  578. package/src/storage/note_store/stored_note.ts +26 -0
  579. package/src/storage/note_store/test_utils.ts +16 -0
  580. package/src/storage/open_pxe_stores.ts +52 -0
  581. package/src/storage/private_event_store/private_event_store.ts +383 -0
  582. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  583. package/src/storage/rollbackable.ts +14 -0
  584. package/src/storage/staged_write_coordinator.ts +218 -0
  585. package/src/storage/store_identity.ts +72 -0
  586. package/src/storage/tagging_store/index.ts +3 -0
  587. package/src/storage/tagging_store/recipient_tagging_store.ts +114 -0
  588. package/src/storage/tagging_store/sender_tagging_store.ts +564 -0
  589. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  590. package/src/tagging/constants.ts +42 -0
  591. package/src/tagging/get_all_logs_by_tags.ts +157 -0
  592. package/src/tagging/index.ts +25 -0
  593. package/src/tagging/persist_sender_tagging_index_ranges.ts +59 -0
  594. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +357 -0
  595. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  596. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  597. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +113 -0
  598. package/src/tagging/sender_sync/utils/classify_pending_txs.ts +92 -0
  599. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +92 -0
  600. package/src/tagging/sender_sync/utils/resolve_pending_txs.ts +65 -0
  601. package/src/tagging/sender_sync/utils/test_utils.ts +46 -0
  602. package/src/tagging/testing/tag_query_test_utils.ts +11 -0
  603. package/src/test_utils.ts +2 -0
@@ -0,0 +1,1258 @@
1
+ import { CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NULLIFIER_TREE_HEIGHT, PRIVATE_LOG_CIPHERTEXT_LEN, PRIVATE_LOG_SIZE_IN_FIELDS, PUBLIC_DATA_TREE_HEIGHT } from '@aztec-labs/constants';
2
+ import { BlockNumber } from '@aztec-labs/foundation/branded-types';
3
+ import { padArrayEnd } from '@aztec-labs/foundation/collection';
4
+ import { Fr } from '@aztec-labs/foundation/curves/bn254';
5
+ import { EthAddress } from '@aztec-labs/foundation/eth-address';
6
+ import { FieldReader } from '@aztec-labs/foundation/serialize';
7
+ import { FunctionSelector, NoteSelector } from '@aztec-labs/stdlib/abi';
8
+ import { AztecAddress } from '@aztec-labs/stdlib/aztec-address';
9
+ import { BlockHash } from '@aztec-labs/stdlib/block';
10
+ import { Tag, appTaggingSecretKindFromDeliveryMode } from '@aztec-labs/stdlib/logs';
11
+ import { TxHash } from '@aztec-labs/stdlib/tx';
12
+ import { originBlockStateFromNumber } from '../../storage/fact_store/index.js';
13
+ import { BoundedVec } from '../noir-structs/bounded_vec.js';
14
+ import { EphemeralArray } from '../noir-structs/ephemeral_array.js';
15
+ import { EventValidationRequest } from '../noir-structs/event_validation_request.js';
16
+ import { logSourceFromField } from '../noir-structs/log_retrieval_request.js';
17
+ import { NoteValidationRequest } from '../noir-structs/note_validation_request.js';
18
+ import { Option } from '../noir-structs/option.js';
19
+ import { resolvedTaggingStrategyFromFields, resolvedTaggingStrategyToFields } from '../noir-structs/resolved_tagging_strategy.js';
20
+ import { packAsHintedNote } from './note_packing_utils.js';
21
+ /**
22
+ * Asserts that every reader was fully consumed by a deserialization, throwing on leftover fields.
23
+ */ export function assertReadersConsumed(readers) {
24
+ readers.forEach((reader, slot)=>{
25
+ if (!reader.isFinished()) {
26
+ throw new Error(`Malformed oracle input: ${reader.remainingFields()} unexpected trailing field(s) in slot ${slot}`);
27
+ }
28
+ });
29
+ }
30
+ // ─── Scalar Type Mappings ────────────────────────────────────────────────────
31
+ /**
32
+ * A leaf mapping whose {@link TypeMapping.label} is just its bare {@link TypeMapping.kind}. Its wire shape is arbitrary
33
+ * (several fields, or a variable-width run); a single-field scalar uses the shorter {@link SCALAR} instead.
34
+ */ export function LEAF(mapping) {
35
+ return {
36
+ ...mapping,
37
+ label: mapping.kind
38
+ };
39
+ }
40
+ /** A {@link LEAF} occupying a single `'scalar'` wire slot, so callers omit the shape. */ export function SCALAR(mapping) {
41
+ return LEAF({
42
+ ...mapping,
43
+ shape: [
44
+ 'scalar'
45
+ ]
46
+ });
47
+ }
48
+ export const FIELD = SCALAR({
49
+ kind: 'field',
50
+ serialization: {
51
+ fn: (v)=>[
52
+ v
53
+ ]
54
+ },
55
+ deserialization: {
56
+ fn: ([reader])=>reader.readField()
57
+ }
58
+ });
59
+ export const BOOL = SCALAR({
60
+ kind: 'bool',
61
+ serialization: {
62
+ fn: (v)=>[
63
+ new Fr(v ? 1n : 0n)
64
+ ]
65
+ },
66
+ deserialization: {
67
+ fn: ([reader])=>!reader.readField().isZero()
68
+ }
69
+ });
70
+ export const U32 = SCALAR({
71
+ kind: 'u32',
72
+ serialization: {
73
+ fn: (v)=>[
74
+ new Fr(v)
75
+ ]
76
+ },
77
+ deserialization: {
78
+ fn: ([reader])=>Number(uintFromField(reader.readField(), 32))
79
+ }
80
+ });
81
+ export const BLOCK_NUMBER = ALIAS(U32, {
82
+ wrap: (v)=>BlockNumber(v),
83
+ unwrap: (v)=>v
84
+ });
85
+ export const U8 = SCALAR({
86
+ kind: 'u8',
87
+ serialization: {
88
+ fn: (byte)=>[
89
+ new Fr(byte)
90
+ ]
91
+ },
92
+ deserialization: {
93
+ fn: ([reader])=>Number(uintFromField(reader.readField(), 8))
94
+ }
95
+ });
96
+ // Noir passes `MessageDelivery` onchain variants here.
97
+ export const DELIVERY_MODE = SCALAR({
98
+ kind: 'onchain-delivery-mode',
99
+ deserialization: {
100
+ fn: (readers)=>appTaggingSecretKindFromDeliveryMode(U8.deserialization.fn(readers))
101
+ }
102
+ });
103
+ export const RESOLVED_TAGGING_STRATEGY = LEAF({
104
+ kind: 'resolved-tagging-strategy',
105
+ serialization: {
106
+ fn: (resolved)=>resolvedTaggingStrategyToFields(resolved)
107
+ },
108
+ deserialization: {
109
+ fn: ([kindReader, secretReader])=>resolvedTaggingStrategyFromFields(kindReader.readField().toNumber(), secretReader.readField())
110
+ },
111
+ shape: [
112
+ 'scalar',
113
+ 'scalar'
114
+ ]
115
+ });
116
+ export const BIGINT = ALIAS(FIELD, {
117
+ wrap: (f)=>f.toBigInt(),
118
+ unwrap: (v)=>new Fr(v)
119
+ });
120
+ export const U64 = SCALAR({
121
+ kind: 'u64',
122
+ serialization: {
123
+ fn: (v)=>[
124
+ new Fr(v)
125
+ ]
126
+ },
127
+ deserialization: {
128
+ fn: ([reader])=>uintFromField(reader.readField(), 64)
129
+ }
130
+ });
131
+ export const U128 = SCALAR({
132
+ kind: 'u128',
133
+ serialization: {
134
+ fn: (v)=>[
135
+ new Fr(v)
136
+ ]
137
+ },
138
+ deserialization: {
139
+ fn: ([reader])=>uintFromField(reader.readField(), 128)
140
+ }
141
+ });
142
+ export const LEAF_INDEX = ALIAS(FIELD, {
143
+ wrap: (f)=>f.toNumber(),
144
+ unwrap: (v)=>new Fr(v)
145
+ });
146
+ /** Reads every field in the slot as a UTF-8 character code. */ export const STR = LEAF({
147
+ kind: 'str',
148
+ serialization: {
149
+ fn: (str)=>[
150
+ Array.from(Buffer.from(str, 'utf-8')).map((b)=>new Fr(b))
151
+ ]
152
+ },
153
+ deserialization: {
154
+ fn: ([reader])=>{
155
+ const chars = [];
156
+ while(!reader.isFinished()){
157
+ chars.push(String.fromCharCode(reader.readField().toNumber()));
158
+ }
159
+ return chars.join('');
160
+ }
161
+ },
162
+ shape: [
163
+ 'variable'
164
+ ]
165
+ });
166
+ export const AZTEC_ADDRESS = SCALAR({
167
+ kind: 'aztec-address',
168
+ serialization: {
169
+ fn: (v)=>[
170
+ v.toField()
171
+ ]
172
+ },
173
+ deserialization: {
174
+ fn: ([reader])=>AztecAddress.fromFieldUnsafe(reader.readField())
175
+ }
176
+ });
177
+ export const BLOCK_HASH = ALIAS(FIELD, {
178
+ wrap: (f)=>new BlockHash(f),
179
+ unwrap: (v)=>new Fr(v.toBuffer())
180
+ });
181
+ export const FUNCTION_SELECTOR = SCALAR({
182
+ kind: 'function-selector',
183
+ serialization: {
184
+ fn: (v)=>[
185
+ v.toField()
186
+ ]
187
+ },
188
+ deserialization: {
189
+ fn: ([reader])=>FunctionSelector.fromField(reader.readField())
190
+ }
191
+ });
192
+ export const NOTE_SELECTOR = ALIAS(FIELD, {
193
+ wrap: (f)=>NoteSelector.fromField(f),
194
+ unwrap: (v)=>v.toField()
195
+ });
196
+ export const TX_HASH = ALIAS(FIELD, {
197
+ wrap: (f)=>TxHash.fromField(f),
198
+ unwrap: (v)=>v.hash
199
+ });
200
+ const TAG = ALIAS(FIELD, {
201
+ wrap: (f)=>new Tag(f),
202
+ unwrap: (v)=>v.value
203
+ });
204
+ export const POINT = STRUCT([
205
+ {
206
+ name: 'x',
207
+ type: FIELD
208
+ },
209
+ {
210
+ name: 'y',
211
+ type: FIELD
212
+ }
213
+ ]);
214
+ const LOG_SOURCE = SCALAR({
215
+ kind: 'log-source',
216
+ serialization: {
217
+ fn: (v)=>[
218
+ new Fr(v)
219
+ ]
220
+ },
221
+ deserialization: {
222
+ fn: ([reader])=>logSourceFromField(reader.readField())
223
+ }
224
+ });
225
+ export const ETH_ADDRESS = SCALAR({
226
+ kind: 'eth-address',
227
+ serialization: {
228
+ fn: (v)=>[
229
+ v.toField()
230
+ ]
231
+ },
232
+ deserialization: {
233
+ fn: ([reader])=>EthAddress.fromField(reader.readField())
234
+ }
235
+ });
236
+ export const SLOT_NUMBER = ALIAS(FIELD, {
237
+ unwrap: (v)=>new Fr(v)
238
+ });
239
+ const APPEND_ONLY_TREE_SNAPSHOT = STRUCT([
240
+ {
241
+ name: 'root',
242
+ type: FIELD
243
+ },
244
+ {
245
+ name: 'nextAvailableLeafIndex',
246
+ type: LEAF_INDEX
247
+ }
248
+ ]);
249
+ const PARTIAL_STATE_REFERENCE = STRUCT([
250
+ {
251
+ name: 'noteHashTree',
252
+ type: APPEND_ONLY_TREE_SNAPSHOT
253
+ },
254
+ {
255
+ name: 'nullifierTree',
256
+ type: APPEND_ONLY_TREE_SNAPSHOT
257
+ },
258
+ {
259
+ name: 'publicDataTree',
260
+ type: APPEND_ONLY_TREE_SNAPSHOT
261
+ }
262
+ ]);
263
+ const STATE_REFERENCE = STRUCT([
264
+ {
265
+ name: 'l1ToL2MessageTree',
266
+ type: APPEND_ONLY_TREE_SNAPSHOT
267
+ },
268
+ {
269
+ name: 'partial',
270
+ type: PARTIAL_STATE_REFERENCE
271
+ }
272
+ ]);
273
+ export const GAS_FEES = STRUCT([
274
+ {
275
+ name: 'feePerDaGas',
276
+ type: U128
277
+ },
278
+ {
279
+ name: 'feePerL2Gas',
280
+ type: U128
281
+ }
282
+ ]);
283
+ const GLOBAL_VARIABLES = STRUCT([
284
+ {
285
+ name: 'chainId',
286
+ type: FIELD
287
+ },
288
+ {
289
+ name: 'version',
290
+ type: FIELD
291
+ },
292
+ {
293
+ name: 'blockNumber',
294
+ type: BLOCK_NUMBER
295
+ },
296
+ {
297
+ name: 'slotNumber',
298
+ type: SLOT_NUMBER
299
+ },
300
+ {
301
+ name: 'timestamp',
302
+ type: U64
303
+ },
304
+ {
305
+ name: 'coinbase',
306
+ type: ETH_ADDRESS
307
+ },
308
+ {
309
+ name: 'feeRecipient',
310
+ type: AZTEC_ADDRESS
311
+ },
312
+ {
313
+ name: 'gasFees',
314
+ type: GAS_FEES
315
+ }
316
+ ]);
317
+ export const BLOCK_HEADER = STRUCT([
318
+ {
319
+ name: 'lastArchive',
320
+ type: APPEND_ONLY_TREE_SNAPSHOT
321
+ },
322
+ {
323
+ name: 'state',
324
+ type: STATE_REFERENCE
325
+ },
326
+ {
327
+ name: 'spongeBlobHash',
328
+ type: FIELD
329
+ },
330
+ {
331
+ name: 'globalVariables',
332
+ type: GLOBAL_VARIABLES
333
+ },
334
+ {
335
+ name: 'totalFees',
336
+ type: FIELD
337
+ },
338
+ {
339
+ name: 'totalManaUsed',
340
+ type: FIELD
341
+ }
342
+ ]);
343
+ export const KEY_VALIDATION_REQUEST = STRUCT([
344
+ {
345
+ name: 'pkMHash',
346
+ type: FIELD
347
+ },
348
+ {
349
+ name: 'skApp',
350
+ type: FIELD
351
+ }
352
+ ]);
353
+ export const PUBLIC_KEYS = STRUCT([
354
+ {
355
+ name: 'npkMHash',
356
+ type: FIELD
357
+ },
358
+ {
359
+ name: 'ivpkM',
360
+ type: POINT
361
+ },
362
+ {
363
+ name: 'ovpkMHash',
364
+ type: FIELD
365
+ },
366
+ {
367
+ name: 'tpkMHash',
368
+ type: FIELD
369
+ },
370
+ {
371
+ name: 'mspkMHash',
372
+ type: FIELD
373
+ },
374
+ {
375
+ name: 'fbpkMHash',
376
+ type: FIELD
377
+ }
378
+ ]);
379
+ export const CONTRACT_INSTANCE = STRUCT([
380
+ {
381
+ name: 'salt',
382
+ type: FIELD
383
+ },
384
+ {
385
+ name: 'deployer',
386
+ type: AZTEC_ADDRESS
387
+ },
388
+ // Note that the nr side of this struct does not contain the current class, only original
389
+ {
390
+ name: 'originalContractClassId',
391
+ type: FIELD
392
+ },
393
+ {
394
+ name: 'initializationHash',
395
+ type: FIELD
396
+ },
397
+ {
398
+ name: 'immutablesHash',
399
+ type: FIELD
400
+ },
401
+ {
402
+ name: 'publicKeys',
403
+ type: PUBLIC_KEYS
404
+ }
405
+ ]);
406
+ const NULLIFIER_LEAF = STRUCT([
407
+ {
408
+ name: 'nullifier',
409
+ type: FIELD
410
+ }
411
+ ]);
412
+ const NULLIFIER_LEAF_PREIMAGE = STRUCT([
413
+ {
414
+ name: 'leaf',
415
+ type: NULLIFIER_LEAF
416
+ },
417
+ {
418
+ name: 'nextKey',
419
+ type: FIELD
420
+ },
421
+ {
422
+ name: 'nextIndex',
423
+ type: BIGINT
424
+ }
425
+ ]);
426
+ export const NULLIFIER_MEMBERSHIP_WITNESS = STRUCT([
427
+ {
428
+ name: 'leafPreimage',
429
+ type: NULLIFIER_LEAF_PREIMAGE
430
+ },
431
+ {
432
+ name: 'witness',
433
+ type: MEMBERSHIP_WITNESS(NULLIFIER_TREE_HEIGHT)
434
+ }
435
+ ]);
436
+ const PUBLIC_DATA_LEAF = STRUCT([
437
+ {
438
+ name: 'slot',
439
+ type: FIELD
440
+ },
441
+ {
442
+ name: 'value',
443
+ type: FIELD
444
+ }
445
+ ]);
446
+ const PUBLIC_DATA_LEAF_PREIMAGE = STRUCT([
447
+ {
448
+ name: 'leaf',
449
+ type: PUBLIC_DATA_LEAF
450
+ },
451
+ {
452
+ name: 'nextKey',
453
+ type: FIELD
454
+ },
455
+ {
456
+ name: 'nextIndex',
457
+ type: BIGINT
458
+ }
459
+ ]);
460
+ export const PUBLIC_DATA_WITNESS = STRUCT([
461
+ {
462
+ name: 'index',
463
+ type: BIGINT
464
+ },
465
+ {
466
+ name: 'leafPreimage',
467
+ type: PUBLIC_DATA_LEAF_PREIMAGE
468
+ },
469
+ {
470
+ name: 'siblingPath',
471
+ type: FIXED_ARRAY(FIELD, PUBLIC_DATA_TREE_HEIGHT)
472
+ }
473
+ ]);
474
+ export const UTILITY_CONTEXT = STRUCT([
475
+ {
476
+ name: 'blockHeader',
477
+ type: BLOCK_HEADER
478
+ },
479
+ {
480
+ name: 'contractAddress',
481
+ type: AZTEC_ADDRESS
482
+ },
483
+ {
484
+ name: 'msgSender',
485
+ type: AZTEC_ADDRESS
486
+ }
487
+ ]);
488
+ export const CALL_PRIVATE_RESULT = STRUCT([
489
+ {
490
+ name: 'endSideEffectCounter',
491
+ type: FIELD
492
+ },
493
+ {
494
+ name: 'returnsHash',
495
+ type: FIELD
496
+ }
497
+ ]);
498
+ export const PUBLIC_KEYS_AND_PARTIAL_ADDRESS = STRUCT([
499
+ {
500
+ name: 'publicKeys',
501
+ type: PUBLIC_KEYS
502
+ },
503
+ {
504
+ name: 'partialAddress',
505
+ type: FIELD
506
+ }
507
+ ]);
508
+ const PUBLIC_DATA_WRITE = STRUCT([
509
+ {
510
+ name: 'leafSlot',
511
+ type: FIELD
512
+ },
513
+ {
514
+ name: 'value',
515
+ type: FIELD
516
+ }
517
+ ]);
518
+ const PRIVATE_LOG = STRUCT([
519
+ {
520
+ name: 'fields',
521
+ type: FIXED_ARRAY(FIELD, PRIVATE_LOG_SIZE_IN_FIELDS)
522
+ },
523
+ {
524
+ name: 'emittedLength',
525
+ type: U32
526
+ }
527
+ ]);
528
+ const FLAT_PUBLIC_LOGS = STRUCT([
529
+ {
530
+ name: 'length',
531
+ type: U32
532
+ },
533
+ {
534
+ name: 'payload',
535
+ type: FIXED_ARRAY(FIELD, FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH)
536
+ }
537
+ ]);
538
+ const CONTRACT_CLASS_LOG_ENTRY = STRUCT([
539
+ {
540
+ name: 'fields',
541
+ type: FIXED_ARRAY(FIELD, CONTRACT_CLASS_LOG_SIZE_IN_FIELDS)
542
+ },
543
+ {
544
+ name: 'emittedLength',
545
+ type: U32
546
+ },
547
+ {
548
+ name: 'contractAddress',
549
+ type: AZTEC_ADDRESS
550
+ }
551
+ ]);
552
+ const CONTRACT_CLASS_LOGS = FIXED_ARRAY(CONTRACT_CLASS_LOG_ENTRY, MAX_CONTRACT_CLASS_LOGS_PER_TX);
553
+ export const TX_EFFECT = STRUCT([
554
+ {
555
+ name: 'revertCode',
556
+ type: U8
557
+ },
558
+ {
559
+ name: 'txHash',
560
+ type: TX_HASH
561
+ },
562
+ {
563
+ name: 'transactionFee',
564
+ type: FIELD
565
+ },
566
+ {
567
+ name: 'noteHashes',
568
+ type: FIXED_ARRAY(FIELD, MAX_NOTE_HASHES_PER_TX)
569
+ },
570
+ {
571
+ name: 'nullifiers',
572
+ type: FIXED_ARRAY(FIELD, MAX_NULLIFIERS_PER_TX)
573
+ },
574
+ {
575
+ name: 'l2ToL1Msgs',
576
+ type: FIXED_ARRAY(FIELD, MAX_L2_TO_L1_MSGS_PER_TX)
577
+ },
578
+ {
579
+ name: 'publicDataWrites',
580
+ type: FIXED_ARRAY(PUBLIC_DATA_WRITE, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX)
581
+ },
582
+ {
583
+ name: 'privateLogs',
584
+ type: FIXED_ARRAY(PRIVATE_LOG, MAX_PRIVATE_LOGS_PER_TX)
585
+ },
586
+ {
587
+ name: 'publicLogs',
588
+ type: FLAT_PUBLIC_LOGS
589
+ },
590
+ {
591
+ name: 'contractClassLogs',
592
+ type: CONTRACT_CLASS_LOGS
593
+ }
594
+ ]);
595
+ export const NOTE = LEAF({
596
+ kind: 'note',
597
+ serialization: {
598
+ fn: (noteData)=>packAsHintedNote({
599
+ contractAddress: noteData.contractAddress,
600
+ owner: noteData.owner,
601
+ randomness: noteData.randomness,
602
+ storageSlot: noteData.storageSlot,
603
+ noteNonce: noteData.noteNonce,
604
+ isPending: noteData.isPending,
605
+ note: noteData.note
606
+ })
607
+ },
608
+ // A packed note is the note's (variable-count) field items followed by 6 metadata scalars, emitted as one field
609
+ // output per element. Its length depends on the note, so it is described as a single variable-width run.
610
+ shape: [
611
+ 'variable'
612
+ ]
613
+ });
614
+ export const NOTE_VALIDATION_REQUEST = LEAF({
615
+ kind: 'note-validation-request',
616
+ deserialization: {
617
+ fn: ([reader])=>NoteValidationRequest.fromFields(reader)
618
+ },
619
+ shape: [
620
+ 'variable'
621
+ ]
622
+ });
623
+ export const EVENT_VALIDATION_REQUEST = LEAF({
624
+ kind: 'event-validation-request',
625
+ deserialization: {
626
+ fn: ([reader])=>EventValidationRequest.fromFields(reader)
627
+ },
628
+ shape: [
629
+ 'variable'
630
+ ]
631
+ });
632
+ export const LOG_RETRIEVAL_REQUEST = STRUCT([
633
+ {
634
+ name: 'contractAddress',
635
+ type: AZTEC_ADDRESS
636
+ },
637
+ {
638
+ name: 'tag',
639
+ type: TAG
640
+ },
641
+ {
642
+ name: 'source',
643
+ type: LOG_SOURCE
644
+ },
645
+ {
646
+ name: 'fromBlock',
647
+ type: OPTION(BLOCK_NUMBER)
648
+ },
649
+ {
650
+ name: 'toBlock',
651
+ type: OPTION(BLOCK_NUMBER)
652
+ }
653
+ ]);
654
+ export const LOG_RETRIEVAL_RESPONSE = STRUCT([
655
+ {
656
+ name: 'logPayload',
657
+ type: FIXED_BOUNDED_VEC(FIELD, PRIVATE_LOG_CIPHERTEXT_LEN)
658
+ },
659
+ {
660
+ name: 'txHash',
661
+ type: TX_HASH
662
+ },
663
+ {
664
+ name: 'uniqueNoteHashesInTx',
665
+ type: FIXED_BOUNDED_VEC(FIELD, MAX_NOTE_HASHES_PER_TX)
666
+ },
667
+ {
668
+ name: 'firstNullifierInTx',
669
+ type: FIELD
670
+ },
671
+ {
672
+ name: 'blockNumber',
673
+ type: BLOCK_NUMBER
674
+ },
675
+ {
676
+ name: 'blockTimestamp',
677
+ type: U64
678
+ },
679
+ {
680
+ name: 'blockHash',
681
+ type: BLOCK_HASH
682
+ }
683
+ ]);
684
+ export const RESOLVED_TX = STRUCT([
685
+ {
686
+ name: 'txHash',
687
+ type: TX_HASH
688
+ },
689
+ {
690
+ name: 'uniqueNoteHashesInTx',
691
+ type: FIXED_BOUNDED_VEC(FIELD, MAX_NOTE_HASHES_PER_TX)
692
+ },
693
+ {
694
+ name: 'firstNullifierInTx',
695
+ type: FIELD
696
+ },
697
+ {
698
+ name: 'blockNumber',
699
+ type: U32
700
+ },
701
+ {
702
+ name: 'blockHash',
703
+ type: FIELD
704
+ }
705
+ ]);
706
+ export const PENDING_TAGGED_LOG = STRUCT([
707
+ {
708
+ name: 'log',
709
+ type: FIXED_BOUNDED_VEC(FIELD, PRIVATE_LOG_SIZE_IN_FIELDS)
710
+ },
711
+ {
712
+ name: 'context',
713
+ type: RESOLVED_TX
714
+ }
715
+ ]);
716
+ export const ORIGIN_BLOCK = STRUCT([
717
+ {
718
+ name: 'blockNumber',
719
+ type: U32
720
+ },
721
+ {
722
+ name: 'blockHash',
723
+ type: FIELD
724
+ }
725
+ ]);
726
+ const ORIGIN_BLOCK_STATE = SCALAR({
727
+ kind: 'origin-block-state',
728
+ serialization: {
729
+ fn: (v)=>[
730
+ new Fr(v)
731
+ ]
732
+ },
733
+ deserialization: {
734
+ fn: ([reader])=>originBlockStateFromNumber(reader.readField().toNumber())
735
+ }
736
+ });
737
+ /** Read-side origin of a retractable fact, carrying the chain state of its origin block. */ export const RETRACTABLE_FACT_ORIGIN = STRUCT([
738
+ {
739
+ name: 'blockNumber',
740
+ type: U32
741
+ },
742
+ {
743
+ name: 'blockHash',
744
+ type: FIELD
745
+ },
746
+ {
747
+ name: 'blockState',
748
+ type: ORIGIN_BLOCK_STATE
749
+ }
750
+ ]);
751
+ export const FACT = STRUCT([
752
+ {
753
+ name: 'factTypeId',
754
+ type: FIELD
755
+ },
756
+ {
757
+ name: 'payload',
758
+ type: EPHEMERAL_ARRAY(FIELD)
759
+ },
760
+ {
761
+ name: 'originBlock',
762
+ type: OPTION(RETRACTABLE_FACT_ORIGIN)
763
+ }
764
+ ]);
765
+ export const FACT_COLLECTION = STRUCT([
766
+ {
767
+ name: 'contractAddress',
768
+ type: AZTEC_ADDRESS
769
+ },
770
+ {
771
+ name: 'scope',
772
+ type: AZTEC_ADDRESS
773
+ },
774
+ {
775
+ name: 'factCollectionTypeId',
776
+ type: FIELD
777
+ },
778
+ {
779
+ name: 'factCollectionId',
780
+ type: FIELD
781
+ },
782
+ {
783
+ name: 'facts',
784
+ type: EPHEMERAL_ARRAY(FACT)
785
+ }
786
+ ]);
787
+ export const PROVIDED_SECRET = STRUCT([
788
+ {
789
+ name: 'secret',
790
+ type: FIELD
791
+ },
792
+ {
793
+ name: 'mode',
794
+ type: DELIVERY_MODE
795
+ }
796
+ ]);
797
+ // ─── Combinator Type Mappings ────────────────────────────────────────────────
798
+ /**
799
+ * A TS-side alias of `base`: the same Noir type on the wire (it inherits `base`'s `kind`, `label`, and `shape`) but a
800
+ * richer TS value. `wrap` maps a base value to the alias, `unwrap` back; a serialize-only alias passes only `unwrap`.
801
+ */ export function ALIAS(base, conversions) {
802
+ const { wrap, unwrap } = conversions;
803
+ return {
804
+ kind: base.kind,
805
+ label: base.label,
806
+ serialization: base.serialization && unwrap ? {
807
+ fn: (value)=>base.serialization.fn(unwrap(value))
808
+ } : undefined,
809
+ deserialization: base.deserialization && wrap ? {
810
+ fn: (readers)=>wrap(base.deserialization.fn(readers))
811
+ } : undefined,
812
+ shape: base.shape
813
+ };
814
+ }
815
+ export function MEMBERSHIP_WITNESS(height) {
816
+ return STRUCT([
817
+ {
818
+ name: 'leafIndex',
819
+ type: BIGINT
820
+ },
821
+ {
822
+ name: 'siblingPath',
823
+ type: FIXED_ARRAY(FIELD, height)
824
+ }
825
+ ]);
826
+ }
827
+ export function ARRAY(inner) {
828
+ return {
829
+ kind: 'array',
830
+ label: `array(${inner.label})`,
831
+ inner,
832
+ serialization: inner.serialization ? {
833
+ fn: (values)=>[
834
+ packElements(inner, values)
835
+ ]
836
+ } : undefined,
837
+ deserialization: inner.deserialization ? {
838
+ fn: ([reader])=>{
839
+ // The whole slot is the array, so read as many elements as its fields hold.
840
+ const elementWidth = fieldWidth(inner.shape);
841
+ return unpackElements(inner, reader, reader.remainingFields() / elementWidth, elementWidth);
842
+ }
843
+ } : undefined,
844
+ // One slot of variable length (all elements flattened into it).
845
+ shape: [
846
+ {
847
+ lenFrom: (size)=>size.length * fieldWidth(inner.shape)
848
+ }
849
+ ]
850
+ };
851
+ }
852
+ /**
853
+ * Noir's fixed-length array `[T; length]` in one slot: serializes `values` (each flattened via `element`)
854
+ * zero-padded to exactly `length * elementWidth` fields, and deserializes all `length` elements back. An absent
855
+ * element is the zero encoding, so the padding is derived from the shape.
856
+ */ export function FIXED_ARRAY(element, length) {
857
+ const elementWidth = fieldWidth(element.shape);
858
+ return {
859
+ kind: 'fixed-array',
860
+ label: `array(${element.label},${length})`,
861
+ inner: element,
862
+ length,
863
+ serialization: element.serialization ? {
864
+ fn: (values)=>[
865
+ padArrayEnd(packElements(element, values), Fr.ZERO, length * elementWidth)
866
+ ]
867
+ } : undefined,
868
+ deserialization: element.deserialization ? {
869
+ fn: ([reader])=>unpackElements(element, reader, length, elementWidth)
870
+ } : undefined,
871
+ shape: [
872
+ {
873
+ len: length * elementWidth
874
+ }
875
+ ]
876
+ };
877
+ }
878
+ /**
879
+ * Maps Noir's `BoundedVec<T, MaxLen>` ↔ TS `BoundedVec<T>` over 2 slots:
880
+ * slot 0 — flat storage, padded/parsed as `maxLength * elementSize` fields
881
+ * slot 1 — length scalar (count of actual items)
882
+ *
883
+ * Both directions are derived from `element`: bidirectional iff `element` has both serialization and deserialization.
884
+ *
885
+ * @example Serializing `BoundedVec.from({ data: [0x41, 0x42], maxLength: 4 })` with `BOUNDED_VEC(U8)`:
886
+ * ```
887
+ * slot 0: [Fr(0x41), Fr(0x42), Fr(0), Fr(0)] // data padded to maxLength
888
+ * slot 1: Fr(2) // actual length
889
+ * ```
890
+ */ export function BOUNDED_VEC(inner) {
891
+ return {
892
+ kind: 'bounded-vec',
893
+ label: `bounded-vec(${inner.label})`,
894
+ inner,
895
+ serialization: inner.serialization ? {
896
+ fn: (bv)=>{
897
+ if (bv.data.length > bv.maxLength) {
898
+ throw new Error(`Got ${bv.data.length} items, but maxLength is ${bv.maxLength}`);
899
+ }
900
+ // Fixed-width elements take their width from the shape (consistent with deserialization); only a
901
+ // variable-width element (e.g. a packed note) falls back to the runtime `elementSize` the value carries.
902
+ const elementWidth = tryFieldWidth(inner.shape) ?? bv.elementSize;
903
+ const flat = padArrayEnd(packElements(inner, bv.data), Fr.ZERO, bv.maxLength * elementWidth);
904
+ return [
905
+ flat,
906
+ new Fr(bv.data.length)
907
+ ];
908
+ }
909
+ } : undefined,
910
+ deserialization: inner.deserialization ? {
911
+ fn: ([storageReader, lengthReader])=>{
912
+ // slot 0 is the padded storage, slot 1 the actual length. Parse only the first `length` elements out of
913
+ // storage, then drain the trailing zero-padding so the storage reader is fully consumed.
914
+ const elementWidth = fieldWidth(inner.shape);
915
+ const storageFields = storageReader.remainingFields();
916
+ if (storageFields % elementWidth !== 0) {
917
+ throw new Error(`Malformed BoundedVec: storage array holds ${storageFields} field(s), which is not a whole number of ` + `${elementWidth}-field elements`);
918
+ }
919
+ // The BoundedVec's maximum length is determined by the size of the storage array, so its length is bounded
920
+ // by it.
921
+ const maxLength = storageFields / elementWidth;
922
+ const length = lengthReader.readField().toNumber();
923
+ if (length > maxLength) {
924
+ throw new Error(`Malformed BoundedVec: length ${length} exceeds the ${maxLength} element(s) its storage array holds`);
925
+ }
926
+ const elements = unpackElements(inner, storageReader, length, elementWidth);
927
+ storageReader.skip(storageReader.remainingFields());
928
+ return BoundedVec.from({
929
+ data: elements,
930
+ maxLength
931
+ });
932
+ }
933
+ } : undefined,
934
+ // slot 0: variable-length storage; slot 1: the length scalar.
935
+ shape: [
936
+ {
937
+ lenFrom: (size)=>size.maxLength * fieldWidth(inner.shape)
938
+ },
939
+ 'scalar'
940
+ ]
941
+ };
942
+ }
943
+ /**
944
+ * Noir's `BoundedVec<T, MaxLen>` with the capacity fixed at construction.
945
+ *
946
+ * Two slots (zero-padded storage, then the length) whose widths are statically known from the fixed capacity.
947
+ *
948
+ * Throws if the input exceeds `maxLength`.
949
+ */ export function FIXED_BOUNDED_VEC(element, maxLength) {
950
+ const width = fieldWidth(element.shape);
951
+ return {
952
+ kind: 'fixed-bounded-vec',
953
+ label: `bounded-vec(${element.label},${maxLength})`,
954
+ inner: element,
955
+ maxLength,
956
+ serialization: element.serialization ? {
957
+ fn: (values)=>{
958
+ if (values.length > maxLength) {
959
+ throw new Error(`Got ${values.length} items, but maxLength is ${maxLength}`);
960
+ }
961
+ const flat = padArrayEnd(packElements(element, values), Fr.ZERO, maxLength * width);
962
+ return [
963
+ flat,
964
+ new Fr(values.length)
965
+ ];
966
+ }
967
+ } : undefined,
968
+ shape: [
969
+ {
970
+ len: maxLength * width
971
+ },
972
+ 'scalar'
973
+ ]
974
+ };
975
+ }
976
+ /**
977
+ * Wraps an inner TypeMapping in Noir-style `Option<T>`, adding a leading discriminant slot.
978
+ *
979
+ * For the `None` case, the inner's slots must still be present on the wire as zero-padding (so `Some` and `None` have
980
+ * identical size). That padding is derived entirely from `inner.shape`.
981
+ *
982
+ * @example Serializing `Option.some(AztecAddress.fromFieldUnsafe(Fr(42)))` with `OPTION(AZTEC_ADDRESS)`:
983
+ * ```
984
+ * slot 0: Fr(1) // discriminant: Some
985
+ * slot 1: Fr(42) // inner value
986
+ * ```
987
+ *
988
+ * @example Serializing `Option.none()` with `OPTION(AZTEC_ADDRESS)`:
989
+ * ```
990
+ * slot 0: Fr(0) // discriminant: None
991
+ * slot 1: Fr(0) // zero-filled from AZTEC_ADDRESS.shape
992
+ * ```
993
+ */ export function OPTION(inner) {
994
+ return {
995
+ kind: 'option',
996
+ label: `option(${inner.label})`,
997
+ inner,
998
+ serialization: inner.serialization ? {
999
+ fn: (opt)=>opt.isSome() ? [
1000
+ Fr.ONE,
1001
+ ...inner.serialization.fn(opt.value)
1002
+ ] : [
1003
+ Fr.ZERO,
1004
+ ...zeroSlotsFromShape(inner.shape, opt.size)
1005
+ ]
1006
+ } : undefined,
1007
+ deserialization: inner.deserialization ? {
1008
+ fn: ([discriminant, ...innerReaders])=>{
1009
+ if (discriminant.readField().isZero()) {
1010
+ // None still carries the inner's zero-padded slots; consume them without parsing, since an inner that
1011
+ // validates its fields would reject the zeros.
1012
+ innerReaders.forEach((reader)=>reader.skip(reader.remainingFields()));
1013
+ return Option.none();
1014
+ }
1015
+ return Option.some(inner.deserialization.fn(innerReaders));
1016
+ }
1017
+ } : undefined,
1018
+ // A leading discriminant slot followed by the inner's slots.
1019
+ shape: [
1020
+ 'scalar',
1021
+ ...inner.shape
1022
+ ]
1023
+ };
1024
+ }
1025
+ export function EPHEMERAL_ARRAY(element) {
1026
+ // EphemeralArray.readAll hands each row's flat fields in as a single reader; reconstruct the element's per-slot
1027
+ // readers from its shape, deserialize, and assert the row was fully consumed so a row with trailing fields is
1028
+ // rejected.
1029
+ const rowElement = element.deserialization ? {
1030
+ kind: element.kind,
1031
+ label: element.label,
1032
+ deserialization: {
1033
+ fn: ([rowReader])=>deserializeElement(element, rowReader.readFieldArray(rowReader.remainingFields()))
1034
+ },
1035
+ // `fn` reads the whole row from one reader, so this is one variable-width slot, not the element's multi-slot
1036
+ // shape.
1037
+ shape: [
1038
+ 'variable'
1039
+ ]
1040
+ } : undefined;
1041
+ return {
1042
+ kind: 'ephemeral-array',
1043
+ label: `ephemeral-array(${element.label})`,
1044
+ inner: element,
1045
+ serialization: element.serialization ? {
1046
+ fn: (ea)=>[
1047
+ ea.materializeSlot((v)=>serializeElement(element, v))
1048
+ ]
1049
+ } : undefined,
1050
+ deserialization: rowElement ? {
1051
+ fn: ([reader])=>EphemeralArray.fromSlot(reader.readField(), rowElement)
1052
+ } : undefined,
1053
+ // A single slot carrying the array's service-slot id.
1054
+ shape: [
1055
+ 'scalar'
1056
+ ]
1057
+ };
1058
+ }
1059
+ /**
1060
+ * A Noir struct: its `shape` and (de)serialization are the concatenation of its fields', so callers never hand-write a
1061
+ * `shape`. `T` is the struct's TS value type and must match the field layout — serialization reads each field by name
1062
+ * off the value, deserialization returns the decoded bag as `T`; convert in the handler, not here, when `T` differs.
1063
+ */ export function STRUCT(fields) {
1064
+ return {
1065
+ kind: 'struct',
1066
+ label: `{${structFieldLabels(fields)}}`,
1067
+ fields,
1068
+ serialization: fields.every((f)=>f.type.serialization) ? {
1069
+ fn: (value)=>{
1070
+ const props = value;
1071
+ return fields.flatMap((f)=>f.type.serialization.fn(props[f.name]));
1072
+ }
1073
+ } : undefined,
1074
+ deserialization: fields.every((f)=>f.type.deserialization) ? {
1075
+ fn: (readers)=>{
1076
+ const props = {};
1077
+ let slot = 0;
1078
+ for (const f of fields){
1079
+ const slotCount = f.type.shape.length;
1080
+ props[f.name] = f.type.deserialization.fn(readers.slice(slot, slot + slotCount));
1081
+ slot += slotCount;
1082
+ }
1083
+ return props;
1084
+ }
1085
+ } : undefined,
1086
+ shape: fields.flatMap((f)=>f.type.shape)
1087
+ };
1088
+ }
1089
+ /**
1090
+ * Maps Noir's `[T]` ↔ TS `T[]` over 2 slots:
1091
+ * slot 0 — length scalar (count of elements)
1092
+ * slot 1 — the elements' fields, laid end to end
1093
+ *
1094
+ * @example Serializing `[{ x: 1, y: 2 }, { x: 3, y: 4 }]` with `VECTOR(POINT)`:
1095
+ * ```
1096
+ * slot 0: Fr(2) // element count, not field count
1097
+ * slot 1: [Fr(1), Fr(2), Fr(3), Fr(4)] // each element's fields end to end
1098
+ * ```
1099
+ */ export function VECTOR(inner) {
1100
+ return {
1101
+ kind: 'vector',
1102
+ label: `vector(${inner.label})`,
1103
+ inner,
1104
+ serialization: inner.serialization ? {
1105
+ fn: (values)=>[
1106
+ new Fr(values.length),
1107
+ packElements(inner, values)
1108
+ ]
1109
+ } : undefined,
1110
+ deserialization: inner.deserialization ? {
1111
+ fn: ([lengthReader, contentsReader])=>{
1112
+ const length = lengthReader.readField().toNumber();
1113
+ // If the shape does not fix a width, every element shares one unknown width, so dividing the contents by
1114
+ // the count recovers it.
1115
+ const elementWidth = tryFieldWidth(inner.shape) ?? contentsReader.remainingFields() / length;
1116
+ return unpackElements(inner, contentsReader, length, elementWidth);
1117
+ }
1118
+ } : undefined,
1119
+ // slot 0: the length scalar; slot 1: the contents, sized by that length.
1120
+ shape: [
1121
+ 'scalar',
1122
+ {
1123
+ lenFrom: (size)=>size.length * fieldWidth(inner.shape)
1124
+ }
1125
+ ]
1126
+ };
1127
+ }
1128
+ export function isArrayMapping(type) {
1129
+ return type.kind === 'array';
1130
+ }
1131
+ export function isVectorMapping(type) {
1132
+ return type.kind === 'vector';
1133
+ }
1134
+ export function isBoundedVecMapping(type) {
1135
+ return type.kind === 'bounded-vec';
1136
+ }
1137
+ export function isOptionMapping(type) {
1138
+ return type.kind === 'option';
1139
+ }
1140
+ export function isStructMapping(type) {
1141
+ return type.kind === 'struct';
1142
+ }
1143
+ export function isFixedArrayMapping(type) {
1144
+ return type.kind === 'fixed-array';
1145
+ }
1146
+ export function isFixedBoundedVecMapping(type) {
1147
+ return type.kind === 'fixed-bounded-vec';
1148
+ }
1149
+ export function isEphemeralArrayMapping(type) {
1150
+ return type.kind === 'ephemeral-array';
1151
+ }
1152
+ /**
1153
+ * The comma-joined labels of a struct's fields, with nested struct labels spliced into the parent: nesting affects
1154
+ * neither the wire (struct slots concatenate) nor the interface, so the label treats nested and flat declarations as
1155
+ * the same type.
1156
+ */ function structFieldLabels(fields) {
1157
+ return fields.map((f)=>isStructMapping(f.type) ? structFieldLabels(f.type.fields) : f.type.label).join(',');
1158
+ }
1159
+ /** The field's value as a bigint, asserted to fit a `bits`-wide uint. */ function uintFromField(field, bits) {
1160
+ const max = 2n ** BigInt(bits) - 1n;
1161
+ const value = field.toBigInt();
1162
+ if (value > max) {
1163
+ throw new Error(`u${bits} overflow: value ${value} exceeds max (${max})`);
1164
+ }
1165
+ return value;
1166
+ }
1167
+ /** Number of InputSlots a deserializable type spans, derived from its {@link TypeMapping.shape}. */ export function slotsOf(mapping) {
1168
+ return mapping.shape.length;
1169
+ }
1170
+ /** Number of fields a fully-static shape occupies, or `undefined` if any slot is variable-width. */ export function tryFieldWidth(shape) {
1171
+ let total = 0;
1172
+ for (const slot of shape){
1173
+ if (slot === 'scalar') {
1174
+ total += 1;
1175
+ } else if (typeof slot === 'object' && 'len' in slot) {
1176
+ total += slot.len;
1177
+ } else {
1178
+ return undefined;
1179
+ }
1180
+ }
1181
+ return total;
1182
+ }
1183
+ /** Number of fields a fully-static shape occupies. Throws on a variable-width shape, whose field count isn't known. */ function fieldWidth(shape) {
1184
+ const width = tryFieldWidth(shape);
1185
+ if (width === undefined) {
1186
+ throw new Error('Cannot compute a fixed field width for a variable-width shape');
1187
+ }
1188
+ return width;
1189
+ }
1190
+ /** Reconstructs a value's per-slot readers from a flat run of fields, using its shape (inverse of slot-flattening). */ function splitByShape(fields, shape) {
1191
+ const readers = [];
1192
+ let cursor = 0;
1193
+ shape.forEach((slot, i)=>{
1194
+ if (slot === 'scalar' || typeof slot === 'object' && 'len' in slot) {
1195
+ const width = slot === 'scalar' ? 1 : slot.len;
1196
+ if (cursor + width > fields.length) {
1197
+ throw new Error(`Not enough fields to reconstruct shape: needed ${width}, had ${fields.length - cursor}`);
1198
+ }
1199
+ readers.push(new FieldReader(fields.slice(cursor, cursor + width)));
1200
+ cursor += width;
1201
+ } else {
1202
+ // A variable slot (sized or not) takes whatever remains, so it must be last.
1203
+ if (i !== shape.length - 1) {
1204
+ throw new Error('A variable-width slot must be last to be reconstructed from a flat field array');
1205
+ }
1206
+ readers.push(new FieldReader(fields.slice(cursor)));
1207
+ cursor = fields.length;
1208
+ }
1209
+ });
1210
+ if (cursor !== fields.length) {
1211
+ throw new Error(`Malformed flattened value: ${fields.length - cursor} unexpected trailing field(s)`);
1212
+ }
1213
+ return readers;
1214
+ }
1215
+ /** Serializes one element to its flat fields. Element must be serializable. */ function serializeElement(element, value) {
1216
+ return element.serialization.fn(value).flat();
1217
+ }
1218
+ /**
1219
+ * Deserializes one element from its exact flat fields, reconstructing its per-slot readers from its shape and asserting
1220
+ * they are fully consumed (so trailing fields are rejected). Element must be deserializable.
1221
+ */ function deserializeElement(element, fields) {
1222
+ const readers = splitByShape(fields, element.shape);
1223
+ const value = element.deserialization.fn(readers);
1224
+ assertReadersConsumed(readers);
1225
+ return value;
1226
+ }
1227
+ /** Flattens `values` into one contiguous run of fields by serializing each element. Element must be serializable. */ function packElements(element, values) {
1228
+ return values.flatMap((v)=>serializeElement(element, v));
1229
+ }
1230
+ /**
1231
+ * Reads `count` `elementWidth`-field elements out of a packed run (the inverse of {@link packElements}). Element must
1232
+ * be deserializable. When the element's shape fixes no width, `elementWidth` comes from the run's own size, and such an
1233
+ * element must occupy a single slot, since nothing records how many of a chunk's fields belong to each slot.
1234
+ */ function unpackElements(element, reader, count, elementWidth) {
1235
+ if (tryFieldWidth(element.shape) === undefined && element.shape.length !== 1) {
1236
+ throw new Error(`Cannot unpack ${element.label} elements: their width is not fixed by the type, so we can't tell how many ` + `fields each of their ${element.shape.length} slots holds`);
1237
+ }
1238
+ return Array.from({
1239
+ length: count
1240
+ }, ()=>deserializeElement(element, reader.readFieldArray(elementWidth)));
1241
+ }
1242
+ /** Builds the zero-filled slots for a `None`, matching a `Some`'s wire shape (variable slots sized from `size`). */ function zeroSlotsFromShape(shape, size) {
1243
+ return shape.map((slot)=>{
1244
+ if (slot === 'scalar') {
1245
+ return Fr.ZERO;
1246
+ }
1247
+ if (slot === 'variable') {
1248
+ throw new Error('Cannot zero-fill an unsized variable-width slot');
1249
+ }
1250
+ if ('len' in slot) {
1251
+ return Array(slot.len).fill(Fr.ZERO);
1252
+ }
1253
+ if (size === undefined) {
1254
+ throw new Error('Serializing Option.none() over a variable-size inner needs a size, e.g. Option.none({ length: n })');
1255
+ }
1256
+ return Array(slot.lenFrom(size)).fill(Fr.ZERO);
1257
+ });
1258
+ }