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

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 (598) 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/bigint-buffer/index.d.ts.map +1 -1
  15. package/dest/bigint-buffer/index.js +6 -1
  16. package/dest/branded-types/block_number.d.ts +56 -0
  17. package/dest/branded-types/block_number.d.ts.map +1 -0
  18. package/dest/branded-types/block_number.js +89 -0
  19. package/dest/branded-types/buffer32_hash.d.ts +27 -0
  20. package/dest/branded-types/buffer32_hash.d.ts.map +1 -0
  21. package/dest/branded-types/buffer32_hash.js +12 -0
  22. package/dest/branded-types/checkpoint_number.d.ts +60 -0
  23. package/dest/branded-types/checkpoint_number.d.ts.map +1 -0
  24. package/dest/branded-types/checkpoint_number.js +88 -0
  25. package/dest/branded-types/epoch.d.ts +42 -0
  26. package/dest/branded-types/epoch.d.ts.map +1 -0
  27. package/dest/branded-types/epoch.js +59 -0
  28. package/dest/branded-types/index.d.ts +8 -0
  29. package/dest/branded-types/index.d.ts.map +1 -0
  30. package/dest/branded-types/index.js +6 -0
  31. package/dest/branded-types/index_within_checkpoint.d.ts +42 -0
  32. package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -0
  33. package/dest/branded-types/index_within_checkpoint.js +59 -0
  34. package/dest/branded-types/slot.d.ts +45 -0
  35. package/dest/branded-types/slot.d.ts.map +1 -0
  36. package/dest/branded-types/slot.js +62 -0
  37. package/dest/branded-types/types.d.ts +5 -0
  38. package/dest/branded-types/types.d.ts.map +1 -0
  39. package/dest/branded-types/types.js +1 -0
  40. package/dest/buffer/buffer16.d.ts +4 -2
  41. package/dest/buffer/buffer16.d.ts.map +1 -1
  42. package/dest/buffer/buffer16.js +4 -2
  43. package/dest/buffer/buffer32.d.ts +29 -62
  44. package/dest/buffer/buffer32.d.ts.map +1 -1
  45. package/dest/buffer/buffer32.js +33 -65
  46. package/dest/buffer/index.d.ts +2 -1
  47. package/dest/buffer/index.d.ts.map +1 -1
  48. package/dest/buffer/index.js +1 -0
  49. package/dest/buffer/utils.d.ts +3 -0
  50. package/dest/buffer/utils.d.ts.map +1 -0
  51. package/dest/buffer/utils.js +7 -0
  52. package/dest/collection/array.d.ts +22 -1
  53. package/dest/collection/array.d.ts.map +1 -1
  54. package/dest/collection/array.js +84 -0
  55. package/dest/collection/index.d.ts +3 -1
  56. package/dest/collection/index.d.ts.map +1 -1
  57. package/dest/collection/index.js +2 -0
  58. package/dest/collection/lru_map.d.ts +41 -0
  59. package/dest/collection/lru_map.d.ts.map +1 -0
  60. package/dest/collection/lru_map.js +119 -0
  61. package/dest/collection/lru_set.d.ts +35 -0
  62. package/dest/collection/lru_set.d.ts.map +1 -0
  63. package/dest/collection/lru_set.js +95 -0
  64. package/dest/collection/object.d.ts +1 -1
  65. package/dest/committable/committable.d.ts +1 -1
  66. package/dest/committable/committable.d.ts.map +1 -1
  67. package/dest/committable/committable.js +1 -1
  68. package/dest/committable/index.d.ts +1 -1
  69. package/dest/config/env_var.d.ts +2 -2
  70. package/dest/config/env_var.d.ts.map +1 -1
  71. package/dest/config/index.d.ts +60 -32
  72. package/dest/config/index.d.ts.map +1 -1
  73. package/dest/config/index.js +63 -40
  74. package/dest/config/network_config.d.ts +17 -31
  75. package/dest/config/network_config.d.ts.map +1 -1
  76. package/dest/config/network_config.js +6 -1
  77. package/dest/config/network_name.d.ts +2 -2
  78. package/dest/config/network_name.d.ts.map +1 -1
  79. package/dest/config/network_name.js +3 -3
  80. package/dest/config/parse-env.d.ts +3 -0
  81. package/dest/config/parse-env.d.ts.map +1 -0
  82. package/dest/config/parse-env.js +7 -0
  83. package/dest/config/secret_value.d.ts +2 -2
  84. package/dest/config/secret_value.d.ts.map +1 -1
  85. package/dest/config/secret_value.js +3 -1
  86. package/dest/crypto/aes128/index.d.ts +2 -1
  87. package/dest/crypto/aes128/index.d.ts.map +1 -1
  88. package/dest/crypto/aes128/index.js +13 -8
  89. package/dest/crypto/bls/bn254_keystore.d.ts +9 -176
  90. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -1
  91. package/dest/crypto/bls/bn254_keystore.js +1 -18
  92. package/dest/crypto/bls/index.d.ts +1 -1
  93. package/dest/crypto/bls/index.js +1 -1
  94. package/dest/crypto/bn254/index.d.ts +35 -51
  95. package/dest/crypto/bn254/index.d.ts.map +1 -1
  96. package/dest/crypto/bn254/index.js +51 -137
  97. package/dest/crypto/ecdsa/index.d.ts +1 -1
  98. package/dest/crypto/ecdsa/index.d.ts.map +1 -1
  99. package/dest/crypto/ecdsa/index.js +4 -12
  100. package/dest/crypto/ecdsa/signature.d.ts +2 -2
  101. package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
  102. package/dest/crypto/ecdsa/signature.js +2 -2
  103. package/dest/crypto/grumpkin/index.d.ts +4 -2
  104. package/dest/crypto/grumpkin/index.d.ts.map +1 -1
  105. package/dest/crypto/grumpkin/index.js +7 -16
  106. package/dest/crypto/keccak/index.d.ts +1 -1
  107. package/dest/crypto/keys/index.d.ts +2 -2
  108. package/dest/crypto/keys/index.d.ts.map +1 -1
  109. package/dest/crypto/keys/index.js +2 -4
  110. package/dest/crypto/pedersen/index.d.ts +1 -1
  111. package/dest/crypto/pedersen/pedersen.noble.d.ts +1 -1
  112. package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -2
  113. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  114. package/dest/crypto/pedersen/pedersen.wasm.js +4 -10
  115. package/dest/crypto/poseidon/index.d.ts +2 -3
  116. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  117. package/dest/crypto/poseidon/index.js +41 -53
  118. package/dest/crypto/random/index.d.ts +1 -1
  119. package/dest/crypto/random/index.d.ts.map +1 -1
  120. package/dest/crypto/random/randomness_singleton.d.ts +4 -3
  121. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
  122. package/dest/crypto/random/randomness_singleton.js +5 -5
  123. package/dest/crypto/schnorr/index.d.ts +10 -8
  124. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  125. package/dest/crypto/schnorr/index.js +10 -16
  126. package/dest/crypto/schnorr/signature.d.ts +10 -30
  127. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  128. package/dest/crypto/schnorr/signature.js +21 -37
  129. package/dest/crypto/secp256k1/index.d.ts +1 -1
  130. package/dest/crypto/secp256k1/index.d.ts.map +1 -1
  131. package/dest/crypto/secp256k1/index.js +3 -9
  132. package/dest/crypto/secp256k1-signer/index.d.ts +1 -1
  133. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +1 -1
  134. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
  135. package/dest/crypto/secp256k1-signer/utils.d.ts +12 -1
  136. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
  137. package/dest/crypto/secp256k1-signer/utils.js +26 -0
  138. package/dest/crypto/sha256/index.d.ts +2 -2
  139. package/dest/crypto/sha256/index.d.ts.map +1 -1
  140. package/dest/crypto/sha256/index.js +1 -1
  141. package/dest/crypto/sha512/index.d.ts +3 -3
  142. package/dest/crypto/sha512/index.d.ts.map +1 -1
  143. package/dest/crypto/sha512/index.js +1 -1
  144. package/dest/crypto/signature/index.d.ts +2 -2
  145. package/dest/crypto/signature/index.d.ts.map +1 -1
  146. package/dest/crypto/sync/index.d.ts +1 -1
  147. package/dest/crypto/sync/index.js +1 -3
  148. package/dest/crypto/sync/pedersen/index.d.ts +2 -2
  149. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
  150. package/dest/crypto/sync/pedersen/index.js +1 -1
  151. package/dest/crypto/sync/poseidon/index.d.ts +2 -3
  152. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
  153. package/dest/crypto/sync/poseidon/index.js +1 -9
  154. package/dest/{fields/bls12_fields.d.ts → curves/bls12/field.d.ts} +5 -5
  155. package/dest/curves/bls12/field.d.ts.map +1 -0
  156. package/dest/{fields/bls12_fields.js → curves/bls12/field.js} +11 -13
  157. package/dest/curves/bls12/index.d.ts +3 -0
  158. package/dest/curves/bls12/index.d.ts.map +1 -0
  159. package/dest/curves/bls12/index.js +2 -0
  160. package/dest/{fields/bls12_point.d.ts → curves/bls12/point.d.ts} +5 -5
  161. package/dest/curves/bls12/point.d.ts.map +1 -0
  162. package/dest/{fields/bls12_point.js → curves/bls12/point.js} +10 -8
  163. package/dest/curves/bn254/field.d.ts +185 -0
  164. package/dest/curves/bn254/field.d.ts.map +1 -0
  165. package/dest/{fields/fields.js → curves/bn254/field.js} +70 -61
  166. package/dest/curves/bn254/index.d.ts +3 -0
  167. package/dest/curves/bn254/index.d.ts.map +1 -0
  168. package/dest/curves/bn254/index.js +2 -0
  169. package/dest/curves/bn254/point.d.ts +54 -0
  170. package/dest/curves/bn254/point.d.ts.map +1 -0
  171. package/dest/curves/bn254/point.js +143 -0
  172. package/dest/curves/grumpkin/index.d.ts +10 -0
  173. package/dest/curves/grumpkin/index.d.ts.map +1 -0
  174. package/dest/curves/grumpkin/index.js +3 -0
  175. package/dest/{fields → curves/grumpkin}/point.d.ts +24 -29
  176. package/dest/curves/grumpkin/point.d.ts.map +1 -0
  177. package/dest/{fields → curves/grumpkin}/point.js +51 -48
  178. package/dest/decorators/index.d.ts +1 -1
  179. package/dest/decorators/memoize.d.ts +1 -1
  180. package/dest/decorators/memoize.d.ts.map +1 -1
  181. package/dest/error/index.d.ts +1 -1
  182. package/dest/eth-address/index.d.ts +13 -3
  183. package/dest/eth-address/index.d.ts.map +1 -1
  184. package/dest/eth-address/index.js +27 -6
  185. package/dest/eth-signature/eth_signature.d.ts +3 -2
  186. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  187. package/dest/eth-signature/eth_signature.js +7 -2
  188. package/dest/eth-signature/index.d.ts +1 -1
  189. package/dest/fifo/fifo_frame_reader.d.ts +41 -0
  190. package/dest/fifo/fifo_frame_reader.d.ts.map +1 -0
  191. package/dest/fifo/fifo_frame_reader.js +91 -0
  192. package/dest/fifo/index.d.ts +2 -0
  193. package/dest/fifo/index.d.ts.map +1 -0
  194. package/dest/fifo/index.js +1 -0
  195. package/dest/fifo_set/fifo_set.d.ts +15 -0
  196. package/dest/fifo_set/fifo_set.d.ts.map +1 -0
  197. package/dest/fifo_set/fifo_set.js +39 -0
  198. package/dest/fifo_set/index.d.ts +2 -0
  199. package/dest/fifo_set/index.d.ts.map +1 -0
  200. package/dest/fifo_set/index.js +1 -0
  201. package/dest/fs/index.d.ts +1 -1
  202. package/dest/fs/run_in_dir.d.ts +1 -1
  203. package/dest/fs/try_rm_dir.d.ts +1 -1
  204. package/dest/iterable/all.d.ts +1 -1
  205. package/dest/iterable/filter.d.ts +1 -1
  206. package/dest/iterable/index.d.ts +1 -1
  207. package/dest/iterable/isAsyncIt.d.ts +1 -1
  208. package/dest/iterable/map.d.ts +1 -1
  209. package/dest/iterable/peek.d.ts +1 -1
  210. package/dest/iterable/sort.d.ts +1 -1
  211. package/dest/iterable/take.d.ts +1 -1
  212. package/dest/iterable/toArray.d.ts +1 -1
  213. package/dest/iterator/filter.d.ts +3 -0
  214. package/dest/iterator/filter.d.ts.map +1 -0
  215. package/dest/iterator/filter.js +7 -0
  216. package/dest/iterator/index.d.ts +2 -0
  217. package/dest/iterator/index.d.ts.map +1 -0
  218. package/dest/iterator/index.js +1 -0
  219. package/dest/jest/setup.js +28 -1
  220. package/dest/json-rpc/client/fetch.d.ts +1 -1
  221. package/dest/json-rpc/client/fetch.d.ts.map +1 -1
  222. package/dest/json-rpc/client/fetch.js +4 -3
  223. package/dest/json-rpc/client/index.d.ts +1 -1
  224. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +2 -1
  225. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  226. package/dest/json-rpc/client/safe_json_rpc_client.js +3 -3
  227. package/dest/json-rpc/client/undici.d.ts +1 -1
  228. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  229. package/dest/json-rpc/client/undici.js +23 -4
  230. package/dest/json-rpc/convert.d.ts +1 -1
  231. package/dest/json-rpc/errors.d.ts +1 -1
  232. package/dest/json-rpc/errors.d.ts.map +1 -1
  233. package/dest/json-rpc/fixtures/class_a.d.ts +1 -1
  234. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
  235. package/dest/json-rpc/fixtures/class_b.d.ts +1 -1
  236. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
  237. package/dest/json-rpc/fixtures/test_state.d.ts +4 -8
  238. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
  239. package/dest/json-rpc/fixtures/test_state.js +57 -17
  240. package/dest/json-rpc/index.d.ts +1 -1
  241. package/dest/json-rpc/js_utils.d.ts +1 -1
  242. package/dest/json-rpc/js_utils.d.ts.map +1 -1
  243. package/dest/json-rpc/server/api_key_auth.d.ts +19 -0
  244. package/dest/json-rpc/server/api_key_auth.d.ts.map +1 -0
  245. package/dest/json-rpc/server/api_key_auth.js +57 -0
  246. package/dest/json-rpc/server/index.d.ts +2 -1
  247. package/dest/json-rpc/server/index.d.ts.map +1 -1
  248. package/dest/json-rpc/server/index.js +1 -0
  249. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +8 -3
  250. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  251. package/dest/json-rpc/server/safe_json_rpc_server.js +28 -14
  252. package/dest/json-rpc/test/index.d.ts +1 -1
  253. package/dest/json-rpc/test/integration.d.ts +1 -1
  254. package/dest/log/bigint-utils.d.ts +5 -0
  255. package/dest/log/bigint-utils.d.ts.map +1 -0
  256. package/dest/log/bigint-utils.js +21 -0
  257. package/dest/log/console.d.ts +1 -1
  258. package/dest/log/gcloud-logger-config.d.ts +1 -1
  259. package/dest/log/gcloud-logger-config.d.ts.map +1 -1
  260. package/dest/log/gcloud-logger-config.js +3 -0
  261. package/dest/log/index.d.ts +1 -1
  262. package/dest/log/libp2p_logger.d.ts +5 -2
  263. package/dest/log/libp2p_logger.d.ts.map +1 -1
  264. package/dest/log/libp2p_logger.js +14 -4
  265. package/dest/log/log-filters.d.ts +17 -4
  266. package/dest/log/log-filters.d.ts.map +1 -1
  267. package/dest/log/log-filters.js +26 -12
  268. package/dest/log/log-levels.d.ts +1 -1
  269. package/dest/log/log_fn.d.ts +1 -1
  270. package/dest/log/noir_debug_log_util.d.ts +1 -1
  271. package/dest/log/pino-logger-server.d.ts +9 -0
  272. package/dest/log/pino-logger-server.d.ts.map +1 -0
  273. package/dest/log/pino-logger-server.js +18 -0
  274. package/dest/log/pino-logger.d.ts +38 -9
  275. package/dest/log/pino-logger.d.ts.map +1 -1
  276. package/dest/log/pino-logger.js +138 -30
  277. package/dest/message/index.d.ts +1 -1
  278. package/dest/message/index.d.ts.map +1 -1
  279. package/dest/mutex/index.d.ts +1 -1
  280. package/dest/mutex/index.d.ts.map +1 -1
  281. package/dest/mutex/mutex_database.d.ts +1 -1
  282. package/dest/noir/index.d.ts +1 -1
  283. package/dest/noir/noir_package_config.d.ts +19 -104
  284. package/dest/noir/noir_package_config.d.ts.map +1 -1
  285. package/dest/noir/noir_package_config.js +1 -1
  286. package/dest/number/index.d.ts +1 -1
  287. package/dest/profiler/index.d.ts +1 -1
  288. package/dest/profiler/profiler.d.ts +1 -1
  289. package/dest/promise/index.d.ts +1 -1
  290. package/dest/promise/running-promise.d.ts +1 -1
  291. package/dest/promise/running-promise.d.ts.map +1 -1
  292. package/dest/promise/utils.d.ts +1 -1
  293. package/dest/queue/base_memory_queue.d.ts +2 -2
  294. package/dest/queue/base_memory_queue.d.ts.map +1 -1
  295. package/dest/queue/batch_queue.d.ts +1 -1
  296. package/dest/queue/batch_queue.d.ts.map +1 -1
  297. package/dest/queue/batch_queue.js +1 -0
  298. package/dest/queue/bounded_serial_queue.d.ts +1 -1
  299. package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
  300. package/dest/queue/fifo_memory_queue.d.ts +1 -1
  301. package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
  302. package/dest/queue/index.d.ts +1 -1
  303. package/dest/queue/priority_memory_queue.d.ts +1 -1
  304. package/dest/queue/priority_memory_queue.d.ts.map +1 -1
  305. package/dest/queue/priority_queue.d.ts +1 -1
  306. package/dest/queue/priority_queue.d.ts.map +1 -1
  307. package/dest/queue/semaphore.d.ts +5 -1
  308. package/dest/queue/semaphore.d.ts.map +1 -1
  309. package/dest/queue/serial_queue.d.ts +1 -1
  310. package/dest/queue/serial_queue.d.ts.map +1 -1
  311. package/dest/retry/index.d.ts +22 -1
  312. package/dest/retry/index.d.ts.map +1 -1
  313. package/dest/retry/index.js +32 -0
  314. package/dest/running-promise/index.d.ts +1 -1
  315. package/dest/schemas/api.d.ts +12 -10
  316. package/dest/schemas/api.d.ts.map +1 -1
  317. package/dest/schemas/api.js +7 -1
  318. package/dest/schemas/index.d.ts +1 -1
  319. package/dest/schemas/parse.d.ts +4 -4
  320. package/dest/schemas/parse.d.ts.map +1 -1
  321. package/dest/schemas/parse.js +6 -5
  322. package/dest/schemas/schemas.d.ts +26 -28
  323. package/dest/schemas/schemas.d.ts.map +1 -1
  324. package/dest/schemas/schemas.js +14 -10
  325. package/dest/schemas/types.d.ts +32 -2
  326. package/dest/schemas/types.d.ts.map +1 -1
  327. package/dest/schemas/types.js +25 -1
  328. package/dest/schemas/utils.d.ts +10 -14
  329. package/dest/schemas/utils.d.ts.map +1 -1
  330. package/dest/schemas/utils.js +17 -23
  331. package/dest/serialize/buffer_reader.d.ts +14 -4
  332. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  333. package/dest/serialize/buffer_reader.js +26 -4
  334. package/dest/serialize/buffer_sink.d.ts +134 -0
  335. package/dest/serialize/buffer_sink.d.ts.map +1 -0
  336. package/dest/serialize/buffer_sink.js +297 -0
  337. package/dest/serialize/field_reader.d.ts +2 -2
  338. package/dest/serialize/field_reader.d.ts.map +1 -1
  339. package/dest/serialize/field_reader.js +1 -1
  340. package/dest/serialize/free_funcs.d.ts +2 -2
  341. package/dest/serialize/free_funcs.d.ts.map +1 -1
  342. package/dest/serialize/free_funcs.js +1 -1
  343. package/dest/serialize/index.d.ts +2 -1
  344. package/dest/serialize/index.d.ts.map +1 -1
  345. package/dest/serialize/index.js +1 -0
  346. package/dest/serialize/serialize.d.ts +20 -2
  347. package/dest/serialize/serialize.d.ts.map +1 -1
  348. package/dest/serialize/serialize.js +32 -1
  349. package/dest/serialize/type_registry.d.ts +1 -1
  350. package/dest/serialize/type_registry.d.ts.map +1 -1
  351. package/dest/serialize/types.d.ts +1 -1
  352. package/dest/sleep/index.d.ts +4 -1
  353. package/dest/sleep/index.d.ts.map +1 -1
  354. package/dest/sleep/index.js +14 -1
  355. package/dest/string/index.d.ts +1 -1
  356. package/dest/string/index.js +1 -1
  357. package/dest/testing/files/index.d.ts +2 -1
  358. package/dest/testing/files/index.d.ts.map +1 -1
  359. package/dest/testing/files/index.js +1 -1
  360. package/dest/testing/formatting.d.ts +1 -1
  361. package/dest/testing/index.d.ts +1 -1
  362. package/dest/testing/port_allocator.d.ts +1 -1
  363. package/dest/testing/snapshot_serializer.d.ts +1 -1
  364. package/dest/testing/test_data.d.ts +1 -1
  365. package/dest/timer/date.d.ts +26 -1
  366. package/dest/timer/date.d.ts.map +1 -1
  367. package/dest/timer/date.js +36 -0
  368. package/dest/timer/elapsed.d.ts +1 -1
  369. package/dest/timer/index.d.ts +2 -2
  370. package/dest/timer/index.d.ts.map +1 -1
  371. package/dest/timer/index.js +1 -1
  372. package/dest/timer/timeout.d.ts +3 -1
  373. package/dest/timer/timeout.d.ts.map +1 -1
  374. package/dest/timer/timeout.js +26 -0
  375. package/dest/timer/timer.d.ts +1 -1
  376. package/dest/timer/timer.d.ts.map +1 -1
  377. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +11 -2
  378. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
  379. package/dest/transport/dispatch/messages.d.ts +1 -1
  380. package/dest/transport/index.d.ts +1 -2
  381. package/dest/transport/index.d.ts.map +1 -1
  382. package/dest/transport/index.js +0 -1
  383. package/dest/transport/interface/connector.d.ts +1 -1
  384. package/dest/transport/interface/listener.d.ts +1 -1
  385. package/dest/transport/interface/socket.d.ts +1 -1
  386. package/dest/transport/interface/transferable.d.ts +1 -1
  387. package/dest/transport/node/index.d.ts +1 -1
  388. package/dest/transport/node/node_connector.d.ts +1 -1
  389. package/dest/transport/node/node_connector.d.ts.map +1 -1
  390. package/dest/transport/node/node_connector_socket.d.ts +1 -1
  391. package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
  392. package/dest/transport/node/node_listener.d.ts +1 -1
  393. package/dest/transport/node/node_listener.d.ts.map +1 -1
  394. package/dest/transport/node/node_listener_socket.d.ts +1 -1
  395. package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
  396. package/dest/transport/transport_client.d.ts +1 -1
  397. package/dest/transport/transport_client.d.ts.map +1 -1
  398. package/dest/transport/transport_client.js +2 -2
  399. package/dest/transport/transport_server.d.ts +1 -10
  400. package/dest/transport/transport_server.d.ts.map +1 -1
  401. package/dest/trees/balanced_merkle_tree_root.d.ts +16 -0
  402. package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -0
  403. package/dest/trees/balanced_merkle_tree_root.js +50 -0
  404. package/dest/trees/hasher.d.ts +4 -1
  405. package/dest/trees/hasher.d.ts.map +1 -1
  406. package/dest/trees/hasher.js +10 -5
  407. package/dest/trees/index.d.ts +4 -3
  408. package/dest/trees/index.d.ts.map +1 -1
  409. package/dest/trees/index.js +3 -2
  410. package/dest/trees/indexed_merkle_tree.d.ts +1 -1
  411. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
  412. package/dest/trees/indexed_merkle_tree.js +1 -1
  413. package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
  414. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  415. package/dest/trees/indexed_merkle_tree_calculator.js +5 -1
  416. package/dest/trees/indexed_tree_leaf.d.ts +1 -1
  417. package/dest/trees/membership_witness.d.ts +7 -18
  418. package/dest/trees/membership_witness.d.ts.map +1 -1
  419. package/dest/trees/membership_witness.js +10 -1
  420. package/dest/trees/merkle_tree.d.ts +1 -1
  421. package/dest/trees/merkle_tree.d.ts.map +1 -1
  422. package/dest/trees/merkle_tree_calculator.d.ts +4 -12
  423. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  424. package/dest/trees/merkle_tree_calculator.js +1 -35
  425. package/dest/trees/sibling_path.d.ts +6 -38
  426. package/dest/trees/sibling_path.d.ts.map +1 -1
  427. package/dest/trees/sibling_path.js +11 -9
  428. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +6 -6
  429. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -1
  430. package/dest/trees/unbalanced_merkle_tree_calculator.js +34 -42
  431. package/dest/trees/unbalanced_merkle_tree_root.d.ts +27 -0
  432. package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -0
  433. package/dest/trees/unbalanced_merkle_tree_root.js +83 -0
  434. package/dest/trees/unbalanced_tree_store.d.ts +5 -1
  435. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
  436. package/dest/trees/unbalanced_tree_store.js +49 -1
  437. package/dest/types/index.d.ts +28 -2
  438. package/dest/types/index.d.ts.map +1 -1
  439. package/dest/types/index.js +21 -0
  440. package/dest/url/index.d.ts +1 -1
  441. package/dest/validation/index.d.ts +1 -1
  442. package/package.json +54 -11
  443. package/src/array/array.ts +0 -16
  444. package/src/array/index.ts +1 -0
  445. package/src/array/sorted_array.ts +138 -0
  446. package/src/bigint-buffer/index.ts +6 -1
  447. package/src/branded-types/block_number.ts +135 -0
  448. package/src/branded-types/buffer32_hash.ts +38 -0
  449. package/src/branded-types/checkpoint_number.ts +130 -0
  450. package/src/branded-types/epoch.ts +88 -0
  451. package/src/branded-types/index.ts +8 -0
  452. package/src/branded-types/index_within_checkpoint.ts +88 -0
  453. package/src/branded-types/slot.ts +93 -0
  454. package/src/branded-types/types.ts +2 -0
  455. package/src/buffer/buffer16.ts +5 -2
  456. package/src/buffer/buffer32.ts +41 -70
  457. package/src/buffer/index.ts +1 -0
  458. package/src/buffer/utils.ts +8 -0
  459. package/src/collection/array.ts +86 -0
  460. package/src/collection/index.ts +2 -0
  461. package/src/collection/lru_map.ts +143 -0
  462. package/src/collection/lru_set.ts +115 -0
  463. package/src/committable/committable.ts +1 -1
  464. package/src/config/env_var.ts +118 -34
  465. package/src/config/index.ts +144 -91
  466. package/src/config/network_config.ts +5 -0
  467. package/src/config/network_name.ts +6 -6
  468. package/src/config/parse-env.ts +4 -0
  469. package/src/config/secret_value.ts +1 -1
  470. package/src/crypto/aes128/index.ts +13 -4
  471. package/src/crypto/bls/bn254_keystore.ts +1 -24
  472. package/src/crypto/bls/index.ts +1 -1
  473. package/src/crypto/bn254/index.ts +50 -156
  474. package/src/crypto/ecdsa/index.ts +4 -4
  475. package/src/crypto/ecdsa/signature.ts +2 -2
  476. package/src/crypto/grumpkin/index.ts +8 -6
  477. package/src/crypto/keys/index.ts +2 -2
  478. package/src/crypto/pedersen/pedersen.wasm.ts +4 -4
  479. package/src/crypto/poseidon/index.ts +43 -45
  480. package/src/crypto/random/randomness_singleton.ts +6 -4
  481. package/src/crypto/schnorr/index.ts +14 -12
  482. package/src/crypto/schnorr/signature.ts +18 -47
  483. package/src/crypto/secp256k1/index.ts +3 -3
  484. package/src/crypto/secp256k1-signer/utils.ts +32 -0
  485. package/src/crypto/sha256/index.ts +1 -1
  486. package/src/crypto/sha512/index.ts +1 -1
  487. package/src/crypto/signature/index.ts +1 -1
  488. package/src/crypto/sync/index.ts +1 -1
  489. package/src/crypto/sync/pedersen/index.ts +1 -1
  490. package/src/crypto/sync/poseidon/index.ts +1 -10
  491. package/src/{fields/bls12_fields.ts → curves/bls12/field.ts} +5 -12
  492. package/src/curves/bls12/index.ts +2 -0
  493. package/src/{fields/bls12_point.ts → curves/bls12/point.ts} +7 -7
  494. package/src/{fields/fields.ts → curves/bn254/field.ts} +82 -84
  495. package/src/curves/bn254/index.ts +2 -0
  496. package/src/curves/bn254/point.ts +170 -0
  497. package/src/curves/grumpkin/index.ts +11 -0
  498. package/src/{fields → curves/grumpkin}/point.ts +47 -45
  499. package/src/eth-address/index.ts +27 -6
  500. package/src/eth-signature/eth_signature.ts +7 -1
  501. package/src/fifo/fifo_frame_reader.ts +113 -0
  502. package/src/fifo/index.ts +1 -0
  503. package/src/fifo_set/fifo_set.ts +52 -0
  504. package/src/fifo_set/index.ts +1 -0
  505. package/src/iterator/filter.ts +11 -0
  506. package/src/iterator/index.ts +1 -0
  507. package/src/jest/setup.mjs +31 -1
  508. package/src/json-rpc/client/fetch.ts +4 -3
  509. package/src/json-rpc/client/safe_json_rpc_client.ts +4 -2
  510. package/src/json-rpc/client/undici.ts +23 -3
  511. package/src/json-rpc/fixtures/test_state.ts +10 -10
  512. package/src/json-rpc/server/api_key_auth.ts +63 -0
  513. package/src/json-rpc/server/index.ts +1 -0
  514. package/src/json-rpc/server/safe_json_rpc_server.ts +32 -14
  515. package/src/log/bigint-utils.ts +25 -0
  516. package/src/log/gcloud-logger-config.ts +5 -0
  517. package/src/log/libp2p_logger.ts +12 -5
  518. package/src/log/log-filters.ts +29 -11
  519. package/src/log/pino-logger-server.ts +25 -0
  520. package/src/log/pino-logger.ts +162 -40
  521. package/src/noir/noir_package_config.ts +32 -20
  522. package/src/queue/base_memory_queue.ts +1 -1
  523. package/src/queue/batch_queue.ts +1 -0
  524. package/src/queue/semaphore.ts +5 -0
  525. package/src/retry/index.ts +48 -0
  526. package/src/schemas/api.ts +25 -25
  527. package/src/schemas/parse.ts +9 -6
  528. package/src/schemas/schemas.ts +27 -16
  529. package/src/schemas/types.ts +34 -1
  530. package/src/schemas/utils.ts +25 -46
  531. package/src/serialize/buffer_reader.ts +36 -9
  532. package/src/serialize/buffer_sink.ts +350 -0
  533. package/src/serialize/field_reader.ts +1 -1
  534. package/src/serialize/free_funcs.ts +1 -1
  535. package/src/serialize/index.ts +1 -0
  536. package/src/serialize/serialize.ts +33 -1
  537. package/src/sleep/index.ts +16 -1
  538. package/src/string/index.ts +1 -1
  539. package/src/testing/files/index.ts +1 -1
  540. package/src/timer/date.ts +52 -0
  541. package/src/timer/index.ts +1 -1
  542. package/src/timer/timeout.ts +31 -0
  543. package/src/transport/dispatch/create_dispatch_proxy.ts +11 -1
  544. package/src/transport/index.ts +0 -1
  545. package/src/transport/transport_client.ts +2 -2
  546. package/src/trees/balanced_merkle_tree_root.ts +65 -0
  547. package/src/trees/hasher.ts +12 -0
  548. package/src/trees/index.ts +3 -2
  549. package/src/trees/indexed_merkle_tree.ts +1 -1
  550. package/src/trees/indexed_merkle_tree_calculator.ts +5 -1
  551. package/src/trees/membership_witness.ts +9 -1
  552. package/src/trees/merkle_tree_calculator.ts +4 -43
  553. package/src/trees/sibling_path.ts +12 -7
  554. package/src/trees/unbalanced_merkle_tree_calculator.ts +32 -50
  555. package/src/trees/unbalanced_merkle_tree_root.ts +112 -0
  556. package/src/trees/unbalanced_tree_store.ts +57 -2
  557. package/src/types/index.ts +58 -1
  558. package/dest/crypto/bn254/bn254_utils.d.ts +0 -39
  559. package/dest/crypto/bn254/bn254_utils.d.ts.map +0 -1
  560. package/dest/crypto/bn254/bn254_utils.js +0 -56
  561. package/dest/crypto/index.d.ts +0 -17
  562. package/dest/crypto/index.d.ts.map +0 -1
  563. package/dest/crypto/index.js +0 -16
  564. package/dest/crypto/serialize.d.ts +0 -51
  565. package/dest/crypto/serialize.d.ts.map +0 -1
  566. package/dest/crypto/serialize.js +0 -68
  567. package/dest/fields/bls12_fields.d.ts.map +0 -1
  568. package/dest/fields/bls12_point.d.ts.map +0 -1
  569. package/dest/fields/coordinate.d.ts +0 -66
  570. package/dest/fields/coordinate.d.ts.map +0 -1
  571. package/dest/fields/coordinate.js +0 -96
  572. package/dest/fields/fields.d.ts +0 -179
  573. package/dest/fields/fields.d.ts.map +0 -1
  574. package/dest/fields/index.d.ts +0 -6
  575. package/dest/fields/index.d.ts.map +0 -1
  576. package/dest/fields/index.js +0 -5
  577. package/dest/fields/point.d.ts.map +0 -1
  578. package/dest/index.d.ts +0 -30
  579. package/dest/index.d.ts.map +0 -1
  580. package/dest/index.js +0 -30
  581. package/dest/json-rpc/server/telemetry.d.ts +0 -2
  582. package/dest/json-rpc/server/telemetry.d.ts.map +0 -1
  583. package/dest/json-rpc/server/telemetry.js +0 -0
  584. package/dest/transport/dispatch/create_dispatch_fn.d.ts +0 -25
  585. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +0 -1
  586. package/dest/transport/dispatch/create_dispatch_fn.js +0 -17
  587. package/dest/trees/unbalanced_merkle_tree.d.ts +0 -28
  588. package/dest/trees/unbalanced_merkle_tree.d.ts.map +0 -1
  589. package/dest/trees/unbalanced_merkle_tree.js +0 -99
  590. package/src/crypto/bn254/bn254_utils.ts +0 -64
  591. package/src/crypto/index.ts +0 -16
  592. package/src/crypto/serialize.ts +0 -85
  593. package/src/fields/coordinate.ts +0 -104
  594. package/src/fields/index.ts +0 -5
  595. package/src/index.ts +0 -30
  596. package/src/json-rpc/server/telemetry.ts +0 -0
  597. package/src/transport/dispatch/create_dispatch_fn.ts +0 -35
  598. package/src/trees/unbalanced_merkle_tree.ts +0 -111
@@ -0,0 +1,170 @@
1
+ import {
2
+ BN254_G1_GENERATOR,
3
+ BN254_G2_GENERATOR,
4
+ BarretenbergSync,
5
+ type Bn254G1Point as BbApiBn254G1Point,
6
+ type Bn254G2Point as BbApiBn254G2Point,
7
+ } from '@aztec/bb.js';
8
+
9
+ import { Fq, Fr } from './field.js';
10
+
11
+ /**
12
+ * BN254 G1 point using foundation field classes.
13
+ * Represents a point on the BN254 elliptic curve in affine coordinates.
14
+ */
15
+ export class Bn254G1Point {
16
+ constructor(
17
+ public readonly x: Fq,
18
+ public readonly y: Fq,
19
+ ) {}
20
+
21
+ private toBbApiPoint(): BbApiBn254G1Point {
22
+ return {
23
+ x: this.x.toBuffer(),
24
+ y: this.y.toBuffer(),
25
+ };
26
+ }
27
+
28
+ private static fromBbApiPoint(point: BbApiBn254G1Point): Bn254G1Point {
29
+ return new Bn254G1Point(Fq.fromBuffer(Buffer.from(point.x)), Fq.fromBuffer(Buffer.from(point.y)));
30
+ }
31
+
32
+ async isOnCurve(): Promise<boolean> {
33
+ await BarretenbergSync.initSingleton();
34
+ const api = BarretenbergSync.getSingleton();
35
+
36
+ const apiPoint = this.toBbApiPoint();
37
+ const response = api.bn254G1IsOnCurve({ point: apiPoint });
38
+ return response.isOnCurve;
39
+ }
40
+
41
+ /**
42
+ * Get the generator point for BN254 G1, or perform scalar multiplication.
43
+ * When called without arguments, returns the base generator point.
44
+ * When called with a scalar, returns scalar * generator (useful for public key derivation).
45
+ */
46
+ static async generator(scalar?: Fr): Promise<Bn254G1Point> {
47
+ if (!scalar) {
48
+ return new Bn254G1Point(
49
+ Fq.fromBuffer(Buffer.from(BN254_G1_GENERATOR.x)),
50
+ Fq.fromBuffer(Buffer.from(BN254_G1_GENERATOR.y)),
51
+ );
52
+ }
53
+
54
+ await BarretenbergSync.initSingleton();
55
+ const api = BarretenbergSync.getSingleton();
56
+
57
+ const response = api.bn254G1Mul({
58
+ point: BN254_G1_GENERATOR,
59
+ scalar: scalar.toBuffer(),
60
+ });
61
+
62
+ return Bn254G1Point.fromBbApiPoint(response.point);
63
+ }
64
+
65
+ /**
66
+ * Decompress a BN254 G1 point from compressed form (32 bytes).
67
+ * The compressed format encodes the x-coordinate and the sign bit of the y-coordinate
68
+ * in the most significant bit.
69
+ */
70
+ static async fromCompressed(compressed: Buffer): Promise<Bn254G1Point> {
71
+ if (compressed.length !== 32) {
72
+ throw new Error('Invalid compressed point length');
73
+ }
74
+ await BarretenbergSync.initSingleton();
75
+ const api = BarretenbergSync.getSingleton();
76
+
77
+ const response = api.bn254G1FromCompressed({
78
+ compressed: new Uint8Array(compressed),
79
+ });
80
+
81
+ return Bn254G1Point.fromBbApiPoint(response.point);
82
+ }
83
+
84
+ /**
85
+ * Compress this BN254 G1 point to 32 bytes.
86
+ * The compressed format encodes the x-coordinate and the sign bit of the y-coordinate
87
+ * in the most significant bit (bit 255).
88
+ */
89
+ compress(): Buffer {
90
+ const xBytes = this.x.toBuffer();
91
+ // Get the least significant bit of y to determine the sign
92
+ const yLsb = this.y.toBigInt() & 1n;
93
+ // If y is odd, set the most significant bit (bit 255) of the output
94
+ if (yLsb === 1n) {
95
+ xBytes[0] |= 0x80;
96
+ }
97
+ return xBytes;
98
+ }
99
+
100
+ equals(other: Bn254G1Point): boolean {
101
+ return this.x.equals(other.x) && this.y.equals(other.y);
102
+ }
103
+
104
+ toString(): string {
105
+ return `Bn254G1Point(x: ${this.x.toString()}, y: ${this.y.toString()})`;
106
+ }
107
+ }
108
+
109
+ /**
110
+ * BN254 G2 point using foundation field classes.
111
+ * Represents a point on the BN254 G2 curve (twist curve) in affine coordinates.
112
+ * G2 points use extension field coordinates (Fq2).
113
+ */
114
+ export class Bn254G2Point {
115
+ constructor(
116
+ public readonly x: [Fq, Fq],
117
+ public readonly y: [Fq, Fq],
118
+ ) {}
119
+
120
+ private toBbApiPoint(): BbApiBn254G2Point {
121
+ return {
122
+ x: [this.x[0].toBuffer(), this.x[1].toBuffer()],
123
+ y: [this.y[0].toBuffer(), this.y[1].toBuffer()],
124
+ };
125
+ }
126
+
127
+ private static fromBbApiPoint(point: BbApiBn254G2Point): Bn254G2Point {
128
+ return new Bn254G2Point(
129
+ [Fq.fromBuffer(Buffer.from(point.x[0])), Fq.fromBuffer(Buffer.from(point.x[1]))],
130
+ [Fq.fromBuffer(Buffer.from(point.y[0])), Fq.fromBuffer(Buffer.from(point.y[1]))],
131
+ );
132
+ }
133
+
134
+ /**
135
+ * Get the generator point for BN254 G2, or perform scalar multiplication.
136
+ * When called without arguments, returns the base generator point.
137
+ * When called with a scalar, returns scalar * generator.
138
+ */
139
+ static async generator(scalar?: Fr): Promise<Bn254G2Point> {
140
+ if (!scalar) {
141
+ return new Bn254G2Point(
142
+ [Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.x[0])), Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.x[1]))],
143
+ [Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.y[0])), Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.y[1]))],
144
+ );
145
+ }
146
+
147
+ await BarretenbergSync.initSingleton();
148
+ const api = BarretenbergSync.getSingleton();
149
+
150
+ const response = api.bn254G2Mul({
151
+ point: BN254_G2_GENERATOR as BbApiBn254G2Point,
152
+ scalar: scalar.toBuffer(),
153
+ });
154
+
155
+ return Bn254G2Point.fromBbApiPoint(response.point);
156
+ }
157
+
158
+ equals(other: Bn254G2Point): boolean {
159
+ return (
160
+ this.x[0].equals(other.x[0]) &&
161
+ this.x[1].equals(other.x[1]) &&
162
+ this.y[0].equals(other.y[0]) &&
163
+ this.y[1].equals(other.y[1])
164
+ );
165
+ }
166
+
167
+ toString(): string {
168
+ return `Bn254G2Point(x: (${this.x[0].toString()}, ${this.x[1].toString()}), y: (${this.y[0].toString()}, ${this.y[1].toString()}))`;
169
+ }
170
+ }
@@ -0,0 +1,11 @@
1
+ import { Fq } from '../bn254/field.js';
2
+
3
+ export * from './point.js';
4
+
5
+ /**
6
+ * GrumpkinScalar is an Fq.
7
+ * @remarks Called GrumpkinScalar because it is used to represent elements in Grumpkin's scalar field as defined in
8
+ * the Aztec Protocol Specs.
9
+ */
10
+ export type GrumpkinScalar = Fq;
11
+ export const GrumpkinScalar = Fq;
@@ -1,10 +1,9 @@
1
- import { toBigIntBE } from '../bigint-buffer/index.js';
2
- import { poseidon2Hash } from '../crypto/poseidon/index.js';
3
- import { randomBoolean } from '../crypto/random/index.js';
4
- import { hexSchemaFor } from '../schemas/utils.js';
5
- import { BufferReader, FieldReader, serializeToBuffer } from '../serialize/index.js';
6
- import { bufferToHex, hexToBuffer } from '../string/index.js';
7
- import { Fr } from './fields.js';
1
+ import { toBigIntBE } from '../../bigint-buffer/index.js';
2
+ import { randomBoolean } from '../../crypto/random/index.js';
3
+ import { hexSchemaFor } from '../../schemas/utils.js';
4
+ import { BufferReader, FieldReader, serializeToBuffer } from '../../serialize/index.js';
5
+ import { bufferToHex, hexToBuffer } from '../../string/index.js';
6
+ import { Fr } from '../bn254/field.js';
8
7
 
9
8
  /**
10
9
  * Represents a Point on an elliptic curve with x and y coordinates.
@@ -13,13 +12,16 @@ import { Fr } from './fields.js';
13
12
  * TODO(#7386): Clean up this class.
14
13
  */
15
14
  export class Point {
16
- static ZERO = new Point(Fr.ZERO, Fr.ZERO, false);
15
+ static INFINITY = new Point(Fr.ZERO, Fr.ZERO);
17
16
  static SIZE_IN_BYTES = Fr.SIZE_IN_BYTES * 2;
18
17
  static COMPRESSED_SIZE_IN_BYTES = Fr.SIZE_IN_BYTES;
19
18
 
20
19
  /** Used to differentiate this class from AztecAddress */
21
20
  public readonly kind = 'point';
22
21
 
22
+ /** Whether the point is at infinity */
23
+ public readonly isInfinite: boolean;
24
+
23
25
  constructor(
24
26
  /**
25
27
  * The point's x coordinate
@@ -29,12 +31,10 @@ export class Point {
29
31
  * The point's y coordinate
30
32
  */
31
33
  public readonly y: Fr,
32
- /**
33
- * Whether the point is at infinity
34
- */
35
- public readonly isInfinite: boolean,
36
34
  ) {
37
35
  // TODO(#7386): check if on curve
36
+ // NOTE: now there is no isInfinite in the struct, empty == inf, so an empty class would pass an on-curve check. This may be fine depending on the usage.
37
+ this.isInfinite = x.isZero() && y.isZero();
38
38
  }
39
39
 
40
40
  toJSON() {
@@ -42,11 +42,30 @@ export class Point {
42
42
  }
43
43
 
44
44
  static get schema() {
45
+ // Serialization from hex string.
45
46
  return hexSchemaFor(Point);
46
47
  }
47
48
 
48
49
  /**
49
- * Generate a random Point instance.
50
+ * Creates a Point from a plain object without Zod validation.
51
+ * This method is optimized for performance and skips validation, making it suitable
52
+ * for deserializing trusted data (e.g., from C++ via MessagePack).
53
+ * Handles buffers, existing instances, or objects with x, y, and isInfinite fields.
54
+ * @param obj - Plain object, buffer, or Point instance
55
+ * @returns A Point instance
56
+ */
57
+ static fromPlainObject(obj: any): Point {
58
+ if (obj instanceof Point) {
59
+ return obj;
60
+ }
61
+ if (obj instanceof Buffer || Buffer.isBuffer(obj)) {
62
+ return Point.fromBuffer(obj);
63
+ }
64
+ return new this(Fr.fromPlainObject(obj.x), Fr.fromPlainObject(obj.y));
65
+ }
66
+
67
+ /**
68
+ * Generate a random Point instance that is on the curve.
50
69
  *
51
70
  * @returns A randomly generated Point instance.
52
71
  */
@@ -73,7 +92,7 @@ export class Point {
73
92
  */
74
93
  static fromBuffer(buffer: Buffer | BufferReader) {
75
94
  const reader = BufferReader.asReader(buffer);
76
- return new this(Fr.fromBuffer(reader), Fr.fromBuffer(reader), false);
95
+ return new this(Fr.fromBuffer(reader), Fr.fromBuffer(reader));
77
96
  }
78
97
 
79
98
  /**
@@ -110,12 +129,13 @@ export class Point {
110
129
  * @returns The point as an array of 2 fields
111
130
  */
112
131
  toFields() {
113
- return [this.x, this.y, new Fr(this.isInfinite)];
132
+ return [this.x, this.y];
114
133
  }
115
134
 
116
135
  static fromFields(fields: Fr[] | FieldReader) {
117
136
  const reader = FieldReader.asReader(fields);
118
- return new this(reader.readField(), reader.readField(), reader.readBoolean());
137
+ const [x, y] = [reader.readField(), reader.readField()];
138
+ return new this(x, y);
119
139
  }
120
140
 
121
141
  /**
@@ -140,11 +160,12 @@ export class Point {
140
160
  const finalY = sign ? new Fr(yPositiveBigInt) : new Fr(yNegativeBigInt);
141
161
 
142
162
  // Create and return the new Point
143
- return new this(x, finalY, false);
163
+ return new this(x, finalY);
144
164
  }
145
165
 
146
166
  /**
147
- * @returns
167
+ * @param x - The x coordinate of the point
168
+ * @returns y^2 such that y^2 = x^3 - 17
148
169
  */
149
170
  static YFromX(x: Fr): Promise<Fr | null> {
150
171
  // Calculate y^2 = x^3 - 17 (i.e. the Grumpkin curve equation)
@@ -172,24 +193,15 @@ export class Point {
172
193
  return {
173
194
  x: this.x.toBigInt(),
174
195
  y: this.y.toBigInt(),
175
- isInfinite: this.isInfinite ? 1n : 0n,
176
196
  };
177
197
  }
178
198
 
179
199
  /**
180
200
  * Converts the Point instance to a Buffer representation of the coordinates.
181
201
  * @returns A Buffer representation of the Point instance.
182
- * @dev Note that toBuffer does not include the isInfinite flag and other serialization methods do (e.g. toFields).
183
- * This is because currently when we work with point as bytes we don't want to populate the extra bytes for
184
- * isInfinite flag because:
185
- * 1. Our Grumpkin BB API currently does not handle point at infinity,
186
- * 2. we use toBuffer when serializing notes and events and there we only work with public keys and point at infinity
187
- * is not considered a valid public key and the extra byte would raise DA cost.
202
+ * @dev Note that toBuffer does not include the isInfinite flag. The point at infinity is serialized as (0, 0).
188
203
  */
189
204
  toBuffer() {
190
- if (this.isInfinite) {
191
- throw new Error('Cannot serialize infinite point with isInfinite flag');
192
- }
193
205
  const buf = serializeToBuffer([this.x, this.y]);
194
206
  if (buf.length !== Point.SIZE_IN_BYTES) {
195
207
  throw new Error(`Invalid buffer length for Point: ${buf.length}`);
@@ -239,12 +251,10 @@ export class Point {
239
251
  }
240
252
 
241
253
  toNoirStruct() {
242
- /* eslint-disable camelcase */
243
- return { x: this.x, y: this.y, is_infinite: this.isInfinite };
244
- /* eslint-enable camelcase */
254
+ return { x: this.x, y: this.y };
245
255
  }
246
256
 
247
- // Used for IvpkM, OvpkM, NpkM and TpkM. TODO(#8124): Consider removing this method.
257
+ // Used for IvpkM. TODO(#8124): Consider removing this method.
248
258
  toWrappedNoirStruct() {
249
259
  return { inner: this.toNoirStruct() };
250
260
  }
@@ -264,21 +274,13 @@ export class Point {
264
274
  return this.x.isZero() && this.y.isZero();
265
275
  }
266
276
 
267
- hash() {
268
- return poseidon2Hash(this.toFields());
269
- }
270
-
271
277
  /**
272
- * Check if this is point at infinity.
273
- * Check this is consistent with how bb is encoding the point at infinity
278
+ * @param x - The x coordinate of the point
279
+ * @param y - The y coordinate of the point
280
+ * @returns Whether the point exists on Grumpkin
274
281
  */
275
- public get inf() {
276
- return this.isInfinite;
277
- }
278
-
279
- isOnGrumpkin() {
280
- // TODO: Check this against how bb handles curve check and infinity point check
281
- if (this.inf) {
282
+ isOnCurve() {
283
+ if (this.isInfinite) {
282
284
  return true;
283
285
  }
284
286
 
@@ -2,10 +2,9 @@ import { inspect } from 'util';
2
2
 
3
3
  import { keccak256String } from '../crypto/keccak/index.js';
4
4
  import { randomBytes } from '../crypto/random/index.js';
5
- import { Fr } from '../fields/index.js';
5
+ import { Fr } from '../curves/bn254/index.js';
6
6
  import { hexSchemaFor } from '../schemas/utils.js';
7
7
  import { BufferReader, FieldReader } from '../serialize/index.js';
8
- import { TypeRegistry } from '../serialize/type_registry.js';
9
8
  import { bufferToHex } from '../string/index.js';
10
9
 
11
10
  /**
@@ -41,6 +40,24 @@ export class EthAddress {
41
40
  return new EthAddress(Buffer.from(address.replace(/^0x/i, ''), 'hex'));
42
41
  }
43
42
 
43
+ /**
44
+ * Creates an EthAddress from a plain object without Zod validation.
45
+ * This method is optimized for performance and skips validation, making it suitable
46
+ * for deserializing trusted data (e.g., from C++ via MessagePack).
47
+ * Handles buffers (20 or 32 bytes), strings, or existing instances.
48
+ * @param obj - Plain object, buffer, string, or EthAddress instance
49
+ * @returns An EthAddress instance
50
+ */
51
+ public static fromPlainObject(obj: any): EthAddress {
52
+ if (obj instanceof EthAddress) {
53
+ return obj;
54
+ }
55
+ if (obj instanceof Buffer || Buffer.isBuffer(obj)) {
56
+ return obj.length === 20 ? new EthAddress(obj) : EthAddress.fromField(new Fr(obj));
57
+ }
58
+ return EthAddress.fromString(obj);
59
+ }
60
+
44
61
  /**
45
62
  * Create a random EthAddress instance with 20 random bytes.
46
63
  * This method generates a new Ethereum address with a randomly generated set of 20 bytes.
@@ -231,7 +248,7 @@ export class EthAddress {
231
248
  /** Converts a number into an address. Useful for testing. */
232
249
  static fromNumber(num: bigint | number): EthAddress {
233
250
  const buffer = Buffer.alloc(EthAddress.SIZE_IN_BYTES);
234
- buffer.writeBigUInt64BE(BigInt(num), 0);
251
+ buffer.writeBigUInt64BE(BigInt(num), EthAddress.SIZE_IN_BYTES - 8);
235
252
  return new EthAddress(buffer);
236
253
  }
237
254
 
@@ -240,9 +257,13 @@ export class EthAddress {
240
257
  }
241
258
 
242
259
  static get schema() {
260
+ // Serialization from hex string.
243
261
  return hexSchemaFor(EthAddress, EthAddress.isAddress);
244
262
  }
245
- }
246
263
 
247
- // For deserializing JSON.
248
- TypeRegistry.register('EthAddress', EthAddress);
264
+ static areEqual(a: EthAddress | string, b: EthAddress | string) {
265
+ const addrA = typeof a === 'string' ? EthAddress.fromString(a) : a;
266
+ const addrB = typeof b === 'string' ? EthAddress.fromString(b) : b;
267
+ return addrA.equals(addrB);
268
+ }
269
+ }
@@ -1,8 +1,10 @@
1
1
  import { Buffer32 } from '@aztec/foundation/buffer';
2
2
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
3
 
4
+ import { secp256k1 } from '@noble/curves/secp256k1';
4
5
  import { z } from 'zod';
5
6
 
7
+ import { randomBytes } from '../crypto/random/index.js';
6
8
  import { hasHexPrefix, hexToBuffer } from '../string/index.js';
7
9
 
8
10
  /**
@@ -77,8 +79,12 @@ export class Signature {
77
79
  return new Signature(Buffer32.fromBuffer(hexToBuffer(sig.r)), Buffer32.fromBuffer(hexToBuffer(sig.s)), sig.yParity);
78
80
  }
79
81
 
82
+ /** Generates a random valid ECDSA signature with a low s-value by signing a random message with a random key. */
80
83
  static random(): Signature {
81
- return new Signature(Buffer32.random(), Buffer32.random(), 1);
84
+ const privateKey = randomBytes(32);
85
+ const message = randomBytes(32);
86
+ const { r, s, recovery } = secp256k1.sign(message, privateKey);
87
+ return new Signature(Buffer32.fromBigInt(r), Buffer32.fromBigInt(s), recovery ? 28 : 27);
82
88
  }
83
89
 
84
90
  static empty(): Signature {
@@ -0,0 +1,113 @@
1
+ import EventEmitter from 'node:events';
2
+ import * as fs from 'node:fs';
3
+ import * as net from 'node:net';
4
+ import type { Readable } from 'node:stream';
5
+
6
+ /**
7
+ * Events emitted by FifoFrameReader.
8
+ *
9
+ * - `frame`: A complete frame payload (without the 4-byte length header).
10
+ * - `error`: An unrecoverable error (invalid frame length, stream error).
11
+ * - `end`: The underlying stream has ended.
12
+ */
13
+ export interface FifoFrameReaderEvents {
14
+ frame: [payload: Buffer];
15
+ error: [error: Error];
16
+ end: [];
17
+ }
18
+
19
+ /**
20
+ * Reads length-delimited frames from a readable stream (typically a named FIFO pipe).
21
+ *
22
+ * Wire format: `[4-byte big-endian payload length][payload bytes]`
23
+ *
24
+ * Emits a `frame` event for each complete frame with the raw payload buffer.
25
+ * Callers are responsible for deserializing the payload (e.g., via msgpack).
26
+ *
27
+ * On encountering an invalid payload length (0 or >maxPayloadSize), emits `error`
28
+ * and destroys the stream.
29
+ */
30
+ export class FifoFrameReader extends EventEmitter<FifoFrameReaderEvents> {
31
+ private stream: Readable | null = null;
32
+ private pendingBuf: Buffer = Buffer.alloc(0);
33
+ private running = false;
34
+
35
+ constructor(private readonly maxPayloadSize = 10 * 1024 * 1024) {
36
+ super();
37
+ }
38
+
39
+ /** Open a FIFO at the given path and start reading frames. */
40
+ start(fifoPath: string): void {
41
+ // Read the FIFO through a libuv pipe handle (net.Socket) rather than fs.createReadStream.
42
+ // An fs read stream services the pipe with a blocking threadpool read that destroy() cannot
43
+ // cancel: if a writer never closes, that read stays parked and keeps the host process alive
44
+ // (manifesting as Jest "did not exit"). Opening O_NONBLOCK and wrapping the fd in a pipe
45
+ // handle makes reads epoll-based, so stop()'s destroy() releases the handle immediately,
46
+ // regardless of whether the writer is still attached.
47
+ const fd = fs.openSync(fifoPath, fs.constants.O_RDONLY | fs.constants.O_NONBLOCK);
48
+ let socket: net.Socket;
49
+ try {
50
+ socket = new net.Socket({ fd, readable: true, writable: false });
51
+ } catch (err) {
52
+ fs.closeSync(fd);
53
+ throw err;
54
+ }
55
+ this.startFromStream(socket);
56
+ }
57
+
58
+ /** Start reading frames from an existing readable stream. */
59
+ startFromStream(stream: Readable): void {
60
+ if (this.running) {
61
+ throw new Error('FifoFrameReader is already running');
62
+ }
63
+ this.running = true;
64
+ this.pendingBuf = Buffer.alloc(0);
65
+ this.stream = stream;
66
+
67
+ stream.on('data', (chunk: Buffer | string) => {
68
+ const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
69
+ this.pendingBuf = this.pendingBuf.length > 0 ? Buffer.concat([this.pendingBuf, buf]) : buf;
70
+ this.drainFrames();
71
+ });
72
+
73
+ stream.on('error', (err: Error) => {
74
+ if (this.running) {
75
+ this.emit('error', err);
76
+ }
77
+ });
78
+
79
+ stream.on('end', () => {
80
+ this.emit('end');
81
+ });
82
+ }
83
+
84
+ /** Stop reading and destroy the underlying stream. */
85
+ stop(): void {
86
+ this.running = false;
87
+ if (this.stream) {
88
+ this.stream.destroy();
89
+ this.stream = null;
90
+ }
91
+ }
92
+
93
+ /** Parse complete frames out of the pending buffer. */
94
+ private drainFrames(): void {
95
+ while (this.pendingBuf.length >= 4) {
96
+ const payloadLen = this.pendingBuf.readUInt32BE(0);
97
+ if (payloadLen === 0 || payloadLen > this.maxPayloadSize) {
98
+ this.emit('error', new Error(`Invalid payload length: ${payloadLen}`));
99
+ this.stop();
100
+ return;
101
+ }
102
+
103
+ const frameLen = 4 + payloadLen;
104
+ if (this.pendingBuf.length < frameLen) {
105
+ break; // Wait for more data
106
+ }
107
+
108
+ const payload = this.pendingBuf.subarray(4, frameLen);
109
+ this.pendingBuf = this.pendingBuf.subarray(frameLen);
110
+ this.emit('frame', Buffer.from(payload));
111
+ }
112
+ }
113
+ }
@@ -0,0 +1 @@
1
+ export { FifoFrameReader } from './fifo_frame_reader.js';
@@ -0,0 +1,52 @@
1
+ /** A Set capped to a fixed number of entries, evicting the oldest inserted value when full. */
2
+ export class FifoSet<T> extends Set<T> {
3
+ private _limit: number | undefined;
4
+
5
+ private constructor(values?: Iterable<T>) {
6
+ super(values);
7
+ }
8
+
9
+ /** Creates a bounded set with a positive integer limit. */
10
+ static withLimit<T>(limit: number, values?: Iterable<T>): FifoSet<T> {
11
+ if (!Number.isSafeInteger(limit) || limit <= 0) {
12
+ throw new TypeError(`FifoSet limit must be a positive safe integer: ${limit}`);
13
+ }
14
+
15
+ const set = new FifoSet(values);
16
+ set._limit = limit;
17
+ set.compact();
18
+
19
+ return set;
20
+ }
21
+
22
+ override add(value: T): this {
23
+ super.add(value);
24
+ this.compact();
25
+ return this;
26
+ }
27
+
28
+ /** Maximum number of entries retained by this set. */
29
+ public get limit(): number {
30
+ return this._limit ?? Infinity;
31
+ }
32
+
33
+ /** Evicts oldest entries until the set is within its limit. */
34
+ public compact(): void {
35
+ while (this.size > this.limit) {
36
+ const head = this.values().next();
37
+ if (head.done) {
38
+ return;
39
+ }
40
+ this.delete(head.value);
41
+ }
42
+ }
43
+
44
+ /** Adds a value only if it is absent, returning whether the set changed. */
45
+ public addIfAbsent(value: T): boolean {
46
+ if (this.has(value)) {
47
+ return false;
48
+ }
49
+ this.add(value);
50
+ return true;
51
+ }
52
+ }
@@ -0,0 +1 @@
1
+ export * from './fifo_set.js';
@@ -0,0 +1,11 @@
1
+ /** Wraps an async iterable iterator such that it filters values based on a predicate. */
2
+ export async function* filter<T>(
3
+ iterator: AsyncIterableIterator<T>,
4
+ predicate: (item: T) => boolean | Promise<boolean>,
5
+ ): AsyncIterableIterator<T> {
6
+ for await (const item of iterator) {
7
+ if (await predicate(item)) {
8
+ yield item;
9
+ }
10
+ }
11
+ }
@@ -0,0 +1 @@
1
+ export { filter } from './filter.js';
@@ -1,3 +1,4 @@
1
+ import { parseBooleanEnv } from '@aztec/foundation/config';
1
2
  import { overwriteLoggingStream, pinoPrettyOpts } from '@aztec/foundation/log';
2
3
 
3
4
  import pretty from 'pino-pretty';
@@ -6,4 +7,33 @@ import pretty from 'pino-pretty';
6
7
  // file so we don't mess up with dependencies in non-testing environments,
7
8
  // since pino-pretty messes up with browser bundles.
8
9
  // See also https://www.npmjs.com/package/pino-pretty?activeTab=readme#user-content-usage-with-jest
9
- overwriteLoggingStream(pretty(pinoPrettyOpts));
10
+ if (!parseBooleanEnv(process.env.LOG_JSON)) {
11
+ overwriteLoggingStream(pretty(pinoPrettyOpts));
12
+ }
13
+
14
+ // Prevent timers from keeping the process alive after tests complete.
15
+ // Libraries like viem create internal polling loops (via setTimeout) that
16
+ // reschedule themselves indefinitely. In test environments we never want a
17
+ // timer to be the reason the process can't exit. We also unref stdout/stderr
18
+ // which, when they are pipes (as in Jest workers), remain ref'd by default.
19
+ {
20
+ const origSetTimeout = globalThis.setTimeout;
21
+ const origSetInterval = globalThis.setInterval;
22
+ globalThis.setTimeout = function unrefSetTimeout(...args) {
23
+ const id = origSetTimeout.apply(this, args);
24
+ id?.unref?.();
25
+ return id;
26
+ };
27
+ // Preserve .unref, .__promisify__ etc. that may exist on the original
28
+ Object.setPrototypeOf(globalThis.setTimeout, origSetTimeout);
29
+
30
+ globalThis.setInterval = function unrefSetInterval(...args) {
31
+ const id = origSetInterval.apply(this, args);
32
+ id?.unref?.();
33
+ return id;
34
+ };
35
+ Object.setPrototypeOf(globalThis.setInterval, origSetInterval);
36
+
37
+ if (process.stdout?._handle?.unref) process.stdout._handle.unref();
38
+ if (process.stderr?._handle?.unref) process.stderr._handle.unref();
39
+ }