@aztec/pxe 0.0.1-commit.fce3e4f → 0.0.1-commit.fffb133c

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 (379) hide show
  1. package/dest/bin/check_oracle_version.js +105 -15
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +43 -0
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  4. package/dest/block_synchronizer/block_synchronizer.js +147 -0
  5. package/dest/block_synchronizer/index.d.ts +2 -0
  6. package/dest/block_synchronizer/index.d.ts.map +1 -0
  7. package/dest/block_synchronizer/index.js +1 -0
  8. package/dest/config/index.d.ts +6 -4
  9. package/dest/config/index.d.ts.map +1 -1
  10. package/dest/config/index.js +17 -0
  11. package/dest/config/package_info.js +1 -1
  12. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  13. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  14. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  15. package/dest/contract_function_simulator/contract_function_simulator.d.ts +42 -14
  16. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  17. package/dest/contract_function_simulator/contract_function_simulator.js +71 -30
  18. package/dest/contract_function_simulator/execution_note_cache.d.ts +21 -11
  19. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/execution_note_cache.js +49 -31
  21. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +1 -1
  22. package/dest/contract_function_simulator/execution_tagging_index_cache.js +1 -1
  23. package/dest/contract_function_simulator/hashed_values_cache.d.ts +2 -2
  24. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/index.d.ts +2 -2
  26. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  27. package/dest/contract_function_simulator/index.js +1 -1
  28. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -4
  29. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  30. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +6 -3
  31. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +5 -4
  32. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  33. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +7 -6
  34. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  35. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  36. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
  37. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +6 -5
  38. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  39. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +7 -4
  40. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  41. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  42. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  43. package/dest/contract_function_simulator/oracle/interfaces.d.ts +25 -18
  44. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  45. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +4 -2
  46. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  47. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -1
  48. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +11 -7
  49. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  50. package/dest/contract_function_simulator/oracle/note_packing_utils.js +14 -10
  51. package/dest/contract_function_simulator/oracle/oracle.d.ts +11 -9
  52. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  53. package/dest/contract_function_simulator/oracle/oracle.js +62 -39
  54. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -27
  55. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  56. package/dest/contract_function_simulator/oracle/private_execution.js +2 -38
  57. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +35 -26
  58. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  59. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +46 -48
  60. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +77 -25
  61. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  62. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +171 -64
  63. package/dest/contract_function_simulator/pick_notes.d.ts +2 -2
  64. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  65. package/dest/contract_function_simulator/pick_notes.js +1 -1
  66. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
  67. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  68. package/dest/contract_function_simulator/proxied_contract_data_source.js +23 -5
  69. package/dest/contract_sync/index.d.ts +23 -0
  70. package/dest/contract_sync/index.d.ts.map +1 -0
  71. package/dest/contract_sync/index.js +54 -0
  72. package/dest/debug/pxe_debug_utils.d.ts +31 -0
  73. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  74. package/dest/debug/pxe_debug_utils.js +38 -0
  75. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  76. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  77. package/dest/entrypoints/client/bundle/index.js +0 -1
  78. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  79. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  80. package/dest/entrypoints/client/bundle/utils.js +12 -3
  81. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  82. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  83. package/dest/entrypoints/client/lazy/index.js +0 -1
  84. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  85. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  86. package/dest/entrypoints/client/lazy/utils.js +12 -3
  87. package/dest/entrypoints/pxe_creation_options.d.ts +5 -2
  88. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  89. package/dest/entrypoints/server/index.d.ts +4 -2
  90. package/dest/entrypoints/server/index.d.ts.map +1 -1
  91. package/dest/entrypoints/server/index.js +3 -1
  92. package/dest/entrypoints/server/utils.d.ts +1 -1
  93. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  94. package/dest/entrypoints/server/utils.js +12 -8
  95. package/dest/error_enriching.d.ts +4 -4
  96. package/dest/error_enriching.d.ts.map +1 -1
  97. package/dest/error_enriching.js +6 -6
  98. package/dest/events/event_service.d.ts +16 -0
  99. package/dest/events/event_service.d.ts.map +1 -0
  100. package/dest/events/event_service.js +45 -0
  101. package/dest/events/index.d.ts +2 -0
  102. package/dest/events/index.d.ts.map +1 -0
  103. package/dest/events/index.js +1 -0
  104. package/dest/events/private_event_filter_validator.d.ts +9 -0
  105. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  106. package/dest/events/private_event_filter_validator.js +38 -0
  107. package/dest/job_coordinator/job_coordinator.d.ts +74 -0
  108. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  109. package/dest/job_coordinator/job_coordinator.js +93 -0
  110. package/dest/logs/log_service.d.ts +27 -0
  111. package/dest/logs/log_service.d.ts.map +1 -0
  112. package/dest/logs/log_service.js +128 -0
  113. package/dest/notes/index.d.ts +2 -0
  114. package/dest/notes/index.d.ts.map +1 -0
  115. package/dest/notes/index.js +1 -0
  116. package/dest/notes/note_service.d.ts +49 -0
  117. package/dest/notes/note_service.d.ts.map +1 -0
  118. package/dest/notes/note_service.js +148 -0
  119. package/dest/oracle_version.d.ts +3 -3
  120. package/dest/oracle_version.d.ts.map +1 -1
  121. package/dest/oracle_version.js +4 -3
  122. package/dest/private_kernel/hints/index.d.ts +2 -2
  123. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  124. package/dest/private_kernel/hints/index.js +1 -1
  125. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
  126. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  127. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +13 -7
  128. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  129. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  130. package/dest/private_kernel/private_kernel_execution_prover.js +8 -9
  131. package/dest/private_kernel/private_kernel_oracle.d.ts +26 -29
  132. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  133. package/dest/private_kernel/private_kernel_oracle.js +90 -2
  134. package/dest/pxe.d.ts +45 -81
  135. package/dest/pxe.d.ts.map +1 -1
  136. package/dest/pxe.js +185 -216
  137. package/dest/storage/address_store/address_store.d.ts +11 -0
  138. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  139. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +1 -1
  140. package/dest/storage/address_store/index.d.ts +2 -0
  141. package/dest/storage/address_store/index.d.ts.map +1 -0
  142. package/dest/storage/address_store/index.js +1 -0
  143. package/dest/storage/{sync_data_provider/sync_data_provider.d.ts → anchor_block_store/anchor_block_store.d.ts} +2 -3
  144. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  145. package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +2 -9
  146. package/dest/storage/{sync_data_provider → anchor_block_store}/index.d.ts +2 -2
  147. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  148. package/dest/storage/anchor_block_store/index.js +1 -0
  149. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  150. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  151. package/dest/storage/capsule_store/capsule_store.js +255 -0
  152. package/dest/storage/capsule_store/index.d.ts +2 -0
  153. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  154. package/dest/storage/capsule_store/index.js +1 -0
  155. package/dest/storage/{contract_data_provider/contract_data_provider.d.ts → contract_store/contract_store.d.ts} +7 -5
  156. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  157. package/dest/storage/{contract_data_provider/contract_data_provider.js → contract_store/contract_store.js} +34 -3
  158. package/dest/storage/contract_store/index.d.ts +2 -0
  159. package/dest/storage/contract_store/index.d.ts.map +1 -0
  160. package/dest/storage/contract_store/index.js +1 -0
  161. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
  162. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  163. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +1 -1
  164. package/dest/storage/index.d.ts +8 -8
  165. package/dest/storage/index.d.ts.map +1 -1
  166. package/dest/storage/index.js +7 -7
  167. package/dest/storage/note_store/index.d.ts +3 -0
  168. package/dest/storage/note_store/index.d.ts.map +1 -0
  169. package/dest/storage/note_store/index.js +2 -0
  170. package/dest/storage/note_store/note_store.d.ts +73 -0
  171. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  172. package/dest/storage/note_store/note_store.js +303 -0
  173. package/dest/storage/note_store/stored_note.d.ts +16 -0
  174. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  175. package/dest/storage/note_store/stored_note.js +43 -0
  176. package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
  177. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  178. package/dest/storage/private_event_store/private_event_store.js +250 -0
  179. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  180. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  181. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  182. package/dest/storage/tagging_store/index.d.ts +4 -0
  183. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  184. package/dest/storage/tagging_store/index.js +3 -0
  185. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
  186. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  187. package/dest/storage/tagging_store/recipient_tagging_store.js +99 -0
  188. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  189. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  190. package/dest/storage/tagging_store/sender_address_book_store.js +30 -0
  191. package/dest/storage/tagging_store/sender_tagging_store.d.ts +77 -0
  192. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  193. package/dest/storage/tagging_store/sender_tagging_store.js +278 -0
  194. package/dest/tagging/constants.d.ts +2 -2
  195. package/dest/tagging/constants.d.ts.map +1 -1
  196. package/dest/tagging/constants.js +10 -2
  197. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  198. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  199. package/dest/tagging/get_all_logs_by_tags.js +46 -0
  200. package/dest/tagging/index.d.ts +16 -6
  201. package/dest/tagging/index.d.ts.map +1 -1
  202. package/dest/tagging/index.js +15 -5
  203. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +15 -0
  204. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
  205. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
  206. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  207. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  208. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  209. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +15 -0
  210. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
  211. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +32 -0
  212. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +21 -0
  213. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  214. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +74 -0
  215. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
  216. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  217. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +29 -0
  218. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +21 -0
  219. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  220. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +60 -0
  221. package/package.json +19 -19
  222. package/src/bin/check_oracle_version.ts +131 -20
  223. package/src/block_synchronizer/block_synchronizer.ts +174 -0
  224. package/src/block_synchronizer/index.ts +1 -0
  225. package/src/config/index.ts +17 -3
  226. package/src/config/package_info.ts +1 -1
  227. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  228. package/src/contract_function_simulator/contract_function_simulator.ts +113 -33
  229. package/src/contract_function_simulator/execution_note_cache.ts +51 -28
  230. package/src/contract_function_simulator/execution_tagging_index_cache.ts +1 -1
  231. package/src/contract_function_simulator/hashed_values_cache.ts +1 -1
  232. package/src/contract_function_simulator/index.ts +1 -1
  233. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +6 -2
  234. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +6 -5
  235. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -1
  236. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -3
  237. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  238. package/src/contract_function_simulator/oracle/interfaces.ts +30 -15
  239. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +1 -1
  240. package/src/contract_function_simulator/oracle/note_packing_utils.ts +27 -13
  241. package/src/contract_function_simulator/oracle/oracle.ts +78 -41
  242. package/src/contract_function_simulator/oracle/private_execution.ts +2 -68
  243. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +129 -59
  244. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +261 -71
  245. package/src/contract_function_simulator/pick_notes.ts +1 -1
  246. package/src/contract_function_simulator/proxied_contract_data_source.ts +24 -7
  247. package/src/contract_sync/index.ts +98 -0
  248. package/src/debug/pxe_debug_utils.ts +49 -0
  249. package/src/entrypoints/client/bundle/index.ts +0 -1
  250. package/src/entrypoints/client/bundle/utils.ts +9 -3
  251. package/src/entrypoints/client/lazy/index.ts +0 -1
  252. package/src/entrypoints/client/lazy/utils.ts +9 -4
  253. package/src/entrypoints/pxe_creation_options.ts +4 -1
  254. package/src/entrypoints/server/index.ts +3 -1
  255. package/src/entrypoints/server/utils.ts +12 -16
  256. package/src/error_enriching.ts +7 -15
  257. package/src/events/event_service.ts +73 -0
  258. package/src/events/index.ts +1 -0
  259. package/src/events/private_event_filter_validator.ts +46 -0
  260. package/src/job_coordinator/job_coordinator.ts +149 -0
  261. package/src/logs/log_service.ts +220 -0
  262. package/src/notes/index.ts +1 -0
  263. package/src/notes/note_service.ts +197 -0
  264. package/src/oracle_version.ts +4 -3
  265. package/src/private_kernel/hints/index.ts +1 -1
  266. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +34 -23
  267. package/src/private_kernel/private_kernel_execution_prover.ts +8 -9
  268. package/src/private_kernel/private_kernel_oracle.ts +118 -37
  269. package/src/pxe.ts +257 -280
  270. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +1 -1
  271. package/src/storage/address_store/index.ts +1 -0
  272. package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +2 -11
  273. package/src/storage/anchor_block_store/index.ts +1 -0
  274. package/src/storage/capsule_store/capsule_store.ts +315 -0
  275. package/src/storage/capsule_store/index.ts +1 -0
  276. package/src/storage/{contract_data_provider/contract_data_provider.ts → contract_store/contract_store.ts} +45 -3
  277. package/src/storage/contract_store/index.ts +1 -0
  278. package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +1 -1
  279. package/src/storage/index.ts +7 -7
  280. package/src/storage/note_store/index.ts +2 -0
  281. package/src/storage/note_store/note_store.ts +381 -0
  282. package/src/storage/note_store/stored_note.ts +48 -0
  283. package/src/storage/private_event_store/private_event_store.ts +363 -0
  284. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  285. package/src/storage/tagging_store/index.ts +3 -0
  286. package/src/storage/tagging_store/recipient_tagging_store.ts +129 -0
  287. package/src/storage/tagging_store/sender_address_book_store.ts +42 -0
  288. package/src/storage/tagging_store/sender_tagging_store.ts +345 -0
  289. package/src/tagging/constants.ts +10 -2
  290. package/src/tagging/get_all_logs_by_tags.ts +68 -0
  291. package/src/tagging/index.ts +18 -5
  292. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +143 -0
  293. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  294. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +49 -0
  295. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +99 -0
  296. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +36 -0
  297. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +84 -0
  298. package/dest/contract_function_simulator/execution_data_provider.d.ts +0 -265
  299. package/dest/contract_function_simulator/execution_data_provider.d.ts.map +0 -1
  300. package/dest/contract_function_simulator/execution_data_provider.js +0 -14
  301. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  302. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  303. package/dest/contract_function_simulator/proxied_node.js +0 -27
  304. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +0 -122
  305. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +0 -1
  306. package/dest/contract_function_simulator/pxe_oracle_interface.js +0 -694
  307. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  308. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  309. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -45
  310. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  311. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
  312. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
  313. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  314. package/dest/storage/address_data_provider/index.d.ts +0 -2
  315. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  316. package/dest/storage/address_data_provider/index.js +0 -1
  317. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -25
  318. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  319. package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -118
  320. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  321. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  322. package/dest/storage/capsule_data_provider/index.js +0 -1
  323. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  324. package/dest/storage/contract_data_provider/index.d.ts +0 -2
  325. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  326. package/dest/storage/contract_data_provider/index.js +0 -1
  327. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  328. package/dest/storage/note_data_provider/index.d.ts +0 -3
  329. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  330. package/dest/storage/note_data_provider/index.js +0 -2
  331. package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -83
  332. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  333. package/dest/storage/note_data_provider/note_data_provider.js +0 -311
  334. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -37
  335. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
  336. package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -105
  337. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  338. package/dest/storage/sync_data_provider/index.js +0 -1
  339. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  340. package/dest/storage/tagging_data_provider/index.d.ts +0 -2
  341. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  342. package/dest/storage/tagging_data_provider/index.js +0 -1
  343. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -40
  344. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  345. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -89
  346. package/dest/synchronizer/index.d.ts +0 -2
  347. package/dest/synchronizer/index.d.ts.map +0 -1
  348. package/dest/synchronizer/index.js +0 -1
  349. package/dest/synchronizer/synchronizer.d.ts +0 -35
  350. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  351. package/dest/synchronizer/synchronizer.js +0 -101
  352. package/dest/tagging/siloed_tag.d.ts +0 -14
  353. package/dest/tagging/siloed_tag.d.ts.map +0 -1
  354. package/dest/tagging/siloed_tag.js +0 -20
  355. package/dest/tagging/tag.d.ts +0 -12
  356. package/dest/tagging/tag.d.ts.map +0 -1
  357. package/dest/tagging/tag.js +0 -17
  358. package/dest/tagging/utils.d.ts +0 -18
  359. package/dest/tagging/utils.d.ts.map +0 -1
  360. package/dest/tagging/utils.js +0 -24
  361. package/src/contract_function_simulator/execution_data_provider.ts +0 -333
  362. package/src/contract_function_simulator/proxied_node.ts +0 -33
  363. package/src/contract_function_simulator/pxe_oracle_interface.ts +0 -1008
  364. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -132
  365. package/src/storage/address_data_provider/index.ts +0 -1
  366. package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -147
  367. package/src/storage/capsule_data_provider/index.ts +0 -1
  368. package/src/storage/contract_data_provider/index.ts +0 -1
  369. package/src/storage/note_data_provider/index.ts +0 -2
  370. package/src/storage/note_data_provider/note_data_provider.ts +0 -399
  371. package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -143
  372. package/src/storage/sync_data_provider/index.ts +0 -1
  373. package/src/storage/tagging_data_provider/index.ts +0 -1
  374. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -120
  375. package/src/synchronizer/index.ts +0 -1
  376. package/src/synchronizer/synchronizer.ts +0 -120
  377. package/src/tagging/siloed_tag.ts +0 -22
  378. package/src/tagging/tag.ts +0 -16
  379. package/src/tagging/utils.ts +0 -31
@@ -0,0 +1,250 @@
1
+ import { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import { toArray } from '@aztec/foundation/iterable';
3
+ import { createLogger } from '@aztec/foundation/log';
4
+ import { Semaphore } from '@aztec/foundation/queue';
5
+ import { StoredPrivateEvent } from './stored_private_event.js';
6
+ /**
7
+ * Stores decrypted private event logs.
8
+ */ export class PrivateEventStore {
9
+ storeName = 'private_event';
10
+ #store;
11
+ /** Actual private event log entries, keyed by siloedEventCommitment */ #events;
12
+ /** Multi-map from contractAddress_eventSelector to siloedEventCommitment for efficient lookup */ #eventsByContractAndEventSelector;
13
+ /** Multi-map from block number to siloedEventCommitment for rollback support */ #eventsByBlockNumber;
14
+ /** jobId => eventId (event siloed nullifier) => StoredPrivateEvent */ #eventsForJob;
15
+ /** Per-job locks to prevent concurrent writes from affecting each other. */ #jobLocks;
16
+ logger = createLogger('private_event_store');
17
+ constructor(store){
18
+ this.#store = store;
19
+ this.#events = this.#store.openMap('private_event_logs');
20
+ this.#eventsByContractAndEventSelector = this.#store.openMultiMap('events_by_contract_selector');
21
+ this.#eventsByBlockNumber = this.#store.openMultiMap('events_by_block_number');
22
+ this.#eventsForJob = new Map();
23
+ this.#jobLocks = new Map();
24
+ }
25
+ /**
26
+ * Store a private event log.
27
+ * @param eventSelector - The event selector of the event.
28
+ * @param randomness - The randomness used for the event commitment.
29
+ * @param msgContent - The content of the event.
30
+ * @param siloedEventCommitment - The siloed event commitment (used as unique identifier).
31
+ * @param metadata
32
+ * contractAddress - The address of the contract that emitted the event.
33
+ * scope - The address to which the event is scoped.
34
+ * txHash - The transaction hash of the event log.
35
+ * blockNumber - The block number in which the event was emitted.
36
+ */ storePrivateEventLog(eventSelector, randomness, msgContent, siloedEventCommitment, metadata, jobId) {
37
+ return this.#withJobLock(jobId, async ()=>{
38
+ const { contractAddress, scope, txHash, l2BlockNumber, l2BlockHash, txIndexInBlock, eventIndexInTx } = metadata;
39
+ const eventId = siloedEventCommitment.toString();
40
+ this.logger.verbose('storing private event log (job stage)', {
41
+ eventId,
42
+ contractAddress,
43
+ scope,
44
+ msgContent,
45
+ l2BlockNumber
46
+ });
47
+ const existing = await this.#readEvent(eventId, jobId);
48
+ if (existing) {
49
+ // If we already stored this event, we still want to make sure to track it for the given scope
50
+ existing.addScope(scope.toString());
51
+ this.#writeEvent(eventId, existing, jobId);
52
+ } else {
53
+ this.#writeEvent(eventId, new StoredPrivateEvent(randomness, msgContent, l2BlockNumber, l2BlockHash, txHash, txIndexInBlock, eventIndexInTx, contractAddress, eventSelector, new Set([
54
+ scope.toString()
55
+ ])), jobId);
56
+ }
57
+ });
58
+ }
59
+ /**
60
+ * Returns the private events given search parameters.
61
+ * @param eventSelector - The event selector to filter by.
62
+ * @param filter - Filtering criteria:
63
+ * contractAddress: The address of the contract to get events from.
64
+ * fromBlock: The block number to search from (inclusive).
65
+ * toBlock: The block number to search upto (exclusive).
66
+ * scope: - The addresses that decrypted the logs.
67
+ * @returns - The event log contents, augmented with metadata about the transaction and block in which the event was
68
+ * included.
69
+ */ getPrivateEvents(eventSelector, filter) {
70
+ return this.#store.transactionAsync(async ()=>{
71
+ const events = [];
72
+ const key = this.#keyFor(filter.contractAddress, eventSelector);
73
+ const targetScopes = new Set(filter.scopes.map((s)=>s.toString()));
74
+ const eventIds = await toArray(this.#eventsByContractAndEventSelector.getValuesAsync(key));
75
+ for (const eventId of eventIds){
76
+ const eventBuffer = await this.#events.getAsync(eventId);
77
+ // Defensive, if it happens, there's a problem with how we're handling #eventsByContractAndEventSelector
78
+ if (!eventBuffer) {
79
+ this.logger.verbose(`EventId ${eventId} does not exist in main index but it is referenced from contract event selector index`);
80
+ continue;
81
+ }
82
+ const storedPrivateEvent = StoredPrivateEvent.fromBuffer(eventBuffer);
83
+ // Filter by block range
84
+ if (storedPrivateEvent.l2BlockNumber < filter.fromBlock || storedPrivateEvent.l2BlockNumber >= filter.toBlock) {
85
+ continue;
86
+ }
87
+ // Filter by scopes
88
+ if (storedPrivateEvent.scopes.intersection(targetScopes).size === 0) {
89
+ continue;
90
+ }
91
+ // Filter by txHash
92
+ if (filter.txHash && !storedPrivateEvent.txHash.equals(filter.txHash)) {
93
+ continue;
94
+ }
95
+ events.push({
96
+ l2BlockNumber: storedPrivateEvent.l2BlockNumber,
97
+ txIndexInBlock: storedPrivateEvent.txIndexInBlock,
98
+ eventIndexInTx: storedPrivateEvent.eventIndexInTx,
99
+ event: {
100
+ packedEvent: storedPrivateEvent.msgContent,
101
+ l2BlockNumber: BlockNumber(storedPrivateEvent.l2BlockNumber),
102
+ txHash: storedPrivateEvent.txHash,
103
+ l2BlockHash: storedPrivateEvent.l2BlockHash,
104
+ eventSelector
105
+ }
106
+ });
107
+ }
108
+ // Sort by block number, then by tx index within block, then by event index within tx
109
+ events.sort((a, b)=>{
110
+ if (a.l2BlockNumber !== b.l2BlockNumber) {
111
+ return a.l2BlockNumber - b.l2BlockNumber;
112
+ }
113
+ if (a.txIndexInBlock !== b.txIndexInBlock) {
114
+ return a.txIndexInBlock - b.txIndexInBlock;
115
+ }
116
+ return a.eventIndexInTx - b.eventIndexInTx;
117
+ });
118
+ return events.map((ev)=>ev.event);
119
+ });
120
+ }
121
+ /**
122
+ * Rolls back private events that were stored after a given `blockNumber` and up to `synchedBlockNumber` (the block
123
+ * number up to which PXE managed to sync before the reorg happened).
124
+ *
125
+ * We don't need staged writes for a rollback since it's handled in the context of a blockchain rewind.
126
+ *
127
+ * Rollbacks are handled by the BlockSynchronizer, which runs a DB transaction across stores when it detects a
128
+ * re-org, including setting the new anchor block after rolling back.
129
+ *
130
+ * So if anything fails in the process of rolling back any store, all DB changes occurring during rollbacks will be
131
+ * lost and the anchor block will not be updated; which means this code will eventually need to run again
132
+ * (i.e.: PXE will detect it's basing it work on an invalid block hash, then which re-triggers rewind).
133
+ *
134
+ * For further details, refer to `BlockSynchronizer#handleBlockStreamEvent`.
135
+ *
136
+ * IMPORTANT: This method must be called within a transaction to ensure atomicity.
137
+ */ async rollback(blockNumber, synchedBlockNumber) {
138
+ let removedCount = 0;
139
+ for(let block = blockNumber + 1; block <= synchedBlockNumber; block++){
140
+ const eventIds = await toArray(this.#eventsByBlockNumber.getValuesAsync(block));
141
+ if (eventIds.length > 0) {
142
+ await this.#eventsByBlockNumber.delete(block);
143
+ for (const eventId of eventIds){
144
+ const buffer = await this.#events.getAsync(eventId);
145
+ if (!buffer) {
146
+ throw new Error(`Event not found for eventId ${eventId}`);
147
+ }
148
+ const entry = StoredPrivateEvent.fromBuffer(buffer);
149
+ await this.#events.delete(eventId);
150
+ await this.#eventsByContractAndEventSelector.deleteValue(this.#keyFor(entry.contractAddress, entry.eventSelector), eventId);
151
+ removedCount++;
152
+ }
153
+ }
154
+ }
155
+ this.logger.verbose(`Rolled back ${removedCount} private events after block ${blockNumber}`);
156
+ }
157
+ /**
158
+ * Commits in memory job data to persistent storage.
159
+ *
160
+ * Called by JobCoordinator when a job completes successfully.
161
+ *
162
+ * Note: JobCoordinator wraps all commits in a single transaction, so we don't need our own transactionAsync here
163
+ * (and using one would throw on IndexedDB as it does not support nested txs).
164
+ *
165
+ * @param jobId - The jobId identifying which staged data to commit
166
+ */ commit(jobId) {
167
+ return this.#withJobLock(jobId, async ()=>{
168
+ for (const [eventId, entry] of this.#getEventsForJob(jobId).entries()){
169
+ const lookupKey = this.#keyFor(entry.contractAddress, entry.eventSelector);
170
+ this.logger.verbose('storing private event log', {
171
+ eventId,
172
+ lookupKey
173
+ });
174
+ await Promise.all([
175
+ this.#events.set(eventId, entry.toBuffer()),
176
+ this.#eventsByContractAndEventSelector.set(lookupKey, eventId),
177
+ this.#eventsByBlockNumber.set(entry.l2BlockNumber, eventId)
178
+ ]);
179
+ }
180
+ this.#clearJobData(jobId);
181
+ });
182
+ }
183
+ /**
184
+ * Discards in memory job data without persisting it.
185
+ */ discardStaged(jobId) {
186
+ return this.#withJobLock(jobId, ()=>Promise.resolve(this.#clearJobData(jobId)));
187
+ }
188
+ /**
189
+ * Reads an event from in-memory job data first, falling back to persistent storage if not found.
190
+ *
191
+ * Returns undefined if the event does not exist in the store overall.
192
+ */ async #readEvent(eventId, jobId) {
193
+ const eventForJob = this.#getEventsForJob(jobId).get(eventId);
194
+ if (eventForJob) {
195
+ return eventForJob;
196
+ }
197
+ const buffer = await this.#events.getAsync(eventId);
198
+ return buffer ? StoredPrivateEvent.fromBuffer(buffer) : undefined;
199
+ }
200
+ /**
201
+ * Writes an event to in-memory job data.
202
+ *
203
+ * Writes are only allowed in a job context. Events modified during a job will only be persisted when `commit` is
204
+ * called.
205
+ */ #writeEvent(eventId, entry, jobId) {
206
+ this.#getEventsForJob(jobId).set(eventId, entry);
207
+ }
208
+ /**
209
+ * Get in-memory data only visible to @param jobId
210
+ */ #getEventsForJob(jobId) {
211
+ let eventsForJob = this.#eventsForJob.get(jobId);
212
+ if (eventsForJob === undefined) {
213
+ eventsForJob = new Map();
214
+ this.#eventsForJob.set(jobId, eventsForJob);
215
+ }
216
+ return eventsForJob;
217
+ }
218
+ /**
219
+ * Clear data structures supporting a specific job.
220
+ */ #clearJobData(jobId) {
221
+ this.#eventsForJob.delete(jobId);
222
+ this.#jobLocks.delete(jobId);
223
+ }
224
+ /**
225
+ * Ensures a function can only run once it acquires a unique per-job lock, and handles proper lock release after it
226
+ * runs.
227
+ *
228
+ * This primitive allows concurrent writes on this store without risking data corruption due to unsound write
229
+ * interleaving.
230
+ */ async #withJobLock(jobId, fn) {
231
+ let lock = this.#jobLocks.get(jobId);
232
+ if (!lock) {
233
+ lock = new Semaphore(1);
234
+ this.#jobLocks.set(jobId, lock);
235
+ }
236
+ await lock.acquire();
237
+ try {
238
+ return await fn();
239
+ } finally{
240
+ lock.release();
241
+ }
242
+ }
243
+ /**
244
+ * Returns a string key based on @param contractAddress and @param eventSelector.
245
+ *
246
+ * The returned key is meant to be used when interacting with index #eventsByContractAndEventSelector.
247
+ */ #keyFor(contractAddress, eventSelector) {
248
+ return `${contractAddress.toString()}_${eventSelector.toString()}`;
249
+ }
250
+ }
@@ -0,0 +1,23 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { EventSelector } from '@aztec/stdlib/abi';
3
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import { L2BlockHash } from '@aztec/stdlib/block';
5
+ import { TxHash } from '@aztec/stdlib/tx';
6
+ /** Serializable private event entry with scope tracking. */
7
+ export declare class StoredPrivateEvent {
8
+ readonly randomness: Fr;
9
+ readonly msgContent: Fr[];
10
+ readonly l2BlockNumber: number;
11
+ readonly l2BlockHash: L2BlockHash;
12
+ readonly txHash: TxHash;
13
+ readonly txIndexInBlock: number;
14
+ readonly eventIndexInTx: number;
15
+ readonly contractAddress: AztecAddress;
16
+ readonly eventSelector: EventSelector;
17
+ readonly scopes: Set<string>;
18
+ constructor(randomness: Fr, msgContent: Fr[], l2BlockNumber: number, l2BlockHash: L2BlockHash, txHash: TxHash, txIndexInBlock: number, eventIndexInTx: number, contractAddress: AztecAddress, eventSelector: EventSelector, scopes: Set<string>);
19
+ addScope(scope: string): void;
20
+ toBuffer(): Buffer;
21
+ static fromBuffer(buffer: Buffer): StoredPrivateEvent;
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkX3ByaXZhdGVfZXZlbnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL3ByaXZhdGVfZXZlbnRfc3RvcmUvc3RvcmVkX3ByaXZhdGVfZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQyw0REFBNEQ7QUFDNUQscUJBQWEsa0JBQWtCO0lBRTNCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRTtJQUN2QixRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRTtJQUN6QixRQUFRLENBQUMsYUFBYSxFQUFFLE1BQU07SUFDOUIsUUFBUSxDQUFDLFdBQVcsRUFBRSxXQUFXO0lBQ2pDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTTtJQUN2QixRQUFRLENBQUMsY0FBYyxFQUFFLE1BQU07SUFDL0IsUUFBUSxDQUFDLGNBQWMsRUFBRSxNQUFNO0lBQy9CLFFBQVEsQ0FBQyxlQUFlLEVBQUUsWUFBWTtJQUN0QyxRQUFRLENBQUMsYUFBYSxFQUFFLGFBQWE7SUFDckMsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDO0lBVjlCLFlBQ1csVUFBVSxFQUFFLEVBQUUsRUFDZCxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQ2hCLGFBQWEsRUFBRSxNQUFNLEVBQ3JCLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsY0FBYyxFQUFFLE1BQU0sRUFDdEIsY0FBYyxFQUFFLE1BQU0sRUFDdEIsZUFBZSxFQUFFLFlBQVksRUFDN0IsYUFBYSxFQUFFLGFBQWEsRUFDNUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFDMUI7SUFFSixRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sUUFFckI7SUFFRCxRQUFRLElBQUksTUFBTSxDQWdCakI7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsa0JBQWtCLENBMkJwRDtDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stored_private_event.d.ts","sourceRoot":"","sources":["../../../src/storage/private_event_store/stored_private_event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,4DAA4D;AAC5D,qBAAa,kBAAkB;IAE3B,QAAQ,CAAC,UAAU,EAAE,EAAE;IACvB,QAAQ,CAAC,UAAU,EAAE,EAAE,EAAE;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM;IAC9B,QAAQ,CAAC,WAAW,EAAE,WAAW;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM;IAC/B,QAAQ,CAAC,eAAe,EAAE,YAAY;IACtC,QAAQ,CAAC,aAAa,EAAE,aAAa;IACrC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;IAV9B,YACW,UAAU,EAAE,EAAE,EACd,UAAU,EAAE,EAAE,EAAE,EAChB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,YAAY,EAC7B,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAC1B;IAEJ,QAAQ,CAAC,KAAK,EAAE,MAAM,QAErB;IAED,QAAQ,IAAI,MAAM,CAgBjB;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CA2BpD;CACF"}
@@ -0,0 +1,56 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
+ import { EventSelector } from '@aztec/stdlib/abi';
4
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
+ import { L2BlockHash } from '@aztec/stdlib/block';
6
+ import { TxHash } from '@aztec/stdlib/tx';
7
+ /** Serializable private event entry with scope tracking. */ export class StoredPrivateEvent {
8
+ randomness;
9
+ msgContent;
10
+ l2BlockNumber;
11
+ l2BlockHash;
12
+ txHash;
13
+ txIndexInBlock;
14
+ eventIndexInTx;
15
+ contractAddress;
16
+ eventSelector;
17
+ scopes;
18
+ constructor(randomness, msgContent, l2BlockNumber, l2BlockHash, txHash, txIndexInBlock, eventIndexInTx, contractAddress, eventSelector, scopes){
19
+ this.randomness = randomness;
20
+ this.msgContent = msgContent;
21
+ this.l2BlockNumber = l2BlockNumber;
22
+ this.l2BlockHash = l2BlockHash;
23
+ this.txHash = txHash;
24
+ this.txIndexInBlock = txIndexInBlock;
25
+ this.eventIndexInTx = eventIndexInTx;
26
+ this.contractAddress = contractAddress;
27
+ this.eventSelector = eventSelector;
28
+ this.scopes = scopes;
29
+ }
30
+ addScope(scope) {
31
+ this.scopes.add(scope);
32
+ }
33
+ toBuffer() {
34
+ const scopesArray = [
35
+ ...this.scopes
36
+ ];
37
+ return serializeToBuffer(this.randomness, this.msgContent.length, ...this.msgContent, this.l2BlockNumber, this.l2BlockHash, this.txHash, this.txIndexInBlock, this.eventIndexInTx, this.contractAddress, this.eventSelector.toBuffer(), scopesArray.length, ...scopesArray);
38
+ }
39
+ static fromBuffer(buffer) {
40
+ const reader = BufferReader.asReader(buffer);
41
+ const randomness = Fr.fromBuffer(reader);
42
+ const msgContentLength = reader.readNumber();
43
+ const msgContent = reader.readArray(msgContentLength, Fr);
44
+ const l2BlockNumber = reader.readNumber();
45
+ const l2BlockHash = L2BlockHash.fromBuffer(reader);
46
+ const txHash = TxHash.fromBuffer(reader);
47
+ const txIndexInBlock = reader.readNumber();
48
+ const eventIndexInTx = reader.readNumber();
49
+ const contractAddress = AztecAddress.fromBuffer(reader);
50
+ const eventSelector = EventSelector.fromBuffer(reader);
51
+ const scopes = reader.readVector({
52
+ fromBuffer: (r)=>r.readString()
53
+ });
54
+ return new StoredPrivateEvent(randomness, msgContent, l2BlockNumber, l2BlockHash, txHash, txIndexInBlock, eventIndexInTx, contractAddress, eventSelector, new Set(scopes));
55
+ }
56
+ }
@@ -0,0 +1,4 @@
1
+ export { SenderTaggingStore } from './sender_tagging_store.js';
2
+ export { SenderAddressBookStore } from './sender_address_book_store.js';
3
+ export { RecipientTaggingStore } from './recipient_tagging_store.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL3RhZ2dpbmdfc3RvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOEJBQThCLENBQUMifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/tagging_store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { SenderTaggingStore } from './sender_tagging_store.js';
2
+ export { SenderAddressBookStore } from './sender_address_book_store.js';
3
+ export { RecipientTaggingStore } from './recipient_tagging_store.js';
@@ -0,0 +1,28 @@
1
+ import type { AztecAsyncKVStore } from '@aztec/kv-store';
2
+ import type { DirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
3
+ import type { StagedStore } from '../../job_coordinator/job_coordinator.js';
4
+ /**
5
+ * Data provider of tagging data used when syncing the logs as a recipient. The sender counterpart of this class
6
+ * is called SenderTaggingStore. We have the providers separate for the sender and recipient because
7
+ * the algorithms are completely disjoint and there is not data reuse between the two.
8
+ *
9
+ * @dev Chain reorgs do not need to be handled here because both the finalized and aged indexes refer to finalized
10
+ * blocks, which by definition cannot be affected by reorgs.
11
+ */
12
+ export declare class RecipientTaggingStore implements StagedStore {
13
+ #private;
14
+ storeName: string;
15
+ constructor(store: AztecAsyncKVStore);
16
+ /**
17
+ * Writes all job-specific in-memory data to persistent storage.
18
+ *
19
+ * @remark This method must run in a DB transaction context. It's designed to be called from JobCoordinator#commitJob.
20
+ */
21
+ commit(jobId: string): Promise<void>;
22
+ discardStaged(jobId: string): Promise<void>;
23
+ getHighestAgedIndex(secret: DirectionalAppTaggingSecret, jobId: string): Promise<number | undefined>;
24
+ updateHighestAgedIndex(secret: DirectionalAppTaggingSecret, index: number, jobId: string): Promise<void>;
25
+ getHighestFinalizedIndex(secret: DirectionalAppTaggingSecret, jobId: string): Promise<number | undefined>;
26
+ updateHighestFinalizedIndex(secret: DirectionalAppTaggingSecret, index: number, jobId: string): Promise<void>;
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50X3RhZ2dpbmdfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL3RhZ2dpbmdfc3RvcmUvcmVjaXBpZW50X3RhZ2dpbmdfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUU1RTs7Ozs7OztHQU9HO0FBQ0gscUJBQWEscUJBQXNCLFlBQVcsV0FBVzs7SUFDdkQsU0FBUyxFQUFFLE1BQU0sQ0FBdUI7SUFheEMsWUFBWSxLQUFLLEVBQUUsaUJBQWlCLEVBUW5DO0lBc0NEOzs7O09BSUc7SUFDRyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBZ0J6QztJQUVELGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FJMUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUVuRztJQUVLLHNCQUFzQixDQUFDLE1BQU0sRUFBRSwyQkFBMkIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQU83RztJQUVELHdCQUF3QixDQUFDLE1BQU0sRUFBRSwyQkFBMkIsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBRXhHO0lBRUssMkJBQTJCLENBQUMsTUFBTSxFQUFFLDJCQUEyQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBUWxIO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipient_tagging_store.d.ts","sourceRoot":"","sources":["../../../src/storage/tagging_store/recipient_tagging_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAE5E;;;;;;;GAOG;AACH,qBAAa,qBAAsB,YAAW,WAAW;;IACvD,SAAS,EAAE,MAAM,CAAuB;IAaxC,YAAY,KAAK,EAAE,iBAAiB,EAQnC;IAsCD;;;;OAIG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBzC;IAED,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI1C;IAED,mBAAmB,CAAC,MAAM,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAEnG;IAEK,sBAAsB,CAAC,MAAM,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7G;IAED,wBAAwB,CAAC,MAAM,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAExG;IAEK,2BAA2B,CAAC,MAAM,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlH;CACF"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Data provider of tagging data used when syncing the logs as a recipient. The sender counterpart of this class
3
+ * is called SenderTaggingStore. We have the providers separate for the sender and recipient because
4
+ * the algorithms are completely disjoint and there is not data reuse between the two.
5
+ *
6
+ * @dev Chain reorgs do not need to be handled here because both the finalized and aged indexes refer to finalized
7
+ * blocks, which by definition cannot be affected by reorgs.
8
+ */ export class RecipientTaggingStore {
9
+ storeName = 'recipient_tagging';
10
+ #store;
11
+ #highestAgedIndex;
12
+ #highestFinalizedIndex;
13
+ // jobId => secret => number
14
+ #highestAgedIndexForJob;
15
+ // jobId => secret => number
16
+ #highestFinalizedIndexForJob;
17
+ constructor(store){
18
+ this.#store = store;
19
+ this.#highestAgedIndex = this.#store.openMap('highest_aged_index');
20
+ this.#highestFinalizedIndex = this.#store.openMap('highest_finalized_index');
21
+ this.#highestAgedIndexForJob = new Map();
22
+ this.#highestFinalizedIndexForJob = new Map();
23
+ }
24
+ #getHighestAgedIndexForJob(jobId) {
25
+ let highestAgedIndexForJob = this.#highestAgedIndexForJob.get(jobId);
26
+ if (!highestAgedIndexForJob) {
27
+ highestAgedIndexForJob = new Map();
28
+ this.#highestAgedIndexForJob.set(jobId, highestAgedIndexForJob);
29
+ }
30
+ return highestAgedIndexForJob;
31
+ }
32
+ async #readHighestAgedIndex(jobId, secret) {
33
+ return this.#getHighestAgedIndexForJob(jobId).get(secret) ?? await this.#highestAgedIndex.getAsync(secret);
34
+ }
35
+ #writeHighestAgedIndex(jobId, secret, index) {
36
+ this.#getHighestAgedIndexForJob(jobId).set(secret, index);
37
+ }
38
+ #getHighestFinalizedIndexForJob(jobId) {
39
+ let jobStagedHighestFinalizedIndex = this.#highestFinalizedIndexForJob.get(jobId);
40
+ if (!jobStagedHighestFinalizedIndex) {
41
+ jobStagedHighestFinalizedIndex = new Map();
42
+ this.#highestFinalizedIndexForJob.set(jobId, jobStagedHighestFinalizedIndex);
43
+ }
44
+ return jobStagedHighestFinalizedIndex;
45
+ }
46
+ async #readHighestFinalizedIndex(jobId, secret) {
47
+ return this.#getHighestFinalizedIndexForJob(jobId).get(secret) ?? await this.#highestFinalizedIndex.getAsync(secret);
48
+ }
49
+ #writeHighestFinalizedIndex(jobId, secret, index) {
50
+ this.#getHighestFinalizedIndexForJob(jobId).set(secret, index);
51
+ }
52
+ /**
53
+ * Writes all job-specific in-memory data to persistent storage.
54
+ *
55
+ * @remark This method must run in a DB transaction context. It's designed to be called from JobCoordinator#commitJob.
56
+ */ async commit(jobId) {
57
+ const highestAgedIndexForJob = this.#highestAgedIndexForJob.get(jobId);
58
+ if (highestAgedIndexForJob) {
59
+ for (const [secret, index] of highestAgedIndexForJob.entries()){
60
+ await this.#highestAgedIndex.set(secret, index);
61
+ }
62
+ }
63
+ const highestFinalizedIndexForJob = this.#highestFinalizedIndexForJob.get(jobId);
64
+ if (highestFinalizedIndexForJob) {
65
+ for (const [secret, index] of highestFinalizedIndexForJob.entries()){
66
+ await this.#highestFinalizedIndex.set(secret, index);
67
+ }
68
+ }
69
+ return this.discardStaged(jobId);
70
+ }
71
+ discardStaged(jobId) {
72
+ this.#highestAgedIndexForJob.delete(jobId);
73
+ this.#highestFinalizedIndexForJob.delete(jobId);
74
+ return Promise.resolve();
75
+ }
76
+ getHighestAgedIndex(secret, jobId) {
77
+ return this.#readHighestAgedIndex(jobId, secret.toString());
78
+ }
79
+ async updateHighestAgedIndex(secret, index, jobId) {
80
+ const currentIndex = await this.#readHighestAgedIndex(jobId, secret.toString());
81
+ if (currentIndex !== undefined && index <= currentIndex) {
82
+ // Log sync should never set a lower highest aged index.
83
+ throw new Error(`New highest aged index (${index}) must be higher than the current one (${currentIndex})`);
84
+ }
85
+ this.#writeHighestAgedIndex(jobId, secret.toString(), index);
86
+ }
87
+ getHighestFinalizedIndex(secret, jobId) {
88
+ return this.#readHighestFinalizedIndex(jobId, secret.toString());
89
+ }
90
+ async updateHighestFinalizedIndex(secret, index, jobId) {
91
+ const currentIndex = await this.#readHighestFinalizedIndex(jobId, secret.toString());
92
+ if (currentIndex !== undefined && index < currentIndex) {
93
+ // Log sync should never set a lower highest finalized index but it can happen that it would try to set the same
94
+ // one because we are loading logs from highest aged index + 1 and not from the highest finalized index.
95
+ throw new Error(`New highest finalized index (${index}) must be higher than the current one (${currentIndex})`);
96
+ }
97
+ this.#writeHighestFinalizedIndex(jobId, secret.toString(), index);
98
+ }
99
+ }
@@ -0,0 +1,14 @@
1
+ import type { AztecAsyncKVStore } from '@aztec/kv-store';
2
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ /**
4
+ * Stores sender addresses. During recipient log synchronization, these senders are used, along with a given recipient,
5
+ * to derive directional app tagging secrets that are then used to sync the logs.
6
+ */
7
+ export declare class SenderAddressBookStore {
8
+ #private;
9
+ constructor(store: AztecAsyncKVStore);
10
+ addSender(address: AztecAddress): Promise<boolean>;
11
+ getSenders(): Promise<AztecAddress[]>;
12
+ removeSender(address: AztecAddress): Promise<boolean>;
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZGVyX2FkZHJlc3NfYm9va19zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JhZ2UvdGFnZ2luZ19zdG9yZS9zZW5kZXJfYWRkcmVzc19ib29rX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRDs7O0dBR0c7QUFDSCxxQkFBYSxzQkFBc0I7O0lBSWpDLFlBQVksS0FBSyxFQUFFLGlCQUFpQixFQUluQztJQUVLLFNBQVMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FRdkQ7SUFFSyxVQUFVLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBRTFDO0lBRUssWUFBWSxDQUFDLE9BQU8sRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVExRDtDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sender_address_book_store.d.ts","sourceRoot":"","sources":["../../../src/storage/tagging_store/sender_address_book_store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D;;;GAGG;AACH,qBAAa,sBAAsB;;IAIjC,YAAY,KAAK,EAAE,iBAAiB,EAInC;IAEK,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAQvD;IAEK,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAE1C;IAEK,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ1D;CACF"}
@@ -0,0 +1,30 @@
1
+ import { toArray } from '@aztec/foundation/iterable';
2
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ /**
4
+ * Stores sender addresses. During recipient log synchronization, these senders are used, along with a given recipient,
5
+ * to derive directional app tagging secrets that are then used to sync the logs.
6
+ */ export class SenderAddressBookStore {
7
+ #store;
8
+ #addressBook;
9
+ constructor(store){
10
+ this.#store = store;
11
+ this.#addressBook = this.#store.openMap('address_book');
12
+ }
13
+ async addSender(address) {
14
+ if (await this.#addressBook.hasAsync(address.toString())) {
15
+ return false;
16
+ }
17
+ await this.#addressBook.set(address.toString(), true);
18
+ return true;
19
+ }
20
+ async getSenders() {
21
+ return (await toArray(this.#addressBook.keysAsync())).map(AztecAddress.fromString);
22
+ }
23
+ async removeSender(address) {
24
+ if (!await this.#addressBook.hasAsync(address.toString())) {
25
+ return false;
26
+ }
27
+ await this.#addressBook.delete(address.toString());
28
+ return true;
29
+ }
30
+ }
@@ -0,0 +1,77 @@
1
+ import type { AztecAsyncKVStore } from '@aztec/kv-store';
2
+ import type { DirectionalAppTaggingSecret, PreTag } from '@aztec/stdlib/logs';
3
+ import { TxHash } from '@aztec/stdlib/tx';
4
+ import type { StagedStore } from '../../job_coordinator/job_coordinator.js';
5
+ /**
6
+ * Data provider of tagging data used when syncing the sender tagging indexes. The recipient counterpart of this class
7
+ * is called RecipientTaggingStore. We have the data stores separate for sender and recipient because
8
+ * the algorithms are completely disjoint and there is not data reuse between the two.
9
+ */
10
+ export declare class SenderTaggingStore implements StagedStore {
11
+ #private;
12
+ readonly storeName = "sender_tagging";
13
+ constructor(store: AztecAsyncKVStore);
14
+ /**
15
+ * Writes all job-specific in-memory data to persistent storage.
16
+ *
17
+ * @remark This method must run in a DB transaction context. It's designed to be called from JobCoordinator#commitJob.
18
+ */
19
+ commit(jobId: string): Promise<void>;
20
+ discardStaged(jobId: string): Promise<void>;
21
+ /**
22
+ * Stores pending indexes.
23
+ * @remarks Ignores the index if the same preTag + txHash combination already exists in the db with the same index.
24
+ * This is expected to happen because whenever we start sync we start from the last finalized index and we can have
25
+ * pending indexes already stored from previous syncs.
26
+ * @param preTags - The pre-tags containing the directional app tagging secrets and the indexes that are to be
27
+ * stored in the db.
28
+ * @param txHash - The tx in which the pretags were used in private logs.
29
+ * @param jobId - job context for staged writes to this store. See `JobCoordinator` for more details.
30
+ * @throws If any two pre-tags contain the same directional app tagging secret. This is enforced because we care
31
+ * only about the highest index for a given secret that was used in the tx. Hence this check is a good way to catch
32
+ * bugs.
33
+ * @throws If the newly stored pending index is further than window length from the highest finalized index for the
34
+ * same secret. This is enforced in order to give a guarantee to a recipient that he doesn't need to look further than
35
+ * window length ahead of the highest finalized index.
36
+ * @throws If a secret + txHash pair already exists in the db with a different index value. It should never happen
37
+ * that we would attempt to store a different index for a given secret-txHash pair because we always store just the
38
+ * highest index for a given secret-txHash pair. Hence this is a good way to catch bugs.
39
+ * @throws If the newly stored pending index is lower than or equal to the last finalized index for the same secret.
40
+ * This is enforced because this should never happen if the syncing is done correctly as we look for logs from higher
41
+ * indexes than finalized ones.
42
+ */
43
+ storePendingIndexes(preTags: PreTag[], txHash: TxHash, jobId: string): Promise<void>;
44
+ /**
45
+ * Returns the transaction hashes of all pending transactions that contain indexes within a specified range
46
+ * for a given directional app tagging secret.
47
+ * @param secret - The directional app tagging secret to query pending indexes for.
48
+ * @param startIndex - The lower bound of the index range (inclusive).
49
+ * @param endIndex - The upper bound of the index range (exclusive).
50
+ * @returns An array of unique transaction hashes for pending transactions that contain indexes in the range
51
+ * [startIndex, endIndex). Returns an empty array if no pending indexes exist in the range.
52
+ */
53
+ getTxHashesOfPendingIndexes(secret: DirectionalAppTaggingSecret, startIndex: number, endIndex: number, jobId: string): Promise<TxHash[]>;
54
+ /**
55
+ * Returns the last (highest) finalized index for a given secret.
56
+ * @param secret - The secret to get the last finalized index for.
57
+ * @returns The last (highest) finalized index for the given secret.
58
+ */
59
+ getLastFinalizedIndex(secret: DirectionalAppTaggingSecret, jobId: string): Promise<number | undefined>;
60
+ /**
61
+ * Returns the last used index for a given directional app tagging secret, considering both finalized and pending
62
+ * indexes.
63
+ * @param secret - The directional app tagging secret to query the last used index for.
64
+ * @returns The last used index.
65
+ */
66
+ getLastUsedIndex(secret: DirectionalAppTaggingSecret, jobId: string): Promise<number | undefined>;
67
+ /**
68
+ * Drops all pending indexes corresponding to the given transaction hashes.
69
+ */
70
+ dropPendingIndexes(txHashes: TxHash[], jobId: string): Promise<void>;
71
+ /**
72
+ * Updates pending indexes corresponding to the given transaction hashes to be finalized and prunes any lower pending
73
+ * indexes.
74
+ */
75
+ finalizePendingIndexes(txHashes: TxHash[], jobId: string): Promise<void>;
76
+ }
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZGVyX3RhZ2dpbmdfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL3RhZ2dpbmdfc3RvcmUvc2VuZGVyX3RhZ2dpbmdfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTFDLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRzVFOzs7O0dBSUc7QUFDSCxxQkFBYSxrQkFBbUIsWUFBVyxXQUFXOztJQUNwRCxRQUFRLENBQUMsU0FBUyxvQkFBb0I7SUE2QnRDLFlBQVksS0FBSyxFQUFFLGlCQUFpQixFQVFuQztJQW9ERDs7OztPQUlHO0lBQ0csTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQW9CekM7SUFFRCxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBSTFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXFCRztJQUNHLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQWlEekU7SUFFRDs7Ozs7Ozs7T0FRRztJQUNHLDJCQUEyQixDQUMvQixNQUFNLEVBQUUsMkJBQTJCLEVBQ25DLFVBQVUsRUFBRSxNQUFNLEVBQ2xCLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLEtBQUssRUFBRSxNQUFNLEdBQ1osT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBTW5CO0lBRUQ7Ozs7T0FJRztJQUNILHFCQUFxQixDQUFDLE1BQU0sRUFBRSwyQkFBMkIsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBRXJHO0lBRUQ7Ozs7O09BS0c7SUFDRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQVl0RztJQUVEOztPQUVHO0lBQ0csa0JBQWtCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQXFCekQ7SUFFRDs7O09BR0c7SUFDRyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBcUQ3RDtDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sender_tagging_store.d.ts","sourceRoot":"","sources":["../../../src/storage/tagging_store/sender_tagging_store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAG5E;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,WAAW;;IACpD,QAAQ,CAAC,SAAS,oBAAoB;IA6BtC,YAAY,KAAK,EAAE,iBAAiB,EAQnC;IAoDD;;;;OAIG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBzC;IAED,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI1C;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iBAiDzE;IAED;;;;;;;;OAQG;IACG,2BAA2B,CAC/B,MAAM,EAAE,2BAA2B,EACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;IAED;;;;OAIG;IACH,qBAAqB,CAAC,MAAM,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAErG;IAED;;;;;OAKG;IACG,gBAAgB,CAAC,MAAM,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAYtG;IAED;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,iBAqBzD;IAED;;;OAGG;IACG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,iBAqD7D;CACF"}