@aztec/foundation 0.0.1-commit.b655e406 → 0.0.1-commit.c0b82b2

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 (508) hide show
  1. package/dest/array/array.d.ts +1 -9
  2. package/dest/array/array.d.ts.map +1 -1
  3. package/dest/array/array.js +0 -11
  4. package/dest/array/index.d.ts +2 -1
  5. package/dest/array/index.d.ts.map +1 -1
  6. package/dest/array/index.js +1 -0
  7. package/dest/array/sorted_array.d.ts +15 -0
  8. package/dest/array/sorted_array.d.ts.map +1 -0
  9. package/dest/array/sorted_array.js +109 -0
  10. package/dest/async-map/index.d.ts +1 -1
  11. package/dest/async-pool/index.d.ts +1 -1
  12. package/dest/bigint/index.d.ts +1 -1
  13. package/dest/bigint-buffer/index.d.ts +1 -1
  14. package/dest/branded-types/block_number.d.ts +56 -0
  15. package/dest/branded-types/block_number.d.ts.map +1 -0
  16. package/dest/branded-types/block_number.js +78 -0
  17. package/dest/branded-types/checkpoint_number.d.ts +54 -0
  18. package/dest/branded-types/checkpoint_number.d.ts.map +1 -0
  19. package/dest/branded-types/checkpoint_number.js +77 -0
  20. package/dest/branded-types/epoch.d.ts +42 -0
  21. package/dest/branded-types/epoch.d.ts.map +1 -0
  22. package/dest/branded-types/epoch.js +59 -0
  23. package/dest/branded-types/index.d.ts +7 -0
  24. package/dest/branded-types/index.d.ts.map +1 -0
  25. package/dest/branded-types/index.js +5 -0
  26. package/dest/branded-types/index_within_checkpoint.d.ts +42 -0
  27. package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -0
  28. package/dest/branded-types/index_within_checkpoint.js +59 -0
  29. package/dest/branded-types/slot.d.ts +42 -0
  30. package/dest/branded-types/slot.d.ts.map +1 -0
  31. package/dest/branded-types/slot.js +59 -0
  32. package/dest/branded-types/types.d.ts +5 -0
  33. package/dest/branded-types/types.d.ts.map +1 -0
  34. package/dest/branded-types/types.js +1 -0
  35. package/dest/buffer/buffer16.d.ts +2 -2
  36. package/dest/buffer/buffer16.d.ts.map +1 -1
  37. package/dest/buffer/buffer16.js +4 -2
  38. package/dest/buffer/buffer32.d.ts +2 -2
  39. package/dest/buffer/buffer32.d.ts.map +1 -1
  40. package/dest/buffer/buffer32.js +4 -2
  41. package/dest/buffer/index.d.ts +1 -1
  42. package/dest/collection/array.d.ts +12 -1
  43. package/dest/collection/array.d.ts.map +1 -1
  44. package/dest/collection/array.js +51 -0
  45. package/dest/collection/index.d.ts +1 -1
  46. package/dest/collection/object.d.ts +1 -1
  47. package/dest/committable/committable.d.ts +1 -1
  48. package/dest/committable/committable.d.ts.map +1 -1
  49. package/dest/committable/index.d.ts +1 -1
  50. package/dest/config/env_var.d.ts +2 -2
  51. package/dest/config/env_var.d.ts.map +1 -1
  52. package/dest/config/index.d.ts +15 -4
  53. package/dest/config/index.d.ts.map +1 -1
  54. package/dest/config/index.js +32 -9
  55. package/dest/config/network_config.d.ts +13 -1
  56. package/dest/config/network_config.d.ts.map +1 -1
  57. package/dest/config/network_config.js +3 -1
  58. package/dest/config/network_name.d.ts +2 -2
  59. package/dest/config/network_name.d.ts.map +1 -1
  60. package/dest/config/network_name.js +2 -0
  61. package/dest/config/parse-env.d.ts +3 -0
  62. package/dest/config/parse-env.d.ts.map +1 -0
  63. package/dest/config/parse-env.js +7 -0
  64. package/dest/config/secret_value.d.ts +1 -1
  65. package/dest/config/secret_value.d.ts.map +1 -1
  66. package/dest/config/secret_value.js +3 -1
  67. package/dest/crypto/aes128/index.d.ts +1 -1
  68. package/dest/crypto/aes128/index.d.ts.map +1 -1
  69. package/dest/crypto/aes128/index.js +2 -6
  70. package/dest/crypto/bls/bn254_keystore.d.ts +15 -15
  71. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -1
  72. package/dest/crypto/bls/bn254_keystore.js +1 -1
  73. package/dest/crypto/bls/index.d.ts +1 -1
  74. package/dest/crypto/bls/index.js +1 -1
  75. package/dest/crypto/bn254/index.d.ts +35 -51
  76. package/dest/crypto/bn254/index.d.ts.map +1 -1
  77. package/dest/crypto/bn254/index.js +51 -137
  78. package/dest/crypto/ecdsa/index.d.ts +1 -1
  79. package/dest/crypto/ecdsa/index.d.ts.map +1 -1
  80. package/dest/crypto/ecdsa/index.js +4 -12
  81. package/dest/crypto/ecdsa/signature.d.ts +2 -2
  82. package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
  83. package/dest/crypto/ecdsa/signature.js +2 -2
  84. package/dest/crypto/grumpkin/index.d.ts +4 -2
  85. package/dest/crypto/grumpkin/index.d.ts.map +1 -1
  86. package/dest/crypto/grumpkin/index.js +7 -16
  87. package/dest/crypto/keccak/index.d.ts +1 -1
  88. package/dest/crypto/keys/index.d.ts +2 -2
  89. package/dest/crypto/keys/index.d.ts.map +1 -1
  90. package/dest/crypto/keys/index.js +2 -4
  91. package/dest/crypto/pedersen/index.d.ts +1 -1
  92. package/dest/crypto/pedersen/pedersen.noble.d.ts +1 -1
  93. package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -2
  94. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  95. package/dest/crypto/pedersen/pedersen.wasm.js +4 -10
  96. package/dest/crypto/poseidon/index.d.ts +2 -3
  97. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  98. package/dest/crypto/poseidon/index.js +14 -33
  99. package/dest/crypto/random/index.d.ts +1 -1
  100. package/dest/crypto/random/index.d.ts.map +1 -1
  101. package/dest/crypto/random/randomness_singleton.d.ts +4 -3
  102. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
  103. package/dest/crypto/random/randomness_singleton.js +5 -5
  104. package/dest/crypto/schnorr/index.d.ts +3 -2
  105. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  106. package/dest/crypto/schnorr/index.js +4 -10
  107. package/dest/crypto/schnorr/signature.d.ts +2 -2
  108. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  109. package/dest/crypto/schnorr/signature.js +2 -2
  110. package/dest/crypto/secp256k1/index.d.ts +1 -1
  111. package/dest/crypto/secp256k1/index.d.ts.map +1 -1
  112. package/dest/crypto/secp256k1/index.js +3 -9
  113. package/dest/crypto/secp256k1-signer/index.d.ts +1 -1
  114. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +1 -1
  115. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
  116. package/dest/crypto/secp256k1-signer/utils.d.ts +1 -1
  117. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
  118. package/dest/crypto/serialize.d.ts +1 -1
  119. package/dest/crypto/sha256/index.d.ts +2 -2
  120. package/dest/crypto/sha256/index.d.ts.map +1 -1
  121. package/dest/crypto/sha256/index.js +1 -1
  122. package/dest/crypto/sha512/index.d.ts +3 -3
  123. package/dest/crypto/sha512/index.d.ts.map +1 -1
  124. package/dest/crypto/sha512/index.js +1 -1
  125. package/dest/crypto/signature/index.d.ts +2 -2
  126. package/dest/crypto/signature/index.d.ts.map +1 -1
  127. package/dest/crypto/sync/index.d.ts +1 -1
  128. package/dest/crypto/sync/index.js +1 -3
  129. package/dest/crypto/sync/pedersen/index.d.ts +2 -2
  130. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
  131. package/dest/crypto/sync/pedersen/index.js +1 -1
  132. package/dest/crypto/sync/poseidon/index.d.ts +2 -3
  133. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
  134. package/dest/crypto/sync/poseidon/index.js +1 -9
  135. package/dest/{fields/bls12_fields.d.ts → curves/bls12/field.d.ts} +3 -3
  136. package/dest/curves/bls12/field.d.ts.map +1 -0
  137. package/dest/{fields/bls12_fields.js → curves/bls12/field.js} +12 -9
  138. package/dest/curves/bls12/index.d.ts +3 -0
  139. package/dest/curves/bls12/index.d.ts.map +1 -0
  140. package/dest/curves/bls12/index.js +2 -0
  141. package/dest/{fields/bls12_point.d.ts → curves/bls12/point.d.ts} +4 -4
  142. package/dest/curves/bls12/point.d.ts.map +1 -0
  143. package/dest/{fields/bls12_point.js → curves/bls12/point.js} +10 -8
  144. package/dest/curves/bn254/field.d.ts +181 -0
  145. package/dest/curves/bn254/field.d.ts.map +1 -0
  146. package/dest/{fields/fields.js → curves/bn254/field.js} +52 -49
  147. package/dest/curves/bn254/index.d.ts +3 -0
  148. package/dest/curves/bn254/index.d.ts.map +1 -0
  149. package/dest/curves/bn254/index.js +2 -0
  150. package/dest/curves/bn254/point.d.ts +54 -0
  151. package/dest/curves/bn254/point.d.ts.map +1 -0
  152. package/dest/curves/bn254/point.js +143 -0
  153. package/dest/curves/grumpkin/index.d.ts +10 -0
  154. package/dest/curves/grumpkin/index.d.ts.map +1 -0
  155. package/dest/curves/grumpkin/index.js +3 -0
  156. package/dest/{fields → curves/grumpkin}/point.d.ts +12 -3
  157. package/dest/curves/grumpkin/point.d.ts.map +1 -0
  158. package/dest/{fields → curves/grumpkin}/point.js +24 -7
  159. package/dest/decorators/index.d.ts +1 -1
  160. package/dest/decorators/memoize.d.ts +1 -1
  161. package/dest/decorators/memoize.d.ts.map +1 -1
  162. package/dest/error/index.d.ts +1 -1
  163. package/dest/eth-address/index.d.ts +12 -2
  164. package/dest/eth-address/index.d.ts.map +1 -1
  165. package/dest/eth-address/index.js +27 -3
  166. package/dest/eth-signature/eth_signature.d.ts +1 -1
  167. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  168. package/dest/eth-signature/index.d.ts +1 -1
  169. package/dest/fs/index.d.ts +1 -1
  170. package/dest/fs/run_in_dir.d.ts +1 -1
  171. package/dest/fs/try_rm_dir.d.ts +1 -1
  172. package/dest/iterable/all.d.ts +1 -1
  173. package/dest/iterable/filter.d.ts +1 -1
  174. package/dest/iterable/index.d.ts +1 -1
  175. package/dest/iterable/isAsyncIt.d.ts +1 -1
  176. package/dest/iterable/map.d.ts +1 -1
  177. package/dest/iterable/peek.d.ts +1 -1
  178. package/dest/iterable/sort.d.ts +1 -1
  179. package/dest/iterable/take.d.ts +1 -1
  180. package/dest/iterable/toArray.d.ts +1 -1
  181. package/dest/iterator/filter.d.ts +3 -0
  182. package/dest/iterator/filter.d.ts.map +1 -0
  183. package/dest/iterator/filter.js +7 -0
  184. package/dest/iterator/index.d.ts +2 -0
  185. package/dest/iterator/index.d.ts.map +1 -0
  186. package/dest/iterator/index.js +1 -0
  187. package/dest/jest/setup.js +28 -1
  188. package/dest/json-rpc/client/fetch.d.ts +1 -1
  189. package/dest/json-rpc/client/index.d.ts +1 -1
  190. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +2 -1
  191. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  192. package/dest/json-rpc/client/safe_json_rpc_client.js +1 -1
  193. package/dest/json-rpc/client/undici.d.ts +1 -1
  194. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  195. package/dest/json-rpc/client/undici.js +21 -4
  196. package/dest/json-rpc/convert.d.ts +1 -1
  197. package/dest/json-rpc/errors.d.ts +1 -1
  198. package/dest/json-rpc/errors.d.ts.map +1 -1
  199. package/dest/json-rpc/fixtures/class_a.d.ts +1 -1
  200. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
  201. package/dest/json-rpc/fixtures/class_b.d.ts +1 -1
  202. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
  203. package/dest/json-rpc/fixtures/test_state.d.ts +1 -1
  204. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
  205. package/dest/json-rpc/index.d.ts +1 -1
  206. package/dest/json-rpc/js_utils.d.ts +1 -1
  207. package/dest/json-rpc/js_utils.d.ts.map +1 -1
  208. package/dest/json-rpc/server/api_key_auth.d.ts +19 -0
  209. package/dest/json-rpc/server/api_key_auth.d.ts.map +1 -0
  210. package/dest/json-rpc/server/api_key_auth.js +57 -0
  211. package/dest/json-rpc/server/index.d.ts +2 -1
  212. package/dest/json-rpc/server/index.d.ts.map +1 -1
  213. package/dest/json-rpc/server/index.js +1 -0
  214. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +1 -1
  215. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  216. package/dest/json-rpc/server/safe_json_rpc_server.js +1 -1
  217. package/dest/json-rpc/test/index.d.ts +1 -1
  218. package/dest/json-rpc/test/integration.d.ts +1 -1
  219. package/dest/log/bigint-utils.d.ts +5 -0
  220. package/dest/log/bigint-utils.d.ts.map +1 -0
  221. package/dest/log/bigint-utils.js +18 -0
  222. package/dest/log/console.d.ts +1 -1
  223. package/dest/log/gcloud-logger-config.d.ts +1 -1
  224. package/dest/log/gcloud-logger-config.d.ts.map +1 -1
  225. package/dest/log/gcloud-logger-config.js +3 -0
  226. package/dest/log/index.d.ts +1 -1
  227. package/dest/log/libp2p_logger.d.ts +5 -2
  228. package/dest/log/libp2p_logger.d.ts.map +1 -1
  229. package/dest/log/libp2p_logger.js +14 -4
  230. package/dest/log/log-filters.d.ts +17 -4
  231. package/dest/log/log-filters.d.ts.map +1 -1
  232. package/dest/log/log-filters.js +26 -12
  233. package/dest/log/log-levels.d.ts +1 -1
  234. package/dest/log/log_fn.d.ts +1 -1
  235. package/dest/log/noir_debug_log_util.d.ts +1 -1
  236. package/dest/log/pino-logger-server.d.ts +9 -0
  237. package/dest/log/pino-logger-server.d.ts.map +1 -0
  238. package/dest/log/pino-logger-server.js +18 -0
  239. package/dest/log/pino-logger.d.ts +38 -9
  240. package/dest/log/pino-logger.d.ts.map +1 -1
  241. package/dest/log/pino-logger.js +122 -29
  242. package/dest/message/index.d.ts +1 -1
  243. package/dest/message/index.d.ts.map +1 -1
  244. package/dest/mutex/index.d.ts +1 -1
  245. package/dest/mutex/index.d.ts.map +1 -1
  246. package/dest/mutex/mutex_database.d.ts +1 -1
  247. package/dest/noir/index.d.ts +1 -1
  248. package/dest/noir/noir_package_config.d.ts +9 -9
  249. package/dest/number/index.d.ts +1 -1
  250. package/dest/profiler/index.d.ts +1 -1
  251. package/dest/profiler/profiler.d.ts +1 -1
  252. package/dest/promise/index.d.ts +1 -1
  253. package/dest/promise/running-promise.d.ts +1 -1
  254. package/dest/promise/running-promise.d.ts.map +1 -1
  255. package/dest/promise/utils.d.ts +1 -1
  256. package/dest/queue/base_memory_queue.d.ts +2 -2
  257. package/dest/queue/base_memory_queue.d.ts.map +1 -1
  258. package/dest/queue/batch_queue.d.ts +1 -1
  259. package/dest/queue/batch_queue.d.ts.map +1 -1
  260. package/dest/queue/bounded_serial_queue.d.ts +1 -1
  261. package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
  262. package/dest/queue/fifo_memory_queue.d.ts +1 -1
  263. package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
  264. package/dest/queue/index.d.ts +1 -1
  265. package/dest/queue/priority_memory_queue.d.ts +1 -1
  266. package/dest/queue/priority_memory_queue.d.ts.map +1 -1
  267. package/dest/queue/priority_queue.d.ts +1 -1
  268. package/dest/queue/priority_queue.d.ts.map +1 -1
  269. package/dest/queue/semaphore.d.ts +5 -1
  270. package/dest/queue/semaphore.d.ts.map +1 -1
  271. package/dest/queue/serial_queue.d.ts +1 -1
  272. package/dest/queue/serial_queue.d.ts.map +1 -1
  273. package/dest/retry/index.d.ts +11 -1
  274. package/dest/retry/index.d.ts.map +1 -1
  275. package/dest/retry/index.js +11 -0
  276. package/dest/running-promise/index.d.ts +1 -1
  277. package/dest/schemas/api.d.ts +1 -1
  278. package/dest/schemas/index.d.ts +1 -1
  279. package/dest/schemas/parse.d.ts +1 -1
  280. package/dest/schemas/schemas.d.ts +15 -17
  281. package/dest/schemas/schemas.d.ts.map +1 -1
  282. package/dest/schemas/schemas.js +14 -10
  283. package/dest/schemas/types.d.ts +31 -1
  284. package/dest/schemas/types.d.ts.map +1 -1
  285. package/dest/schemas/types.js +25 -1
  286. package/dest/schemas/utils.d.ts +4 -4
  287. package/dest/schemas/utils.d.ts.map +1 -1
  288. package/dest/schemas/utils.js +15 -5
  289. package/dest/serialize/buffer_reader.d.ts +14 -4
  290. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  291. package/dest/serialize/buffer_reader.js +26 -4
  292. package/dest/serialize/field_reader.d.ts +2 -2
  293. package/dest/serialize/field_reader.d.ts.map +1 -1
  294. package/dest/serialize/field_reader.js +1 -1
  295. package/dest/serialize/free_funcs.d.ts +2 -2
  296. package/dest/serialize/free_funcs.d.ts.map +1 -1
  297. package/dest/serialize/free_funcs.js +1 -1
  298. package/dest/serialize/index.d.ts +1 -1
  299. package/dest/serialize/serialize.d.ts +20 -2
  300. package/dest/serialize/serialize.d.ts.map +1 -1
  301. package/dest/serialize/serialize.js +32 -1
  302. package/dest/serialize/type_registry.d.ts +1 -1
  303. package/dest/serialize/type_registry.d.ts.map +1 -1
  304. package/dest/serialize/types.d.ts +1 -1
  305. package/dest/sleep/index.d.ts +4 -1
  306. package/dest/sleep/index.d.ts.map +1 -1
  307. package/dest/sleep/index.js +14 -1
  308. package/dest/string/index.d.ts +1 -1
  309. package/dest/testing/files/index.d.ts +2 -1
  310. package/dest/testing/files/index.d.ts.map +1 -1
  311. package/dest/testing/files/index.js +1 -1
  312. package/dest/testing/formatting.d.ts +1 -1
  313. package/dest/testing/index.d.ts +1 -1
  314. package/dest/testing/port_allocator.d.ts +1 -1
  315. package/dest/testing/snapshot_serializer.d.ts +1 -1
  316. package/dest/testing/test_data.d.ts +1 -1
  317. package/dest/timer/date.d.ts +26 -1
  318. package/dest/timer/date.d.ts.map +1 -1
  319. package/dest/timer/date.js +36 -0
  320. package/dest/timer/elapsed.d.ts +1 -1
  321. package/dest/timer/index.d.ts +1 -1
  322. package/dest/timer/timeout.d.ts +1 -1
  323. package/dest/timer/timeout.d.ts.map +1 -1
  324. package/dest/timer/timer.d.ts +1 -1
  325. package/dest/timer/timer.d.ts.map +1 -1
  326. package/dest/transport/dispatch/create_dispatch_fn.d.ts +1 -1
  327. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -1
  328. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +1 -1
  329. package/dest/transport/dispatch/messages.d.ts +1 -1
  330. package/dest/transport/index.d.ts +1 -1
  331. package/dest/transport/interface/connector.d.ts +1 -1
  332. package/dest/transport/interface/listener.d.ts +1 -1
  333. package/dest/transport/interface/socket.d.ts +1 -1
  334. package/dest/transport/interface/transferable.d.ts +1 -1
  335. package/dest/transport/node/index.d.ts +1 -1
  336. package/dest/transport/node/node_connector.d.ts +1 -1
  337. package/dest/transport/node/node_connector.d.ts.map +1 -1
  338. package/dest/transport/node/node_connector_socket.d.ts +1 -1
  339. package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
  340. package/dest/transport/node/node_listener.d.ts +1 -1
  341. package/dest/transport/node/node_listener.d.ts.map +1 -1
  342. package/dest/transport/node/node_listener_socket.d.ts +1 -1
  343. package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
  344. package/dest/transport/transport_client.d.ts +1 -1
  345. package/dest/transport/transport_client.d.ts.map +1 -1
  346. package/dest/transport/transport_client.js +2 -2
  347. package/dest/transport/transport_server.d.ts +1 -10
  348. package/dest/transport/transport_server.d.ts.map +1 -1
  349. package/dest/trees/balanced_merkle_tree_root.d.ts +17 -0
  350. package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -0
  351. package/dest/trees/balanced_merkle_tree_root.js +51 -0
  352. package/dest/trees/hasher.d.ts +3 -1
  353. package/dest/trees/hasher.d.ts.map +1 -1
  354. package/dest/trees/hasher.js +10 -5
  355. package/dest/trees/index.d.ts +4 -3
  356. package/dest/trees/index.d.ts.map +1 -1
  357. package/dest/trees/index.js +3 -2
  358. package/dest/trees/indexed_merkle_tree.d.ts +1 -1
  359. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
  360. package/dest/trees/indexed_merkle_tree.js +1 -1
  361. package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
  362. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  363. package/dest/trees/indexed_tree_leaf.d.ts +1 -1
  364. package/dest/trees/membership_witness.d.ts +7 -18
  365. package/dest/trees/membership_witness.d.ts.map +1 -1
  366. package/dest/trees/membership_witness.js +10 -1
  367. package/dest/trees/merkle_tree.d.ts +1 -1
  368. package/dest/trees/merkle_tree.d.ts.map +1 -1
  369. package/dest/trees/merkle_tree_calculator.d.ts +2 -12
  370. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  371. package/dest/trees/merkle_tree_calculator.js +2 -32
  372. package/dest/trees/sibling_path.d.ts +5 -38
  373. package/dest/trees/sibling_path.d.ts.map +1 -1
  374. package/dest/trees/sibling_path.js +3 -3
  375. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +6 -6
  376. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -1
  377. package/dest/trees/unbalanced_merkle_tree_calculator.js +34 -42
  378. package/dest/trees/unbalanced_merkle_tree_root.d.ts +28 -0
  379. package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -0
  380. package/dest/trees/unbalanced_merkle_tree_root.js +84 -0
  381. package/dest/trees/unbalanced_tree_store.d.ts +5 -1
  382. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
  383. package/dest/trees/unbalanced_tree_store.js +49 -1
  384. package/dest/types/index.d.ts +6 -2
  385. package/dest/types/index.d.ts.map +1 -1
  386. package/dest/types/index.js +6 -0
  387. package/dest/url/index.d.ts +1 -1
  388. package/dest/validation/index.d.ts +1 -1
  389. package/package.json +50 -9
  390. package/src/array/array.ts +0 -16
  391. package/src/array/index.ts +1 -0
  392. package/src/array/sorted_array.ts +138 -0
  393. package/src/branded-types/block_number.ts +117 -0
  394. package/src/branded-types/checkpoint_number.ts +115 -0
  395. package/src/branded-types/epoch.ts +88 -0
  396. package/src/branded-types/index.ts +7 -0
  397. package/src/branded-types/index_within_checkpoint.ts +88 -0
  398. package/src/branded-types/slot.ts +88 -0
  399. package/src/branded-types/types.ts +2 -0
  400. package/src/buffer/buffer16.ts +2 -2
  401. package/src/buffer/buffer32.ts +2 -2
  402. package/src/collection/array.ts +52 -0
  403. package/src/config/env_var.ts +82 -15
  404. package/src/config/index.ts +39 -6
  405. package/src/config/network_config.ts +2 -0
  406. package/src/config/network_name.ts +4 -1
  407. package/src/config/parse-env.ts +4 -0
  408. package/src/crypto/aes128/index.ts +2 -2
  409. package/src/crypto/bls/bn254_keystore.ts +1 -1
  410. package/src/crypto/bls/index.ts +1 -1
  411. package/src/crypto/bn254/index.ts +50 -156
  412. package/src/crypto/ecdsa/index.ts +4 -4
  413. package/src/crypto/ecdsa/signature.ts +2 -2
  414. package/src/crypto/grumpkin/index.ts +8 -6
  415. package/src/crypto/keys/index.ts +2 -2
  416. package/src/crypto/pedersen/pedersen.wasm.ts +4 -4
  417. package/src/crypto/poseidon/index.ts +14 -24
  418. package/src/crypto/random/randomness_singleton.ts +6 -4
  419. package/src/crypto/schnorr/index.ts +5 -4
  420. package/src/crypto/schnorr/signature.ts +2 -2
  421. package/src/crypto/secp256k1/index.ts +3 -3
  422. package/src/crypto/sha256/index.ts +1 -1
  423. package/src/crypto/sha512/index.ts +1 -1
  424. package/src/crypto/signature/index.ts +1 -1
  425. package/src/crypto/sync/index.ts +1 -1
  426. package/src/crypto/sync/pedersen/index.ts +1 -1
  427. package/src/crypto/sync/poseidon/index.ts +1 -10
  428. package/src/{fields/bls12_fields.ts → curves/bls12/field.ts} +6 -6
  429. package/src/curves/bls12/index.ts +2 -0
  430. package/src/{fields/bls12_point.ts → curves/bls12/point.ts} +7 -7
  431. package/src/{fields/fields.ts → curves/bn254/field.ts} +53 -56
  432. package/src/curves/bn254/index.ts +2 -0
  433. package/src/curves/bn254/point.ts +170 -0
  434. package/src/curves/grumpkin/index.ts +11 -0
  435. package/src/{fields → curves/grumpkin}/point.ts +26 -7
  436. package/src/eth-address/index.ts +27 -2
  437. package/src/iterator/filter.ts +11 -0
  438. package/src/iterator/index.ts +1 -0
  439. package/src/jest/setup.mjs +31 -1
  440. package/src/json-rpc/client/safe_json_rpc_client.ts +2 -0
  441. package/src/json-rpc/client/undici.ts +21 -3
  442. package/src/json-rpc/server/api_key_auth.ts +63 -0
  443. package/src/json-rpc/server/index.ts +1 -0
  444. package/src/json-rpc/server/safe_json_rpc_server.ts +1 -1
  445. package/src/log/bigint-utils.ts +22 -0
  446. package/src/log/gcloud-logger-config.ts +5 -0
  447. package/src/log/libp2p_logger.ts +12 -5
  448. package/src/log/log-filters.ts +29 -11
  449. package/src/log/pino-logger-server.ts +25 -0
  450. package/src/log/pino-logger.ts +144 -39
  451. package/src/queue/base_memory_queue.ts +1 -1
  452. package/src/queue/semaphore.ts +5 -0
  453. package/src/retry/index.ts +18 -0
  454. package/src/schemas/schemas.ts +24 -13
  455. package/src/schemas/types.ts +33 -0
  456. package/src/schemas/utils.ts +21 -8
  457. package/src/serialize/buffer_reader.ts +36 -9
  458. package/src/serialize/field_reader.ts +1 -1
  459. package/src/serialize/free_funcs.ts +1 -1
  460. package/src/serialize/serialize.ts +33 -1
  461. package/src/sleep/index.ts +16 -1
  462. package/src/testing/files/index.ts +1 -1
  463. package/src/timer/date.ts +52 -0
  464. package/src/transport/transport_client.ts +2 -2
  465. package/src/trees/balanced_merkle_tree_root.ts +68 -0
  466. package/src/trees/hasher.ts +9 -0
  467. package/src/trees/index.ts +3 -2
  468. package/src/trees/indexed_merkle_tree.ts +1 -1
  469. package/src/trees/membership_witness.ts +9 -1
  470. package/src/trees/merkle_tree_calculator.ts +2 -35
  471. package/src/trees/sibling_path.ts +3 -3
  472. package/src/trees/unbalanced_merkle_tree_calculator.ts +32 -50
  473. package/src/trees/unbalanced_merkle_tree_root.ts +115 -0
  474. package/src/trees/unbalanced_tree_store.ts +57 -2
  475. package/src/types/index.ts +11 -1
  476. package/dest/crypto/bn254/bn254_utils.d.ts +0 -39
  477. package/dest/crypto/bn254/bn254_utils.d.ts.map +0 -1
  478. package/dest/crypto/bn254/bn254_utils.js +0 -56
  479. package/dest/crypto/index.d.ts +0 -17
  480. package/dest/crypto/index.d.ts.map +0 -1
  481. package/dest/crypto/index.js +0 -16
  482. package/dest/fields/bls12_fields.d.ts.map +0 -1
  483. package/dest/fields/bls12_point.d.ts.map +0 -1
  484. package/dest/fields/coordinate.d.ts +0 -66
  485. package/dest/fields/coordinate.d.ts.map +0 -1
  486. package/dest/fields/coordinate.js +0 -96
  487. package/dest/fields/fields.d.ts +0 -179
  488. package/dest/fields/fields.d.ts.map +0 -1
  489. package/dest/fields/index.d.ts +0 -6
  490. package/dest/fields/index.d.ts.map +0 -1
  491. package/dest/fields/index.js +0 -5
  492. package/dest/fields/point.d.ts.map +0 -1
  493. package/dest/index.d.ts +0 -30
  494. package/dest/index.d.ts.map +0 -1
  495. package/dest/index.js +0 -30
  496. package/dest/json-rpc/server/telemetry.d.ts +0 -2
  497. package/dest/json-rpc/server/telemetry.d.ts.map +0 -1
  498. package/dest/json-rpc/server/telemetry.js +0 -0
  499. package/dest/trees/unbalanced_merkle_tree.d.ts +0 -28
  500. package/dest/trees/unbalanced_merkle_tree.d.ts.map +0 -1
  501. package/dest/trees/unbalanced_merkle_tree.js +0 -99
  502. package/src/crypto/bn254/bn254_utils.ts +0 -64
  503. package/src/crypto/index.ts +0 -16
  504. package/src/fields/coordinate.ts +0 -104
  505. package/src/fields/index.ts +0 -5
  506. package/src/index.ts +0 -30
  507. package/src/json-rpc/server/telemetry.ts +0 -0
  508. package/src/trees/unbalanced_merkle_tree.ts +0 -111
@@ -1,5 +1,10 @@
1
- /**
2
- * Defines hasher interface used by Merkle trees.
3
- */ /**
4
- * Defines an async hasher interface used by Merkle trees.
5
- */ export { };
1
+ import { poseidon2Hash } from '../crypto/poseidon/index.js';
2
+ import { sha256Trunc } from '../crypto/sha256/index.js';
3
+ export const shaMerkleHash = (left, right)=>sha256Trunc(Buffer.concat([
4
+ left,
5
+ right
6
+ ]));
7
+ export const poseidonMerkleHash = async (left, right)=>(await poseidon2Hash([
8
+ left,
9
+ right
10
+ ])).toBuffer();
@@ -1,5 +1,4 @@
1
- export * from './unbalanced_merkle_tree.js';
2
- export * from './unbalanced_tree_store.js';
1
+ export * from './balanced_merkle_tree_root.js';
3
2
  export * from './merkle_tree_calculator.js';
4
3
  export * from './merkle_tree.js';
5
4
  export * from './indexed_merkle_tree_calculator.js';
@@ -9,4 +8,6 @@ export * from './membership_witness.js';
9
8
  export * from './hasher.js';
10
9
  export * from './indexed_tree_leaf.js';
11
10
  export * from './unbalanced_merkle_tree_calculator.js';
12
- //# sourceMappingURL=index.d.ts.map
11
+ export * from './unbalanced_merkle_tree_root.js';
12
+ export * from './unbalanced_tree_store.js';
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmVlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsNEJBQTRCLENBQUMifQ==
@@ -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;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;AACvC,cAAc,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/trees/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,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;AACvC,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC"}
@@ -1,5 +1,4 @@
1
- export * from './unbalanced_merkle_tree.js';
2
- export * from './unbalanced_tree_store.js';
1
+ export * from './balanced_merkle_tree_root.js';
3
2
  export * from './merkle_tree_calculator.js';
4
3
  export * from './merkle_tree.js';
5
4
  export * from './indexed_merkle_tree_calculator.js';
@@ -9,3 +8,5 @@ export * from './membership_witness.js';
9
8
  export * from './hasher.js';
10
9
  export * from './indexed_tree_leaf.js';
11
10
  export * from './unbalanced_merkle_tree_calculator.js';
11
+ export * from './unbalanced_merkle_tree_root.js';
12
+ export * from './unbalanced_tree_store.js';
@@ -8,4 +8,4 @@ export declare class IndexedMerkleTree<T extends IndexedTreeLeafPreimage, N exte
8
8
  getLowLeaf(value: bigint): T;
9
9
  getMembershipWitness(leafIndexOrLeaf: number | Buffer): MembershipWitness<N>;
10
10
  }
11
- //# sourceMappingURL=indexed_merkle_tree.d.ts.map
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZF9tZXJrbGVfdHJlZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RyZWVzL2luZGV4ZWRfbWVya2xlX3RyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMseUlBQXlJO0FBQ3pJLHFCQUFhLGlCQUFpQixDQUFDLENBQUMsU0FBUyx1QkFBdUIsRUFBRSxDQUFDLFNBQVMsTUFBTSxDQUFFLFNBQVEsVUFBVTthQUlsRixhQUFhLEVBQUUsQ0FBQyxFQUFFO0lBSHBDLFlBQ0UsTUFBTSxFQUFFLENBQUMsRUFDVCxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQ0MsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUduQztJQUVNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FZbEM7SUFFTSxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FRbEY7Q0FDRiJ9
@@ -1 +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;aAIlF,aAAa,EAAE,CAAC,EAAE;gBAFlC,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,MAAM,EAAE,EACC,aAAa,EAAE,CAAC,EAAE;IAK7B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC;IAc5B,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC;CASpF"}
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;aAIlF,aAAa,EAAE,CAAC,EAAE;IAHpC,YACE,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,MAAM,EAAE,EACC,aAAa,EAAE,CAAC,EAAE,EAGnC;IAEM,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAYlC;IAEM,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAQlF;CACF"}
@@ -1,4 +1,4 @@
1
- import { Fr } from '../fields/index.js';
1
+ import { Fr } from '../curves/bn254/index.js';
2
2
  import { assertLength } from '../serialize/index.js';
3
3
  import { MembershipWitness } from './membership_witness.js';
4
4
  import { MerkleTree } from './merkle_tree.js';
@@ -18,4 +18,4 @@ export declare class IndexedMerkleTreeCalculator<T extends IndexedTreeLeafPreima
18
18
  computeTreeRoot(leaves?: Buffer[]): Promise<Buffer>;
19
19
  }
20
20
  export {};
21
- //# sourceMappingURL=indexed_merkle_tree_calculator.d.ts.map
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZF9tZXJrbGVfdHJlZV9jYWxjdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvaW5kZXhlZF9tZXJrbGVfdHJlZV9jYWxjdWxhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTdELFVBQVUsbUJBQW1CLENBQUMsQ0FBQyxTQUFTLHVCQUF1QjtJQUM3RCxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7Q0FDL0I7QUFFRDs7R0FFRztBQUNILHFCQUFhLDJCQUEyQixDQUFDLENBQUMsU0FBUyx1QkFBdUIsRUFBRSxDQUFDLFNBQVMsTUFBTTtJQUV4RixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLE9BQU87SUFKakIsT0FBTyxlQUtIO0lBRUosT0FBYSxNQUFNLENBQUMsQ0FBQyxTQUFTLHVCQUF1QixFQUFFLENBQUMsU0FBUyxNQUFNLEVBQ3JFLE1BQU0sRUFBRSxDQUFDLEVBQ1QsTUFBTSxFQUFFLFdBQVcsRUFDbkIsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUMvQixRQUFRLHNCQUFtQiw4Q0FPNUI7SUFFSyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FxQ3BFO0lBRUssZUFBZSxDQUFDLE1BQU0sR0FBRSxNQUFNLEVBQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBa0I1RDtDQUNGIn0=
@@ -1 +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,sBAAmB;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"}
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,eAKH;IAEJ,OAAa,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,sBAAmB,8CAO5B;IAEK,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAqCpE;IAEK,eAAe,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB5D;CACF"}
@@ -52,4 +52,4 @@ export interface IndexedTreeLeafPreimage extends TreeLeafPreimage {
52
52
  */
53
53
  getNextIndex(): bigint;
54
54
  }
55
- //# sourceMappingURL=indexed_tree_leaf.d.ts.map
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZF90cmVlX2xlYWYuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmVlcy9pbmRleGVkX3RyZWVfbGVhZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sV0FBVyxlQUFlO0lBQzlCOztPQUVHO0lBQ0gsTUFBTSxJQUFJLE1BQU0sQ0FBQztJQUNqQjs7T0FFRztJQUNILFFBQVEsSUFBSSxNQUFNLENBQUM7SUFDbkI7O09BRUc7SUFDSCxPQUFPLElBQUksT0FBTyxDQUFDO0lBQ25COzs7O09BSUc7SUFDSCxRQUFRLENBQUMsT0FBTyxFQUFFLGVBQWUsR0FBRyxlQUFlLENBQUM7Q0FDckQ7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyxnQkFBZ0I7SUFDL0I7O09BRUc7SUFDSCxNQUFNLElBQUksTUFBTSxDQUFDO0lBQ2pCOztPQUVHO0lBQ0gsTUFBTSxJQUFJLGVBQWUsQ0FBQztJQUMxQjs7T0FFRztJQUNILFFBQVEsSUFBSSxNQUFNLENBQUM7SUFDbkI7O09BRUc7SUFDSCxZQUFZLElBQUksTUFBTSxFQUFFLENBQUM7Q0FDMUI7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyx1QkFBd0IsU0FBUSxnQkFBZ0I7SUFDL0QsVUFBVSxJQUFJLE1BQU0sQ0FBQztJQUNyQjs7T0FFRztJQUNILFlBQVksSUFBSSxNQUFNLENBQUM7Q0FDeEIifQ==
@@ -1,4 +1,4 @@
1
- import { Fr } from '../fields/fields.js';
1
+ import { Fr } from '../curves/bn254/field.js';
2
2
  import { BufferReader, type Tuple } from '../serialize/index.js';
3
3
  import type { SiblingPath } from './sibling_path.js';
4
4
  /**
@@ -29,22 +29,11 @@ export declare class MembershipWitness<N extends number> {
29
29
  toBuffer(): Buffer<ArrayBufferLike>;
30
30
  toJSON(): Buffer<ArrayBufferLike>;
31
31
  toFields(): Fr[];
32
- static schemaFor<N extends number>(size: N): import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Buffer<ArrayBuffer>, string>, import("zod").ZodEffects<import("zod").ZodObject<{
33
- type: import("zod").ZodLiteral<"Buffer">;
34
- data: import("zod").ZodArray<import("zod").ZodNumber, "many">;
35
- }, "strip", import("zod").ZodTypeAny, {
36
- type: "Buffer";
37
- data: number[];
38
- }, {
39
- type: "Buffer";
40
- data: number[];
41
- }>, Buffer<ArrayBuffer>, {
42
- type: "Buffer";
43
- data: number[];
44
- }>]>, MembershipWitness<N>, string | {
45
- type: "Buffer";
46
- data: number[];
47
- }>;
32
+ /**
33
+ * Returns a representation of the membership witness as expected by intrinsic Noir deserialization.
34
+ */
35
+ toNoirRepresentation(): (string | string[])[];
36
+ static schemaFor<N extends number>(size: N): import("zod").ZodEffects<import("../schemas/types.js").ZodFor<Buffer<ArrayBufferLike>>, MembershipWitness<N>, any>;
48
37
  /**
49
38
  * Creates a random membership witness. Used for testing purposes.
50
39
  * @param pathSize - Number of fields in the sibling path.
@@ -75,4 +64,4 @@ export declare class MembershipWitness<N extends number> {
75
64
  };
76
65
  static fromSiblingPath<N extends number>(leafIndex: bigint, siblingPath: SiblingPath<N>): MembershipWitness<N>;
77
66
  }
78
- //# sourceMappingURL=membership_witness.d.ts.map
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyc2hpcF93aXRuZXNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvbWVtYmVyc2hpcF93aXRuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssS0FBSyxFQUFxQixNQUFNLHVCQUF1QixDQUFDO0FBQ3BGLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJEOztHQUVHO0FBQ0gscUJBQWEsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLE1BQU07SUFNM0M7O09BRUc7SUFDSSxTQUFTLEVBQUUsTUFBTTtJQUN4Qjs7T0FFRztJQUNJLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQVpsQztJQUNFOztPQUVHO0lBQ0gsUUFBUSxFQUFFLENBQUM7SUFDWDs7T0FFRztJQUNJLFNBQVMsRUFBRSxNQUFNO0lBQ3hCOztPQUVHO0lBQ0ksV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBR2pDO0lBRUQsUUFBUSw0QkFFUDtJQUVELE1BQU0sNEJBRUw7SUFFRCxRQUFRLElBQUksRUFBRSxFQUFFLENBRWY7SUFFRDs7T0FFRztJQUNJLG9CQUFvQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FHbkQ7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsc0hBRXpDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQWMsTUFBTSxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsd0JBUWpEO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFjLEtBQUssQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsU0FBUyxTQUFLLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBS3ZGO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBTS9HO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUtoRztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRztRQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUFFLENBU2xIO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FFN0c7Q0FDRiJ9
@@ -1 +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;AAEzC,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,MAAM;IAIN,QAAQ,IAAI,EAAE,EAAE;IAIhB,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC;;;;;;;;;;;;;;;;IAI1C;;;;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"}
1
+ {"version":3,"file":"membership_witness.d.ts","sourceRoot":"","sources":["../../src/trees/membership_witness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,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;IAZlC;IACE;;OAEG;IACH,QAAQ,EAAE,CAAC;IACX;;OAEG;IACI,SAAS,EAAE,MAAM;IACxB;;OAEG;IACI,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAGjC;IAED,QAAQ,4BAEP;IAED,MAAM,4BAEL;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED;;OAEG;IACI,oBAAoB,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAGnD;IAED,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,sHAEzC;IAED;;;;OAIG;IACH,OAAc,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,wBAQjD;IAED;;;;;OAKG;IACH,OAAc,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,SAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAKvF;IAED,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,CAM/G;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAKhG;IAED;;;;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,CASlH;IAED,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAE7G;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { assertMemberLength } from '../array/array.js';
2
2
  import { toBigIntBE, toBufferBE } from '../bigint-buffer/index.js';
3
- import { Fr } from '../fields/fields.js';
3
+ import { Fr } from '../curves/bn254/field.js';
4
4
  import { schemas } from '../schemas/schemas.js';
5
5
  import { BufferReader, serializeToBuffer } from '../serialize/index.js';
6
6
  /**
@@ -31,6 +31,15 @@ import { BufferReader, serializeToBuffer } from '../serialize/index.js';
31
31
  ...this.siblingPath
32
32
  ];
33
33
  }
34
+ /**
35
+ * Returns a representation of the membership witness as expected by intrinsic Noir deserialization.
36
+ */ toNoirRepresentation() {
37
+ // TODO(#12874): remove the stupid as string conversion by modifying ForeignCallOutput type in acvm.js
38
+ return [
39
+ new Fr(this.leafIndex).toString(),
40
+ this.siblingPath.map((fr)=>fr.toString())
41
+ ];
42
+ }
34
43
  static schemaFor(size) {
35
44
  return schemas.Buffer.transform((b)=>MembershipWitness.fromBuffer(b, size));
36
45
  }
@@ -13,4 +13,4 @@ export declare class MerkleTree {
13
13
  /** Returns a nice string representation of the tree, useful for debugging purposes. */
14
14
  drawTree(elemSize?: number): string;
15
15
  }
16
- //# sourceMappingURL=merkle_tree.d.ts.map
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmVlcy9tZXJrbGVfdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwSEFBMEg7QUFDMUgscUJBQWEsVUFBVTthQUVILE1BQU0sRUFBRSxNQUFNO2FBQ2QsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUZqQyxZQUNrQixNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFNaEM7SUFFRCxJQUFJLElBQUksSUFBSSxNQUFNLENBRWpCO0lBRUQsSUFBSSxNQUFNLElBQUksTUFBTSxFQUFFLENBRXJCO0lBRUQsd0ZBQXdGO0lBQ2pGLGNBQWMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQzVDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBd0I5QyxrREFBa0Q7SUFDM0MsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLFVBRTlCO0lBRUQsdUZBQXVGO0lBQ2hGLFFBQVEsQ0FBQyxRQUFRLFNBQUksVUFxQjNCO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"merkle_tree.d.ts","sourceRoot":"","sources":["../../src/trees/merkle_tree.ts"],"names":[],"mappings":"AAAA,0HAA0H;AAC1H,qBAAa,UAAU;aAEH,MAAM,EAAE,MAAM;aACd,KAAK,EAAE,MAAM,EAAE;gBADf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAAE;IAQjC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,MAAM,EAAE,CAErB;IAED,wFAAwF;IACjF,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAC3C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAwB7C,kDAAkD;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM;IAI/B,uFAAuF;IAChF,QAAQ,CAAC,QAAQ,SAAI;CAsB7B"}
1
+ {"version":3,"file":"merkle_tree.d.ts","sourceRoot":"","sources":["../../src/trees/merkle_tree.ts"],"names":[],"mappings":"AAAA,0HAA0H;AAC1H,qBAAa,UAAU;aAEH,MAAM,EAAE,MAAM;aACd,KAAK,EAAE,MAAM,EAAE;IAFjC,YACkB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAAE,EAMhC;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,MAAM,EAAE,CAErB;IAED,wFAAwF;IACjF,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAwB9C,kDAAkD;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,UAE9B;IAED,uFAAuF;IAChF,QAAQ,CAAC,QAAQ,SAAI,UAqB3B;CACF"}
@@ -1,4 +1,3 @@
1
- import { sha256Trunc } from '@aztec/foundation/crypto';
2
1
  import { MerkleTree } from './merkle_tree.js';
3
2
  /**
4
3
  * Merkle tree calculator.
@@ -8,17 +7,8 @@ export declare class MerkleTreeCalculator {
8
7
  private zeroHashes;
9
8
  private hasher;
10
9
  private constructor();
11
- static create(height: number, zeroLeaf?: Buffer, hasher?: (left: Buffer, right: Buffer) => Promise<Buffer<ArrayBuffer>>): Promise<MerkleTreeCalculator>;
10
+ static create(height: number, zeroLeaf?: Buffer, hasher?: (left: Buffer<ArrayBufferLike>, right: Buffer<ArrayBufferLike>) => Promise<Buffer<ArrayBuffer>>): Promise<MerkleTreeCalculator>;
12
11
  computeTree(leaves?: Buffer[]): Promise<MerkleTree>;
13
12
  computeTreeRoot(leaves?: Buffer[]): Promise<Buffer>;
14
- /**
15
- * Computes the Merkle root with the provided leaves **synchronously**.
16
- *
17
- * This method uses a synchronous hash function (defaults to `sha256Trunc`) and **does not** allow for padding.
18
- * If the number of leaves is not a power of two, it throws an error.
19
- * This contrasts with the above non-static async method `computeTreeRoot`, which can handle any number of leaves by
20
- * padding with zero hashes.
21
- */
22
- static computeTreeRootSync(leaves: Buffer[], hasher?: typeof sha256Trunc): Buffer;
23
13
  }
24
- //# sourceMappingURL=merkle_tree_calculator.d.ts.map
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVfY2FsY3VsYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RyZWVzL21lcmtsZV90cmVlX2NhbGN1bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDOztHQUVHO0FBQ0gscUJBQWEsb0JBQW9CO0lBRTdCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLFVBQVU7SUFDbEIsT0FBTyxDQUFDLE1BQU07SUFIaEIsT0FBTyxlQU1OO0lBRUQsT0FBYSxNQUFNLENBQ2pCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsUUFBUSxHQUFFLE1BQXlCLEVBQ25DLE1BQU0sa0dBQ2tFLGlDQU96RTtJQUVLLFdBQVcsQ0FBQyxNQUFNLEdBQUUsTUFBTSxFQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQW9CNUQ7SUFFSyxlQUFlLENBQUMsTUFBTSxHQUFFLE1BQU0sRUFBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FrQjVEO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/merkle_tree_calculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGrE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IAHhB,OAAO;WAQM,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAyB,EACnC,MAAM,IAAU,MAAM,MAAM,EAAE,OAAO,MAAM,iCAC4B;IASnE,WAAW,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAsBvD,eAAe,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB7D;;;;;;;OAOG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,qBAAc,GAAG,MAAM;CAwB3E"}
1
+ {"version":3,"file":"merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/merkle_tree_calculator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IAHhB,OAAO,eAMN;IAED,OAAa,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAyB,EACnC,MAAM,kGACkE,iCAOzE;IAEK,WAAW,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAoB5D;IAEK,eAAe,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB5D;CACF"}
@@ -1,4 +1,4 @@
1
- import { pedersenHash, sha256Trunc } from '@aztec/foundation/crypto';
1
+ import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
2
2
  import { MerkleTree } from './merkle_tree.js';
3
3
  /**
4
4
  * Merkle tree calculator.
@@ -12,7 +12,7 @@ import { MerkleTree } from './merkle_tree.js';
12
12
  this.hasher = hasher;
13
13
  this.hasher = hasher;
14
14
  }
15
- static async create(height, zeroLeaf = Buffer.alloc(32), hasher = async (left, right)=>(await pedersenHash([
15
+ static async create(height, zeroLeaf = Buffer.alloc(32), hasher = async (left, right)=>(await poseidon2Hash([
16
16
  left,
17
17
  right
18
18
  ])).toBuffer()) {
@@ -58,34 +58,4 @@ import { MerkleTree } from './merkle_tree.js';
58
58
  }
59
59
  return leaves[0];
60
60
  }
61
- /**
62
- * Computes the Merkle root with the provided leaves **synchronously**.
63
- *
64
- * This method uses a synchronous hash function (defaults to `sha256Trunc`) and **does not** allow for padding.
65
- * If the number of leaves is not a power of two, it throws an error.
66
- * This contrasts with the above non-static async method `computeTreeRoot`, which can handle any number of leaves by
67
- * padding with zero hashes.
68
- */ static computeTreeRootSync(leaves, hasher = sha256Trunc) {
69
- if (leaves.length === 0) {
70
- throw new Error('Cannot compute a Merkle root with no leaves');
71
- }
72
- const height = Math.log2(leaves.length);
73
- if (!Number.isInteger(height)) {
74
- throw new Error('Cannot compute a Merkle root with a non-power-of-two number of leaves');
75
- }
76
- let nodes = leaves.slice();
77
- for(let i = 0; i < height; ++i){
78
- let j = 0;
79
- for(; j < nodes.length / 2; ++j){
80
- const l = nodes[j * 2];
81
- const r = nodes[j * 2 + 1];
82
- nodes[j] = hasher(Buffer.concat([
83
- l,
84
- r
85
- ]));
86
- }
87
- nodes = nodes.slice(0, j);
88
- }
89
- return nodes[0];
90
- }
91
61
  }
@@ -1,4 +1,4 @@
1
- import { Fr } from '../fields/index.js';
1
+ import { Fr } from '../curves/bn254/index.js';
2
2
  import { type Tuple } from '../serialize/index.js';
3
3
  import type { Hasher } from './hasher.js';
4
4
  /**
@@ -25,41 +25,8 @@ export declare class SiblingPath<N extends number> {
25
25
  pathSize: N,
26
26
  /** The sibling path data. */
27
27
  path: Buffer[]);
28
- static get schema(): import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Buffer<ArrayBuffer>, string>, import("zod").ZodEffects<import("zod").ZodObject<{
29
- type: import("zod").ZodLiteral<"Buffer">;
30
- data: import("zod").ZodArray<import("zod").ZodNumber, "many">;
31
- }, "strip", import("zod").ZodTypeAny, {
32
- type: "Buffer";
33
- data: number[];
34
- }, {
35
- type: "Buffer";
36
- data: number[];
37
- }>, Buffer<ArrayBuffer>, {
38
- type: "Buffer";
39
- data: number[];
40
- }>]>, SiblingPath<number>, string | {
41
- type: "Buffer";
42
- data: number[];
43
- }>;
44
- static schemaFor<N extends number>(size: N): import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Buffer<ArrayBuffer>, string>, import("zod").ZodEffects<import("zod").ZodObject<{
45
- type: import("zod").ZodLiteral<"Buffer">;
46
- data: import("zod").ZodArray<import("zod").ZodNumber, "many">;
47
- }, "strip", import("zod").ZodTypeAny, {
48
- type: "Buffer";
49
- data: number[];
50
- }, {
51
- type: "Buffer";
52
- data: number[];
53
- }>, Buffer<ArrayBuffer>, {
54
- type: "Buffer";
55
- data: number[];
56
- }>]>, SiblingPath<N>, string | {
57
- type: "Buffer";
58
- data: number[];
59
- }>, SiblingPath<N>, string | {
60
- type: "Buffer";
61
- data: number[];
62
- }>;
28
+ static get schema(): import("zod").ZodEffects<import("../schemas/types.js").ZodFor<Buffer<ArrayBufferLike>>, SiblingPath<number>, any>;
29
+ static schemaFor<N extends number>(size: N): import("zod").ZodEffects<import("zod").ZodEffects<import("../schemas/types.js").ZodFor<Buffer<ArrayBufferLike>>, SiblingPath<N>, any>, SiblingPath<N>, any>;
63
30
  toJSON(): Buffer<ArrayBufferLike>;
64
31
  /**
65
32
  * Returns sibling path hashed up from the a element.
@@ -126,5 +93,5 @@ export declare class SiblingPath<N extends number> {
126
93
  getSubtreeSiblingPath<SubtreeHeight extends number, SubtreeSiblingPathHeight extends number>(subtreeHeight: SubtreeHeight): SiblingPath<SubtreeSiblingPathHeight>;
127
94
  }
128
95
  /** Computes the expected root of a merkle tree given a leaf and its sibling path. */
129
- export declare function computeRootFromSiblingPath(leaf: Buffer, siblingPath: Buffer[], index: number, hasher?: (left: Buffer, right: Buffer) => Promise<Buffer<ArrayBufferLike>>): Promise<Buffer<ArrayBufferLike>>;
130
- //# sourceMappingURL=sibling_path.d.ts.map
96
+ export declare function computeRootFromSiblingPath(leaf: Buffer, siblingPath: Buffer[], index: number, hasher?: (left: Buffer<ArrayBufferLike>, right: Buffer<ArrayBufferLike>) => Promise<Buffer<ArrayBufferLike>>): Promise<Buffer<ArrayBufferLike>>;
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2libGluZ19wYXRoLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvc2libGluZ19wYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5QyxPQUFPLEVBQ0wsS0FBSyxLQUFLLEVBSVgsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUM7Ozs7Ozs7OztHQVNHO0FBQ0gscUJBQWEsV0FBVyxDQUFDLENBQUMsU0FBUyxNQUFNO0lBU3JDLCtEQUErRDtJQUN4RCxRQUFRLEVBQUUsQ0FBQztJQVRwQixPQUFPLENBQUMsSUFBSSxDQUFtQjtJQUUvQjs7OztPQUlHO0lBQ0g7SUFDRSwrREFBK0Q7SUFDeEQsUUFBUSxFQUFFLENBQUM7SUFDbEIsNkJBQTZCO0lBQzdCLElBQUksRUFBRSxNQUFNLEVBQUUsRUFHZjtJQUVELE1BQU0sS0FBSyxNQUFNLHNIQUVoQjtJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQywrSkFLekM7SUFFRCxNQUFNLDRCQUVMO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsT0FBYyxJQUFJLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBUWpHO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLGtCQUd4QztJQUVEOzs7T0FHRztJQUNJLFFBQVEsSUFBSSxNQUFNLENBRXhCO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYSxJQUFJLE1BQU0sRUFBRSxDQUUvQjtJQUVEOzs7T0FHRztJQUNJLFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FFdEI7SUFFRDs7O09BR0c7SUFDSSxPQUFPLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FHN0I7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBSSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FHM0U7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBSTs7O01BUTNEO0lBRUQ7OztPQUdHO0lBQ0ksUUFBUSxJQUFJLE1BQU0sQ0FFeEI7SUFFRDs7OztPQUlHO0lBQ0gsT0FBYyxVQUFVLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FFdkU7SUFFRDs7OztPQUlHO0lBQ0kscUJBQXFCLENBQUMsYUFBYSxTQUFTLE1BQU0sRUFBRSx3QkFBd0IsU0FBUyxNQUFNLEVBQ2hHLGFBQWEsRUFBRSxhQUFhLEdBQzNCLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUt2QztDQUNGO0FBRUQscUZBQXFGO0FBQ3JGLHdCQUFzQiwwQkFBMEIsQ0FDOUMsSUFBSSxFQUFFLE1BQU0sRUFDWixXQUFXLEVBQUUsTUFBTSxFQUFFLEVBQ3JCLEtBQUssRUFBRSxNQUFNLEVBQ2IsTUFBTSxzR0FBeUYsb0NBUWhHIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"sibling_path.d.ts","sourceRoot":"","sources":["../../src/trees/sibling_path.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,OAAO,EACL,KAAK,KAAK,EAIX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;;;;GASG;AACH,qBAAa,WAAW,CAAC,CAAC,SAAS,MAAM;IASrC,+DAA+D;IACxD,QAAQ,EAAE,CAAC;IATpB,OAAO,CAAC,IAAI,CAAmB;IAE/B;;;;OAIG;;IAED,+DAA+D;IACxD,QAAQ,EAAE,CAAC;IAClB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,EAAE;IAKhB,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;OAEhB;IAED,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC;;;;;;;;;;;;;;;;;;;IAO1C,MAAM;IAIN;;;;;;OAMG;WACW,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAUlG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC;IAKzC;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAIzB;;;OAGG;IACI,aAAa,IAAI,MAAM,EAAE;IAIhC;;;OAGG;IACI,QAAQ,IAAI,EAAE,EAAE;IAIvB;;;OAGG;IACI,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAK9B;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,WAAW,CAAC,CAAC,CAAC;IAK5E;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;;IAU5D;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAIzB;;;;OAIG;WACW,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAIxE;;;;OAIG;IACI,qBAAqB,CAAC,aAAa,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,EAChG,aAAa,EAAE,aAAa,GAC3B,WAAW,CAAC,wBAAwB,CAAC;CAMzC;AAED,qFAAqF;AACrF,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,IAAU,MAAM,MAAM,EAAE,OAAO,MAAM,qCAAmD,oCAQ/F"}
1
+ {"version":3,"file":"sibling_path.d.ts","sourceRoot":"","sources":["../../src/trees/sibling_path.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EACL,KAAK,KAAK,EAIX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;;;;GASG;AACH,qBAAa,WAAW,CAAC,CAAC,SAAS,MAAM;IASrC,+DAA+D;IACxD,QAAQ,EAAE,CAAC;IATpB,OAAO,CAAC,IAAI,CAAmB;IAE/B;;;;OAIG;IACH;IACE,+DAA+D;IACxD,QAAQ,EAAE,CAAC;IAClB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,EAAE,EAGf;IAED,MAAM,KAAK,MAAM,sHAEhB;IAED,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,+JAKzC;IAED,MAAM,4BAEL;IAED;;;;;;OAMG;IACH,OAAc,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAQjG;IAED,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,kBAGxC;IAED;;;OAGG;IACI,QAAQ,IAAI,MAAM,CAExB;IAED;;;OAGG;IACI,aAAa,IAAI,MAAM,EAAE,CAE/B;IAED;;;OAGG;IACI,QAAQ,IAAI,EAAE,EAAE,CAEtB;IAED;;;OAGG;IACI,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAG7B;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAG3E;IAED;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;MAQ3D;IAED;;;OAGG;IACI,QAAQ,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACH,OAAc,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAEvE;IAED;;;;OAIG;IACI,qBAAqB,CAAC,aAAa,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,EAChG,aAAa,EAAE,aAAa,GAC3B,WAAW,CAAC,wBAAwB,CAAC,CAKvC;CACF;AAED,qFAAqF;AACrF,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,sGAAyF,oCAQhG"}
@@ -1,6 +1,6 @@
1
1
  import { makeTuple } from '../array/array.js';
2
- import { pedersenHash } from '../crypto/index.js';
3
- import { Fr } from '../fields/index.js';
2
+ import { poseidon2Hash } from '../crypto/poseidon/index.js';
3
+ import { Fr } from '../curves/bn254/index.js';
4
4
  import { schemas } from '../schemas/index.js';
5
5
  import { assertLength, deserializeArrayFromVector, serializeArrayOfBufferableToVector } from '../serialize/index.js';
6
6
  import { bufferToHex, hexToBuffer } from '../string/index.js';
@@ -131,7 +131,7 @@ import { bufferToHex, hexToBuffer } from '../string/index.js';
131
131
  return new SiblingPath(subtreePathSize, subtreeData);
132
132
  }
133
133
  }
134
- /** Computes the expected root of a merkle tree given a leaf and its sibling path. */ export async function computeRootFromSiblingPath(leaf, siblingPath, index, hasher = async (left, right)=>(await pedersenHash([
134
+ /** Computes the expected root of a merkle tree given a leaf and its sibling path. */ export async function computeRootFromSiblingPath(leaf, siblingPath, index, hasher = async (left, right)=>(await poseidon2Hash([
135
135
  left,
136
136
  right
137
137
  ])).toBuffer()) {
@@ -1,7 +1,6 @@
1
- import type { Hasher } from './hasher.js';
1
+ import { type Hasher } from './hasher.js';
2
2
  import { SiblingPath } from './sibling_path.js';
3
3
  import { type TreeNodeLocation } from './unbalanced_tree_store.js';
4
- export declare function computeCompressedUnbalancedMerkleTreeRoot(leaves: Buffer[], valueToCompress?: Buffer<ArrayBuffer>, hasher?: Hasher['hash']): Buffer;
5
4
  /**
6
5
  * An ephemeral unbalanced Merkle tree implementation.
7
6
  * Follows the rollup implementation which greedily hashes pairs of nodes up the tree.
@@ -13,11 +12,12 @@ export declare function computeCompressedUnbalancedMerkleTreeRoot(leaves: Buffer
13
12
  export declare class UnbalancedMerkleTreeCalculator {
14
13
  private readonly leaves;
15
14
  private readonly valueToCompress;
15
+ private readonly emptyRoot;
16
16
  private readonly hasher;
17
17
  private store;
18
18
  private leafLocations;
19
- constructor(leaves: Buffer[], valueToCompress: Buffer, hasher: Hasher['hash']);
20
- static create(leaves: Buffer[], valueToCompress?: Buffer<ArrayBuffer>, hasher?: (left: Buffer, right: Buffer) => Buffer<ArrayBuffer>): UnbalancedMerkleTreeCalculator;
19
+ constructor(leaves: Buffer[], valueToCompress: Buffer, emptyRoot: Buffer, hasher: Hasher['hash']);
20
+ static create(leaves: Buffer[], valueToCompress?: Buffer<ArrayBuffer>, emptyRoot?: Buffer<ArrayBuffer>, hasher?: (lhs: Uint8Array<ArrayBufferLike>, rhs: Uint8Array<ArrayBufferLike>) => Buffer<ArrayBuffer>): UnbalancedMerkleTreeCalculator;
21
21
  /**
22
22
  * Returns the root of the tree.
23
23
  * @returns The root of the tree.
@@ -43,6 +43,6 @@ export declare class UnbalancedMerkleTreeCalculator {
43
43
  */
44
44
  private buildTree;
45
45
  private shiftNodeUp;
46
- private shiftChildrenUp;
46
+ private collectNodesToShift;
47
47
  }
48
- //# sourceMappingURL=unbalanced_merkle_tree_calculator.d.ts.map
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iYWxhbmNlZF9tZXJrbGVfdHJlZV9jYWxjdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvdW5iYWxhbmNlZF9tZXJrbGVfdHJlZV9jYWxjdWxhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBaUIsTUFBTSxhQUFhLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUF1QixNQUFNLDRCQUE0QixDQUFDO0FBT3hGOzs7Ozs7O0dBT0c7QUFDSCxxQkFBYSw4QkFBOEI7SUFLdkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0lBQ3ZCLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZTtJQUNoQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVM7SUFDMUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0lBUHpCLE9BQU8sQ0FBQyxLQUFLLENBQWdDO0lBQzdDLE9BQU8sQ0FBQyxhQUFhLENBQTBCO0lBRS9DLFlBQ21CLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFDaEIsZUFBZSxFQUFFLE1BQU0sRUFDdkIsU0FBUyxFQUFFLE1BQU0sRUFDakIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFJeEM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUNYLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFDaEIsZUFBZSxzQkFBa0IsRUFDakMsU0FBUyxzQkFBbUIsRUFDNUIsTUFBTSw4RkFBZ0Isa0NBR3ZCO0lBRUQ7OztPQUdHO0lBQ0ksT0FBTyxJQUFJLE1BQU0sQ0FFdkI7SUFFRDs7Ozs7T0FLRztJQUNJLGNBQWMsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQU9yRTtJQUVEOzs7O09BSUc7SUFDSSx5QkFBeUIsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQW1CcEY7SUFFTSxlQUFlLENBQUMsU0FBUyxFQUFFLE1BQU0sb0JBRXZDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLFNBQVM7SUErQ2pCLE9BQU8sQ0FBQyxXQUFXO0lBWW5CLE9BQU8sQ0FBQyxtQkFBbUI7Q0FtQjVCIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"unbalanced_merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_merkle_tree_calculator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,4BAA4B,CAAC;AAExF,wBAAgB,yCAAyC,CACvD,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,sBAAmB,EAClC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GACtB,MAAM,CAGR;AAOD;;;;;;;GAOG;AACH,qBAAa,8BAA8B;IAKvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,aAAa,CAA0B;gBAG5B,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IAUzC,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,sBAAkB,EACjC,MAAM,IAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAkD,MAAM,CAAC,WAAW,CAAC;IAK5G;;;OAGG;IACI,OAAO,IAAI,MAAM;IAIxB;;;;;OAKG;IACI,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAStE;;;;OAIG;IACI,yBAAyB,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAqB9E,eAAe,CAAC,SAAS,EAAE,MAAM;IAIxC;;;OAGG;IACH,OAAO,CAAC,SAAS;IAkDjB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,eAAe;CAoBxB"}
1
+ {"version":3,"file":"unbalanced_merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_merkle_tree_calculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,4BAA4B,CAAC;AAOxF;;;;;;;GAOG;AACH,qBAAa,8BAA8B;IAKvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,aAAa,CAA0B;IAE/C,YACmB,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAIxC;IAED,MAAM,CAAC,MAAM,CACX,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,sBAAkB,EACjC,SAAS,sBAAmB,EAC5B,MAAM,8FAAgB,kCAGvB;IAED;;;OAGG;IACI,OAAO,IAAI,MAAM,CAEvB;IAED;;;;;OAKG;IACI,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAOrE;IAED;;;;OAIG;IACI,yBAAyB,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAmBpF;IAEM,eAAe,CAAC,SAAS,EAAE,MAAM,oBAEvC;IAED;;;OAGG;IACH,OAAO,CAAC,SAAS;IA+CjB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,mBAAmB;CAmB5B"}
@@ -1,10 +1,6 @@
1
- import { sha256Trunc } from '../crypto/index.js';
1
+ import { shaMerkleHash } from './hasher.js';
2
2
  import { SiblingPath } from './sibling_path.js';
3
3
  import { UnbalancedTreeStore } from './unbalanced_tree_store.js';
4
- export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompress = Buffer.alloc(32), hasher) {
5
- const calculator = UnbalancedMerkleTreeCalculator.create(leaves, valueToCompress, hasher);
6
- return calculator.getRoot();
7
- }
8
4
  /**
9
5
  * An ephemeral unbalanced Merkle tree implementation.
10
6
  * Follows the rollup implementation which greedily hashes pairs of nodes up the tree.
@@ -15,25 +11,21 @@ export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompres
15
11
  */ export class UnbalancedMerkleTreeCalculator {
16
12
  leaves;
17
13
  valueToCompress;
14
+ emptyRoot;
18
15
  hasher;
19
16
  store;
20
17
  leafLocations;
21
- constructor(leaves, valueToCompress, hasher){
18
+ constructor(leaves, valueToCompress, emptyRoot, hasher){
22
19
  this.leaves = leaves;
23
20
  this.valueToCompress = valueToCompress;
21
+ this.emptyRoot = emptyRoot;
24
22
  this.hasher = hasher;
25
23
  this.leafLocations = [];
26
- if (leaves.length === 0) {
27
- throw Error('Cannot create a compressed unbalanced tree with 0 leaves.');
28
- }
29
24
  this.store = new UnbalancedTreeStore(leaves.length);
30
25
  this.buildTree();
31
26
  }
32
- static create(leaves, valueToCompress = Buffer.alloc(0), hasher = (left, right)=>sha256Trunc(Buffer.concat([
33
- left,
34
- right
35
- ]))) {
36
- return new UnbalancedMerkleTreeCalculator(leaves, valueToCompress, hasher);
27
+ static create(leaves, valueToCompress = Buffer.alloc(0), emptyRoot = Buffer.alloc(32), hasher = shaMerkleHash) {
28
+ return new UnbalancedMerkleTreeCalculator(leaves, valueToCompress, emptyRoot, hasher);
37
29
  }
38
30
  /**
39
31
  * Returns the root of the tree.
@@ -88,12 +80,12 @@ export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompres
88
80
  // Start with the leaves that are not compressed.
89
81
  let toProcess = this.leafLocations.filter((_, i)=>!this.leaves[i].equals(this.valueToCompress));
90
82
  if (!toProcess.length) {
91
- // All leaves are compressed. Set 0 to the root.
83
+ // All leaves are compressed. Set empty root to the root.
92
84
  this.store.setNode({
93
85
  level: 0,
94
86
  index: 0
95
87
  }, {
96
- value: Buffer.alloc(32)
88
+ value: this.emptyRoot
97
89
  });
98
90
  return;
99
91
  }
@@ -114,10 +106,7 @@ export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompres
114
106
  const shouldShiftUp = !sibling || sibling.value.equals(this.valueToCompress);
115
107
  if (shouldShiftUp) {
116
108
  // The node becomes the parent if the sibling is a compressed leaf.
117
- const isLeaf = this.shiftNodeUp(location, parentLocation);
118
- if (!isLeaf) {
119
- this.shiftChildrenUp(location);
120
- }
109
+ this.shiftNodeUp(location, parentLocation);
121
110
  } else {
122
111
  // Hash the value with the (right) sibling and update the parent node.
123
112
  const node = this.store.getNode(location);
@@ -132,31 +121,34 @@ export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompres
132
121
  toProcess = toProcessNext;
133
122
  }
134
123
  }
135
- shiftNodeUp(fromLocation, toLocation) {
136
- const node = this.store.getNode(fromLocation);
137
- this.store.setNode(toLocation, node);
138
- const isLeaf = node.leafIndex !== undefined;
139
- if (isLeaf) {
140
- // Update the location if the node is a leaf.
141
- this.leafLocations[node.leafIndex] = toLocation;
124
+ shiftNodeUp(from, to) {
125
+ // Collect all nodes that need to shift.
126
+ const nodesToShift = this.collectNodesToShift(from, to);
127
+ // Move all nodes to their new locations.
128
+ for (const { node, newLocation } of nodesToShift){
129
+ this.store.setNode(newLocation, node);
130
+ if (node.leafIndex !== undefined) {
131
+ this.leafLocations[node.leafIndex] = newLocation;
132
+ }
142
133
  }
143
- return isLeaf;
144
134
  }
145
- shiftChildrenUp(parent) {
146
- const [left, right] = this.store.getChildLocations(parent);
147
- const level = parent.level;
148
- const groupSize = 2 ** level;
149
- const computeNewLocation = (index)=>({
150
- level,
151
- index: Math.floor(index / (groupSize * 2)) * groupSize + index % groupSize
152
- });
153
- const isLeftLeaf = this.shiftNodeUp(left, computeNewLocation(left.index));
154
- const isRightLeaf = this.shiftNodeUp(right, computeNewLocation(right.index));
155
- if (!isLeftLeaf) {
156
- this.shiftChildrenUp(left);
135
+ collectNodesToShift(from, to) {
136
+ const node = this.store.getNode(from);
137
+ if (!node) {
138
+ return [];
157
139
  }
158
- if (!isRightLeaf) {
159
- this.shiftChildrenUp(right);
140
+ let result = [
141
+ {
142
+ node,
143
+ newLocation: to
144
+ }
145
+ ];
146
+ // If not a leaf, collect its children.
147
+ if (node.leafIndex === undefined) {
148
+ const [leftChild, rightChild] = this.store.getChildLocations(from);
149
+ const [leftChildNew, rightChildNew] = this.store.getChildLocations(to);
150
+ result = result.concat(this.collectNodesToShift(leftChild, leftChildNew)).concat(this.collectNodesToShift(rightChild, rightChildNew));
160
151
  }
152
+ return result;
161
153
  }
162
154
  }
@@ -0,0 +1,28 @@
1
+ export declare const computeUnbalancedShaRoot: (leaves: Buffer<ArrayBufferLike>[]) => Buffer<ArrayBufferLike>;
2
+ export declare const computeUnbalancedPoseidonRoot: (leaves: Buffer<ArrayBufferLike>[]) => Promise<Buffer<ArrayBufferLike>>;
3
+ export declare const computeWonkyShaRoot: (leaves: Buffer<ArrayBufferLike>[]) => Buffer<ArrayBufferLike>;
4
+ /**
5
+ * Computes the Merkle root of an unbalanced tree.
6
+ *
7
+ * Unlike a balanced Merkle tree, which requires the number of leaves to be a power of two, an unbalanced tree can have
8
+ * any number of leaves.
9
+ *
10
+ * The tree is constructed by iteratively extracting the smallest power-of-two-sized subtrees from **right to left**.
11
+ * For each such subtree, it computes the subtree root and then combines all subtree roots (again from right to left)
12
+ * into a single root using the provided hash function.
13
+ *
14
+ * Note: We need the final tree to be as shallow as possible, to minimize the size of the sibling path required to prove
15
+ * membership of a leaf. Therefor, the computation proceeds from right to left - smaller subtrees must always be
16
+ * combined before being merged with a larger sibling on their left.
17
+ *
18
+ * For example, consider an unbalanced tree made of three subtrees of sizes 2, 4, and 8. If we combine the size-2 and
19
+ * size-4 subtrees first (producing a subtree of depth 3), and then merge it with the size-8 subtree (also depth 3), the
20
+ * resulting tree has a maximum depth of 4.
21
+ *
22
+ * But if we instead combine the size-4 and size-8 subtrees first (depth 4), and then merge with the size-2 subtree
23
+ * (depth 1), the final tree has a depth of 5.
24
+ */
25
+ export declare function computeUnbalancedMerkleTreeRoot(leaves: Buffer[], hasher?: (lhs: Uint8Array<ArrayBufferLike>, rhs: Uint8Array<ArrayBufferLike>) => Buffer<ArrayBuffer>, emptyRoot?: Buffer<ArrayBuffer>): Buffer;
26
+ export declare function computeUnbalancedMerkleTreeRootAsync(leaves: Buffer[], hasher?: (lhs: Uint8Array<ArrayBufferLike>, rhs: Uint8Array<ArrayBufferLike>) => Promise<Buffer<ArrayBuffer>>, emptyRoot?: Buffer<ArrayBuffer>): Promise<Buffer>;
27
+ export declare function computeWonkyMerkleTreeRoot(leaves: Buffer[], valueToCompress?: Buffer<ArrayBuffer>, emptyRoot?: Buffer<ArrayBuffer>, hasher?: (lhs: Uint8Array<ArrayBufferLike>, rhs: Uint8Array<ArrayBufferLike>) => Buffer<ArrayBuffer>): Buffer;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iYWxhbmNlZF9tZXJrbGVfdHJlZV9yb290LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvdW5iYWxhbmNlZF9tZXJrbGVfdHJlZV9yb290LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLGVBQU8sTUFBTSx3QkFBd0IsZ0VBQStFLENBQUM7QUFFckgsZUFBTyxNQUFNLDZCQUE2Qix5RUFDOEIsQ0FBQztBQUV6RSxlQUFPLE1BQU0sbUJBQW1CLGdFQUEyRCxDQUFDO0FBRTVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILHdCQUFnQiwrQkFBK0IsQ0FDN0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUNoQixNQUFNLDhGQUFnQixFQUN0QixTQUFTLHNCQUFtQixHQUMzQixNQUFNLENBNkJSO0FBRUQsd0JBQXNCLG9DQUFvQyxDQUN4RCxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQ2hCLE1BQU0sdUdBQXFCLEVBQzNCLFNBQVMsc0JBQW1CLEdBQzNCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0E2QmpCO0FBTUQsd0JBQWdCLDBCQUEwQixDQUN4QyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQ2hCLGVBQWUsc0JBQW1CLEVBQ2xDLFNBQVMsc0JBQW1CLEVBQzVCLE1BQU0sOEZBQWdCLEdBQ3JCLE1BQU0sQ0FHUiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unbalanced_merkle_tree_root.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_merkle_tree_root.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,wBAAwB,gEAA+E,CAAC;AAErH,eAAO,MAAM,6BAA6B,yEAC8B,CAAC;AAEzE,eAAO,MAAM,mBAAmB,gEAA2D,CAAC;AAE5F;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,8FAAgB,EACtB,SAAS,sBAAmB,GAC3B,MAAM,CA6BR;AAED,wBAAsB,oCAAoC,CACxD,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,uGAAqB,EAC3B,SAAS,sBAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAMD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,sBAAmB,EAClC,SAAS,sBAAmB,EAC5B,MAAM,8FAAgB,GACrB,MAAM,CAGR"}