@aztec/foundation 0.76.4 → 0.77.0-testnet-ignition.21

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 (459) hide show
  1. package/dest/array/array.d.ts +1 -1
  2. package/dest/array/array.d.ts.map +1 -1
  3. package/dest/array/array.js +19 -26
  4. package/dest/array/index.js +0 -1
  5. package/dest/async-map/index.js +2 -4
  6. package/dest/async-pool/index.js +6 -9
  7. package/dest/bigint-buffer/index.js +6 -13
  8. package/dest/buffer/buffer32.d.ts +1 -1
  9. package/dest/buffer/buffer32.d.ts.map +1 -1
  10. package/dest/buffer/buffer32.js +53 -66
  11. package/dest/buffer/index.js +0 -1
  12. package/dest/collection/array.d.ts +1 -1
  13. package/dest/collection/array.d.ts.map +1 -1
  14. package/dest/collection/array.js +47 -59
  15. package/dest/collection/index.js +0 -1
  16. package/dest/collection/object.js +9 -9
  17. package/dest/committable/committable.js +15 -20
  18. package/dest/committable/index.js +0 -1
  19. package/dest/config/env_var.d.ts +1 -1
  20. package/dest/config/env_var.d.ts.map +1 -1
  21. package/dest/config/env_var.js +1 -2
  22. package/dest/config/index.d.ts +1 -1
  23. package/dest/config/index.d.ts.map +1 -1
  24. package/dest/config/index.js +31 -36
  25. package/dest/crypto/aes128/index.d.ts +34 -0
  26. package/dest/crypto/aes128/index.d.ts.map +1 -0
  27. package/dest/crypto/aes128/index.js +49 -0
  28. package/dest/crypto/ecdsa/index.d.ts +39 -0
  29. package/dest/crypto/ecdsa/index.d.ts.map +1 -0
  30. package/dest/crypto/ecdsa/index.js +88 -0
  31. package/dest/crypto/ecdsa/signature.d.ts +71 -0
  32. package/dest/crypto/ecdsa/signature.d.ts.map +1 -0
  33. package/dest/crypto/ecdsa/signature.js +92 -0
  34. package/dest/crypto/grumpkin/index.d.ts +47 -0
  35. package/dest/crypto/grumpkin/index.d.ts.map +1 -0
  36. package/dest/crypto/grumpkin/index.js +154 -0
  37. package/dest/crypto/index.d.ts +6 -0
  38. package/dest/crypto/index.d.ts.map +1 -1
  39. package/dest/crypto/index.js +6 -1
  40. package/dest/crypto/keccak/index.js +60 -69
  41. package/dest/crypto/keys/index.js +2 -3
  42. package/dest/crypto/pedersen/index.js +0 -1
  43. package/dest/crypto/pedersen/pedersen.elliptic.js +153 -146
  44. package/dest/crypto/pedersen/pedersen.noble.js +140 -142
  45. package/dest/crypto/pedersen/pedersen.wasm.js +17 -16
  46. package/dest/crypto/poseidon/index.js +15 -19
  47. package/dest/crypto/random/index.js +7 -12
  48. package/dest/crypto/random/randomness_singleton.js +12 -12
  49. package/dest/crypto/schnorr/index.d.ts +30 -0
  50. package/dest/crypto/schnorr/index.d.ts.map +1 -0
  51. package/dest/crypto/schnorr/index.js +68 -0
  52. package/dest/crypto/schnorr/signature.d.ts +70 -0
  53. package/dest/crypto/schnorr/signature.d.ts.map +1 -0
  54. package/dest/crypto/schnorr/signature.js +93 -0
  55. package/dest/crypto/secp256k1/index.d.ts +32 -0
  56. package/dest/crypto/secp256k1/index.d.ts.map +1 -0
  57. package/dest/crypto/secp256k1/index.js +116 -0
  58. package/dest/crypto/secp256k1-signer/index.js +0 -1
  59. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +2 -2
  60. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
  61. package/dest/crypto/secp256k1-signer/secp256k1_signer.js +8 -9
  62. package/dest/crypto/secp256k1-signer/utils.js +11 -16
  63. package/dest/crypto/serialize.d.ts +53 -0
  64. package/dest/crypto/serialize.d.ts.map +1 -0
  65. package/dest/crypto/serialize.js +68 -0
  66. package/dest/crypto/sha256/index.js +80 -30
  67. package/dest/crypto/sha512/index.js +2 -4
  68. package/dest/crypto/signature/index.d.ts +19 -0
  69. package/dest/crypto/signature/index.d.ts.map +1 -0
  70. package/dest/crypto/signature/index.js +3 -0
  71. package/dest/crypto/sync/index.js +1 -2
  72. package/dest/crypto/sync/pedersen/index.js +14 -13
  73. package/dest/crypto/sync/poseidon/index.js +10 -14
  74. package/dest/decorators/index.js +0 -1
  75. package/dest/decorators/memoize.js +1 -2
  76. package/dest/error/index.js +6 -19
  77. package/dest/eth-address/index.js +92 -113
  78. package/dest/eth-signature/eth_signature.js +21 -27
  79. package/dest/eth-signature/index.js +0 -1
  80. package/dest/fields/coordinate.d.ts +1 -1
  81. package/dest/fields/coordinate.d.ts.map +1 -1
  82. package/dest/fields/coordinate.js +47 -46
  83. package/dest/fields/fields.d.ts.map +1 -1
  84. package/dest/fields/fields.js +112 -126
  85. package/dest/fields/index.js +0 -1
  86. package/dest/fields/point.js +119 -129
  87. package/dest/fs/index.js +0 -1
  88. package/dest/fs/run_in_dir.d.ts +1 -1
  89. package/dest/fs/run_in_dir.d.ts.map +1 -1
  90. package/dest/fs/run_in_dir.js +16 -7
  91. package/dest/index.d.ts +0 -2
  92. package/dest/index.d.ts.map +1 -1
  93. package/dest/index.js +0 -3
  94. package/dest/iterable/all.js +3 -4
  95. package/dest/iterable/filter.js +10 -11
  96. package/dest/iterable/index.js +0 -1
  97. package/dest/iterable/isAsyncIt.js +1 -3
  98. package/dest/iterable/map.js +10 -11
  99. package/dest/iterable/peek.js +14 -14
  100. package/dest/iterable/sort.js +4 -5
  101. package/dest/iterable/take.js +6 -7
  102. package/dest/iterable/toArray.js +1 -2
  103. package/dest/jest/setup.js +7 -0
  104. package/dest/json-rpc/client/fetch.js +25 -20
  105. package/dest/json-rpc/client/index.js +0 -1
  106. package/dest/json-rpc/client/safe_json_rpc_client.js +20 -9
  107. package/dest/json-rpc/client/undici.d.ts +1 -1
  108. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  109. package/dest/json-rpc/client/undici.js +16 -17
  110. package/dest/json-rpc/convert.d.ts +1 -1
  111. package/dest/json-rpc/convert.d.ts.map +1 -1
  112. package/dest/json-rpc/convert.js +10 -20
  113. package/dest/json-rpc/fixtures/class_a.js +8 -5
  114. package/dest/json-rpc/fixtures/class_b.js +8 -5
  115. package/dest/json-rpc/fixtures/test_state.js +53 -40
  116. package/dest/json-rpc/index.js +0 -1
  117. package/dest/json-rpc/js_utils.js +2 -5
  118. package/dest/json-rpc/server/index.js +0 -1
  119. package/dest/json-rpc/server/safe_json_rpc_server.js +145 -101
  120. package/dest/json-rpc/server/telemetry.js +0 -2
  121. package/dest/json-rpc/test/index.js +0 -1
  122. package/dest/json-rpc/test/integration.d.ts +1 -1
  123. package/dest/json-rpc/test/integration.d.ts.map +1 -1
  124. package/dest/json-rpc/test/integration.js +11 -5
  125. package/dest/log/console.d.ts +1 -1
  126. package/dest/log/console.d.ts.map +1 -1
  127. package/dest/log/console.js +14 -16
  128. package/dest/log/debug.d.ts +1 -1
  129. package/dest/log/debug.d.ts.map +1 -1
  130. package/dest/log/debug.js +9 -18
  131. package/dest/log/gcloud-logger-config.js +17 -15
  132. package/dest/log/index.d.ts +1 -0
  133. package/dest/log/index.d.ts.map +1 -1
  134. package/dest/log/index.js +1 -1
  135. package/dest/log/libp2p_logger.d.ts +7 -0
  136. package/dest/log/libp2p_logger.d.ts.map +1 -0
  137. package/dest/log/libp2p_logger.js +55 -0
  138. package/dest/log/log-filters.js +14 -13
  139. package/dest/log/log-levels.js +10 -2
  140. package/dest/log/log_fn.js +1 -2
  141. package/dest/log/log_history.js +21 -25
  142. package/dest/log/pino-logger.d.ts +8 -4
  143. package/dest/log/pino-logger.d.ts.map +1 -1
  144. package/dest/log/pino-logger.js +92 -74
  145. package/dest/message/index.js +7 -3
  146. package/dest/mutex/index.d.ts +1 -1
  147. package/dest/mutex/index.d.ts.map +1 -1
  148. package/dest/mutex/index.js +34 -32
  149. package/dest/mutex/mutex_database.js +4 -2
  150. package/dest/noir/index.js +0 -1
  151. package/dest/noir/noir_package_config.js +13 -8
  152. package/dest/promise/index.js +0 -1
  153. package/dest/promise/running-promise.d.ts +8 -2
  154. package/dest/promise/running-promise.d.ts.map +1 -1
  155. package/dest/promise/running-promise.js +44 -31
  156. package/dest/promise/utils.js +3 -5
  157. package/dest/queue/base_memory_queue.js +51 -59
  158. package/dest/queue/batch_queue.js +34 -27
  159. package/dest/queue/bounded_serial_queue.js +41 -51
  160. package/dest/queue/fifo_memory_queue.d.ts +1 -1
  161. package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
  162. package/dest/queue/fifo_memory_queue.js +4 -8
  163. package/dest/queue/index.js +0 -1
  164. package/dest/queue/priority_memory_queue.js +3 -4
  165. package/dest/queue/priority_queue.js +5 -5
  166. package/dest/queue/semaphore.js +15 -19
  167. package/dest/queue/serial_queue.js +37 -47
  168. package/dest/retry/index.js +21 -18
  169. package/dest/running-promise/index.js +0 -1
  170. package/dest/schemas/api.d.ts +2 -2
  171. package/dest/schemas/api.d.ts.map +1 -1
  172. package/dest/schemas/api.js +2 -7
  173. package/dest/schemas/index.d.ts +1 -1
  174. package/dest/schemas/index.d.ts.map +1 -1
  175. package/dest/schemas/index.js +1 -2
  176. package/dest/schemas/parse.js +4 -8
  177. package/dest/schemas/schemas.d.ts +1 -16
  178. package/dest/schemas/schemas.d.ts.map +1 -1
  179. package/dest/schemas/schemas.js +28 -56
  180. package/dest/schemas/types.d.ts +1 -1
  181. package/dest/schemas/types.d.ts.map +1 -1
  182. package/dest/schemas/types.js +1 -2
  183. package/dest/schemas/utils.d.ts +1 -1
  184. package/dest/schemas/utils.d.ts.map +1 -1
  185. package/dest/schemas/utils.js +18 -31
  186. package/dest/serialize/buffer_reader.d.ts +1 -1
  187. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  188. package/dest/serialize/buffer_reader.js +164 -188
  189. package/dest/serialize/field_reader.d.ts +1 -1
  190. package/dest/serialize/field_reader.d.ts.map +1 -1
  191. package/dest/serialize/field_reader.js +70 -79
  192. package/dest/serialize/free_funcs.d.ts +1 -1
  193. package/dest/serialize/free_funcs.d.ts.map +1 -1
  194. package/dest/serialize/free_funcs.js +40 -37
  195. package/dest/serialize/index.js +0 -1
  196. package/dest/serialize/serialize.js +72 -83
  197. package/dest/serialize/type_registry.js +10 -14
  198. package/dest/serialize/types.js +4 -5
  199. package/dest/sleep/index.js +25 -29
  200. package/dest/string/index.js +0 -1
  201. package/dest/testing/files/index.js +3 -7
  202. package/dest/testing/index.js +0 -1
  203. package/dest/testing/port_allocator.js +7 -10
  204. package/dest/testing/snapshot_serializer.d.ts +1 -1
  205. package/dest/testing/snapshot_serializer.d.ts.map +1 -1
  206. package/dest/testing/snapshot_serializer.js +14 -9
  207. package/dest/testing/test_data.js +7 -8
  208. package/dest/timer/date.js +9 -7
  209. package/dest/timer/elapsed.js +10 -7
  210. package/dest/timer/index.js +0 -1
  211. package/dest/timer/timeout.js +34 -34
  212. package/dest/timer/timer.js +17 -21
  213. package/dest/transport/browser/index.js +0 -1
  214. package/dest/transport/browser/message_port_socket.d.ts +1 -1
  215. package/dest/transport/browser/message_port_socket.d.ts.map +1 -1
  216. package/dest/transport/browser/message_port_socket.js +26 -30
  217. package/dest/transport/browser/shared_worker_connector.d.ts +1 -1
  218. package/dest/transport/browser/shared_worker_connector.d.ts.map +1 -1
  219. package/dest/transport/browser/shared_worker_connector.js +8 -10
  220. package/dest/transport/browser/shared_worker_listener.d.ts +1 -1
  221. package/dest/transport/browser/shared_worker_listener.d.ts.map +1 -1
  222. package/dest/transport/browser/shared_worker_listener.js +13 -17
  223. package/dest/transport/browser/worker_connector.d.ts +1 -1
  224. package/dest/transport/browser/worker_connector.d.ts.map +1 -1
  225. package/dest/transport/browser/worker_connector.js +12 -12
  226. package/dest/transport/browser/worker_listener.d.ts +1 -1
  227. package/dest/transport/browser/worker_listener.d.ts.map +1 -1
  228. package/dest/transport/browser/worker_listener.js +13 -17
  229. package/dest/transport/dispatch/create_dispatch_fn.js +2 -4
  230. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +2 -2
  231. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
  232. package/dest/transport/dispatch/create_dispatch_proxy.js +16 -13
  233. package/dest/transport/dispatch/messages.js +4 -3
  234. package/dest/transport/index.js +0 -1
  235. package/dest/transport/interface/connector.d.ts +1 -1
  236. package/dest/transport/interface/connector.d.ts.map +1 -1
  237. package/dest/transport/interface/connector.js +3 -2
  238. package/dest/transport/interface/listener.d.ts +1 -1
  239. package/dest/transport/interface/listener.d.ts.map +1 -1
  240. package/dest/transport/interface/listener.js +4 -2
  241. package/dest/transport/interface/socket.js +7 -2
  242. package/dest/transport/interface/transferable.js +7 -9
  243. package/dest/transport/node/index.js +0 -1
  244. package/dest/transport/node/node_connector.d.ts +2 -2
  245. package/dest/transport/node/node_connector.d.ts.map +1 -1
  246. package/dest/transport/node/node_connector.js +9 -11
  247. package/dest/transport/node/node_connector_socket.d.ts +2 -2
  248. package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
  249. package/dest/transport/node/node_connector_socket.js +21 -25
  250. package/dest/transport/node/node_listener.d.ts +1 -1
  251. package/dest/transport/node/node_listener.d.ts.map +1 -1
  252. package/dest/transport/node/node_listener.js +11 -15
  253. package/dest/transport/node/node_listener_socket.d.ts +2 -2
  254. package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
  255. package/dest/transport/node/node_listener_socket.js +23 -27
  256. package/dest/transport/transport_client.d.ts +1 -1
  257. package/dest/transport/transport_client.d.ts.map +1 -1
  258. package/dest/transport/transport_client.js +47 -46
  259. package/dest/transport/transport_server.d.ts +1 -1
  260. package/dest/transport/transport_server.d.ts.map +1 -1
  261. package/dest/transport/transport_server.js +68 -55
  262. package/dest/trees/hasher.d.ts +39 -0
  263. package/dest/trees/hasher.d.ts.map +1 -0
  264. package/dest/trees/hasher.js +5 -0
  265. package/dest/trees/index.d.ts +8 -56
  266. package/dest/trees/index.d.ts.map +1 -1
  267. package/dest/trees/index.js +8 -1
  268. package/dest/trees/indexed_merkle_tree.d.ts +13 -0
  269. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -0
  270. package/dest/trees/indexed_merkle_tree.js +27 -0
  271. package/dest/trees/indexed_merkle_tree_calculator.d.ts +23 -0
  272. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -0
  273. package/dest/trees/indexed_merkle_tree_calculator.js +83 -0
  274. package/dest/trees/indexed_tree_leaf.d.ts +57 -0
  275. package/dest/trees/indexed_tree_leaf.d.ts.map +1 -0
  276. package/dest/trees/indexed_tree_leaf.js +5 -0
  277. package/dest/trees/membership_witness.d.ts +62 -0
  278. package/dest/trees/membership_witness.d.ts.map +1 -0
  279. package/dest/trees/membership_witness.js +70 -0
  280. package/dest/trees/merkle_tree.d.ts +18 -0
  281. package/dest/trees/merkle_tree.d.ts.map +1 -0
  282. package/dest/trees/merkle_tree.js +58 -0
  283. package/dest/trees/merkle_tree_calculator.d.ts +16 -0
  284. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -0
  285. package/dest/trees/merkle_tree_calculator.js +61 -0
  286. package/dest/trees/sibling_path.d.ts +132 -0
  287. package/dest/trees/sibling_path.d.ts.map +1 -0
  288. package/dest/trees/sibling_path.js +144 -0
  289. package/dest/trees/unbalanced_merkle_tree.d.ts +1 -1
  290. package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
  291. package/dest/trees/unbalanced_merkle_tree.js +28 -18
  292. package/dest/trees/unbalanced_tree_store.js +43 -29
  293. package/dest/types/index.js +1 -3
  294. package/dest/url/index.js +4 -8
  295. package/dest/validation/index.js +2 -5
  296. package/dest/wasm/empty_wasi_sdk.js +142 -160
  297. package/dest/wasm/index.d.ts +1 -1
  298. package/dest/wasm/index.d.ts.map +1 -1
  299. package/dest/wasm/index.js +0 -1
  300. package/dest/wasm/wasm_module.js +80 -90
  301. package/dest/worker/browser/index.js +0 -1
  302. package/dest/worker/browser/start_web_module.d.ts +1 -1
  303. package/dest/worker/browser/start_web_module.d.ts.map +1 -1
  304. package/dest/worker/browser/start_web_module.js +9 -5
  305. package/dest/worker/browser/web_data_store.d.ts +1 -1
  306. package/dest/worker/browser/web_data_store.d.ts.map +1 -1
  307. package/dest/worker/browser/web_data_store.js +12 -15
  308. package/dest/worker/browser/web_worker.d.ts +1 -1
  309. package/dest/worker/browser/web_worker.d.ts.map +1 -1
  310. package/dest/worker/browser/web_worker.js +6 -5
  311. package/dest/worker/data_store.js +3 -2
  312. package/dest/worker/index.d.ts +1 -1
  313. package/dest/worker/index.d.ts.map +1 -1
  314. package/dest/worker/index.js +0 -1
  315. package/dest/worker/node/index.js +0 -1
  316. package/dest/worker/node/node_data_store.d.ts +1 -1
  317. package/dest/worker/node/node_data_store.d.ts.map +1 -1
  318. package/dest/worker/node/node_data_store.js +4 -5
  319. package/dest/worker/node/node_worker.d.ts +1 -1
  320. package/dest/worker/node/node_worker.d.ts.map +1 -1
  321. package/dest/worker/node/node_worker.js +6 -5
  322. package/dest/worker/node/start_node_module.d.ts +1 -1
  323. package/dest/worker/node/start_node_module.d.ts.map +1 -1
  324. package/dest/worker/node/start_node_module.js +9 -5
  325. package/dest/worker/wasm_worker.d.ts +2 -2
  326. package/dest/worker/wasm_worker.d.ts.map +1 -1
  327. package/dest/worker/wasm_worker.js +3 -2
  328. package/dest/worker/worker_pool.d.ts +1 -1
  329. package/dest/worker/worker_pool.d.ts.map +1 -1
  330. package/dest/worker/worker_pool.js +32 -43
  331. package/package.json +5 -5
  332. package/src/array/array.ts +1 -1
  333. package/src/buffer/buffer32.ts +1 -1
  334. package/src/collection/array.ts +1 -1
  335. package/src/config/env_var.ts +7 -5
  336. package/src/config/index.ts +1 -1
  337. package/src/crypto/aes128/index.ts +59 -0
  338. package/src/crypto/ecdsa/index.ts +70 -0
  339. package/src/crypto/ecdsa/signature.ts +100 -0
  340. package/src/crypto/grumpkin/index.ts +97 -0
  341. package/src/crypto/index.ts +6 -0
  342. package/src/crypto/keys/index.ts +1 -1
  343. package/src/crypto/pedersen/pedersen.wasm.ts +3 -3
  344. package/src/crypto/poseidon/index.ts +5 -5
  345. package/src/crypto/schnorr/index.ts +55 -0
  346. package/src/crypto/schnorr/signature.ts +116 -0
  347. package/src/crypto/secp256k1/index.ts +57 -0
  348. package/src/crypto/secp256k1-signer/secp256k1_signer.ts +2 -2
  349. package/src/crypto/serialize.ts +85 -0
  350. package/src/crypto/signature/index.ts +17 -0
  351. package/src/crypto/sync/index.ts +1 -1
  352. package/src/fields/coordinate.ts +1 -1
  353. package/src/fields/fields.ts +2 -1
  354. package/src/fs/run_in_dir.ts +8 -1
  355. package/src/index.ts +0 -2
  356. package/src/json-rpc/client/undici.ts +1 -1
  357. package/src/json-rpc/convert.ts +1 -1
  358. package/src/json-rpc/server/safe_json_rpc_server.ts +1 -1
  359. package/src/json-rpc/test/integration.ts +1 -1
  360. package/src/log/console.ts +1 -1
  361. package/src/log/debug.ts +1 -1
  362. package/src/log/gcloud-logger-config.ts +1 -1
  363. package/src/log/index.ts +1 -0
  364. package/src/log/libp2p_logger.ts +67 -0
  365. package/src/log/pino-logger.ts +16 -16
  366. package/src/mutex/index.ts +1 -1
  367. package/src/promise/running-promise.ts +24 -5
  368. package/src/queue/fifo_memory_queue.ts +1 -1
  369. package/src/schemas/api.ts +2 -2
  370. package/src/schemas/index.ts +1 -1
  371. package/src/schemas/schemas.ts +2 -26
  372. package/src/schemas/types.ts +1 -1
  373. package/src/schemas/utils.ts +1 -1
  374. package/src/serialize/buffer_reader.ts +1 -1
  375. package/src/serialize/field_reader.ts +1 -1
  376. package/src/serialize/free_funcs.ts +1 -1
  377. package/src/testing/snapshot_serializer.ts +1 -1
  378. package/src/transport/browser/message_port_socket.ts +1 -1
  379. package/src/transport/browser/shared_worker_connector.ts +1 -1
  380. package/src/transport/browser/shared_worker_listener.ts +1 -1
  381. package/src/transport/browser/worker_connector.ts +1 -1
  382. package/src/transport/browser/worker_listener.ts +1 -1
  383. package/src/transport/dispatch/create_dispatch_proxy.ts +2 -2
  384. package/src/transport/interface/connector.ts +1 -1
  385. package/src/transport/interface/listener.ts +1 -1
  386. package/src/transport/node/node_connector.ts +2 -2
  387. package/src/transport/node/node_connector_socket.ts +2 -2
  388. package/src/transport/node/node_listener.ts +1 -1
  389. package/src/transport/node/node_listener_socket.ts +2 -2
  390. package/src/transport/transport_client.ts +2 -2
  391. package/src/transport/transport_server.ts +3 -3
  392. package/src/trees/hasher.ts +39 -0
  393. package/src/trees/index.ts +8 -57
  394. package/src/trees/indexed_merkle_tree.ts +36 -0
  395. package/src/trees/indexed_merkle_tree_calculator.ts +94 -0
  396. package/src/trees/indexed_tree_leaf.ts +56 -0
  397. package/src/trees/membership_witness.ts +99 -0
  398. package/src/trees/merkle_tree.ts +72 -0
  399. package/src/trees/merkle_tree_calculator.ts +67 -0
  400. package/src/trees/sibling_path.ts +183 -0
  401. package/src/trees/unbalanced_merkle_tree.ts +2 -2
  402. package/src/wasm/index.ts +1 -1
  403. package/src/worker/browser/start_web_module.ts +1 -1
  404. package/src/worker/browser/web_data_store.ts +1 -1
  405. package/src/worker/browser/web_worker.ts +1 -1
  406. package/src/worker/index.ts +1 -1
  407. package/src/worker/node/node_data_store.ts +1 -1
  408. package/src/worker/node/node_worker.ts +1 -1
  409. package/src/worker/node/start_node_module.ts +1 -1
  410. package/src/worker/wasm_worker.ts +2 -2
  411. package/src/worker/worker_pool.ts +1 -1
  412. package/dest/abi/abi.d.ts +0 -853
  413. package/dest/abi/abi.d.ts.map +0 -1
  414. package/dest/abi/abi.js +0 -214
  415. package/dest/abi/buffer.d.ts +0 -18
  416. package/dest/abi/buffer.d.ts.map +0 -1
  417. package/dest/abi/buffer.js +0 -34
  418. package/dest/abi/decoder.d.ts +0 -58
  419. package/dest/abi/decoder.d.ts.map +0 -1
  420. package/dest/abi/decoder.js +0 -180
  421. package/dest/abi/encoder.d.ts +0 -16
  422. package/dest/abi/encoder.d.ts.map +0 -1
  423. package/dest/abi/encoder.js +0 -174
  424. package/dest/abi/event_selector.d.ts +0 -52
  425. package/dest/abi/event_selector.d.ts.map +0 -1
  426. package/dest/abi/event_selector.js +0 -76
  427. package/dest/abi/function_selector.d.ts +0 -65
  428. package/dest/abi/function_selector.d.ts.map +0 -1
  429. package/dest/abi/function_selector.js +0 -92
  430. package/dest/abi/index.d.ts +0 -10
  431. package/dest/abi/index.d.ts.map +0 -1
  432. package/dest/abi/index.js +0 -10
  433. package/dest/abi/note_selector.d.ts +0 -42
  434. package/dest/abi/note_selector.d.ts.map +0 -1
  435. package/dest/abi/note_selector.js +0 -63
  436. package/dest/abi/selector.d.ts +0 -42
  437. package/dest/abi/selector.d.ts.map +0 -1
  438. package/dest/abi/selector.js +0 -57
  439. package/dest/abi/u128.d.ts +0 -13
  440. package/dest/abi/u128.d.ts.map +0 -1
  441. package/dest/abi/u128.js +0 -58
  442. package/dest/abi/utils.d.ts +0 -44
  443. package/dest/abi/utils.d.ts.map +0 -1
  444. package/dest/abi/utils.js +0 -72
  445. package/dest/aztec-address/index.d.ts +0 -57
  446. package/dest/aztec-address/index.d.ts.map +0 -1
  447. package/dest/aztec-address/index.js +0 -114
  448. package/src/abi/abi.ts +0 -504
  449. package/src/abi/buffer.ts +0 -36
  450. package/src/abi/decoder.ts +0 -195
  451. package/src/abi/encoder.ts +0 -170
  452. package/src/abi/event_selector.ts +0 -92
  453. package/src/abi/function_selector.ts +0 -124
  454. package/src/abi/index.ts +0 -9
  455. package/src/abi/note_selector.ts +0 -78
  456. package/src/abi/selector.ts +0 -64
  457. package/src/abi/u128.ts +0 -71
  458. package/src/abi/utils.ts +0 -86
  459. package/src/aztec-address/index.ts +0 -146
@@ -1,4 +1,4 @@
1
- import { type Listener } from './interface/listener.js';
1
+ import type { Listener } from './interface/listener.js';
2
2
  /**
3
3
  * Keeps track of clients, providing a broadcast, and request/response api with multiplexing.
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"transport_server.d.ts","sourceRoot":"","sources":["../../src/transport/transport_server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIxD;;GAEG;AACH,qBAAa,eAAe,CAAC,OAAO;IAGtB,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,YAAY;IAF5D,OAAO,CAAC,OAAO,CAAgB;gBAEX,QAAQ,EAAE,QAAQ,EAAU,YAAY,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC;IAE5F;;;;OAIG;IACH,KAAK;IAKL;;;OAGG;IACH,IAAI;IAIJ;;;;;;;OAOG;IACG,SAAS,CAAC,GAAG,EAAE,OAAO;IAI5B;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAcvB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;;;;;;OAQG;YACW,mBAAmB;CAalC"}
1
+ {"version":3,"file":"transport_server.d.ts","sourceRoot":"","sources":["../../src/transport/transport_server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIxD;;GAEG;AACH,qBAAa,eAAe,CAAC,OAAO;IAGtB,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,YAAY;IAF5D,OAAO,CAAC,OAAO,CAAgB;gBAEX,QAAQ,EAAE,QAAQ,EAAU,YAAY,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC;IAE5F;;;;OAIG;IACH,KAAK;IAKL;;;OAGG;IACH,IAAI;IAIJ;;;;;;;OAOG;IACG,SAAS,CAAC,GAAG,EAAE,OAAO;IAI5B;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAcvB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;;;;;;OAQG;YACW,mBAAmB;CAalC"}
@@ -1,52 +1,52 @@
1
1
  import { isTransferDescriptor } from './interface/transferable.js';
2
2
  /**
3
3
  * Keeps track of clients, providing a broadcast, and request/response api with multiplexing.
4
- */
5
- export class TransportServer {
6
- constructor(listener, msgHandlerFn) {
4
+ */ export class TransportServer {
5
+ listener;
6
+ msgHandlerFn;
7
+ sockets;
8
+ constructor(listener, msgHandlerFn){
7
9
  this.listener = listener;
8
10
  this.msgHandlerFn = msgHandlerFn;
9
11
  this.sockets = [];
10
12
  }
11
13
  /**
12
- * Starts the TransportServer, allowing it to accept new connections and handle incoming messages.
13
- * The server will listen for 'new_socket' events from the underlying listener and invoke the provided message handler function
14
- * for each received message. The server remains active until the 'stop' method is called.
15
- */
16
- start() {
17
- this.listener.on('new_socket', client => this.handleNewSocket(client));
14
+ * Starts the TransportServer, allowing it to accept new connections and handle incoming messages.
15
+ * The server will listen for 'new_socket' events from the underlying listener and invoke the provided message handler function
16
+ * for each received message. The server remains active until the 'stop' method is called.
17
+ */ start() {
18
+ this.listener.on('new_socket', (client)=>this.handleNewSocket(client));
18
19
  this.listener.open();
19
20
  }
20
21
  /**
21
- * Stops accepting new connections. It doesn't close existing sockets.
22
- * It's expected the clients will gracefully complete by closing their end, sending an `undefined` message.
23
- */
24
- stop() {
22
+ * Stops accepting new connections. It doesn't close existing sockets.
23
+ * It's expected the clients will gracefully complete by closing their end, sending an `undefined` message.
24
+ */ stop() {
25
25
  this.listener.close();
26
26
  }
27
27
  /**
28
- * Sends a broadcast message to all connected clients.
29
- * The given payload will be sent to all the clients currently connected to the TransportServer.
30
- * It waits for all the messages to be sent and resolves when they are all sent successfully.
31
- *
32
- * @param msg - The payload to broadcast to all connected clients.
33
- * @returns A Promise that resolves when all messages have been sent successfully.
34
- */
35
- async broadcast(msg) {
36
- await Promise.all(this.sockets.map(s => s.send({ payload: msg })));
28
+ * Sends a broadcast message to all connected clients.
29
+ * The given payload will be sent to all the clients currently connected to the TransportServer.
30
+ * It waits for all the messages to be sent and resolves when they are all sent successfully.
31
+ *
32
+ * @param msg - The payload to broadcast to all connected clients.
33
+ * @returns A Promise that resolves when all messages have been sent successfully.
34
+ */ async broadcast(msg) {
35
+ await Promise.all(this.sockets.map((s)=>s.send({
36
+ payload: msg
37
+ })));
37
38
  }
38
39
  /**
39
- * Handles the addition of a new socket to the server by registering a message handler for the client
40
- * and adding the socket to the list of active sockets. The message handler processes incoming messages
41
- * from the client, including detecting client disconnection and removing the closed socket.
42
- *
43
- * @param socket - The new Socket instance that has connected to the server.
44
- */
45
- handleNewSocket(socket) {
46
- socket.registerHandler(async (msg) => {
40
+ * Handles the addition of a new socket to the server by registering a message handler for the client
41
+ * and adding the socket to the list of active sockets. The message handler processes incoming messages
42
+ * from the client, including detecting client disconnection and removing the closed socket.
43
+ *
44
+ * @param socket - The new Socket instance that has connected to the server.
45
+ */ handleNewSocket(socket) {
46
+ socket.registerHandler(async (msg)=>{
47
47
  if (msg === undefined) {
48
48
  // Client socket has closed. Remove it from the list of sockets. Call close on it for any cleanup.
49
- const socketIndex = this.sockets.findIndex(s => s === socket);
49
+ const socketIndex = this.sockets.findIndex((s)=>s === socket);
50
50
  const [closingSocket] = this.sockets.splice(socketIndex, 1);
51
51
  closingSocket.close();
52
52
  return;
@@ -56,46 +56,59 @@ export class TransportServer {
56
56
  this.sockets.push(socket);
57
57
  }
58
58
  /**
59
- * Detect the 'transferables' argument to our socket from our message
60
- * handler return type.
61
- * @param data - The compound payload data.
62
- * @returns The split data and transferables.
63
- */
64
- getPayloadAndTransfers(data) {
59
+ * Detect the 'transferables' argument to our socket from our message
60
+ * handler return type.
61
+ * @param data - The compound payload data.
62
+ * @returns The split data and transferables.
63
+ */ getPayloadAndTransfers(data) {
65
64
  if (isTransferDescriptor(data)) {
66
65
  // We treat PayloadWithTransfers specially so that we're able to
67
66
  // attach transferables while keeping a simple return-type based usage
68
- return [data.send, data.transferables];
67
+ return [
68
+ data.send,
69
+ data.transferables
70
+ ];
69
71
  }
70
72
  if (data instanceof Uint8Array) {
71
73
  // We may want to devise a better solution to this. We maybe given a view over a non cloneable/transferrable
72
74
  // ArrayBuffer (such as a view over wasm memory). In this case we want to take a copy, and then transfer it.
73
75
  const respPayload = data instanceof Uint8Array && ArrayBuffer.isView(data) ? new Uint8Array(data) : data;
74
- const transferables = data instanceof Uint8Array ? [respPayload.buffer] : [];
75
- return [respPayload, transferables];
76
+ const transferables = data instanceof Uint8Array ? [
77
+ respPayload.buffer
78
+ ] : [];
79
+ return [
80
+ respPayload,
81
+ transferables
82
+ ];
76
83
  }
77
- return [data, []];
84
+ return [
85
+ data,
86
+ []
87
+ ];
78
88
  }
79
89
  /**
80
- * Handles incoming socket messages, processing the request and sending back a response.
81
- * This function is responsible for invoking the registered message handler function with the received
82
- * payload, extracting the result and transferables, and sending a response message back to the client.
83
- * In case of an error during message handling, it sends an error response with the stack trace.
84
- *
85
- * @param socket - The Socket instance from which the message was received.
86
- * @param msg - The RequestMessage object containing the message ID and payload.
87
- */
88
- async handleSocketMessage(socket, { msgId, payload }) {
90
+ * Handles incoming socket messages, processing the request and sending back a response.
91
+ * This function is responsible for invoking the registered message handler function with the received
92
+ * payload, extracting the result and transferables, and sending a response message back to the client.
93
+ * In case of an error during message handling, it sends an error response with the stack trace.
94
+ *
95
+ * @param socket - The Socket instance from which the message was received.
96
+ * @param msg - The RequestMessage object containing the message ID and payload.
97
+ */ async handleSocketMessage(socket, { msgId, payload }) {
89
98
  try {
90
99
  const data = await this.msgHandlerFn(payload);
91
100
  const [respPayload, transferables] = this.getPayloadAndTransfers(data);
92
- const rep = { msgId, payload: respPayload };
101
+ const rep = {
102
+ msgId,
103
+ payload: respPayload
104
+ };
93
105
  await socket.send(rep, transferables);
94
- }
95
- catch (err) {
96
- const rep = { msgId, error: err.stack };
106
+ } catch (err) {
107
+ const rep = {
108
+ msgId,
109
+ error: err.stack
110
+ };
97
111
  await socket.send(rep);
98
112
  }
99
113
  }
100
114
  }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNwb3J0X3NlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc3BvcnQvdHJhbnNwb3J0X3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVuRTs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBRzFCLFlBQW9CLFFBQWtCLEVBQVUsWUFBNEM7UUFBeEUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFnQztRQUZwRixZQUFPLEdBQWEsRUFBRSxDQUFDO0lBRWdFLENBQUM7SUFFaEc7Ozs7T0FJRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSTtRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQVk7UUFDMUIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssZUFBZSxDQUFDLE1BQWM7UUFDcEMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUMsR0FBRyxFQUFDLEVBQUU7WUFDakMsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3RCLGtHQUFrRztnQkFDbEcsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUM7Z0JBQzlELE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDdEIsT0FBTztZQUNULENBQUM7WUFDRCxPQUFPLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLHNCQUFzQixDQUFDLElBQVM7UUFDdEMsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9CLGdFQUFnRTtZQUNoRSxzRUFBc0U7WUFDdEUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLElBQUksWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUMvQiw0R0FBNEc7WUFDNUcsNEdBQTRHO1lBQzVHLE1BQU0sV0FBVyxHQUFHLElBQUksWUFBWSxVQUFVLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN6RyxNQUFNLGFBQWEsR0FBRyxJQUFJLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUNEOzs7Ozs7OztPQVFHO0lBQ0ssS0FBSyxDQUFDLG1CQUFtQixDQUFDLE1BQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQTJCO1FBQzNGLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUU5QyxNQUFNLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RSxNQUFNLEdBQUcsR0FBNkIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBRXRFLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7WUFDbEIsTUFBTSxHQUFHLEdBQTZCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEUsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,39 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ /**
4
+ * Defines hasher interface used by Merkle trees.
5
+ */
6
+ export interface Hasher {
7
+ /**
8
+ * Hash two arrays.
9
+ * @param lhs - The first array.
10
+ * @param rhs - The second array.
11
+ * @returns The new 32-byte hash.
12
+ */
13
+ hash(lhs: Uint8Array, rhs: Uint8Array): Buffer;
14
+ /**
15
+ * Hashes an array of buffers.
16
+ * @param inputs - The array of buffers to hash.
17
+ * @returns The resulting 32-byte hash.
18
+ */
19
+ hashInputs(inputs: Buffer[]): Buffer;
20
+ }
21
+ /**
22
+ * Defines an async hasher interface used by Merkle trees.
23
+ */
24
+ export interface AsyncHasher {
25
+ /**
26
+ * Hash two arrays.
27
+ * @param lhs - The first array.
28
+ * @param rhs - The second array.
29
+ * @returns The new 32-byte hash.
30
+ */
31
+ hash(lhs: Uint8Array, rhs: Uint8Array): Promise<Buffer>;
32
+ /**
33
+ * Hashes an array of buffers.
34
+ * @param inputs - The array of buffers to hash.
35
+ * @returns The resulting 32-byte hash.
36
+ */
37
+ hashInputs(inputs: Buffer[]): Promise<Buffer>;
38
+ }
39
+ //# sourceMappingURL=hasher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasher.d.ts","sourceRoot":"","sources":["../../src/trees/hasher.ts"],"names":[],"mappings":";;AAAA;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;OAKG;IACH,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAAC;IAE/C;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExD;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/C"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Defines hasher interface used by Merkle trees.
3
+ */ /**
4
+ * Defines an async hasher interface used by Merkle trees.
5
+ */ export { };
@@ -1,59 +1,11 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
1
  export * from './unbalanced_merkle_tree.js';
4
2
  export * from './unbalanced_tree_store.js';
5
- /**
6
- * A leaf of an indexed merkle tree.
7
- */
8
- export interface IndexedTreeLeaf {
9
- /**
10
- * Returns key of the leaf. It's used for indexing.
11
- */
12
- getKey(): bigint;
13
- /**
14
- * Serializes the leaf into a buffer.
15
- */
16
- toBuffer(): Buffer;
17
- /**
18
- * Returns true if the leaf is empty.
19
- */
20
- isEmpty(): boolean;
21
- /**
22
- * Updates the leaf with the data of another leaf.
23
- * @param another - The leaf to update to.
24
- * @returns The updated leaf.
25
- */
26
- updateTo(another: IndexedTreeLeaf): IndexedTreeLeaf;
27
- }
28
- /**
29
- * Preimage of a merkle tree leaf.
30
- */
31
- export interface TreeLeafPreimage {
32
- /**
33
- * Returns key of the leaf corresponding to this preimage.
34
- */
35
- getKey(): bigint;
36
- /**
37
- * Returns the preimage as a leaf.
38
- */
39
- asLeaf(): IndexedTreeLeaf;
40
- /**
41
- * Serializes the preimage into a buffer.
42
- */
43
- toBuffer(): Buffer;
44
- /**
45
- * Serializes the preimage to an array of buffers for hashing.
46
- */
47
- toHashInputs(): Buffer[];
48
- }
49
- /**
50
- * Preimage of an indexed merkle tree leaf.
51
- */
52
- export interface IndexedTreeLeafPreimage extends TreeLeafPreimage {
53
- getNextKey(): bigint;
54
- /**
55
- * Returns the index of the next leaf.
56
- */
57
- getNextIndex(): bigint;
58
- }
3
+ export * from './merkle_tree_calculator.js';
4
+ export * from './merkle_tree.js';
5
+ export * from './indexed_merkle_tree_calculator.js';
6
+ export * from './indexed_merkle_tree.js';
7
+ export * from './sibling_path.js';
8
+ export * from './membership_witness.js';
9
+ export * from './hasher.js';
10
+ export * from './indexed_tree_leaf.js';
59
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/trees/index.ts"],"names":[],"mappings":";;AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,IAAI,eAAe,CAAC;IAC1B;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;IACnB;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,UAAU,IAAI,MAAM,CAAC;IACrB;;OAEG;IACH,YAAY,IAAI,MAAM,CAAC;CACxB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/trees/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC"}
@@ -1,3 +1,10 @@
1
1
  export * from './unbalanced_merkle_tree.js';
2
2
  export * from './unbalanced_tree_store.js';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDRCQUE0QixDQUFDIn0=
3
+ export * from './merkle_tree_calculator.js';
4
+ export * from './merkle_tree.js';
5
+ export * from './indexed_merkle_tree_calculator.js';
6
+ export * from './indexed_merkle_tree.js';
7
+ export * from './sibling_path.js';
8
+ export * from './membership_witness.js';
9
+ export * from './hasher.js';
10
+ export * from './indexed_tree_leaf.js';
@@ -0,0 +1,13 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import type { IndexedTreeLeafPreimage } from './indexed_tree_leaf.js';
4
+ import { MembershipWitness } from './membership_witness.js';
5
+ import { MerkleTree } from './merkle_tree.js';
6
+ /** A simple immutable indexed merkle tree container. Use a IndexedMerkleTreeCalculator to create a new instance from a set of leaves. */
7
+ export declare class IndexedMerkleTree<T extends IndexedTreeLeafPreimage, N extends number> extends MerkleTree {
8
+ readonly leafPreimages: T[];
9
+ constructor(height: N, nodes: Buffer[], leafPreimages: T[]);
10
+ getLowLeaf(value: bigint): T;
11
+ getMembershipWitness(leafIndexOrLeaf: number | Buffer): MembershipWitness<N>;
12
+ }
13
+ //# sourceMappingURL=indexed_merkle_tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexed_merkle_tree.d.ts","sourceRoot":"","sources":["../../src/trees/indexed_merkle_tree.ts"],"names":[],"mappings":";;AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,yIAAyI;AACzI,qBAAa,iBAAiB,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,MAAM,CAAE,SAAQ,UAAU;aAC5C,aAAa,EAAE,CAAC,EAAE;gBAA9D,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAkB,aAAa,EAAE,CAAC,EAAE;IAInE,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC;IAc5B,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC;CASpF"}
@@ -0,0 +1,27 @@
1
+ import { Fr } from '../fields/index.js';
2
+ import { assertLength } from '../serialize/index.js';
3
+ import { MembershipWitness } from './membership_witness.js';
4
+ import { MerkleTree } from './merkle_tree.js';
5
+ /** A simple immutable indexed merkle tree container. Use a IndexedMerkleTreeCalculator to create a new instance from a set of leaves. */ export class IndexedMerkleTree extends MerkleTree {
6
+ leafPreimages;
7
+ constructor(height, nodes, leafPreimages){
8
+ super(height, nodes), this.leafPreimages = leafPreimages;
9
+ }
10
+ getLowLeaf(value) {
11
+ let lowLeaf;
12
+ this.leafPreimages.forEach((leaf)=>{
13
+ if (leaf.getKey() < value && (leaf.getNextKey() > value || leaf.getNextKey() == BigInt(0))) {
14
+ lowLeaf = leaf;
15
+ }
16
+ });
17
+ if (!lowLeaf) {
18
+ throw new Error(`Couldn't find low leaf for ${value}`);
19
+ }
20
+ return lowLeaf;
21
+ }
22
+ getMembershipWitness(leafIndexOrLeaf) {
23
+ const index = Buffer.isBuffer(leafIndexOrLeaf) ? this.getIndex(leafIndexOrLeaf) : leafIndexOrLeaf;
24
+ const siblingPath = this.getSiblingPath(index);
25
+ return new MembershipWitness(this.height, BigInt(index), assertLength(siblingPath.map(Fr.fromBuffer), this.height));
26
+ }
27
+ }
@@ -0,0 +1,23 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import type { IndexedTreeLeafPreimage } from '@aztec/foundation/trees';
4
+ import type { AsyncHasher } from './hasher.js';
5
+ import { IndexedMerkleTree } from './indexed_merkle_tree.js';
6
+ interface LeafPreimageFactory<T extends IndexedTreeLeafPreimage> {
7
+ fromBuffer(buffer: Buffer): T;
8
+ }
9
+ /**
10
+ * Indexed merkle tree calculator.
11
+ */
12
+ export declare class IndexedMerkleTreeCalculator<T extends IndexedTreeLeafPreimage, N extends number> {
13
+ private height;
14
+ private zeroHashes;
15
+ private hasher;
16
+ private factory;
17
+ private constructor();
18
+ static create<T extends IndexedTreeLeafPreimage, N extends number>(height: N, hasher: AsyncHasher, factory: LeafPreimageFactory<T>, zeroLeaf?: Buffer): Promise<IndexedMerkleTreeCalculator<T, N>>;
19
+ computeTree(values: Buffer[]): Promise<IndexedMerkleTree<T, N>>;
20
+ computeTreeRoot(leaves?: Buffer[]): Promise<Buffer>;
21
+ }
22
+ export {};
23
+ //# sourceMappingURL=indexed_merkle_tree_calculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexed_merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/indexed_merkle_tree_calculator.ts"],"names":[],"mappings":";;AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,UAAU,mBAAmB,CAAC,CAAC,SAAS,uBAAuB;IAC7D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,2BAA2B,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,MAAM;IAExF,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IAJjB,OAAO;WAOM,MAAM,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,MAAM,EACrE,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC/B,QAAQ,SAAmB;IASvB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAuC/D,eAAe,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAmB9D"}
@@ -0,0 +1,83 @@
1
+ import { toBigIntBE } from '@aztec/foundation/bigint-buffer';
2
+ import { numToUInt32BE } from '@aztec/foundation/serialize';
3
+ import { IndexedMerkleTree } from './indexed_merkle_tree.js';
4
+ /**
5
+ * Indexed merkle tree calculator.
6
+ */ export class IndexedMerkleTreeCalculator {
7
+ height;
8
+ zeroHashes;
9
+ hasher;
10
+ factory;
11
+ constructor(height, zeroHashes, hasher, factory){
12
+ this.height = height;
13
+ this.zeroHashes = zeroHashes;
14
+ this.hasher = hasher;
15
+ this.factory = factory;
16
+ }
17
+ static async create(height, hasher, factory, zeroLeaf = Buffer.alloc(32)) {
18
+ const zeroHashes = [
19
+ zeroLeaf
20
+ ];
21
+ for(let i = 0; i < height; i++){
22
+ zeroHashes.push(await hasher.hash(zeroHashes[i], zeroHashes[i]));
23
+ }
24
+ return new IndexedMerkleTreeCalculator(height, zeroHashes, hasher, factory);
25
+ }
26
+ async computeTree(values) {
27
+ if (!values.find((v)=>toBigIntBE(v) == BigInt(0))) {
28
+ // If we have no zero value, add one to form the zero leaf
29
+ values = [
30
+ Buffer.alloc(32),
31
+ ...values
32
+ ];
33
+ }
34
+ const sorted = values.map((v, i)=>({
35
+ value: v,
36
+ index: i
37
+ })).sort((a, b)=>Number(toBigIntBE(b.value) - toBigIntBE(a.value)));
38
+ const indexedLeaves = sorted.map((item, i)=>({
39
+ leaf: this.factory.fromBuffer(Buffer.concat([
40
+ item.value,
41
+ ...i == 0 ? [
42
+ Buffer.alloc(32),
43
+ Buffer.alloc(32)
44
+ ] : [
45
+ sorted[i - 1].value,
46
+ numToUInt32BE(sorted[i - 1].index, 32)
47
+ ]
48
+ ])),
49
+ index: item.index
50
+ }));
51
+ const resortedIndexedLeaves = indexedLeaves.sort((a, b)=>a.index - b.index).map((item)=>item.leaf);
52
+ let leaves = await Promise.all(resortedIndexedLeaves.map((l)=>this.hasher.hashInputs(l.toHashInputs())));
53
+ let result = leaves.slice();
54
+ for(let i = 0; i < this.height; ++i){
55
+ const numLeaves = 2 ** (this.height - i);
56
+ const newLeaves = [];
57
+ for(let j = 0; j < leaves.length / 2; ++j){
58
+ const l = leaves[j * 2];
59
+ const r = leaves[j * 2 + 1] || this.zeroHashes[i];
60
+ newLeaves[j] = await this.hasher.hash(l, r);
61
+ }
62
+ result = result.concat(new Array(numLeaves - leaves.length).fill(this.zeroHashes[i]), newLeaves);
63
+ leaves = newLeaves;
64
+ }
65
+ return new IndexedMerkleTree(this.height, result, resortedIndexedLeaves);
66
+ }
67
+ async computeTreeRoot(leaves = []) {
68
+ if (leaves.length === 0) {
69
+ return this.zeroHashes[this.zeroHashes.length - 1];
70
+ }
71
+ leaves = leaves.slice();
72
+ for(let i = 0; i < this.height; ++i){
73
+ let j = 0;
74
+ for(; j < leaves.length / 2; ++j){
75
+ const l = leaves[j * 2];
76
+ const r = leaves[j * 2 + 1] || this.zeroHashes[i];
77
+ leaves[j] = await this.hasher.hash(l, r);
78
+ }
79
+ leaves = leaves.slice(0, j);
80
+ }
81
+ return leaves[0];
82
+ }
83
+ }
@@ -0,0 +1,57 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ /**
4
+ * A leaf of an indexed merkle tree.
5
+ */
6
+ export interface IndexedTreeLeaf {
7
+ /**
8
+ * Returns key of the leaf. It's used for indexing.
9
+ */
10
+ getKey(): bigint;
11
+ /**
12
+ * Serializes the leaf into a buffer.
13
+ */
14
+ toBuffer(): Buffer;
15
+ /**
16
+ * Returns true if the leaf is empty.
17
+ */
18
+ isEmpty(): boolean;
19
+ /**
20
+ * Updates the leaf with the data of another leaf.
21
+ * @param another - The leaf to update to.
22
+ * @returns The updated leaf.
23
+ */
24
+ updateTo(another: IndexedTreeLeaf): IndexedTreeLeaf;
25
+ }
26
+ /**
27
+ * Preimage of a merkle tree leaf.
28
+ */
29
+ export interface TreeLeafPreimage {
30
+ /**
31
+ * Returns key of the leaf corresponding to this preimage.
32
+ */
33
+ getKey(): bigint;
34
+ /**
35
+ * Returns the preimage as a leaf.
36
+ */
37
+ asLeaf(): IndexedTreeLeaf;
38
+ /**
39
+ * Serializes the preimage into a buffer.
40
+ */
41
+ toBuffer(): Buffer;
42
+ /**
43
+ * Serializes the preimage to an array of buffers for hashing.
44
+ */
45
+ toHashInputs(): Buffer[];
46
+ }
47
+ /**
48
+ * Preimage of an indexed merkle tree leaf.
49
+ */
50
+ export interface IndexedTreeLeafPreimage extends TreeLeafPreimage {
51
+ getNextKey(): bigint;
52
+ /**
53
+ * Returns the index of the next leaf.
54
+ */
55
+ getNextIndex(): bigint;
56
+ }
57
+ //# sourceMappingURL=indexed_tree_leaf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexed_tree_leaf.d.ts","sourceRoot":"","sources":["../../src/trees/indexed_tree_leaf.ts"],"names":[],"mappings":";;AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,IAAI,eAAe,CAAC;IAC1B;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;IACnB;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,UAAU,IAAI,MAAM,CAAC;IACrB;;OAEG;IACH,YAAY,IAAI,MAAM,CAAC;CACxB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * A leaf of an indexed merkle tree.
3
+ */ /**
4
+ * Preimage of an indexed merkle tree leaf.
5
+ */ export { };
@@ -0,0 +1,62 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import { Fr } from '../fields/fields.js';
4
+ import { BufferReader, type Tuple } from '../serialize/index.js';
5
+ import type { SiblingPath } from './sibling_path.js';
6
+ /**
7
+ * Contains information which can be used to prove that a leaf is a member of a Merkle tree.
8
+ */
9
+ export declare class MembershipWitness<N extends number> {
10
+ /**
11
+ * Index of a leaf in the Merkle tree.
12
+ */
13
+ leafIndex: bigint;
14
+ /**
15
+ * Sibling path of the leaf in the Merkle tree.
16
+ */
17
+ siblingPath: Tuple<Fr, N>;
18
+ constructor(
19
+ /**
20
+ * Size of the sibling path (number of fields it contains).
21
+ */
22
+ pathSize: N,
23
+ /**
24
+ * Index of a leaf in the Merkle tree.
25
+ */
26
+ leafIndex: bigint,
27
+ /**
28
+ * Sibling path of the leaf in the Merkle tree.
29
+ */
30
+ siblingPath: Tuple<Fr, N>);
31
+ toBuffer(): Buffer;
32
+ /**
33
+ * Creates a random membership witness. Used for testing purposes.
34
+ * @param pathSize - Number of fields in the sibling path.
35
+ * @returns Random membership witness.
36
+ */
37
+ static random<N extends number>(pathSize: N): MembershipWitness<N>;
38
+ /**
39
+ * Creates a membership witness whose sibling path is full of zero fields.
40
+ * @param pathSize - Number of fields in the sibling path.
41
+ * @param leafIndex - Index of the leaf in the Merkle tree.
42
+ * @returns Membership witness with zero sibling path.
43
+ */
44
+ static empty<N extends number>(pathSize: N, leafIndex?: bigint): MembershipWitness<N>;
45
+ static fromBufferArray<N extends number>(leafIndex: bigint, siblingPath: Tuple<Buffer, N>): MembershipWitness<N>;
46
+ /**
47
+ * Deserializes from a buffer or reader, corresponding to a write in cpp.
48
+ * @param buffer - Buffer or reader to read from.
49
+ * @returns The deserialized `MembershipWitness`.
50
+ */
51
+ static fromBuffer<N extends number>(buffer: Buffer | BufferReader, size: N): MembershipWitness<N>;
52
+ /**
53
+ * Creates a deserializer object for a MembershipWitness with a given size.
54
+ * @param size - Expected size of the witness.
55
+ * @returns A deserializer object.
56
+ */
57
+ static deserializer<N extends number>(size: N): {
58
+ fromBuffer(buffer: Buffer | BufferReader): MembershipWitness<N>;
59
+ };
60
+ static fromSiblingPath<N extends number>(leafIndex: bigint, siblingPath: SiblingPath<N>): MembershipWitness<N>;
61
+ }
62
+ //# sourceMappingURL=membership_witness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"membership_witness.d.ts","sourceRoot":"","sources":["../../src/trees/membership_witness.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,KAAK,KAAK,EAAqB,MAAM,uBAAuB,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,MAAM;IAM3C;;OAEG;IACI,SAAS,EAAE,MAAM;IACxB;;OAEG;IACI,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;;IAXhC;;OAEG;IACH,QAAQ,EAAE,CAAC;IACX;;OAEG;IACI,SAAS,EAAE,MAAM;IACxB;;OAEG;IACI,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAKlC,QAAQ;IAIR;;;;OAIG;WACW,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC;IAUlD;;;;;OAKG;WACW,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,SAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAOxF,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAQhH;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAOjG;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG;QAAE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;KAAE;IAWnH,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;CAG/G"}