@aztec/foundation 4.0.0-nightly.20250907 → 4.0.0-nightly.20260108

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 (476) 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 +10 -0
  8. package/dest/array/sorted_array.d.ts.map +1 -0
  9. package/dest/array/sorted_array.js +106 -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 +53 -0
  15. package/dest/branded-types/block_number.d.ts.map +1 -0
  16. package/dest/branded-types/block_number.js +75 -0
  17. package/dest/branded-types/checkpoint_number.d.ts +46 -0
  18. package/dest/branded-types/checkpoint_number.d.ts.map +1 -0
  19. package/dest/branded-types/checkpoint_number.js +68 -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 +6 -0
  24. package/dest/branded-types/index.d.ts.map +1 -0
  25. package/dest/branded-types/index.js +4 -0
  26. package/dest/branded-types/slot.d.ts +42 -0
  27. package/dest/branded-types/slot.d.ts.map +1 -0
  28. package/dest/branded-types/slot.js +59 -0
  29. package/dest/branded-types/types.d.ts +5 -0
  30. package/dest/branded-types/types.d.ts.map +1 -0
  31. package/dest/branded-types/types.js +1 -0
  32. package/dest/buffer/buffer16.d.ts +2 -5
  33. package/dest/buffer/buffer16.d.ts.map +1 -1
  34. package/dest/buffer/buffer16.js +4 -2
  35. package/dest/buffer/buffer32.d.ts +2 -5
  36. package/dest/buffer/buffer32.d.ts.map +1 -1
  37. package/dest/buffer/buffer32.js +4 -2
  38. package/dest/buffer/index.d.ts +1 -1
  39. package/dest/collection/array.d.ts +3 -1
  40. package/dest/collection/array.d.ts.map +1 -1
  41. package/dest/collection/array.js +12 -3
  42. package/dest/collection/index.d.ts +1 -1
  43. package/dest/collection/object.d.ts +5 -1
  44. package/dest/collection/object.d.ts.map +1 -1
  45. package/dest/collection/object.js +6 -0
  46. package/dest/committable/committable.d.ts +1 -1
  47. package/dest/committable/committable.d.ts.map +1 -1
  48. package/dest/committable/index.d.ts +1 -1
  49. package/dest/config/env_var.d.ts +2 -2
  50. package/dest/config/env_var.d.ts.map +1 -1
  51. package/dest/config/index.d.ts +12 -2
  52. package/dest/config/index.d.ts.map +1 -1
  53. package/dest/config/index.js +17 -2
  54. package/dest/config/network_config.d.ts +54 -0
  55. package/dest/config/network_config.d.ts.map +1 -0
  56. package/dest/config/network_config.js +11 -0
  57. package/dest/config/network_name.d.ts +2 -2
  58. package/dest/config/network_name.d.ts.map +1 -1
  59. package/dest/config/network_name.js +10 -2
  60. package/dest/config/secret_value.d.ts +1 -1
  61. package/dest/config/secret_value.d.ts.map +1 -1
  62. package/dest/config/secret_value.js +3 -1
  63. package/dest/crypto/aes128/index.d.ts +1 -1
  64. package/dest/crypto/aes128/index.d.ts.map +1 -1
  65. package/dest/crypto/aes128/index.js +19 -6
  66. package/dest/crypto/bls/bn254_keystore.d.ts +296 -0
  67. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -0
  68. package/dest/crypto/bls/bn254_keystore.js +218 -0
  69. package/dest/crypto/bls/index.d.ts +13 -0
  70. package/dest/crypto/bls/index.d.ts.map +1 -0
  71. package/dest/crypto/bls/index.js +87 -0
  72. package/dest/crypto/bn254/index.d.ts +39 -0
  73. package/dest/crypto/bn254/index.d.ts.map +1 -0
  74. package/dest/crypto/bn254/index.js +56 -0
  75. package/dest/crypto/ecdsa/index.d.ts +1 -1
  76. package/dest/crypto/ecdsa/index.d.ts.map +1 -1
  77. package/dest/crypto/ecdsa/index.js +58 -48
  78. package/dest/crypto/ecdsa/signature.d.ts +2 -11
  79. package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
  80. package/dest/crypto/ecdsa/signature.js +2 -2
  81. package/dest/crypto/grumpkin/index.d.ts +10 -13
  82. package/dest/crypto/grumpkin/index.d.ts.map +1 -1
  83. package/dest/crypto/grumpkin/index.js +61 -55
  84. package/dest/crypto/keccak/index.d.ts +1 -1
  85. package/dest/crypto/keys/index.d.ts +2 -2
  86. package/dest/crypto/keys/index.d.ts.map +1 -1
  87. package/dest/crypto/keys/index.js +8 -5
  88. package/dest/crypto/pedersen/index.d.ts +1 -1
  89. package/dest/crypto/pedersen/pedersen.noble.d.ts +1 -1
  90. package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -2
  91. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  92. package/dest/crypto/pedersen/pedersen.wasm.js +24 -14
  93. package/dest/crypto/poseidon/index.d.ts +2 -2
  94. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  95. package/dest/crypto/poseidon/index.js +33 -18
  96. package/dest/crypto/random/index.d.ts +1 -1
  97. package/dest/crypto/random/index.d.ts.map +1 -1
  98. package/dest/crypto/random/randomness_singleton.d.ts +1 -1
  99. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
  100. package/dest/crypto/schnorr/index.d.ts +3 -2
  101. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  102. package/dest/crypto/schnorr/index.js +30 -38
  103. package/dest/crypto/schnorr/signature.d.ts +2 -2
  104. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  105. package/dest/crypto/schnorr/signature.js +2 -2
  106. package/dest/crypto/secp256k1/index.d.ts +1 -1
  107. package/dest/crypto/secp256k1/index.d.ts.map +1 -1
  108. package/dest/crypto/secp256k1/index.js +23 -18
  109. package/dest/crypto/secp256k1-signer/index.d.ts +1 -1
  110. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +1 -1
  111. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
  112. package/dest/crypto/secp256k1-signer/utils.d.ts +49 -3
  113. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
  114. package/dest/crypto/secp256k1-signer/utils.js +87 -5
  115. package/dest/crypto/serialize.d.ts +1 -1
  116. package/dest/crypto/sha256/index.d.ts +2 -2
  117. package/dest/crypto/sha256/index.d.ts.map +1 -1
  118. package/dest/crypto/sha256/index.js +1 -1
  119. package/dest/crypto/sha512/index.d.ts +3 -3
  120. package/dest/crypto/sha512/index.d.ts.map +1 -1
  121. package/dest/crypto/sha512/index.js +1 -1
  122. package/dest/crypto/signature/index.d.ts +2 -2
  123. package/dest/crypto/signature/index.d.ts.map +1 -1
  124. package/dest/crypto/sync/index.d.ts +1 -1
  125. package/dest/crypto/sync/index.js +1 -1
  126. package/dest/crypto/sync/pedersen/index.d.ts +2 -2
  127. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
  128. package/dest/crypto/sync/pedersen/index.js +18 -11
  129. package/dest/crypto/sync/poseidon/index.d.ts +2 -2
  130. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
  131. package/dest/crypto/sync/poseidon/index.js +28 -13
  132. package/dest/{fields/bls12_fields.d.ts → curves/bls12/field.d.ts} +3 -3
  133. package/dest/curves/bls12/field.d.ts.map +1 -0
  134. package/dest/{fields/bls12_fields.js → curves/bls12/field.js} +12 -9
  135. package/dest/curves/bls12/index.d.ts +3 -0
  136. package/dest/curves/bls12/index.d.ts.map +1 -0
  137. package/dest/curves/bls12/index.js +2 -0
  138. package/dest/{fields/bls12_point.d.ts → curves/bls12/point.d.ts} +11 -20
  139. package/dest/curves/bls12/point.d.ts.map +1 -0
  140. package/dest/{fields/bls12_point.js → curves/bls12/point.js} +17 -15
  141. package/dest/curves/bn254/field.d.ts +180 -0
  142. package/dest/curves/bn254/field.d.ts.map +1 -0
  143. package/dest/{fields/fields.js → curves/bn254/field.js} +71 -59
  144. package/dest/curves/bn254/index.d.ts +3 -0
  145. package/dest/curves/bn254/index.d.ts.map +1 -0
  146. package/dest/curves/bn254/index.js +2 -0
  147. package/dest/curves/bn254/point.d.ts +54 -0
  148. package/dest/curves/bn254/point.d.ts.map +1 -0
  149. package/dest/curves/bn254/point.js +143 -0
  150. package/dest/curves/grumpkin/index.d.ts +10 -0
  151. package/dest/curves/grumpkin/index.d.ts.map +1 -0
  152. package/dest/curves/grumpkin/index.js +3 -0
  153. package/dest/{fields → curves/grumpkin}/point.d.ts +13 -13
  154. package/dest/curves/grumpkin/point.d.ts.map +1 -0
  155. package/dest/{fields → curves/grumpkin}/point.js +24 -7
  156. package/dest/decorators/index.d.ts +1 -1
  157. package/dest/decorators/memoize.d.ts +1 -1
  158. package/dest/decorators/memoize.d.ts.map +1 -1
  159. package/dest/error/index.d.ts +4 -4
  160. package/dest/error/index.d.ts.map +1 -1
  161. package/dest/eth-address/index.d.ts +14 -4
  162. package/dest/eth-address/index.d.ts.map +1 -1
  163. package/dest/eth-address/index.js +26 -2
  164. package/dest/eth-signature/eth_signature.d.ts +1 -4
  165. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  166. package/dest/eth-signature/eth_signature.js +2 -4
  167. package/dest/eth-signature/index.d.ts +1 -1
  168. package/dest/fs/index.d.ts +1 -1
  169. package/dest/fs/run_in_dir.d.ts +1 -1
  170. package/dest/fs/try_rm_dir.d.ts +1 -1
  171. package/dest/iterable/all.d.ts +1 -1
  172. package/dest/iterable/filter.d.ts +1 -1
  173. package/dest/iterable/index.d.ts +1 -1
  174. package/dest/iterable/isAsyncIt.d.ts +1 -1
  175. package/dest/iterable/map.d.ts +1 -1
  176. package/dest/iterable/peek.d.ts +1 -1
  177. package/dest/iterable/sort.d.ts +1 -1
  178. package/dest/iterable/take.d.ts +1 -1
  179. package/dest/iterable/toArray.d.ts +1 -1
  180. package/dest/iterator/filter.d.ts +3 -0
  181. package/dest/iterator/filter.d.ts.map +1 -0
  182. package/dest/iterator/filter.js +7 -0
  183. package/dest/iterator/index.d.ts +2 -0
  184. package/dest/iterator/index.d.ts.map +1 -0
  185. package/dest/iterator/index.js +1 -0
  186. package/dest/json-rpc/client/fetch.d.ts +1 -1
  187. package/dest/json-rpc/client/index.d.ts +1 -1
  188. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +1 -1
  189. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  190. package/dest/json-rpc/client/safe_json_rpc_client.js +9 -0
  191. package/dest/json-rpc/client/undici.d.ts +1 -1
  192. package/dest/json-rpc/convert.d.ts +1 -1
  193. package/dest/json-rpc/errors.d.ts +1 -1
  194. package/dest/json-rpc/errors.d.ts.map +1 -1
  195. package/dest/json-rpc/fixtures/class_a.d.ts +3 -3
  196. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
  197. package/dest/json-rpc/fixtures/class_b.d.ts +3 -3
  198. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
  199. package/dest/json-rpc/fixtures/test_state.d.ts +1 -1
  200. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
  201. package/dest/json-rpc/index.d.ts +1 -1
  202. package/dest/json-rpc/js_utils.d.ts +1 -1
  203. package/dest/json-rpc/js_utils.d.ts.map +1 -1
  204. package/dest/json-rpc/server/index.d.ts +1 -1
  205. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +1 -1
  206. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  207. package/dest/json-rpc/test/index.d.ts +1 -1
  208. package/dest/json-rpc/test/integration.d.ts +1 -1
  209. package/dest/log/console.d.ts +1 -1
  210. package/dest/log/gcloud-logger-config.d.ts +1 -1
  211. package/dest/log/gcloud-logger-config.d.ts.map +1 -1
  212. package/dest/log/index.d.ts +1 -1
  213. package/dest/log/libp2p_logger.d.ts +1 -1
  214. package/dest/log/log-filters.d.ts +1 -1
  215. package/dest/log/log-levels.d.ts +1 -1
  216. package/dest/log/log_fn.d.ts +2 -2
  217. package/dest/log/log_fn.d.ts.map +1 -1
  218. package/dest/log/noir_debug_log_util.d.ts +1 -1
  219. package/dest/log/pino-logger.d.ts +2 -2
  220. package/dest/log/pino-logger.d.ts.map +1 -1
  221. package/dest/log/pino-logger.js +0 -1
  222. package/dest/message/index.d.ts +1 -1
  223. package/dest/message/index.d.ts.map +1 -1
  224. package/dest/mutex/index.d.ts +1 -1
  225. package/dest/mutex/index.d.ts.map +1 -1
  226. package/dest/mutex/mutex_database.d.ts +1 -1
  227. package/dest/noir/index.d.ts +1 -1
  228. package/dest/noir/noir_package_config.d.ts +9 -9
  229. package/dest/number/index.d.ts +1 -1
  230. package/dest/profiler/index.d.ts +2 -0
  231. package/dest/profiler/index.d.ts.map +1 -0
  232. package/dest/profiler/index.js +1 -0
  233. package/dest/profiler/profiler.d.ts +8 -0
  234. package/dest/profiler/profiler.d.ts.map +1 -0
  235. package/dest/profiler/profiler.js +97 -0
  236. package/dest/promise/index.d.ts +1 -1
  237. package/dest/promise/running-promise.d.ts +1 -1
  238. package/dest/promise/running-promise.d.ts.map +1 -1
  239. package/dest/promise/utils.d.ts +1 -1
  240. package/dest/queue/base_memory_queue.d.ts +1 -1
  241. package/dest/queue/base_memory_queue.d.ts.map +1 -1
  242. package/dest/queue/batch_queue.d.ts +1 -1
  243. package/dest/queue/batch_queue.d.ts.map +1 -1
  244. package/dest/queue/bounded_serial_queue.d.ts +1 -1
  245. package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
  246. package/dest/queue/fifo_memory_queue.d.ts +1 -1
  247. package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
  248. package/dest/queue/index.d.ts +1 -1
  249. package/dest/queue/priority_memory_queue.d.ts +1 -1
  250. package/dest/queue/priority_memory_queue.d.ts.map +1 -1
  251. package/dest/queue/priority_queue.d.ts +1 -1
  252. package/dest/queue/priority_queue.d.ts.map +1 -1
  253. package/dest/queue/semaphore.d.ts +1 -1
  254. package/dest/queue/semaphore.d.ts.map +1 -1
  255. package/dest/queue/serial_queue.d.ts +1 -1
  256. package/dest/queue/serial_queue.d.ts.map +1 -1
  257. package/dest/retry/index.d.ts +1 -1
  258. package/dest/running-promise/index.d.ts +1 -1
  259. package/dest/schemas/api.d.ts +1 -1
  260. package/dest/schemas/index.d.ts +1 -1
  261. package/dest/schemas/parse.d.ts +1 -1
  262. package/dest/schemas/schemas.d.ts +15 -17
  263. package/dest/schemas/schemas.d.ts.map +1 -1
  264. package/dest/schemas/schemas.js +14 -10
  265. package/dest/schemas/types.d.ts +31 -1
  266. package/dest/schemas/types.d.ts.map +1 -1
  267. package/dest/schemas/types.js +25 -1
  268. package/dest/schemas/utils.d.ts +4 -4
  269. package/dest/schemas/utils.d.ts.map +1 -1
  270. package/dest/schemas/utils.js +15 -5
  271. package/dest/serialize/buffer_reader.d.ts +3 -1
  272. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  273. package/dest/serialize/buffer_reader.js +3 -0
  274. package/dest/serialize/field_reader.d.ts +2 -2
  275. package/dest/serialize/field_reader.d.ts.map +1 -1
  276. package/dest/serialize/field_reader.js +1 -1
  277. package/dest/serialize/free_funcs.d.ts +2 -2
  278. package/dest/serialize/free_funcs.d.ts.map +1 -1
  279. package/dest/serialize/free_funcs.js +1 -1
  280. package/dest/serialize/index.d.ts +1 -1
  281. package/dest/serialize/serialize.d.ts +2 -2
  282. package/dest/serialize/serialize.d.ts.map +1 -1
  283. package/dest/serialize/serialize.js +1 -1
  284. package/dest/serialize/type_registry.d.ts +1 -1
  285. package/dest/serialize/type_registry.d.ts.map +1 -1
  286. package/dest/serialize/types.d.ts +1 -1
  287. package/dest/sleep/index.d.ts +3 -1
  288. package/dest/sleep/index.d.ts.map +1 -1
  289. package/dest/sleep/index.js +4 -0
  290. package/dest/string/index.d.ts +5 -1
  291. package/dest/string/index.d.ts.map +1 -1
  292. package/dest/string/index.js +19 -2
  293. package/dest/testing/files/index.d.ts +2 -1
  294. package/dest/testing/files/index.d.ts.map +1 -1
  295. package/dest/testing/files/index.js +1 -1
  296. package/dest/testing/formatting.d.ts +4 -0
  297. package/dest/testing/formatting.d.ts.map +1 -0
  298. package/dest/testing/formatting.js +3 -0
  299. package/dest/testing/index.d.ts +2 -1
  300. package/dest/testing/index.d.ts.map +1 -1
  301. package/dest/testing/index.js +1 -0
  302. package/dest/testing/port_allocator.d.ts +1 -1
  303. package/dest/testing/snapshot_serializer.d.ts +1 -1
  304. package/dest/testing/test_data.d.ts +1 -1
  305. package/dest/timer/date.d.ts +2 -1
  306. package/dest/timer/date.d.ts.map +1 -1
  307. package/dest/timer/date.js +3 -0
  308. package/dest/timer/elapsed.d.ts +1 -1
  309. package/dest/timer/index.d.ts +1 -1
  310. package/dest/timer/timeout.d.ts +1 -1
  311. package/dest/timer/timeout.d.ts.map +1 -1
  312. package/dest/timer/timer.d.ts +1 -1
  313. package/dest/timer/timer.d.ts.map +1 -1
  314. package/dest/transport/dispatch/create_dispatch_fn.d.ts +1 -1
  315. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -1
  316. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +1 -1
  317. package/dest/transport/dispatch/messages.d.ts +1 -1
  318. package/dest/transport/index.d.ts +1 -1
  319. package/dest/transport/interface/connector.d.ts +1 -1
  320. package/dest/transport/interface/listener.d.ts +1 -1
  321. package/dest/transport/interface/socket.d.ts +1 -1
  322. package/dest/transport/interface/transferable.d.ts +1 -1
  323. package/dest/transport/node/index.d.ts +1 -1
  324. package/dest/transport/node/node_connector.d.ts +1 -1
  325. package/dest/transport/node/node_connector.d.ts.map +1 -1
  326. package/dest/transport/node/node_connector_socket.d.ts +1 -1
  327. package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
  328. package/dest/transport/node/node_listener.d.ts +1 -1
  329. package/dest/transport/node/node_listener.d.ts.map +1 -1
  330. package/dest/transport/node/node_listener_socket.d.ts +1 -1
  331. package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
  332. package/dest/transport/transport_client.d.ts +1 -1
  333. package/dest/transport/transport_client.d.ts.map +1 -1
  334. package/dest/transport/transport_server.d.ts +1 -10
  335. package/dest/transport/transport_server.d.ts.map +1 -1
  336. package/dest/trees/balanced_merkle_tree.d.ts +22 -0
  337. package/dest/trees/balanced_merkle_tree.d.ts.map +1 -0
  338. package/dest/trees/balanced_merkle_tree.js +66 -0
  339. package/dest/trees/hasher.d.ts +1 -1
  340. package/dest/trees/index.d.ts +2 -1
  341. package/dest/trees/index.d.ts.map +1 -1
  342. package/dest/trees/index.js +1 -0
  343. package/dest/trees/indexed_merkle_tree.d.ts +1 -1
  344. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
  345. package/dest/trees/indexed_merkle_tree.js +1 -1
  346. package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
  347. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  348. package/dest/trees/indexed_tree_leaf.d.ts +1 -1
  349. package/dest/trees/membership_witness.d.ts +3 -24
  350. package/dest/trees/membership_witness.d.ts.map +1 -1
  351. package/dest/trees/membership_witness.js +1 -1
  352. package/dest/trees/merkle_tree.d.ts +1 -1
  353. package/dest/trees/merkle_tree.d.ts.map +1 -1
  354. package/dest/trees/merkle_tree_calculator.d.ts +2 -12
  355. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  356. package/dest/trees/merkle_tree_calculator.js +1 -31
  357. package/dest/trees/sibling_path.d.ts +5 -39
  358. package/dest/trees/sibling_path.d.ts.map +1 -1
  359. package/dest/trees/sibling_path.js +2 -2
  360. package/dest/trees/unbalanced_merkle_tree.d.ts +5 -4
  361. package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
  362. package/dest/trees/unbalanced_merkle_tree.js +33 -10
  363. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +27 -23
  364. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -1
  365. package/dest/trees/unbalanced_merkle_tree_calculator.js +123 -97
  366. package/dest/trees/unbalanced_tree_store.d.ts +2 -1
  367. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
  368. package/dest/trees/unbalanced_tree_store.js +6 -0
  369. package/dest/types/index.d.ts +3 -1
  370. package/dest/types/index.d.ts.map +1 -1
  371. package/dest/types/index.js +3 -0
  372. package/dest/url/index.d.ts +1 -1
  373. package/dest/validation/index.d.ts +1 -1
  374. package/package.json +32 -8
  375. package/src/array/array.ts +0 -16
  376. package/src/array/index.ts +1 -0
  377. package/src/array/sorted_array.ts +133 -0
  378. package/src/branded-types/block_number.ts +112 -0
  379. package/src/branded-types/checkpoint_number.ts +100 -0
  380. package/src/branded-types/epoch.ts +88 -0
  381. package/src/branded-types/index.ts +6 -0
  382. package/src/branded-types/slot.ts +88 -0
  383. package/src/branded-types/types.ts +2 -0
  384. package/src/buffer/buffer16.ts +2 -2
  385. package/src/buffer/buffer32.ts +2 -2
  386. package/src/collection/array.ts +15 -3
  387. package/src/collection/object.ts +8 -0
  388. package/src/config/env_var.ts +44 -10
  389. package/src/config/index.ts +22 -2
  390. package/src/config/network_config.ts +18 -0
  391. package/src/config/network_name.ts +18 -3
  392. package/src/crypto/aes128/index.ts +19 -10
  393. package/src/crypto/bls/bn254_keystore.ts +287 -0
  394. package/src/crypto/bls/index.ts +77 -0
  395. package/src/crypto/bn254/index.ts +64 -0
  396. package/src/crypto/ecdsa/index.ts +40 -37
  397. package/src/crypto/ecdsa/signature.ts +2 -2
  398. package/src/crypto/grumpkin/index.ts +38 -46
  399. package/src/crypto/keys/index.ts +6 -6
  400. package/src/crypto/pedersen/pedersen.wasm.ts +23 -19
  401. package/src/crypto/poseidon/index.ts +33 -25
  402. package/src/crypto/schnorr/index.ts +22 -18
  403. package/src/crypto/schnorr/signature.ts +2 -2
  404. package/src/crypto/secp256k1/index.ts +15 -11
  405. package/src/crypto/secp256k1-signer/utils.ts +115 -7
  406. package/src/crypto/sha256/index.ts +1 -1
  407. package/src/crypto/sha512/index.ts +1 -1
  408. package/src/crypto/signature/index.ts +1 -1
  409. package/src/crypto/sync/index.ts +1 -1
  410. package/src/crypto/sync/pedersen/index.ts +17 -16
  411. package/src/crypto/sync/poseidon/index.ts +28 -23
  412. package/src/{fields/bls12_fields.ts → curves/bls12/field.ts} +6 -6
  413. package/src/curves/bls12/index.ts +2 -0
  414. package/src/{fields/bls12_point.ts → curves/bls12/point.ts} +14 -14
  415. package/src/{fields/fields.ts → curves/bn254/field.ts} +69 -62
  416. package/src/curves/bn254/index.ts +2 -0
  417. package/src/curves/bn254/point.ts +170 -0
  418. package/src/curves/grumpkin/index.ts +11 -0
  419. package/src/{fields → curves/grumpkin}/point.ts +26 -7
  420. package/src/eth-address/index.ts +28 -3
  421. package/src/eth-signature/eth_signature.ts +2 -4
  422. package/src/iterator/filter.ts +11 -0
  423. package/src/iterator/index.ts +1 -0
  424. package/src/json-rpc/client/safe_json_rpc_client.ts +9 -0
  425. package/src/log/log_fn.ts +1 -1
  426. package/src/log/pino-logger.ts +0 -1
  427. package/src/profiler/index.ts +1 -0
  428. package/src/profiler/profiler.ts +125 -0
  429. package/src/schemas/schemas.ts +24 -13
  430. package/src/schemas/types.ts +33 -0
  431. package/src/schemas/utils.ts +21 -8
  432. package/src/serialize/buffer_reader.ts +5 -0
  433. package/src/serialize/field_reader.ts +1 -1
  434. package/src/serialize/free_funcs.ts +1 -1
  435. package/src/serialize/serialize.ts +1 -1
  436. package/src/sleep/index.ts +6 -0
  437. package/src/string/index.ts +24 -1
  438. package/src/testing/files/index.ts +1 -1
  439. package/src/testing/formatting.ts +3 -0
  440. package/src/testing/index.ts +1 -0
  441. package/src/timer/date.ts +4 -0
  442. package/src/trees/balanced_merkle_tree.ts +84 -0
  443. package/src/trees/index.ts +1 -0
  444. package/src/trees/indexed_merkle_tree.ts +1 -1
  445. package/src/trees/membership_witness.ts +1 -1
  446. package/src/trees/merkle_tree_calculator.ts +1 -34
  447. package/src/trees/sibling_path.ts +2 -2
  448. package/src/trees/unbalanced_merkle_tree.ts +55 -7
  449. package/src/trees/unbalanced_merkle_tree_calculator.ts +134 -93
  450. package/src/trees/unbalanced_tree_store.ts +5 -1
  451. package/src/types/index.ts +5 -0
  452. package/dest/crypto/index.d.ts +0 -15
  453. package/dest/crypto/index.d.ts.map +0 -1
  454. package/dest/crypto/index.js +0 -14
  455. package/dest/fields/bls12_fields.d.ts.map +0 -1
  456. package/dest/fields/bls12_point.d.ts.map +0 -1
  457. package/dest/fields/coordinate.d.ts +0 -66
  458. package/dest/fields/coordinate.d.ts.map +0 -1
  459. package/dest/fields/coordinate.js +0 -96
  460. package/dest/fields/fields.d.ts +0 -174
  461. package/dest/fields/fields.d.ts.map +0 -1
  462. package/dest/fields/index.d.ts +0 -6
  463. package/dest/fields/index.d.ts.map +0 -1
  464. package/dest/fields/index.js +0 -5
  465. package/dest/fields/point.d.ts.map +0 -1
  466. package/dest/index.d.ts +0 -29
  467. package/dest/index.d.ts.map +0 -1
  468. package/dest/index.js +0 -29
  469. package/dest/json-rpc/server/telemetry.d.ts +0 -2
  470. package/dest/json-rpc/server/telemetry.d.ts.map +0 -1
  471. package/dest/json-rpc/server/telemetry.js +0 -0
  472. package/src/crypto/index.ts +0 -14
  473. package/src/fields/coordinate.ts +0 -104
  474. package/src/fields/index.ts +0 -5
  475. package/src/index.ts +0 -29
  476. package/src/json-rpc/server/telemetry.ts +0 -0
@@ -1,132 +1,158 @@
1
- import { serializeToBuffer } from '@aztec/foundation/serialize';
2
- import { SiblingPath } from '@aztec/foundation/trees';
3
- import { sha256Trunc } from '../crypto/index.js';
4
- const indexToKeyHash = (level, index)=>`${level}:${index}`;
1
+ import { shaMerkleHash } from './balanced_merkle_tree.js';
2
+ import { SiblingPath } from './sibling_path.js';
3
+ import { UnbalancedTreeStore } from './unbalanced_tree_store.js';
4
+ export function computeCompressedUnbalancedMerkleTreeRoot(leaves, valueToCompress = Buffer.alloc(32), emptyRoot = Buffer.alloc(32), hasher) {
5
+ const calculator = UnbalancedMerkleTreeCalculator.create(leaves, valueToCompress, emptyRoot, hasher);
6
+ return calculator.getRoot();
7
+ }
5
8
  /**
6
9
  * An ephemeral unbalanced Merkle tree implementation.
7
10
  * Follows the rollup implementation which greedily hashes pairs of nodes up the tree.
8
11
  * Remaining rightmost nodes are shifted up until they can be paired.
12
+ * The values that match the `valueToCompress` are skipped and the sibling of the compressed leaf are shifted up until
13
+ * they can be paired.
9
14
  * If there is only one leaf, the root is the leaf.
10
15
  */ export class UnbalancedMerkleTreeCalculator {
11
- maxDepth;
16
+ leaves;
17
+ valueToCompress;
18
+ emptyRoot;
12
19
  hasher;
13
- // This map stores index and depth -> value
14
- cache;
15
- // This map stores value -> index and depth, since we have variable depth
16
- valueCache;
17
- size;
18
- root;
19
- constructor(maxDepth, hasher){
20
- this.maxDepth = maxDepth;
20
+ store;
21
+ leafLocations;
22
+ constructor(leaves, valueToCompress, emptyRoot, hasher){
23
+ this.leaves = leaves;
24
+ this.valueToCompress = valueToCompress;
25
+ this.emptyRoot = emptyRoot;
21
26
  this.hasher = hasher;
22
- this.cache = {};
23
- this.valueCache = {};
24
- this.size = 0n;
25
- this.root = Buffer.alloc(32);
27
+ this.leafLocations = [];
28
+ this.store = new UnbalancedTreeStore(leaves.length);
29
+ this.buildTree();
26
30
  }
27
- static create(height, hasher = (left, right)=>Promise.resolve(sha256Trunc(Buffer.concat([
28
- left,
29
- right
30
- ])))) {
31
- return new UnbalancedMerkleTreeCalculator(height, hasher);
31
+ static create(leaves, valueToCompress = Buffer.alloc(0), emptyRoot = Buffer.alloc(32), hasher = shaMerkleHash) {
32
+ return new UnbalancedMerkleTreeCalculator(leaves, valueToCompress, emptyRoot, hasher);
32
33
  }
33
34
  /**
34
35
  * Returns the root of the tree.
35
36
  * @returns The root of the tree.
36
37
  */ getRoot() {
37
- return this.root;
38
+ return this.store.getRoot().value;
38
39
  }
39
40
  /**
40
- * Returns a sibling path for the element at the given index.
41
+ * Returns a sibling path for the element.
41
42
  * @param value - The value of the element.
42
43
  * @returns A sibling path for the element.
43
44
  * Note: The sibling path is an array of sibling hashes, with the lowest hash (leaf hash) first, and the highest hash last.
44
45
  */ getSiblingPath(value) {
45
- if (this.size === 1n) {
46
- return Promise.resolve(new SiblingPath(0, []));
47
- }
48
- const path = [];
49
- const [depth, _index] = this.valueCache[serializeToBuffer(value).toString('hex')].split(':');
50
- let level = parseInt(depth, 10);
51
- let index = BigInt(_index);
52
- while(level > 0){
53
- const isRight = index & 0x01n;
54
- const key = indexToKeyHash(level, isRight ? index - 1n : index + 1n);
55
- const sibling = this.cache[key];
56
- path.push(sibling);
57
- level -= 1;
58
- index >>= 1n;
46
+ const leafIndex = this.leaves.findIndex((leaf)=>leaf.equals(value));
47
+ if (leafIndex === -1) {
48
+ throw Error(`Leaf value ${value.toString('hex')} not found in tree.`);
59
49
  }
60
- return Promise.resolve(new SiblingPath(parseInt(depth, 10), path));
50
+ return this.getSiblingPathByLeafIndex(leafIndex);
61
51
  }
62
52
  /**
63
- * Appends the given leaves to the tree.
64
- * @param leaves - The leaves to append.
65
- * @returns Empty promise.
66
- */ async appendLeaves(leaves) {
67
- if (this.size != BigInt(0)) {
68
- throw Error(`Can't re-append to an unbalanced tree. Current has ${this.size} leaves.`);
53
+ * Returns a sibling path for the leaf at the given index.
54
+ * @param leafIndex - The index of the leaf.
55
+ * @returns A sibling path for the leaf.
56
+ */ getSiblingPathByLeafIndex(leafIndex) {
57
+ if (leafIndex >= this.leaves.length) {
58
+ throw Error(`Leaf index ${leafIndex} out of bounds. Tree has ${this.leaves.length} leaves.`);
69
59
  }
70
- if (leaves.length === 0) {
71
- throw Error(`Can't append 0 leaves to an unbalanced tree.`);
60
+ const leaf = this.leaves[leafIndex];
61
+ if (leaf.equals(this.valueToCompress)) {
62
+ throw Error(`Leaf at index ${leafIndex} has been compressed.`);
72
63
  }
73
- if (leaves.length === 1) {
74
- this.root = leaves[0];
75
- } else {
76
- this.root = await this.batchInsert(leaves);
64
+ const path = [];
65
+ let location = this.leafLocations[leafIndex];
66
+ while(location.level > 0){
67
+ const sibling = this.store.getSibling(location);
68
+ path.push(sibling.value);
69
+ location = this.store.getParentLocation(location);
77
70
  }
78
- this.size = BigInt(leaves.length);
79
- return Promise.resolve();
71
+ return new SiblingPath(path.length, path);
72
+ }
73
+ getLeafLocation(leafIndex) {
74
+ return this.leafLocations[leafIndex];
80
75
  }
81
76
  /**
82
- * Calculates root while adding leaves and nodes to the cache.
83
- * @param leaves - The leaves to append.
84
- * @returns Resulting root of the tree.
85
- */ async batchInsert(_leaves) {
86
- // If we have an even number of leaves, hash them all in pairs
87
- // Otherwise, store the final leaf to be shifted up to the next odd sized level
88
- let [layerWidth, nodeToShift] = _leaves.length & 1 ? [
89
- _leaves.length - 1,
90
- serializeToBuffer(_leaves[_leaves.length - 1])
91
- ] : [
92
- _leaves.length,
93
- Buffer.alloc(0)
94
- ];
95
- // Allocate this layer's leaves and init the next layer up
96
- let thisLayer = _leaves.slice(0, layerWidth).map((l)=>serializeToBuffer(l));
97
- let nextLayer = [];
98
- // Store the bottom level leaves
99
- thisLayer.forEach((leaf, i)=>this.storeNode(leaf, this.maxDepth, BigInt(i)));
100
- for(let i = 0; i < this.maxDepth; i++){
101
- for(let j = 0; j < layerWidth; j += 2){
102
- // Store the hash of each pair one layer up
103
- nextLayer[j / 2] = await this.hasher(serializeToBuffer(thisLayer[j]), serializeToBuffer(thisLayer[j + 1]));
104
- this.storeNode(nextLayer[j / 2], this.maxDepth - i - 1, BigInt(j >> 1));
105
- }
106
- layerWidth /= 2;
107
- if (layerWidth & 1) {
108
- if (nodeToShift.length) {
109
- // If the next layer has odd length, and we have a node that needs to be shifted up, add it here
110
- nextLayer.push(serializeToBuffer(nodeToShift));
111
- this.storeNode(nodeToShift, this.maxDepth - i - 1, BigInt(layerWidth * 2 >> 1));
112
- layerWidth += 1;
113
- nodeToShift = Buffer.alloc(0);
77
+ * Adds leaves and nodes to the store. Updates the leafLocations.
78
+ * @param leaves - The leaves of the tree.
79
+ */ buildTree() {
80
+ this.leafLocations = this.leaves.map((value, i)=>this.store.setLeaf(i, {
81
+ value,
82
+ leafIndex: i
83
+ }));
84
+ // Start with the leaves that are not compressed.
85
+ let toProcess = this.leafLocations.filter((_, i)=>!this.leaves[i].equals(this.valueToCompress));
86
+ if (!toProcess.length) {
87
+ // All leaves are compressed. Set empty root to the root.
88
+ this.store.setNode({
89
+ level: 0,
90
+ index: 0
91
+ }, {
92
+ value: this.emptyRoot
93
+ });
94
+ return;
95
+ }
96
+ const level = toProcess[0].level;
97
+ for(let i = level; i > 0; i--){
98
+ const toProcessNext = [];
99
+ for (const location of toProcess){
100
+ if (location.level !== i) {
101
+ toProcessNext.push(location);
102
+ continue;
103
+ }
104
+ const parentLocation = this.store.getParentLocation(location);
105
+ if (this.store.getNode(parentLocation)) {
106
+ continue;
107
+ }
108
+ const sibling = this.store.getSibling(location);
109
+ // If sibling is undefined, all its children are compressed.
110
+ const shouldShiftUp = !sibling || sibling.value.equals(this.valueToCompress);
111
+ if (shouldShiftUp) {
112
+ // The node becomes the parent if the sibling is a compressed leaf.
113
+ this.shiftNodeUp(location, parentLocation);
114
114
  } else {
115
- // If we don't have a node waiting to be shifted, store the next layer's final node to be shifted
116
- layerWidth -= 1;
117
- nodeToShift = nextLayer[layerWidth];
115
+ // Hash the value with the (right) sibling and update the parent node.
116
+ const node = this.store.getNode(location);
117
+ const parentValue = this.hasher(node.value, sibling.value);
118
+ this.store.setNode(parentLocation, {
119
+ value: parentValue
120
+ });
118
121
  }
122
+ // Add the parent location to be processed next.
123
+ toProcessNext.push(parentLocation);
124
+ }
125
+ toProcess = toProcessNext;
126
+ }
127
+ }
128
+ shiftNodeUp(from, to) {
129
+ // Collect all nodes that need to shift.
130
+ const nodesToShift = this.collectNodesToShift(from, to);
131
+ // Move all nodes to their new locations.
132
+ for (const { node, newLocation } of nodesToShift){
133
+ this.store.setNode(newLocation, node);
134
+ if (node.leafIndex !== undefined) {
135
+ this.leafLocations[node.leafIndex] = newLocation;
119
136
  }
120
- // reset the layers
121
- thisLayer = nextLayer;
122
- nextLayer = [];
123
137
  }
124
- // return the root
125
- return thisLayer[0];
126
138
  }
127
- storeNode(value, depth, index) {
128
- const key = indexToKeyHash(depth, index);
129
- this.cache[key] = value;
130
- this.valueCache[value.toString('hex')] = key;
139
+ collectNodesToShift(from, to) {
140
+ const node = this.store.getNode(from);
141
+ if (!node) {
142
+ return [];
143
+ }
144
+ let result = [
145
+ {
146
+ node,
147
+ newLocation: to
148
+ }
149
+ ];
150
+ // If not a leaf, collect its children.
151
+ if (node.leafIndex === undefined) {
152
+ const [leftChild, rightChild] = this.store.getChildLocations(from);
153
+ const [leftChildNew, rightChildNew] = this.store.getChildLocations(to);
154
+ result = result.concat(this.collectNodesToShift(leftChild, leftChildNew)).concat(this.collectNodesToShift(rightChild, rightChildNew));
155
+ }
156
+ return result;
131
157
  }
132
158
  }
@@ -12,8 +12,9 @@ export declare class UnbalancedTreeStore<T> {
12
12
  getChildLocations({ level, index }: TreeNodeLocation): [TreeNodeLocation, TreeNodeLocation];
13
13
  getLeaf(leafIndex: number): T | undefined;
14
14
  getNode(location: TreeNodeLocation): T | undefined;
15
+ getRoot(): T | undefined;
15
16
  getParent(location: TreeNodeLocation): T | undefined;
16
17
  getSibling(location: TreeNodeLocation): T | undefined;
17
18
  getChildren(location: TreeNodeLocation): [T | undefined, T | undefined];
18
19
  }
19
- //# sourceMappingURL=unbalanced_tree_store.d.ts.map
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iYWxhbmNlZF90cmVlX3N0b3JlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvdW5iYWxhbmNlZF90cmVlX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sV0FBVyxnQkFBZ0I7SUFDL0IsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNkLEtBQUssRUFBRSxNQUFNLENBQUM7Q0FDZjtBQU9ELHFCQUFhLG1CQUFtQixDQUFDLENBQUM7O0lBSWhDLFlBQVksU0FBUyxFQUFFLE1BQU0sRUFFNUI7SUFFRCxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQWVyRDtJQUVELE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxRQVNuRDtJQUVELGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLGdCQUFnQixHQUFHLGdCQUFnQixDQU10RTtJQUVELGtCQUFrQixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLGdCQUFnQixHQUFHLGdCQUFnQixDQU12RTtJQUVELGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLGdCQUFnQixHQUFHLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FJMUY7SUFFRCxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUcsU0FBUyxDQU94QztJQUVELE9BQU8sQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FFakQ7SUFFRCxPQUFPLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FFdkI7SUFFRCxTQUFTLENBQUMsUUFBUSxFQUFFLGdCQUFnQixHQUFHLENBQUMsR0FBRyxTQUFTLENBR25EO0lBRUQsVUFBVSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUdwRDtJQUVELFdBQVcsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FHdEU7Q0FLRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"unbalanced_tree_store.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_tree_store.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,qBAAa,mBAAmB,CAAC,CAAC;;gBAIpB,SAAS,EAAE,MAAM;IAI7B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB;IAiBtD,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAWpD,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,gBAAgB;IAQvE,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,gBAAgB;IAQxE,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAM3F,OAAO,CAAC,SAAS,EAAE,MAAM;IASzB,OAAO,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS;IAIlD,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS;IAKpD,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS;IAKrD,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC;CAQxE"}
1
+ {"version":3,"file":"unbalanced_tree_store.d.ts","sourceRoot":"","sources":["../../src/trees/unbalanced_tree_store.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,qBAAa,mBAAmB,CAAC,CAAC;;IAIhC,YAAY,SAAS,EAAE,MAAM,EAE5B;IAED,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB,CAerD;IAED,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,QASnD;IAED,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,CAMtE;IAED,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,CAMvE;IAED,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAI1F;IAED,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAOxC;IAED,OAAO,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAEjD;IAED,OAAO,IAAI,CAAC,GAAG,SAAS,CAEvB;IAED,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAGnD;IAED,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAGpD;IAED,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAGtE;CAKF"}
@@ -73,6 +73,12 @@ export class UnbalancedTreeStore {
73
73
  getNode(location) {
74
74
  return this.#nodeMapping.get(this.#getKey(location))?.value;
75
75
  }
76
+ getRoot() {
77
+ return this.getNode({
78
+ level: 0,
79
+ index: 0
80
+ });
81
+ }
76
82
  getParent(location) {
77
83
  const parentLocation = this.getParentLocation(location);
78
84
  return this.getNode(parentLocation);
@@ -14,6 +14,8 @@ export type Writeable<T> = {
14
14
  };
15
15
  /** Removes readonly modifiers for an object. */
16
16
  export declare function unfreeze<T>(obj: T): Writeable<T>;
17
+ /** Is defined type guard */
18
+ export declare function isDefined<T>(value: T | undefined): value is T;
17
19
  /** Resolves a record-like type. Lifted from viem. */
18
20
  export type Prettify<T> = {
19
21
  [K in keyof T]: T[K];
@@ -39,4 +41,4 @@ export interface TypedEventEmitter<TEventMap extends {
39
41
  removeListener<K extends keyof TEventMap>(event: K, listener: TEventMap[K]): this;
40
42
  removeAllListeners<K extends keyof TEventMap>(event: K): this;
41
43
  }
42
- //# sourceMappingURL=index.d.ts.map
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FBZ0M7QUFDaEMsTUFBTSxNQUFNLFFBQVEsQ0FBQyxDQUFDLElBQUk7S0FDdkIsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxRQUFRLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzFELENBQUM7QUFFRixrQ0FBa0M7QUFDbEMsTUFBTSxNQUFNLFdBQVcsQ0FBQyxDQUFDLElBQUk7S0FDMUIsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxRQUFRLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzFELENBQUM7QUFFRix1REFBdUQ7QUFDdkQsTUFBTSxNQUFNLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUUvRSw2Q0FBNkM7QUFDN0MsTUFBTSxNQUFNLFNBQVMsQ0FBQyxDQUFDLElBQUk7SUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FBRSxDQUFDO0FBRTlELGdEQUFnRDtBQUNoRCx3QkFBZ0IsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FFaEQ7QUFFRCw0QkFBNEI7QUFDNUIsd0JBQWdCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxTQUFTLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FFN0Q7QUFFRCxxREFBcUQ7QUFDckQsTUFBTSxNQUFNLFFBQVEsQ0FBQyxDQUFDLElBQUk7S0FDdkIsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDckIsR0FBRyxFQUFFLENBQUM7QUFFUDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxXQUFXLGlCQUFpQixDQUFDLFNBQVMsU0FBUztLQUFHLEdBQUcsSUFBSSxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLElBQUk7Q0FBRTtJQUN6RyxJQUFJLENBQUMsQ0FBQyxTQUFTLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDeEUsRUFBRSxDQUFDLENBQUMsU0FBUyxNQUFNLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3RFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsTUFBTSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUN2RSxJQUFJLENBQUMsQ0FBQyxTQUFTLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUN0RixjQUFjLENBQUMsQ0FBQyxTQUFTLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDbEYsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0NBRS9EIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/E,6CAA6C;AAC7C,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAE9D,gDAAgD;AAChD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAEhD;AAED,qDAAqD;AACrD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,GAAG,EAAE,CAAC;AAEP;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB,CAAC,SAAS,SAAS;KAAG,GAAG,IAAI,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;CAAE;IACzG,IAAI,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxE,EAAE,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACtE,GAAG,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvE,IAAI,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IACtF,cAAc,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAClF,kBAAkB,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;CAE/D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/E,6CAA6C;AAC7C,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAE9D,gDAAgD;AAChD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAEhD;AAED,4BAA4B;AAC5B,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,KAAK,IAAI,CAAC,CAE7D;AAED,qDAAqD;AACrD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,GAAG,EAAE,CAAC;AAEP;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB,CAAC,SAAS,SAAS;KAAG,GAAG,IAAI,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;CAAE;IACzG,IAAI,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxE,EAAE,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACtE,GAAG,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvE,IAAI,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IACtF,cAAc,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAClF,kBAAkB,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;CAE/D"}
@@ -1,3 +1,6 @@
1
1
  /** Strips methods of a type. */ /** Removes readonly modifiers for an object. */ export function unfreeze(obj) {
2
2
  return obj;
3
3
  }
4
+ /** Is defined type guard */ export function isDefined(value) {
5
+ return value !== undefined;
6
+ }
@@ -6,4 +6,4 @@
6
6
  * @api public
7
7
  */
8
8
  export declare function fileURLToPath(uri: string): string;
9
- //# sourceMappingURL=index.d.ts.map
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cmwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUJBOzs7Ozs7R0FNRztBQUVILHdCQUFnQixhQUFhLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBNENqRCJ9
@@ -6,4 +6,4 @@ export declare function required<T>(value: T | undefined, errMsg?: string): T;
6
6
  * @param err - Error message to throw if x isn't met.
7
7
  */
8
8
  export declare function assert(x: any, err: string): asserts x;
9
- //# sourceMappingURL=index.d.ts.map
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlFQUF5RTtBQUN6RSx3QkFBZ0IsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUtwRTtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUlyRCJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/foundation",
3
- "version": "4.0.0-nightly.20250907",
3
+ "version": "4.0.0-nightly.20260108",
4
4
  "type": "module",
5
5
  "main": "./dest/index.js",
6
6
  "types": "./dest/index.d.ts",
@@ -12,10 +12,30 @@
12
12
  "./async-map": "./dest/async-map/index.js",
13
13
  "./async-pool": "./dest/async-pool/index.js",
14
14
  "./bigint": "./dest/bigint/index.js",
15
+ "./branded-types": "./dest/branded-types/index.js",
15
16
  "./collection": "./dest/collection/index.js",
16
17
  "./config": "./dest/config/index.js",
17
- "./crypto": "./dest/crypto/index.js",
18
+ "./crypto/aes128": "./dest/crypto/aes128/index.js",
19
+ "./crypto/bls": "./dest/crypto/bls/index.js",
20
+ "./crypto/bls/bn254_keystore": "./dest/crypto/bls/bn254_keystore.js",
21
+ "./crypto/bn254": "./dest/crypto/bn254/index.js",
22
+ "./crypto/ecdsa": "./dest/crypto/ecdsa/index.js",
23
+ "./crypto/grumpkin": "./dest/crypto/grumpkin/index.js",
24
+ "./crypto/keccak": "./dest/crypto/keccak/index.js",
25
+ "./crypto/keys": "./dest/crypto/keys/index.js",
26
+ "./crypto/pedersen": "./dest/crypto/pedersen/index.js",
27
+ "./crypto/poseidon": "./dest/crypto/poseidon/index.js",
28
+ "./crypto/random": "./dest/crypto/random/index.js",
29
+ "./crypto/schnorr": "./dest/crypto/schnorr/index.js",
30
+ "./crypto/secp256k1": "./dest/crypto/secp256k1/index.js",
31
+ "./crypto/secp256k1-signer": "./dest/crypto/secp256k1-signer/index.js",
32
+ "./crypto/sha256": "./dest/crypto/sha256/index.js",
33
+ "./crypto/sha512": "./dest/crypto/sha512/index.js",
34
+ "./crypto/signature": "./dest/crypto/signature/index.js",
18
35
  "./crypto/sync": "./dest/crypto/sync/index.js",
36
+ "./curves/bn254": "./dest/curves/bn254/index.js",
37
+ "./curves/grumpkin": "./dest/curves/grumpkin/index.js",
38
+ "./curves/bls12": "./dest/curves/bls12/index.js",
19
39
  "./decorators": "./dest/decorators/index.js",
20
40
  "./error": "./dest/error/index.js",
21
41
  "./eth-address": "./dest/eth-address/index.js",
@@ -29,9 +49,9 @@
29
49
  "./json-rpc/undici": "./dest/json-rpc/client/undici.js",
30
50
  "./json-rpc/test": "./dest/json-rpc/test/index.js",
31
51
  "./iterable": "./dest/iterable/index.js",
52
+ "./iterator": "./dest/iterator/index.js",
32
53
  "./log": "./dest/log/index.js",
33
54
  "./mutex": "./dest/mutex/index.js",
34
- "./fields": "./dest/fields/index.js",
35
55
  "./retry": "./dest/retry/index.js",
36
56
  "./running-promise": "./dest/running-promise/index.js",
37
57
  "./serialize": "./dest/serialize/index.js",
@@ -47,6 +67,7 @@
47
67
  "./noir": "./dest/noir/index.js",
48
68
  "./testing": "./dest/testing/index.js",
49
69
  "./testing/files": "./dest/testing/files/index.js",
70
+ "./profiler": "./dest/profiler/index.js",
50
71
  "./array": "./dest/array/index.js",
51
72
  "./validation": "./dest/validation/index.js",
52
73
  "./promise": "./dest/promise/index.js",
@@ -55,8 +76,8 @@
55
76
  "./number": "./dest/number/index.js"
56
77
  },
57
78
  "scripts": {
58
- "build": "yarn clean && tsc -b",
59
- "build:dev": "tsc -b --watch",
79
+ "build": "yarn clean && ../scripts/tsc.sh",
80
+ "build:dev": "../scripts/tsc.sh --watch",
60
81
  "clean": "rm -rf ./dest .tsbuildinfo",
61
82
  "generate": "true",
62
83
  "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
@@ -102,9 +123,11 @@
102
123
  "testEnvironment": "../../foundation/src/jest/env.mjs"
103
124
  },
104
125
  "dependencies": {
105
- "@aztec/bb.js": "4.0.0-nightly.20250907",
126
+ "@aztec/bb.js": "4.0.0-nightly.20260108",
106
127
  "@koa/cors": "^5.0.0",
107
128
  "@noble/curves": "=1.7.0",
129
+ "@noble/hashes": "^1.6.1",
130
+ "@scure/bip39": "^2.0.1",
108
131
  "bn.js": "^5.2.1",
109
132
  "colorette": "^2.0.20",
110
133
  "detect-node": "^2.1.0",
@@ -112,7 +135,7 @@
112
135
  "koa": "^2.16.1",
113
136
  "koa-bodyparser": "^4.4.0",
114
137
  "koa-compress": "^5.1.0",
115
- "koa-router": "^12.0.0",
138
+ "koa-router": "^13.1.1",
116
139
  "leveldown": "^6.1.1",
117
140
  "lodash.chunk": "^4.2.0",
118
141
  "lodash.clonedeepwith": "^4.5.0",
@@ -139,6 +162,7 @@
139
162
  "@types/node": "^22.15.17",
140
163
  "@types/pako": "^2.0.0",
141
164
  "@types/supertest": "^2.0.12",
165
+ "@typescript/native-preview": "7.0.0-dev.20251126.1",
142
166
  "comlink": "^4.4.1",
143
167
  "eslint": "^9.26.0",
144
168
  "eslint-config-prettier": "^10.1.5",
@@ -153,7 +177,7 @@
153
177
  "ts-node": "^10.9.1",
154
178
  "typescript": "^5.3.3",
155
179
  "typescript-eslint": "^8.32.1",
156
- "viem": "2.23.7"
180
+ "viem": "npm:@aztec/viem@2.38.2"
157
181
  },
158
182
  "files": [
159
183
  "dest",
@@ -42,22 +42,6 @@ export async function makeTupleAsync<T, N extends number>(length: N, fn: (i: num
42
42
  )) as Tuple<T, N>;
43
43
  }
44
44
 
45
- /**
46
- * Create an array over an integer range, filled with a function 'fn'. However, the latter half of the array are set to zeros.
47
- * see `makeTuple` above.
48
- * @param n - The number of integers.
49
- * @param fn - The generator function.
50
- * @returns The array of numbers.
51
- */
52
- export function makeHalfFullTuple<T, N extends number>(
53
- length: N,
54
- fn: (i: number) => T,
55
- offset = 0,
56
- makeEmpty: () => T,
57
- ) {
58
- return Array.from({ length }, (_: any, i: number) => (i < length / 2 ? fn(i + offset) : makeEmpty())) as Tuple<T, N>;
59
- }
60
-
61
45
  /**
62
46
  * Assert a member of an object is a certain length.
63
47
  * @param obj - An object.
@@ -1 +1,2 @@
1
1
  export * from './array.js';
2
+ export * from './sorted_array.js';
@@ -0,0 +1,133 @@
1
+ type Cmp<T> = (a: T, b: T) => -1 | 0 | 1;
2
+
3
+ export function dedupeSortedArray<T>(arr: T[], cmp: Cmp<T>): void {
4
+ for (let i = 0; i < arr.length; i++) {
5
+ let j = i + 1;
6
+ for (; j < arr.length; j++) {
7
+ const res = cmp(arr[i], arr[j]);
8
+ if (res === 0) {
9
+ continue;
10
+ } else if (res < 0) {
11
+ break;
12
+ } else {
13
+ throw new Error('Array not sorted');
14
+ }
15
+ }
16
+
17
+ if (j - i > 1) {
18
+ arr.splice(i + 1, j - i - 1);
19
+ }
20
+ }
21
+ }
22
+
23
+ export function insertIntoSortedArray<T>(arr: T[], item: T, cmp: Cmp<T>, allowDuplicates = true): boolean {
24
+ let start = 0;
25
+ let end = arr.length;
26
+
27
+ while (start < end) {
28
+ const mid = start + (((end - start) / 2) | 0);
29
+ const comparison = cmp(arr[mid], item);
30
+
31
+ if (comparison < 0) {
32
+ start = mid + 1;
33
+ } else {
34
+ end = mid;
35
+ }
36
+ }
37
+
38
+ if (!allowDuplicates) {
39
+ // Check element at insertion point
40
+ if (start < arr.length && cmp(arr[start], item) === 0) {
41
+ return false;
42
+ }
43
+
44
+ // Check element before insertion point (in case we landed after duplicates)
45
+ if (start > 0 && cmp(arr[start - 1], item) === 0) {
46
+ return false;
47
+ }
48
+ }
49
+
50
+ arr.splice(start, 0, item);
51
+ return true;
52
+ }
53
+
54
+ export function findIndexInSortedArray<T, N>(values: T[], needle: N, cmp: (a: T, b: N) => number): number {
55
+ let start = 0;
56
+ let end = values.length - 1;
57
+
58
+ while (start <= end) {
59
+ const mid = start + (((end - start) / 2) | 0);
60
+ const comparison = cmp(values[mid], needle);
61
+
62
+ if (comparison === 0) {
63
+ return mid;
64
+ }
65
+
66
+ if (comparison > 0) {
67
+ end = mid - 1;
68
+ } else {
69
+ start = mid + 1;
70
+ }
71
+ }
72
+
73
+ return -1;
74
+ }
75
+
76
+ export function findInSortedArray<T, N>(values: T[], needle: N, cmp: (a: T, b: N) => number): T | undefined {
77
+ const idx = findIndexInSortedArray(values, needle, cmp);
78
+ return idx > -1 ? values[idx] : undefined;
79
+ }
80
+
81
+ export function removeAnyOf<T, N>(arr: T[], vals: N[], cmp: (a: T, b: N) => -1 | 0 | 1): void {
82
+ let writeIdx = 0;
83
+ let readIdx = 0;
84
+ let valIdx = 0;
85
+
86
+ while (readIdx < arr.length && valIdx < vals.length) {
87
+ const comparison = cmp(arr[readIdx], vals[valIdx]);
88
+
89
+ if (comparison < 0) {
90
+ arr[writeIdx++] = arr[readIdx++];
91
+ } else if (comparison > 0) {
92
+ valIdx++;
93
+ } else {
94
+ readIdx++;
95
+ }
96
+ }
97
+
98
+ while (readIdx < arr.length) {
99
+ arr[writeIdx++] = arr[readIdx++];
100
+ }
101
+
102
+ arr.length = writeIdx;
103
+ }
104
+
105
+ export function removeFromSortedArray<T, N>(arr: T[], val: N, cmp: (a: T, b: N) => -1 | 0 | 1) {
106
+ const idx = findIndexInSortedArray(arr, val, cmp);
107
+ if (idx > -1) {
108
+ arr.splice(idx, 1);
109
+ }
110
+ }
111
+
112
+ export function merge<T>(arr: T[], toInsert: T[], cmp: (a: T, b: T) => -1 | 0 | 1): void {
113
+ const result = new Array<T>(arr.length + toInsert.length);
114
+ let i = 0,
115
+ j = 0,
116
+ k = 0;
117
+
118
+ while (i < arr.length && j < toInsert.length) {
119
+ result[k++] = cmp(arr[i], toInsert[j]) <= 0 ? arr[i++] : toInsert[j++];
120
+ }
121
+
122
+ while (i < arr.length) {
123
+ result[k++] = arr[i++];
124
+ }
125
+ while (j < toInsert.length) {
126
+ result[k++] = toInsert[j++];
127
+ }
128
+
129
+ for (i = 0; i < result.length; i++) {
130
+ arr[i] = result[i];
131
+ }
132
+ arr.length = result.length;
133
+ }