@aztec/pxe 0.0.0-test.1 → 0.0.1-commit.5476d83

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 (328) hide show
  1. package/README.md +5 -5
  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 +39 -0
  5. package/dest/config/index.d.ts +11 -24
  6. package/dest/config/index.d.ts.map +1 -1
  7. package/dest/config/index.js +18 -33
  8. package/dest/config/package_info.d.ts +1 -1
  9. package/dest/config/package_info.js +1 -1
  10. package/dest/contract_function_simulator/contract_function_simulator.d.ts +56 -0
  11. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -0
  12. package/dest/contract_function_simulator/contract_function_simulator.js +300 -0
  13. package/dest/contract_function_simulator/execution_data_provider.d.ts +265 -0
  14. package/dest/contract_function_simulator/execution_data_provider.d.ts.map +1 -0
  15. package/dest/contract_function_simulator/execution_data_provider.js +14 -0
  16. package/dest/contract_function_simulator/execution_note_cache.d.ts +94 -0
  17. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -0
  18. package/dest/contract_function_simulator/execution_note_cache.js +190 -0
  19. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +16 -0
  20. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -0
  21. package/dest/contract_function_simulator/execution_tagging_index_cache.js +26 -0
  22. package/dest/contract_function_simulator/hashed_values_cache.d.ts +28 -0
  23. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -0
  24. package/dest/contract_function_simulator/hashed_values_cache.js +36 -0
  25. package/dest/contract_function_simulator/index.d.ts +14 -0
  26. package/dest/contract_function_simulator/index.d.ts.map +1 -0
  27. package/dest/contract_function_simulator/index.js +12 -0
  28. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +20 -0
  29. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -0
  30. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +37 -0
  31. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +15 -0
  32. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -0
  33. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +25 -0
  34. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +17 -0
  35. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -0
  36. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +65 -0
  37. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +23 -0
  38. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -0
  39. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +48 -0
  40. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +22 -0
  41. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -0
  42. package/dest/contract_function_simulator/noir-structs/utility_context.js +33 -0
  43. package/dest/contract_function_simulator/oracle/index.d.ts +14 -0
  44. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -0
  45. package/dest/contract_function_simulator/oracle/index.js +2 -0
  46. package/dest/contract_function_simulator/oracle/interfaces.d.ts +100 -0
  47. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -0
  48. package/dest/contract_function_simulator/oracle/interfaces.js +4 -0
  49. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +17 -0
  50. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -0
  51. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +24 -0
  52. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +24 -0
  53. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -0
  54. package/dest/contract_function_simulator/oracle/note_packing_utils.js +50 -0
  55. package/dest/contract_function_simulator/oracle/oracle.d.ts +58 -0
  56. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -0
  57. package/dest/contract_function_simulator/oracle/oracle.js +333 -0
  58. package/dest/contract_function_simulator/oracle/private_execution.d.ts +48 -0
  59. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -0
  60. package/dest/contract_function_simulator/oracle/private_execution.js +123 -0
  61. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +231 -0
  62. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -0
  63. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +428 -0
  64. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +153 -0
  65. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -0
  66. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +265 -0
  67. package/dest/contract_function_simulator/pick_notes.d.ts +85 -0
  68. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -0
  69. package/dest/contract_function_simulator/pick_notes.js +51 -0
  70. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +6 -0
  71. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -0
  72. package/dest/contract_function_simulator/proxied_contract_data_source.js +62 -0
  73. package/dest/contract_function_simulator/proxied_node.d.ts +9 -0
  74. package/dest/contract_function_simulator/proxied_node.d.ts.map +1 -0
  75. package/dest/contract_function_simulator/proxied_node.js +27 -0
  76. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +122 -0
  77. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +1 -0
  78. package/dest/contract_function_simulator/pxe_oracle_interface.js +694 -0
  79. package/dest/entrypoints/client/bundle/index.d.ts +5 -3
  80. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  81. package/dest/entrypoints/client/bundle/index.js +3 -2
  82. package/dest/entrypoints/client/bundle/utils.d.ts +10 -10
  83. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  84. package/dest/entrypoints/client/bundle/utils.js +18 -12
  85. package/dest/entrypoints/client/lazy/index.d.ts +5 -3
  86. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  87. package/dest/entrypoints/client/lazy/index.js +3 -2
  88. package/dest/entrypoints/client/lazy/utils.d.ts +9 -9
  89. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  90. package/dest/entrypoints/client/lazy/utils.js +17 -11
  91. package/dest/entrypoints/pxe_creation_options.d.ts +14 -0
  92. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -0
  93. package/dest/entrypoints/server/index.d.ts +6 -4
  94. package/dest/entrypoints/server/index.d.ts.map +1 -1
  95. package/dest/entrypoints/server/index.js +4 -3
  96. package/dest/entrypoints/server/utils.d.ts +8 -16
  97. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  98. package/dest/entrypoints/server/utils.js +30 -35
  99. package/dest/error_enriching.d.ts +11 -0
  100. package/dest/error_enriching.d.ts.map +1 -0
  101. package/dest/{pxe_service/error_enriching.js → error_enriching.js} +26 -18
  102. package/dest/oracle_version.d.ts +3 -0
  103. package/dest/oracle_version.d.ts.map +1 -0
  104. package/dest/oracle_version.js +10 -0
  105. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +28 -0
  106. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -0
  107. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.js +271 -0
  108. package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.d.ts +3 -0
  109. package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.d.ts.map +1 -0
  110. package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.js +48 -0
  111. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +4 -0
  112. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +1 -0
  113. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.js +41 -0
  114. package/dest/private_kernel/hints/index.d.ts +3 -0
  115. package/dest/private_kernel/hints/index.d.ts.map +1 -0
  116. package/dest/{kernel_prover → private_kernel}/hints/index.js +1 -0
  117. package/dest/private_kernel/index.d.ts +3 -0
  118. package/dest/private_kernel/index.d.ts.map +1 -0
  119. package/dest/private_kernel/index.js +2 -0
  120. package/dest/private_kernel/private_kernel_execution_prover.d.ts +44 -0
  121. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -0
  122. package/dest/private_kernel/private_kernel_execution_prover.js +289 -0
  123. package/dest/private_kernel/private_kernel_oracle.d.ts +62 -0
  124. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -0
  125. package/dest/private_kernel/private_kernel_oracle.js +4 -0
  126. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +45 -0
  127. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +1 -0
  128. package/dest/{kernel_oracle/index.js → private_kernel/private_kernel_oracle_impl.js} +19 -9
  129. package/dest/pxe.d.ts +240 -0
  130. package/dest/pxe.d.ts.map +1 -0
  131. package/dest/pxe.js +771 -0
  132. package/dest/storage/address_data_provider/address_data_provider.d.ts +2 -4
  133. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +1 -1
  134. package/dest/storage/address_data_provider/address_data_provider.js +0 -3
  135. package/dest/storage/address_data_provider/index.d.ts +1 -1
  136. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +15 -6
  137. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +1 -1
  138. package/dest/storage/capsule_data_provider/capsule_data_provider.js +85 -24
  139. package/dest/storage/capsule_data_provider/index.d.ts +1 -1
  140. package/dest/storage/contract_data_provider/contract_data_provider.d.ts +13 -58
  141. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +1 -1
  142. package/dest/storage/contract_data_provider/contract_data_provider.js +89 -79
  143. package/dest/storage/contract_data_provider/index.d.ts +1 -2
  144. package/dest/storage/contract_data_provider/index.d.ts.map +1 -1
  145. package/dest/storage/contract_data_provider/index.js +0 -1
  146. package/dest/storage/contract_data_provider/private_functions_tree.d.ts +3 -42
  147. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +1 -1
  148. package/dest/storage/contract_data_provider/private_functions_tree.js +9 -61
  149. package/dest/storage/index.d.ts +3 -4
  150. package/dest/storage/index.d.ts.map +1 -1
  151. package/dest/storage/index.js +2 -3
  152. package/dest/storage/metadata.d.ts +2 -0
  153. package/dest/storage/metadata.d.ts.map +1 -0
  154. package/dest/storage/metadata.js +1 -0
  155. package/dest/storage/note_data_provider/index.d.ts +2 -2
  156. package/dest/storage/note_data_provider/index.d.ts.map +1 -1
  157. package/dest/storage/note_data_provider/index.js +1 -1
  158. package/dest/storage/note_data_provider/note_data_provider.d.ts +73 -10
  159. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +1 -1
  160. package/dest/storage/note_data_provider/note_data_provider.js +145 -83
  161. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +37 -0
  162. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +1 -0
  163. package/dest/storage/private_event_data_provider/private_event_data_provider.js +105 -0
  164. package/dest/storage/sync_data_provider/index.d.ts +1 -1
  165. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +3 -5
  166. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +1 -1
  167. package/dest/storage/sync_data_provider/sync_data_provider.js +2 -5
  168. package/dest/storage/tagging_data_provider/index.d.ts +1 -1
  169. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +29 -7
  170. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +1 -1
  171. package/dest/storage/tagging_data_provider/tagging_data_provider.js +48 -24
  172. package/dest/synchronizer/index.d.ts +1 -1
  173. package/dest/synchronizer/synchronizer.d.ts +8 -10
  174. package/dest/synchronizer/synchronizer.d.ts.map +1 -1
  175. package/dest/synchronizer/synchronizer.js +17 -19
  176. package/dest/tagging/constants.d.ts +2 -0
  177. package/dest/tagging/constants.d.ts.map +1 -0
  178. package/dest/tagging/constants.js +2 -0
  179. package/dest/tagging/index.d.ts +7 -0
  180. package/dest/tagging/index.d.ts.map +1 -0
  181. package/dest/tagging/index.js +5 -0
  182. package/dest/tagging/siloed_tag.d.ts +14 -0
  183. package/dest/tagging/siloed_tag.d.ts.map +1 -0
  184. package/dest/tagging/siloed_tag.js +20 -0
  185. package/dest/tagging/tag.d.ts +12 -0
  186. package/dest/tagging/tag.d.ts.map +1 -0
  187. package/dest/tagging/tag.js +17 -0
  188. package/dest/tagging/utils.d.ts +18 -0
  189. package/dest/tagging/utils.d.ts.map +1 -0
  190. package/dest/tagging/utils.js +24 -0
  191. package/package.json +37 -34
  192. package/src/bin/check_oracle_version.ts +50 -0
  193. package/src/config/index.ts +27 -55
  194. package/src/config/package_info.ts +1 -1
  195. package/src/contract_function_simulator/contract_function_simulator.ts +553 -0
  196. package/src/contract_function_simulator/execution_data_provider.ts +333 -0
  197. package/src/contract_function_simulator/execution_note_cache.ts +229 -0
  198. package/src/contract_function_simulator/execution_tagging_index_cache.ts +32 -0
  199. package/src/contract_function_simulator/hashed_values_cache.ts +47 -0
  200. package/src/contract_function_simulator/index.ts +13 -0
  201. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +47 -0
  202. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +27 -0
  203. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +69 -0
  204. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +61 -0
  205. package/src/contract_function_simulator/noir-structs/utility_context.ts +42 -0
  206. package/src/contract_function_simulator/oracle/index.ts +16 -0
  207. package/src/contract_function_simulator/oracle/interfaces.ts +170 -0
  208. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +23 -0
  209. package/src/contract_function_simulator/oracle/note_packing_utils.ts +54 -0
  210. package/src/contract_function_simulator/oracle/oracle.ts +583 -0
  211. package/src/contract_function_simulator/oracle/private_execution.ts +207 -0
  212. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +633 -0
  213. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +358 -0
  214. package/src/contract_function_simulator/pick_notes.ts +141 -0
  215. package/src/contract_function_simulator/proxied_contract_data_source.ts +66 -0
  216. package/src/contract_function_simulator/proxied_node.ts +33 -0
  217. package/src/contract_function_simulator/pxe_oracle_interface.ts +1008 -0
  218. package/src/entrypoints/client/bundle/index.ts +4 -2
  219. package/src/entrypoints/client/bundle/utils.ts +36 -36
  220. package/src/entrypoints/client/lazy/index.ts +4 -2
  221. package/src/entrypoints/client/lazy/utils.ts +36 -31
  222. package/src/entrypoints/{client/pxe_creation_options.ts → pxe_creation_options.ts} +4 -1
  223. package/src/entrypoints/server/index.ts +5 -3
  224. package/src/entrypoints/server/utils.ts +58 -50
  225. package/src/{pxe_service/error_enriching.ts → error_enriching.ts} +36 -27
  226. package/src/oracle_version.ts +11 -0
  227. package/src/{kernel_prover → private_kernel}/hints/build_private_kernel_reset_private_inputs.ts +158 -146
  228. package/src/private_kernel/hints/compute_side_effect_uniqueness_hints.ts +173 -0
  229. package/src/private_kernel/hints/compute_tx_include_by_timestamp.ts +58 -0
  230. package/src/{kernel_prover → private_kernel}/hints/index.ts +1 -0
  231. package/src/private_kernel/index.ts +2 -0
  232. package/src/private_kernel/private_kernel_execution_prover.ts +436 -0
  233. package/src/{kernel_prover/proving_data_oracle.ts → private_kernel/private_kernel_oracle.ts} +17 -29
  234. package/src/{kernel_oracle/index.ts → private_kernel/private_kernel_oracle_impl.ts} +30 -15
  235. package/src/pxe.ts +1085 -0
  236. package/src/storage/address_data_provider/address_data_provider.ts +1 -7
  237. package/src/storage/capsule_data_provider/capsule_data_provider.ts +97 -30
  238. package/src/storage/contract_data_provider/contract_data_provider.ts +109 -93
  239. package/src/storage/contract_data_provider/index.ts +0 -1
  240. package/src/storage/contract_data_provider/private_functions_tree.ts +11 -75
  241. package/src/storage/index.ts +2 -4
  242. package/src/storage/metadata.ts +1 -0
  243. package/src/storage/note_data_provider/index.ts +1 -1
  244. package/src/storage/note_data_provider/note_data_provider.ts +176 -122
  245. package/src/storage/private_event_data_provider/private_event_data_provider.ts +143 -0
  246. package/src/storage/sync_data_provider/sync_data_provider.ts +4 -10
  247. package/src/storage/tagging_data_provider/tagging_data_provider.ts +58 -30
  248. package/src/synchronizer/synchronizer.ts +21 -22
  249. package/src/tagging/constants.ts +2 -0
  250. package/src/tagging/index.ts +6 -0
  251. package/src/tagging/siloed_tag.ts +22 -0
  252. package/src/tagging/tag.ts +16 -0
  253. package/src/tagging/utils.ts +31 -0
  254. package/dest/bin/index.d.ts +0 -3
  255. package/dest/bin/index.d.ts.map +0 -1
  256. package/dest/bin/index.js +0 -28
  257. package/dest/entrypoints/client/pxe_creation_options.d.ts +0 -11
  258. package/dest/entrypoints/client/pxe_creation_options.d.ts.map +0 -1
  259. package/dest/kernel_oracle/index.d.ts +0 -45
  260. package/dest/kernel_oracle/index.d.ts.map +0 -1
  261. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  262. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  263. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.js +0 -270
  264. package/dest/kernel_prover/hints/index.d.ts +0 -2
  265. package/dest/kernel_prover/hints/index.d.ts.map +0 -1
  266. package/dest/kernel_prover/index.d.ts +0 -3
  267. package/dest/kernel_prover/index.d.ts.map +0 -1
  268. package/dest/kernel_prover/index.js +0 -2
  269. package/dest/kernel_prover/kernel_prover.d.ts +0 -38
  270. package/dest/kernel_prover/kernel_prover.d.ts.map +0 -1
  271. package/dest/kernel_prover/kernel_prover.js +0 -217
  272. package/dest/kernel_prover/proving_data_oracle.d.ts +0 -73
  273. package/dest/kernel_prover/proving_data_oracle.d.ts.map +0 -1
  274. package/dest/kernel_prover/proving_data_oracle.js +0 -4
  275. package/dest/note_decryption_utils/add_public_values_to_payload.d.ts +0 -11
  276. package/dest/note_decryption_utils/add_public_values_to_payload.d.ts.map +0 -1
  277. package/dest/note_decryption_utils/add_public_values_to_payload.js +0 -47
  278. package/dest/pxe_http/index.d.ts +0 -2
  279. package/dest/pxe_http/index.d.ts.map +0 -1
  280. package/dest/pxe_http/index.js +0 -1
  281. package/dest/pxe_http/pxe_http_server.d.ts +0 -16
  282. package/dest/pxe_http/pxe_http_server.d.ts.map +0 -1
  283. package/dest/pxe_http/pxe_http_server.js +0 -27
  284. package/dest/pxe_oracle_interface/index.d.ts +0 -159
  285. package/dest/pxe_oracle_interface/index.d.ts.map +0 -1
  286. package/dest/pxe_oracle_interface/index.js +0 -692
  287. package/dest/pxe_oracle_interface/tagging_utils.d.ts +0 -17
  288. package/dest/pxe_oracle_interface/tagging_utils.d.ts.map +0 -1
  289. package/dest/pxe_oracle_interface/tagging_utils.js +0 -23
  290. package/dest/pxe_service/error_enriching.d.ts +0 -11
  291. package/dest/pxe_service/error_enriching.d.ts.map +0 -1
  292. package/dest/pxe_service/index.d.ts +0 -3
  293. package/dest/pxe_service/index.d.ts.map +0 -1
  294. package/dest/pxe_service/index.js +0 -2
  295. package/dest/pxe_service/pxe_service.d.ts +0 -111
  296. package/dest/pxe_service/pxe_service.d.ts.map +0 -1
  297. package/dest/pxe_service/pxe_service.js +0 -664
  298. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts +0 -11
  299. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts.map +0 -1
  300. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.js +0 -20
  301. package/dest/storage/auth_witness_data_provider/index.d.ts +0 -2
  302. package/dest/storage/auth_witness_data_provider/index.d.ts.map +0 -1
  303. package/dest/storage/auth_witness_data_provider/index.js +0 -1
  304. package/dest/storage/data_provider.d.ts +0 -4
  305. package/dest/storage/data_provider.d.ts.map +0 -1
  306. package/dest/storage/data_provider.js +0 -1
  307. package/dest/storage/note_data_provider/note_dao.d.ts +0 -106
  308. package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
  309. package/dest/storage/note_data_provider/note_dao.js +0 -106
  310. package/dest/test/pxe_test_suite.d.ts +0 -3
  311. package/dest/test/pxe_test_suite.d.ts.map +0 -1
  312. package/dest/test/pxe_test_suite.js +0 -97
  313. package/src/bin/index.ts +0 -38
  314. package/src/kernel_prover/index.ts +0 -2
  315. package/src/kernel_prover/kernel_prover.ts +0 -351
  316. package/src/note_decryption_utils/add_public_values_to_payload.ts +0 -64
  317. package/src/pxe_http/index.ts +0 -1
  318. package/src/pxe_http/pxe_http_server.ts +0 -29
  319. package/src/pxe_oracle_interface/index.ts +0 -925
  320. package/src/pxe_oracle_interface/tagging_utils.ts +0 -32
  321. package/src/pxe_service/index.ts +0 -2
  322. package/src/pxe_service/pxe_service.ts +0 -949
  323. package/src/storage/auth_witness_data_provider/auth_witness_data_provider.ts +0 -34
  324. package/src/storage/auth_witness_data_provider/index.ts +0 -1
  325. package/src/storage/data_provider.ts +0 -3
  326. package/src/storage/note_data_provider/note_dao.ts +0 -162
  327. package/src/test/pxe_test_suite.ts +0 -111
  328. /package/dest/entrypoints/{client/pxe_creation_options.js → pxe_creation_options.js} +0 -0
@@ -0,0 +1,47 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import { FieldReader } from '@aztec/foundation/serialize';
3
+ import { EventSelector } from '@aztec/stdlib/abi';
4
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
+ import { TxHash } from '@aztec/stdlib/tx';
6
+
7
+ // TODO(#14617): should we compute this from constants? This value is aztec-nr specific.
8
+ const MAX_EVENT_SERIALIZED_LEN = 12;
9
+
10
+ /**
11
+ * Intermediate struct used to perform batch event validation by PXE. The `utilityValidateEnqueuedNotesAndEvents` oracle
12
+ * expects for values of this type to be stored in a `CapsuleArray`.
13
+ */
14
+ export class EventValidationRequest {
15
+ constructor(
16
+ public contractAddress: AztecAddress,
17
+ public eventTypeId: EventSelector,
18
+ public serializedEvent: Fr[],
19
+ public eventCommitment: Fr,
20
+ public txHash: TxHash,
21
+ public recipient: AztecAddress,
22
+ ) {}
23
+
24
+ static fromFields(fields: Fr[] | FieldReader): EventValidationRequest {
25
+ const reader = FieldReader.asReader(fields);
26
+
27
+ const contractAddress = AztecAddress.fromField(reader.readField());
28
+ const eventTypeId = EventSelector.fromField(reader.readField());
29
+
30
+ const eventStorage = reader.readFieldArray(MAX_EVENT_SERIALIZED_LEN);
31
+ const eventLen = reader.readField().toNumber();
32
+ const serializedEvent = eventStorage.slice(0, eventLen);
33
+
34
+ const eventCommitment = reader.readField();
35
+ const txHash = TxHash.fromField(reader.readField());
36
+ const recipient = AztecAddress.fromField(reader.readField());
37
+
38
+ return new EventValidationRequest(
39
+ contractAddress,
40
+ eventTypeId,
41
+ serializedEvent,
42
+ eventCommitment,
43
+ txHash,
44
+ recipient,
45
+ );
46
+ }
47
+ }
@@ -0,0 +1,27 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import { FieldReader } from '@aztec/foundation/serialize';
3
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+
5
+ /**
6
+ * Intermediate struct used to perform batch log retrieval by PXE. The `utilityBulkRetrieveLogs` oracle expects values of this
7
+ * type to be stored in a `CapsuleArray`.
8
+ */
9
+ export class LogRetrievalRequest {
10
+ constructor(
11
+ public contractAddress: AztecAddress,
12
+ public unsiloedTag: Fr,
13
+ ) {}
14
+
15
+ toFields(): Fr[] {
16
+ return [this.contractAddress.toField(), this.unsiloedTag];
17
+ }
18
+
19
+ static fromFields(fields: Fr[] | FieldReader): LogRetrievalRequest {
20
+ const reader = FieldReader.asReader(fields);
21
+
22
+ const contractAddress = AztecAddress.fromField(reader.readField());
23
+ const unsiloedTag = reader.readField();
24
+
25
+ return new LogRetrievalRequest(contractAddress, unsiloedTag);
26
+ }
27
+ }
@@ -0,0 +1,69 @@
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/fields';
4
+ import type { TxHash } from '@aztec/stdlib/tx';
5
+
6
+ import { MAX_NOTE_PACKED_LEN } from './note_validation_request.js';
7
+
8
+ const MAX_PUBLIC_LOG_LEN_FOR_NOTE_COMPLETION = MAX_NOTE_PACKED_LEN;
9
+ const MAX_LOG_CONTENT_LEN = Math.max(MAX_PUBLIC_LOG_LEN_FOR_NOTE_COMPLETION, PRIVATE_LOG_CIPHERTEXT_LEN);
10
+
11
+ /**
12
+ * Intermediate struct used to perform batch log retrieval by PXE. The `utilityBulkRetrieveLogs` oracle stores values of this
13
+ * type in a `CapsuleArray`.
14
+ */
15
+ export class LogRetrievalResponse {
16
+ constructor(
17
+ public logPayload: Fr[],
18
+ public txHash: TxHash,
19
+ public uniqueNoteHashesInTx: Fr[],
20
+ public firstNullifierInTx: Fr,
21
+ ) {}
22
+
23
+ toFields(): Fr[] {
24
+ return [
25
+ // We need to trim the payload since public logs can be larger than MAX_LOG_CONTENT_LEN.
26
+ // This is currently not a problem since this class is only used with public logs for note completion.
27
+ ...serializeBoundedVec(this.logPayload.slice(0, MAX_LOG_CONTENT_LEN), MAX_LOG_CONTENT_LEN),
28
+ this.txHash.hash,
29
+ ...serializeBoundedVec(this.uniqueNoteHashesInTx, MAX_NOTE_HASHES_PER_TX),
30
+ this.firstNullifierInTx,
31
+ ];
32
+ }
33
+
34
+ static toEmptyFields(): Fr[] {
35
+ const serializationLen =
36
+ MAX_LOG_CONTENT_LEN +
37
+ 1 /* logPayload BVec */ +
38
+ 1 /* txHash */ +
39
+ MAX_NOTE_HASHES_PER_TX +
40
+ 1 /* uniqueNoteHashesInTx BVec */ +
41
+ 1; /* firstNullifierInTx */
42
+ return range(serializationLen).map(_ => Fr.zero());
43
+ }
44
+
45
+ static toSerializedOption(response: LogRetrievalResponse | null): Fr[] {
46
+ if (response) {
47
+ return [new Fr(1), ...response.toFields()];
48
+ } else {
49
+ return [new Fr(0), ...LogRetrievalResponse.toEmptyFields()];
50
+ }
51
+ }
52
+ }
53
+
54
+ /**
55
+ * Helper function to serialize a bounded vector according to Noir's BoundedVec format
56
+ * @param values - The values to serialize
57
+ * @param maxLength - The maximum length of the bounded vector
58
+ * @returns The serialized bounded vector as Fr[]
59
+ */
60
+ function serializeBoundedVec(values: Fr[], maxLength: number): Fr[] {
61
+ if (values.length > maxLength) {
62
+ throw new Error(`Attempted to serialize ${values} values into a BoundedVec with max length ${maxLength}`);
63
+ }
64
+
65
+ const lengthDiff = maxLength - values.length;
66
+ const zeroPaddingArray = Array(lengthDiff).fill(Fr.ZERO);
67
+ const storage = values.concat(zeroPaddingArray);
68
+ return [...storage, new Fr(values.length)];
69
+ }
@@ -0,0 +1,61 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import { FieldReader } from '@aztec/foundation/serialize';
3
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import { TxHash } from '@aztec/stdlib/tx';
5
+
6
+ // TODO(#14617): should we compute this from constants? This value is aztec-nr specific.
7
+ export const MAX_NOTE_PACKED_LEN = 11;
8
+
9
+ /**
10
+ * Intermediate struct used to perform batch note validation by PXE. The `utilityValidateEnqueuedNotesAndEvents` oracle
11
+ * expects for values of this type to be stored in a `CapsuleArray`.
12
+ */
13
+ export class NoteValidationRequest {
14
+ constructor(
15
+ public contractAddress: AztecAddress,
16
+ public storageSlot: Fr,
17
+ public randomness: Fr,
18
+ public noteNonce: Fr,
19
+ public content: Fr[],
20
+ public noteHash: Fr,
21
+ public nullifier: Fr,
22
+ public txHash: TxHash,
23
+ public recipient: AztecAddress,
24
+ ) {}
25
+
26
+ static fromFields(fields: Fr[] | FieldReader): NoteValidationRequest {
27
+ const reader = FieldReader.asReader(fields);
28
+
29
+ const contractAddress = AztecAddress.fromField(reader.readField());
30
+ const storageSlot = reader.readField();
31
+ const randomness = reader.readField();
32
+ const noteNonce = reader.readField();
33
+
34
+ const contentStorage = reader.readFieldArray(MAX_NOTE_PACKED_LEN);
35
+ const contentLen = reader.readField().toNumber();
36
+ const content = contentStorage.slice(0, contentLen);
37
+
38
+ const noteHash = reader.readField();
39
+ const nullifier = reader.readField();
40
+ const txHash = TxHash.fromField(reader.readField());
41
+ const recipient = AztecAddress.fromField(reader.readField());
42
+
43
+ if (reader.remainingFields() !== 0) {
44
+ throw new Error(
45
+ `Error converting array of fields to NoteValidationRequest. Hint: check that MAX_NOTE_PACKED_LEN is consistent with private_notes::MAX_NOTE_PACKED_LEN in Aztec-nr.`,
46
+ );
47
+ }
48
+
49
+ return new NoteValidationRequest(
50
+ contractAddress,
51
+ storageSlot,
52
+ randomness,
53
+ noteNonce,
54
+ content,
55
+ noteHash,
56
+ nullifier,
57
+ txHash,
58
+ recipient,
59
+ );
60
+ }
61
+ }
@@ -0,0 +1,42 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import type { FieldsOf } from '@aztec/foundation/types';
3
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import type { UInt64 } from '@aztec/stdlib/types';
5
+
6
+ /**
7
+ * TypeScript counterpart of utility_context.nr. Used only as a return value for the utilityGetUtilityContext oracle.
8
+ */
9
+ export class UtilityContext {
10
+ private constructor(
11
+ public readonly blockNumber: number,
12
+ public readonly timestamp: UInt64,
13
+ public readonly contractAddress: AztecAddress,
14
+ public readonly version: Fr,
15
+ public readonly chainId: Fr,
16
+ ) {}
17
+
18
+ static from(fields: FieldsOf<UtilityContext>) {
19
+ return new UtilityContext(
20
+ fields.blockNumber,
21
+ fields.timestamp,
22
+ fields.contractAddress,
23
+ fields.version,
24
+ fields.chainId,
25
+ );
26
+ }
27
+
28
+ /**
29
+ * Returns a representation of the utility context as expected by intrinsic Noir deserialization.
30
+ * The order of the fields has to be the same as the order of the fields in the utility_context.nr.
31
+ */
32
+ public toNoirRepresentation(): (string | string[])[] {
33
+ // TODO(#12874): remove the stupid as string conversion by modifying ForeignCallOutput type in acvm.js
34
+ return [
35
+ new Fr(this.blockNumber).toString() as string,
36
+ new Fr(this.timestamp).toString() as string,
37
+ this.contractAddress.toString() as string,
38
+ this.version.toString() as string,
39
+ this.chainId.toString() as string,
40
+ ];
41
+ }
42
+ }
@@ -0,0 +1,16 @@
1
+ import type { Oracle } from './oracle.js';
2
+
3
+ export * from './oracle.js';
4
+ export * from './interfaces.js';
5
+
6
+ /**
7
+ * A conditional type that takes a type `T` and returns a union of its method names.
8
+ */
9
+ type MethodNames<T> = {
10
+ [K in keyof T]: T[K] extends (...args: any[]) => any ? K : never;
11
+ }[keyof T];
12
+
13
+ /**
14
+ * Available oracle function names.
15
+ */
16
+ export type ORACLE_NAMES = MethodNames<Oracle>;
@@ -0,0 +1,170 @@
1
+ import type { L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
2
+ import { Fr, Point } from '@aztec/foundation/fields';
3
+ import type { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
4
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
5
+ import type { CompleteAddress, ContractInstance } from '@aztec/stdlib/contract';
6
+ import type { KeyValidationRequest } from '@aztec/stdlib/kernel';
7
+ import type { ContractClassLog } from '@aztec/stdlib/logs';
8
+ import type { Note, NoteStatus } from '@aztec/stdlib/note';
9
+ import { type MerkleTreeId, type NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
10
+ import type { BlockHeader } from '@aztec/stdlib/tx';
11
+
12
+ import type { Tag } from '../../tagging/tag.js';
13
+ import type { UtilityContext } from '../noir-structs/utility_context.js';
14
+ import type { MessageLoadOracleInputs } from './message_load_oracle_inputs.js';
15
+
16
+ /**
17
+ * Information about a note needed during execution.
18
+ */
19
+ export interface NoteData {
20
+ /** The actual note content (the fields of the Noir #[note] struct). */
21
+ note: Note;
22
+ /** The address of the contract that owns the note. */
23
+ contractAddress: AztecAddress;
24
+ /** The storage slot of the note. */
25
+ storageSlot: Fr;
26
+ /** The randomness injected to the note */
27
+ randomness: Fr;
28
+ /** The nonce injected into the note hash preimage by kernels. */
29
+ noteNonce: Fr;
30
+ /** A hash of the note as it gets stored in the note hash tree. */
31
+ noteHash: Fr;
32
+ /** The corresponding nullifier of the note. Undefined for pending notes. */
33
+ siloedNullifier?: Fr;
34
+ /** The note's leaf index in the note hash tree. Undefined for pending notes. */
35
+ index?: bigint;
36
+ }
37
+
38
+ // These interfaces contain the list of oracles required by aztec-nr in order to simulate and execute transactions, i.e.
39
+ // in order to call #[external("utility")] and #[external("private")] contract functions.
40
+ // The full list of aztec-nr oracles is larger and includes the oracles also required to run Noir tests - these reside
41
+ // in the TXE package.
42
+
43
+ /**
44
+ * Miscellaneous oracle methods, not very Aztec-specific and expected to be available all scenarios in which aztec-nr
45
+ * code runs, except #[external("public")] functions (since those are transpiled to AVM bytecode, where there are no oracles).
46
+ */
47
+ export interface IMiscOracle {
48
+ isMisc: true;
49
+
50
+ utilityGetRandomField(): Fr;
51
+ utilityAssertCompatibleOracleVersion(version: number): void;
52
+ utilityDebugLog(level: number, message: string, fields: Fr[]): void;
53
+ }
54
+
55
+ /**
56
+ * Oracle methods associated with the execution of an Aztec #[external("utility")] function. Note that the IMiscOracles are also
57
+ * expected to be available in these contexts.
58
+ */
59
+ export interface IUtilityExecutionOracle {
60
+ isUtility: true;
61
+
62
+ utilityGetUtilityContext(): Promise<UtilityContext>;
63
+ utilityGetKeyValidationRequest(pkMHash: Fr): Promise<KeyValidationRequest>;
64
+ utilityGetContractInstance(address: AztecAddress): Promise<ContractInstance>;
65
+ utilityGetMembershipWitness(blockNumber: number, treeId: MerkleTreeId, leafValue: Fr): Promise<Fr[] | undefined>;
66
+ utilityGetNullifierMembershipWitness(
67
+ blockNumber: number,
68
+ nullifier: Fr,
69
+ ): Promise<NullifierMembershipWitness | undefined>;
70
+ utilityGetPublicDataWitness(blockNumber: number, leafSlot: Fr): Promise<PublicDataWitness | undefined>;
71
+ utilityGetLowNullifierMembershipWitness(
72
+ blockNumber: number,
73
+ nullifier: Fr,
74
+ ): Promise<NullifierMembershipWitness | undefined>;
75
+ utilityGetBlockHeader(blockNumber: number): Promise<BlockHeader | undefined>;
76
+ utilityGetPublicKeysAndPartialAddress(account: AztecAddress): Promise<CompleteAddress>;
77
+ utilityGetAuthWitness(messageHash: Fr): Promise<Fr[] | undefined>;
78
+ utilityGetNotes(
79
+ storageSlot: Fr,
80
+ numSelects: number,
81
+ selectByIndexes: number[],
82
+ selectByOffsets: number[],
83
+ selectByLengths: number[],
84
+ selectValues: Fr[],
85
+ selectComparators: number[],
86
+ sortByIndexes: number[],
87
+ sortByOffsets: number[],
88
+ sortByLengths: number[],
89
+ sortOrder: number[],
90
+ limit: number,
91
+ offset: number,
92
+ status: NoteStatus,
93
+ ): Promise<NoteData[]>;
94
+ utilityCheckNullifierExists(innerNullifier: Fr): Promise<boolean>;
95
+ utilityGetL1ToL2MembershipWitness(
96
+ contractAddress: AztecAddress,
97
+ messageHash: Fr,
98
+ secret: Fr,
99
+ ): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
100
+ utilityStorageRead(
101
+ contractAddress: AztecAddress,
102
+ startStorageSlot: Fr,
103
+ blockNumber: number,
104
+ numberOfElements: number,
105
+ ): Promise<Fr[]>;
106
+ utilityFetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr): Promise<void>;
107
+ utilityValidateEnqueuedNotesAndEvents(
108
+ contractAddress: AztecAddress,
109
+ noteValidationRequestsArrayBaseSlot: Fr,
110
+ eventValidationRequestsArrayBaseSlot: Fr,
111
+ ): Promise<void>;
112
+ utilityBulkRetrieveLogs(
113
+ contractAddress: AztecAddress,
114
+ logRetrievalRequestsArrayBaseSlot: Fr,
115
+ logRetrievalResponsesArrayBaseSlot: Fr,
116
+ ): Promise<void>;
117
+ utilityStoreCapsule(contractAddress: AztecAddress, key: Fr, capsule: Fr[]): Promise<void>;
118
+ utilityLoadCapsule(contractAddress: AztecAddress, key: Fr): Promise<Fr[] | null>;
119
+ utilityDeleteCapsule(contractAddress: AztecAddress, key: Fr): Promise<void>;
120
+ utilityCopyCapsule(contractAddress: AztecAddress, srcKey: Fr, dstKey: Fr, numEntries: number): Promise<void>;
121
+ utilityAes128Decrypt(ciphertext: Buffer, iv: Buffer, symKey: Buffer): Promise<Buffer>;
122
+ utilityGetSharedSecret(address: AztecAddress, ephPk: Point): Promise<Point>;
123
+ }
124
+
125
+ /**
126
+ * Oracle methods associated with the execution of an Aztec #[external("private")] function. Note that both the IMiscOracles and
127
+ * IUtilityExecutionOracle are also expected to be available in these contexts.
128
+ */
129
+ export interface IPrivateExecutionOracle {
130
+ isPrivate: true;
131
+
132
+ privateStoreInExecutionCache(values: Fr[], hash: Fr): void;
133
+ privateLoadFromExecutionCache(hash: Fr): Promise<Fr[]>;
134
+ privateNotifyCreatedNote(
135
+ storageSlot: Fr,
136
+ randomness: Fr,
137
+ noteTypeId: NoteSelector,
138
+ note: Fr[],
139
+ noteHash: Fr,
140
+ counter: number,
141
+ ): void;
142
+ privateNotifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number): Promise<void>;
143
+ privateNotifyCreatedNullifier(innerNullifier: Fr): Promise<void>;
144
+ privateNotifyCreatedContractClassLog(log: ContractClassLog, counter: number): void;
145
+ privateCallPrivateFunction(
146
+ targetContractAddress: AztecAddress,
147
+ functionSelector: FunctionSelector,
148
+ argsHash: Fr,
149
+ sideEffectCounter: number,
150
+ isStaticCall: boolean,
151
+ ): Promise<{ endSideEffectCounter: Fr; returnsHash: Fr }>;
152
+ privateNotifyEnqueuedPublicFunctionCall(
153
+ targetContractAddress: AztecAddress,
154
+ calldataHash: Fr,
155
+ sideEffectCounter: number,
156
+ isStaticCall: boolean,
157
+ ): Promise<void>;
158
+ privateNotifySetPublicTeardownFunctionCall(
159
+ targetContractAddress: AztecAddress,
160
+ calldataHash: Fr,
161
+ sideEffectCounter: number,
162
+ isStaticCall: boolean,
163
+ ): Promise<void>;
164
+ privateNotifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void>;
165
+ privateIsSideEffectCounterRevertible(sideEffectCounter: number): Promise<boolean>;
166
+ privateGetSenderForTags(): Promise<AztecAddress | undefined>;
167
+ privateSetSenderForTags(senderForTags: AztecAddress): Promise<void>;
168
+ privateGetNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag>;
169
+ utilityEmitOffchainEffect(data: Fr[]): Promise<void>;
170
+ }
@@ -0,0 +1,23 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import type { SiblingPath } from '@aztec/foundation/trees';
3
+
4
+ export class MessageLoadOracleInputs<N extends number> {
5
+ constructor(
6
+ /** The index of the message commitment in the merkle tree. */
7
+ public index: bigint,
8
+ /** The path in the merkle tree to the message. */
9
+ public siblingPath: SiblingPath<N>,
10
+ ) {}
11
+
12
+ toFields(): Fr[] {
13
+ return [new Fr(this.index), ...this.siblingPath.toFields()];
14
+ }
15
+
16
+ /**
17
+ * Returns a representation of the public data witness as expected by intrinsic Noir deserialization.
18
+ */
19
+ public toNoirRepresentation(): (string | string[])[] {
20
+ // TODO(#12874): remove the stupid as string conversion by modifying ForeignCallOutput type in acvm.js
21
+ return [new Fr(this.index).toString() as string, this.siblingPath.toFields().map(fr => fr.toString()) as string[]];
22
+ }
23
+ }
@@ -0,0 +1,54 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ import type { Note } from '@aztec/stdlib/note';
4
+
5
+ // TS equivalent of the `NoteMetadata::from_raw_data` function in `aztec/src/note/note_metadata.nr`
6
+ function fromRawData(nonzeroNoteHashCounter: boolean, maybeNoteNonce: Fr): { stage: number; maybeNoteNonce: Fr } {
7
+ if (nonzeroNoteHashCounter) {
8
+ if (maybeNoteNonce.equals(Fr.ZERO)) {
9
+ return { stage: 1, maybeNoteNonce }; // PENDING_SAME_PHASE
10
+ } else {
11
+ return { stage: 2, maybeNoteNonce }; // PENDING_PREVIOUS_PHASE
12
+ }
13
+ } else if (!maybeNoteNonce.equals(Fr.ZERO)) {
14
+ return { stage: 3, maybeNoteNonce }; // SETTLED
15
+ } else {
16
+ throw new Error('Note has a zero note hash counter and no nonce - existence cannot be proven');
17
+ }
18
+ }
19
+
20
+ /**
21
+ * Packs a note in a format that is compatible with the default Packable implementation of the retrieved note.
22
+ *
23
+ * @dev Unlike the default Packable implementation, this function first constructs the note metadata from the inputs
24
+ * and only after that it packs the retrieved note. Hence it doesn't map one to one with `RetrievedNote::pack()`.
25
+ *
26
+ * @param contractAddress - The address of the contract that owns the note
27
+ * @param randomness - The randomness injected into the note to get the hiding property of commitments
28
+ * @param noteNonce - The nonce injected into the note hash preimage by kernels.
29
+ * @param index - Optional index in the note hash tree. If undefined, indicates a transient note
30
+ * @param note - The note content containing the actual note data
31
+ * @returns The packed note as an array of field elements
32
+ */
33
+ export function packAsRetrievedNote({
34
+ contractAddress,
35
+ randomness,
36
+ noteNonce,
37
+ index,
38
+ note,
39
+ }: {
40
+ contractAddress: AztecAddress;
41
+ randomness: Fr;
42
+ noteNonce: Fr;
43
+ index?: bigint;
44
+ note: Note;
45
+ }) {
46
+ // If index is undefined, the note is transient which implies that the nonzero_note_hash_counter has to be true
47
+ const nonzeroNoteHashCounter = index === undefined;
48
+
49
+ // To pack the note as retrieved note we first need to reconstruct the note metadata.
50
+ const noteMetadata = fromRawData(nonzeroNoteHashCounter, noteNonce);
51
+
52
+ // Pack metadata first (stage and maybe_note_nonce), followed by the rest
53
+ return [...note.items, contractAddress, randomness, new Fr(noteMetadata.stage), noteMetadata.maybeNoteNonce];
54
+ }