@aztec/foundation 0.0.0-test.1 → 0.0.1-commit.03f7ef2

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 (669) hide show
  1. package/dest/array/array.d.ts +6 -9
  2. package/dest/array/array.d.ts.map +1 -1
  3. package/dest/array/array.js +11 -11
  4. package/dest/array/index.d.ts +1 -1
  5. package/dest/async-map/index.d.ts +1 -1
  6. package/dest/async-pool/index.d.ts +1 -1
  7. package/dest/async-pool/index.d.ts.map +1 -1
  8. package/dest/async-pool/index.js +1 -0
  9. package/dest/bigint/index.d.ts +7 -0
  10. package/dest/bigint/index.d.ts.map +1 -0
  11. package/dest/bigint/index.js +15 -0
  12. package/dest/bigint-buffer/index.d.ts +1 -3
  13. package/dest/bigint-buffer/index.d.ts.map +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 +77 -0
  33. package/dest/buffer/buffer16.d.ts.map +1 -0
  34. package/dest/buffer/buffer16.js +100 -0
  35. package/dest/buffer/buffer32.d.ts +5 -12
  36. package/dest/buffer/buffer32.d.ts.map +1 -1
  37. package/dest/buffer/buffer32.js +7 -7
  38. package/dest/buffer/index.d.ts +2 -1
  39. package/dest/buffer/index.d.ts.map +1 -1
  40. package/dest/buffer/index.js +1 -0
  41. package/dest/collection/array.d.ts +17 -4
  42. package/dest/collection/array.d.ts.map +1 -1
  43. package/dest/collection/array.js +57 -3
  44. package/dest/collection/index.d.ts +1 -1
  45. package/dest/collection/object.d.ts +17 -1
  46. package/dest/collection/object.d.ts.map +1 -1
  47. package/dest/collection/object.js +25 -0
  48. package/dest/committable/committable.d.ts +1 -1
  49. package/dest/committable/committable.d.ts.map +1 -1
  50. package/dest/committable/index.d.ts +1 -1
  51. package/dest/config/env_var.d.ts +2 -2
  52. package/dest/config/env_var.d.ts.map +1 -1
  53. package/dest/config/index.d.ts +57 -2
  54. package/dest/config/index.d.ts.map +1 -1
  55. package/dest/config/index.js +128 -6
  56. package/dest/config/network_config.d.ts +54 -0
  57. package/dest/config/network_config.d.ts.map +1 -0
  58. package/dest/config/network_config.js +11 -0
  59. package/dest/config/network_name.d.ts +3 -0
  60. package/dest/config/network_name.d.ts.map +1 -0
  61. package/dest/config/network_name.js +19 -0
  62. package/dest/config/secret_value.d.ts +28 -0
  63. package/dest/config/secret_value.d.ts.map +1 -0
  64. package/dest/config/secret_value.js +34 -0
  65. package/dest/crypto/aes128/index.d.ts +3 -5
  66. package/dest/crypto/aes128/index.d.ts.map +1 -1
  67. package/dest/crypto/aes128/index.js +19 -6
  68. package/dest/crypto/bls/bn254_keystore.d.ts +296 -0
  69. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -0
  70. package/dest/crypto/bls/bn254_keystore.js +218 -0
  71. package/dest/crypto/bls/index.d.ts +13 -0
  72. package/dest/crypto/bls/index.d.ts.map +1 -0
  73. package/dest/crypto/bls/index.js +87 -0
  74. package/dest/crypto/bn254/index.d.ts +39 -0
  75. package/dest/crypto/bn254/index.d.ts.map +1 -0
  76. package/dest/crypto/bn254/index.js +56 -0
  77. package/dest/crypto/ecdsa/index.d.ts +3 -3
  78. package/dest/crypto/ecdsa/index.d.ts.map +1 -1
  79. package/dest/crypto/ecdsa/index.js +62 -48
  80. package/dest/crypto/ecdsa/signature.d.ts +3 -14
  81. package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
  82. package/dest/crypto/ecdsa/signature.js +2 -2
  83. package/dest/crypto/grumpkin/index.d.ts +10 -15
  84. package/dest/crypto/grumpkin/index.d.ts.map +1 -1
  85. package/dest/crypto/grumpkin/index.js +61 -55
  86. package/dest/crypto/keccak/index.d.ts +3 -5
  87. package/dest/crypto/keccak/index.d.ts.map +1 -1
  88. package/dest/crypto/keys/index.d.ts +2 -4
  89. package/dest/crypto/keys/index.d.ts.map +1 -1
  90. package/dest/crypto/keys/index.js +8 -5
  91. package/dest/crypto/pedersen/index.d.ts +1 -1
  92. package/dest/crypto/pedersen/pedersen.noble.d.ts +3 -5
  93. package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -1
  94. package/dest/crypto/pedersen/pedersen.wasm.d.ts +4 -6
  95. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  96. package/dest/crypto/pedersen/pedersen.wasm.js +24 -14
  97. package/dest/crypto/poseidon/index.d.ts +2 -4
  98. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  99. package/dest/crypto/poseidon/index.js +33 -18
  100. package/dest/crypto/random/index.d.ts +2 -4
  101. package/dest/crypto/random/index.d.ts.map +1 -1
  102. package/dest/crypto/random/index.js +2 -34
  103. package/dest/crypto/random/randomness_singleton.d.ts +1 -3
  104. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
  105. package/dest/crypto/schnorr/index.d.ts +3 -2
  106. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  107. package/dest/crypto/schnorr/index.js +30 -38
  108. package/dest/crypto/schnorr/signature.d.ts +5 -7
  109. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  110. package/dest/crypto/schnorr/signature.js +2 -2
  111. package/dest/crypto/secp256k1/index.d.ts +5 -7
  112. package/dest/crypto/secp256k1/index.d.ts.map +1 -1
  113. package/dest/crypto/secp256k1/index.js +23 -18
  114. package/dest/crypto/secp256k1-signer/index.d.ts +1 -1
  115. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +1 -1
  116. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
  117. package/dest/crypto/secp256k1-signer/utils.d.ts +56 -5
  118. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
  119. package/dest/crypto/secp256k1-signer/utils.js +92 -6
  120. package/dest/crypto/serialize.d.ts +5 -7
  121. package/dest/crypto/serialize.d.ts.map +1 -1
  122. package/dest/crypto/sha256/index.d.ts +23 -6
  123. package/dest/crypto/sha256/index.d.ts.map +1 -1
  124. package/dest/crypto/sha256/index.js +43 -1
  125. package/dest/crypto/sha512/index.d.ts +3 -5
  126. package/dest/crypto/sha512/index.d.ts.map +1 -1
  127. package/dest/crypto/sha512/index.js +1 -1
  128. package/dest/crypto/signature/index.d.ts +2 -4
  129. package/dest/crypto/signature/index.d.ts.map +1 -1
  130. package/dest/crypto/sync/index.d.ts +1 -1
  131. package/dest/crypto/sync/index.js +1 -1
  132. package/dest/crypto/sync/pedersen/index.d.ts +4 -6
  133. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
  134. package/dest/crypto/sync/pedersen/index.js +18 -11
  135. package/dest/crypto/sync/poseidon/index.d.ts +2 -4
  136. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
  137. package/dest/crypto/sync/poseidon/index.js +28 -13
  138. package/dest/curves/bls12/field.d.ts +148 -0
  139. package/dest/curves/bls12/field.d.ts.map +1 -0
  140. package/dest/curves/bls12/field.js +359 -0
  141. package/dest/curves/bls12/index.d.ts +3 -0
  142. package/dest/curves/bls12/index.d.ts.map +1 -0
  143. package/dest/curves/bls12/index.js +2 -0
  144. package/dest/curves/bls12/point.d.ts +220 -0
  145. package/dest/curves/bls12/point.d.ts.map +1 -0
  146. package/dest/curves/bls12/point.js +398 -0
  147. package/dest/curves/bn254/field.d.ts +179 -0
  148. package/dest/curves/bn254/field.d.ts.map +1 -0
  149. package/dest/{fields/fields.js → curves/bn254/field.js} +82 -60
  150. package/dest/curves/bn254/index.d.ts +3 -0
  151. package/dest/curves/bn254/index.d.ts.map +1 -0
  152. package/dest/curves/bn254/index.js +2 -0
  153. package/dest/curves/bn254/point.d.ts +54 -0
  154. package/dest/curves/bn254/point.d.ts.map +1 -0
  155. package/dest/curves/bn254/point.js +143 -0
  156. package/dest/curves/grumpkin/index.d.ts +10 -0
  157. package/dest/curves/grumpkin/index.d.ts.map +1 -0
  158. package/dest/curves/grumpkin/index.js +3 -0
  159. package/dest/{fields → curves/grumpkin}/point.d.ts +15 -17
  160. package/dest/curves/grumpkin/point.d.ts.map +1 -0
  161. package/dest/{fields → curves/grumpkin}/point.js +27 -10
  162. package/dest/decorators/index.d.ts +1 -1
  163. package/dest/decorators/memoize.d.ts +1 -1
  164. package/dest/decorators/memoize.d.ts.map +1 -1
  165. package/dest/error/index.d.ts +4 -4
  166. package/dest/error/index.d.ts.map +1 -1
  167. package/dest/eth-address/index.d.ts +18 -9
  168. package/dest/eth-address/index.d.ts.map +1 -1
  169. package/dest/eth-address/index.js +28 -1
  170. package/dest/eth-signature/eth_signature.d.ts +17 -18
  171. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  172. package/dest/eth-signature/eth_signature.js +31 -17
  173. package/dest/eth-signature/index.d.ts +1 -1
  174. package/dest/fs/index.d.ts +2 -1
  175. package/dest/fs/index.d.ts.map +1 -1
  176. package/dest/fs/index.js +1 -0
  177. package/dest/fs/run_in_dir.d.ts +1 -1
  178. package/dest/fs/try_rm_dir.d.ts +3 -0
  179. package/dest/fs/try_rm_dir.d.ts.map +1 -0
  180. package/dest/fs/try_rm_dir.js +16 -0
  181. package/dest/iterable/all.d.ts +1 -1
  182. package/dest/iterable/filter.d.ts +1 -1
  183. package/dest/iterable/filter.js +1 -1
  184. package/dest/iterable/index.d.ts +1 -1
  185. package/dest/iterable/isAsyncIt.d.ts +1 -1
  186. package/dest/iterable/map.d.ts +1 -1
  187. package/dest/iterable/map.js +1 -1
  188. package/dest/iterable/peek.d.ts +1 -1
  189. package/dest/iterable/sort.d.ts +1 -1
  190. package/dest/iterable/take.d.ts +1 -1
  191. package/dest/iterable/toArray.d.ts +1 -1
  192. package/dest/iterator/filter.d.ts +3 -0
  193. package/dest/iterator/filter.d.ts.map +1 -0
  194. package/dest/iterator/filter.js +7 -0
  195. package/dest/iterator/index.d.ts +2 -0
  196. package/dest/iterator/index.d.ts.map +1 -0
  197. package/dest/iterator/index.js +1 -0
  198. package/dest/jest/env.js +48 -0
  199. package/dest/jest/setupAfterEnv.js +3 -0
  200. package/dest/json-rpc/client/fetch.d.ts +3 -3
  201. package/dest/json-rpc/client/fetch.d.ts.map +1 -1
  202. package/dest/json-rpc/client/fetch.js +16 -30
  203. package/dest/json-rpc/client/index.d.ts +1 -1
  204. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +10 -4
  205. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  206. package/dest/json-rpc/client/safe_json_rpc_client.js +173 -13
  207. package/dest/json-rpc/client/undici.d.ts +1 -1
  208. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  209. package/dest/json-rpc/client/undici.js +6 -7
  210. package/dest/json-rpc/convert.d.ts +3 -10
  211. package/dest/json-rpc/convert.d.ts.map +1 -1
  212. package/dest/json-rpc/convert.js +1 -9
  213. package/dest/json-rpc/errors.d.ts +4 -0
  214. package/dest/json-rpc/errors.d.ts.map +1 -0
  215. package/dest/json-rpc/errors.js +6 -0
  216. package/dest/json-rpc/fixtures/class_a.d.ts +4 -2
  217. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
  218. package/dest/json-rpc/fixtures/class_b.d.ts +4 -2
  219. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
  220. package/dest/json-rpc/fixtures/test_state.d.ts +1 -1
  221. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
  222. package/dest/json-rpc/index.d.ts +3 -2
  223. package/dest/json-rpc/index.d.ts.map +1 -1
  224. package/dest/json-rpc/index.js +2 -1
  225. package/dest/json-rpc/js_utils.d.ts +1 -1
  226. package/dest/json-rpc/js_utils.d.ts.map +1 -1
  227. package/dest/json-rpc/server/index.d.ts +1 -1
  228. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +22 -23
  229. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  230. package/dest/json-rpc/server/safe_json_rpc_server.js +161 -56
  231. package/dest/json-rpc/server/telemetry.d.ts +1 -1
  232. package/dest/json-rpc/test/index.d.ts +1 -1
  233. package/dest/json-rpc/test/integration.d.ts +2 -3
  234. package/dest/json-rpc/test/integration.d.ts.map +1 -1
  235. package/dest/log/console.d.ts +1 -1
  236. package/dest/log/console.d.ts.map +1 -1
  237. package/dest/log/gcloud-logger-config.d.ts +1 -2
  238. package/dest/log/gcloud-logger-config.d.ts.map +1 -1
  239. package/dest/log/gcloud-logger-config.js +1 -9
  240. package/dest/log/index.d.ts +5 -5
  241. package/dest/log/index.d.ts.map +1 -1
  242. package/dest/log/index.js +4 -4
  243. package/dest/log/libp2p_logger.d.ts +1 -1
  244. package/dest/log/libp2p_logger.js +13 -2
  245. package/dest/log/log-filters.d.ts +1 -1
  246. package/dest/log/log-levels.d.ts +1 -1
  247. package/dest/log/log_fn.d.ts +2 -2
  248. package/dest/log/log_fn.d.ts.map +1 -1
  249. package/dest/log/noir_debug_log_util.d.ts +14 -0
  250. package/dest/log/noir_debug_log_util.d.ts.map +1 -0
  251. package/dest/log/noir_debug_log_util.js +14 -0
  252. package/dest/log/pino-logger.d.ts +4 -4
  253. package/dest/log/pino-logger.d.ts.map +1 -1
  254. package/dest/log/pino-logger.js +28 -2
  255. package/dest/message/index.d.ts +1 -1
  256. package/dest/message/index.d.ts.map +1 -1
  257. package/dest/mutex/index.d.ts +1 -1
  258. package/dest/mutex/index.d.ts.map +1 -1
  259. package/dest/mutex/mutex_database.d.ts +1 -1
  260. package/dest/mutex/mutex_database.d.ts.map +1 -1
  261. package/dest/noir/index.d.ts +1 -1
  262. package/dest/noir/noir_package_config.d.ts +9 -9
  263. package/dest/number/index.d.ts +3 -0
  264. package/dest/number/index.d.ts.map +1 -0
  265. package/dest/number/index.js +12 -0
  266. package/dest/profiler/index.d.ts +2 -0
  267. package/dest/profiler/index.d.ts.map +1 -0
  268. package/dest/profiler/index.js +1 -0
  269. package/dest/profiler/profiler.d.ts +8 -0
  270. package/dest/profiler/profiler.d.ts.map +1 -0
  271. package/dest/profiler/profiler.js +97 -0
  272. package/dest/promise/index.d.ts +1 -1
  273. package/dest/promise/running-promise.d.ts +2 -2
  274. package/dest/promise/running-promise.d.ts.map +1 -1
  275. package/dest/promise/running-promise.js +2 -2
  276. package/dest/promise/utils.d.ts +1 -1
  277. package/dest/queue/base_memory_queue.d.ts +1 -1
  278. package/dest/queue/base_memory_queue.d.ts.map +1 -1
  279. package/dest/queue/batch_queue.d.ts +2 -2
  280. package/dest/queue/batch_queue.d.ts.map +1 -1
  281. package/dest/queue/batch_queue.js +1 -1
  282. package/dest/queue/bounded_serial_queue.d.ts +1 -1
  283. package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
  284. package/dest/queue/fifo_memory_queue.d.ts +1 -1
  285. package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
  286. package/dest/queue/index.d.ts +1 -1
  287. package/dest/queue/priority_memory_queue.d.ts +1 -1
  288. package/dest/queue/priority_memory_queue.d.ts.map +1 -1
  289. package/dest/queue/priority_queue.d.ts +1 -1
  290. package/dest/queue/priority_queue.d.ts.map +1 -1
  291. package/dest/queue/semaphore.d.ts +1 -1
  292. package/dest/queue/semaphore.d.ts.map +1 -1
  293. package/dest/queue/serial_queue.d.ts +3 -3
  294. package/dest/queue/serial_queue.d.ts.map +1 -1
  295. package/dest/queue/serial_queue.js +7 -5
  296. package/dest/retry/index.d.ts +4 -3
  297. package/dest/retry/index.d.ts.map +1 -1
  298. package/dest/retry/index.js +2 -2
  299. package/dest/running-promise/index.d.ts +1 -1
  300. package/dest/schemas/api.d.ts +1 -1
  301. package/dest/schemas/api.d.ts.map +1 -1
  302. package/dest/schemas/index.d.ts +1 -1
  303. package/dest/schemas/parse.d.ts +1 -1
  304. package/dest/schemas/parse.js +1 -1
  305. package/dest/schemas/schemas.d.ts +21 -20
  306. package/dest/schemas/schemas.d.ts.map +1 -1
  307. package/dest/schemas/schemas.js +29 -11
  308. package/dest/schemas/types.d.ts +31 -1
  309. package/dest/schemas/types.d.ts.map +1 -1
  310. package/dest/schemas/types.js +25 -1
  311. package/dest/schemas/utils.d.ts +4 -6
  312. package/dest/schemas/utils.d.ts.map +1 -1
  313. package/dest/schemas/utils.js +15 -5
  314. package/dest/serialize/buffer_reader.d.ts +28 -3
  315. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  316. package/dest/serialize/buffer_reader.js +44 -2
  317. package/dest/serialize/field_reader.d.ts +12 -3
  318. package/dest/serialize/field_reader.d.ts.map +1 -1
  319. package/dest/serialize/field_reader.js +19 -2
  320. package/dest/serialize/free_funcs.d.ts +25 -23
  321. package/dest/serialize/free_funcs.d.ts.map +1 -1
  322. package/dest/serialize/free_funcs.js +22 -28
  323. package/dest/serialize/index.d.ts +1 -1
  324. package/dest/serialize/serialize.d.ts +6 -7
  325. package/dest/serialize/serialize.d.ts.map +1 -1
  326. package/dest/serialize/serialize.js +1 -1
  327. package/dest/serialize/type_registry.d.ts +1 -1
  328. package/dest/serialize/type_registry.d.ts.map +1 -1
  329. package/dest/serialize/types.d.ts +1 -1
  330. package/dest/sleep/index.d.ts +3 -1
  331. package/dest/sleep/index.d.ts.map +1 -1
  332. package/dest/sleep/index.js +4 -0
  333. package/dest/string/index.d.ts +8 -3
  334. package/dest/string/index.d.ts.map +1 -1
  335. package/dest/string/index.js +27 -1
  336. package/dest/testing/files/index.d.ts +2 -3
  337. package/dest/testing/files/index.d.ts.map +1 -1
  338. package/dest/testing/files/index.js +3 -3
  339. package/dest/testing/formatting.d.ts +4 -0
  340. package/dest/testing/formatting.d.ts.map +1 -0
  341. package/dest/testing/formatting.js +3 -0
  342. package/dest/testing/index.d.ts +2 -1
  343. package/dest/testing/index.d.ts.map +1 -1
  344. package/dest/testing/index.js +1 -0
  345. package/dest/testing/port_allocator.d.ts +1 -1
  346. package/dest/testing/snapshot_serializer.d.ts +1 -1
  347. package/dest/testing/test_data.d.ts +1 -1
  348. package/dest/timer/date.d.ts +4 -2
  349. package/dest/timer/date.d.ts.map +1 -1
  350. package/dest/timer/date.js +8 -3
  351. package/dest/timer/elapsed.d.ts +1 -1
  352. package/dest/timer/index.d.ts +2 -2
  353. package/dest/timer/index.d.ts.map +1 -1
  354. package/dest/timer/index.js +1 -1
  355. package/dest/timer/timeout.d.ts +19 -6
  356. package/dest/timer/timeout.d.ts.map +1 -1
  357. package/dest/timer/timeout.js +43 -22
  358. package/dest/timer/timer.d.ts +1 -1
  359. package/dest/timer/timer.d.ts.map +1 -1
  360. package/dest/transport/dispatch/create_dispatch_fn.d.ts +1 -1
  361. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -1
  362. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +1 -1
  363. package/dest/transport/dispatch/messages.d.ts +1 -1
  364. package/dest/transport/index.d.ts +1 -2
  365. package/dest/transport/index.d.ts.map +1 -1
  366. package/dest/transport/index.js +0 -1
  367. package/dest/transport/interface/connector.d.ts +1 -1
  368. package/dest/transport/interface/connector.d.ts.map +1 -1
  369. package/dest/transport/interface/listener.d.ts +1 -2
  370. package/dest/transport/interface/listener.d.ts.map +1 -1
  371. package/dest/transport/interface/socket.d.ts +1 -1
  372. package/dest/transport/interface/socket.d.ts.map +1 -1
  373. package/dest/transport/interface/transferable.d.ts +1 -1
  374. package/dest/transport/node/index.d.ts +1 -1
  375. package/dest/transport/node/node_connector.d.ts +1 -2
  376. package/dest/transport/node/node_connector.d.ts.map +1 -1
  377. package/dest/transport/node/node_connector_socket.d.ts +1 -2
  378. package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
  379. package/dest/transport/node/node_listener.d.ts +1 -2
  380. package/dest/transport/node/node_listener.d.ts.map +1 -1
  381. package/dest/transport/node/node_listener_socket.d.ts +1 -2
  382. package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
  383. package/dest/transport/transport_client.d.ts +1 -2
  384. package/dest/transport/transport_client.d.ts.map +1 -1
  385. package/dest/transport/transport_server.d.ts +1 -10
  386. package/dest/transport/transport_server.d.ts.map +1 -1
  387. package/dest/trees/balanced_merkle_tree.d.ts +22 -0
  388. package/dest/trees/balanced_merkle_tree.d.ts.map +1 -0
  389. package/dest/trees/balanced_merkle_tree.js +66 -0
  390. package/dest/trees/hasher.d.ts +5 -7
  391. package/dest/trees/hasher.d.ts.map +1 -1
  392. package/dest/trees/index.d.ts +3 -1
  393. package/dest/trees/index.d.ts.map +1 -1
  394. package/dest/trees/index.js +2 -0
  395. package/dest/trees/indexed_merkle_tree.d.ts +1 -3
  396. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
  397. package/dest/trees/indexed_merkle_tree.js +1 -1
  398. package/dest/trees/indexed_merkle_tree_calculator.d.ts +2 -4
  399. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  400. package/dest/trees/indexed_tree_leaf.d.ts +1 -3
  401. package/dest/trees/indexed_tree_leaf.d.ts.map +1 -1
  402. package/dest/trees/membership_witness.d.ts +6 -11
  403. package/dest/trees/membership_witness.d.ts.map +1 -1
  404. package/dest/trees/membership_witness.js +14 -1
  405. package/dest/trees/merkle_tree.d.ts +1 -3
  406. package/dest/trees/merkle_tree.d.ts.map +1 -1
  407. package/dest/trees/merkle_tree_calculator.d.ts +2 -4
  408. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  409. package/dest/trees/merkle_tree_calculator.js +1 -1
  410. package/dest/trees/sibling_path.d.ts +6 -42
  411. package/dest/trees/sibling_path.d.ts.map +1 -1
  412. package/dest/trees/sibling_path.js +2 -2
  413. package/dest/trees/unbalanced_merkle_tree.d.ts +23 -10
  414. package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
  415. package/dest/trees/unbalanced_merkle_tree.js +72 -50
  416. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +49 -0
  417. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -0
  418. package/dest/trees/unbalanced_merkle_tree_calculator.js +158 -0
  419. package/dest/trees/unbalanced_tree_store.d.ts +2 -1
  420. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
  421. package/dest/trees/unbalanced_tree_store.js +6 -0
  422. package/dest/types/index.d.ts +28 -3
  423. package/dest/types/index.d.ts.map +1 -1
  424. package/dest/types/index.js +3 -0
  425. package/dest/url/index.d.ts +1 -1
  426. package/dest/url/index.d.ts.map +1 -1
  427. package/dest/url/index.js +1 -1
  428. package/dest/validation/index.d.ts +1 -1
  429. package/package.json +59 -45
  430. package/src/array/array.ts +13 -16
  431. package/src/async-pool/index.ts +1 -0
  432. package/src/bigint/index.ts +20 -0
  433. package/src/branded-types/block_number.ts +112 -0
  434. package/src/branded-types/checkpoint_number.ts +100 -0
  435. package/src/branded-types/epoch.ts +88 -0
  436. package/src/branded-types/index.ts +6 -0
  437. package/src/branded-types/slot.ts +88 -0
  438. package/src/branded-types/types.ts +2 -0
  439. package/src/buffer/buffer16.ts +133 -0
  440. package/src/buffer/buffer32.ts +10 -8
  441. package/src/buffer/index.ts +1 -0
  442. package/src/collection/array.ts +66 -4
  443. package/src/collection/object.ts +37 -0
  444. package/src/config/env_var.ts +164 -55
  445. package/src/config/index.ts +208 -7
  446. package/src/config/network_config.ts +18 -0
  447. package/src/config/network_name.ts +28 -0
  448. package/src/config/secret_value.ts +49 -0
  449. package/src/crypto/aes128/index.ts +19 -10
  450. package/src/crypto/bls/bn254_keystore.ts +287 -0
  451. package/src/crypto/bls/index.ts +77 -0
  452. package/src/crypto/bn254/index.ts +64 -0
  453. package/src/crypto/ecdsa/index.ts +41 -23
  454. package/src/crypto/ecdsa/signature.ts +2 -2
  455. package/src/crypto/grumpkin/index.ts +38 -46
  456. package/src/crypto/keys/index.ts +6 -6
  457. package/src/crypto/pedersen/pedersen.wasm.ts +23 -19
  458. package/src/crypto/poseidon/index.ts +33 -25
  459. package/src/crypto/random/index.ts +2 -40
  460. package/src/crypto/schnorr/index.ts +22 -18
  461. package/src/crypto/schnorr/signature.ts +2 -2
  462. package/src/crypto/secp256k1/index.ts +15 -11
  463. package/src/crypto/secp256k1-signer/utils.ts +120 -7
  464. package/src/crypto/sha256/index.ts +48 -1
  465. package/src/crypto/sha512/index.ts +1 -1
  466. package/src/crypto/signature/index.ts +1 -1
  467. package/src/crypto/sync/index.ts +1 -1
  468. package/src/crypto/sync/pedersen/index.ts +17 -16
  469. package/src/crypto/sync/poseidon/index.ts +28 -23
  470. package/src/curves/bls12/field.ts +463 -0
  471. package/src/curves/bls12/index.ts +2 -0
  472. package/src/curves/bls12/point.ts +450 -0
  473. package/src/{fields/fields.ts → curves/bn254/field.ts} +80 -63
  474. package/src/curves/bn254/index.ts +2 -0
  475. package/src/curves/bn254/point.ts +170 -0
  476. package/src/curves/grumpkin/index.ts +11 -0
  477. package/src/{fields → curves/grumpkin}/point.ts +27 -10
  478. package/src/eth-address/index.ts +35 -3
  479. package/src/eth-signature/eth_signature.ts +44 -22
  480. package/src/fs/index.ts +1 -0
  481. package/src/fs/try_rm_dir.ts +15 -0
  482. package/src/iterable/filter.ts +1 -1
  483. package/src/iterable/map.ts +1 -1
  484. package/src/iterator/filter.ts +11 -0
  485. package/src/iterator/index.ts +1 -0
  486. package/src/jest/env.mjs +52 -0
  487. package/src/jest/setupAfterEnv.mjs +3 -0
  488. package/src/json-rpc/client/fetch.ts +14 -33
  489. package/src/json-rpc/client/safe_json_rpc_client.ts +226 -13
  490. package/src/json-rpc/client/undici.ts +8 -15
  491. package/src/json-rpc/convert.ts +3 -12
  492. package/src/json-rpc/errors.ts +6 -0
  493. package/src/json-rpc/fixtures/class_a.ts +4 -1
  494. package/src/json-rpc/fixtures/class_b.ts +4 -1
  495. package/src/json-rpc/index.ts +2 -1
  496. package/src/json-rpc/server/safe_json_rpc_server.ts +141 -48
  497. package/src/json-rpc/test/integration.ts +1 -1
  498. package/src/log/console.ts +4 -1
  499. package/src/log/gcloud-logger-config.ts +3 -7
  500. package/src/log/index.ts +4 -4
  501. package/src/log/libp2p_logger.ts +21 -2
  502. package/src/log/log_fn.ts +1 -1
  503. package/src/log/noir_debug_log_util.ts +21 -0
  504. package/src/log/pino-logger.ts +33 -2
  505. package/src/message/index.ts +5 -1
  506. package/src/mutex/mutex_database.ts +2 -3
  507. package/src/number/index.ts +14 -0
  508. package/src/profiler/index.ts +1 -0
  509. package/src/profiler/profiler.ts +125 -0
  510. package/src/promise/running-promise.ts +2 -2
  511. package/src/queue/batch_queue.ts +1 -1
  512. package/src/queue/bounded_serial_queue.ts +4 -1
  513. package/src/queue/serial_queue.ts +5 -5
  514. package/src/retry/index.ts +10 -5
  515. package/src/schemas/api.ts +4 -4
  516. package/src/schemas/parse.ts +1 -1
  517. package/src/schemas/schemas.ts +42 -13
  518. package/src/schemas/types.ts +33 -0
  519. package/src/schemas/utils.ts +21 -8
  520. package/src/serialize/buffer_reader.ts +60 -3
  521. package/src/serialize/field_reader.ts +28 -4
  522. package/src/serialize/free_funcs.ts +26 -32
  523. package/src/serialize/serialize.ts +3 -1
  524. package/src/sleep/index.ts +6 -0
  525. package/src/string/index.ts +36 -1
  526. package/src/testing/files/index.ts +7 -3
  527. package/src/testing/formatting.ts +3 -0
  528. package/src/testing/index.ts +1 -0
  529. package/src/timer/date.ts +13 -3
  530. package/src/timer/index.ts +1 -1
  531. package/src/timer/timeout.ts +54 -19
  532. package/src/transport/index.ts +0 -1
  533. package/src/transport/interface/connector.ts +0 -1
  534. package/src/transport/interface/listener.ts +2 -3
  535. package/src/transport/interface/socket.ts +2 -3
  536. package/src/transport/transport_client.ts +3 -4
  537. package/src/transport/transport_server.ts +4 -1
  538. package/src/trees/balanced_merkle_tree.ts +84 -0
  539. package/src/trees/hasher.ts +4 -4
  540. package/src/trees/index.ts +2 -0
  541. package/src/trees/indexed_merkle_tree.ts +6 -2
  542. package/src/trees/indexed_merkle_tree_calculator.ts +2 -2
  543. package/src/trees/membership_witness.ts +14 -1
  544. package/src/trees/merkle_tree.ts +4 -1
  545. package/src/trees/merkle_tree_calculator.ts +10 -5
  546. package/src/trees/sibling_path.ts +2 -2
  547. package/src/trees/unbalanced_merkle_tree.ts +98 -42
  548. package/src/trees/unbalanced_merkle_tree_calculator.ts +187 -0
  549. package/src/trees/unbalanced_tree_store.ts +5 -1
  550. package/src/types/index.ts +30 -4
  551. package/src/url/index.ts +0 -1
  552. package/dest/crypto/index.d.ts +0 -15
  553. package/dest/crypto/index.d.ts.map +0 -1
  554. package/dest/crypto/index.js +0 -14
  555. package/dest/crypto/pedersen/pedersen.elliptic.d.ts +0 -13
  556. package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +0 -1
  557. package/dest/crypto/pedersen/pedersen.elliptic.js +0 -582
  558. package/dest/fields/coordinate.d.ts +0 -68
  559. package/dest/fields/coordinate.d.ts.map +0 -1
  560. package/dest/fields/coordinate.js +0 -96
  561. package/dest/fields/fields.d.ts +0 -176
  562. package/dest/fields/fields.d.ts.map +0 -1
  563. package/dest/fields/index.d.ts +0 -4
  564. package/dest/fields/index.d.ts.map +0 -1
  565. package/dest/fields/index.js +0 -3
  566. package/dest/fields/point.d.ts.map +0 -1
  567. package/dest/index.d.ts +0 -31
  568. package/dest/index.d.ts.map +0 -1
  569. package/dest/index.js +0 -31
  570. package/dest/log/debug.d.ts +0 -56
  571. package/dest/log/debug.d.ts.map +0 -1
  572. package/dest/log/debug.js +0 -75
  573. package/dest/log/log_history.d.ts +0 -31
  574. package/dest/log/log_history.d.ts.map +0 -1
  575. package/dest/log/log_history.js +0 -38
  576. package/dest/transport/browser/index.d.ts +0 -5
  577. package/dest/transport/browser/index.d.ts.map +0 -1
  578. package/dest/transport/browser/index.js +0 -4
  579. package/dest/transport/browser/message_port_socket.d.ts +0 -37
  580. package/dest/transport/browser/message_port_socket.d.ts.map +0 -1
  581. package/dest/transport/browser/message_port_socket.js +0 -42
  582. package/dest/transport/browser/shared_worker_connector.d.ts +0 -19
  583. package/dest/transport/browser/shared_worker_connector.d.ts.map +0 -1
  584. package/dest/transport/browser/shared_worker_connector.js +0 -19
  585. package/dest/transport/browser/shared_worker_listener.d.ts +0 -38
  586. package/dest/transport/browser/shared_worker_listener.d.ts.map +0 -1
  587. package/dest/transport/browser/shared_worker_listener.js +0 -33
  588. package/dest/transport/browser/worker_connector.d.ts +0 -26
  589. package/dest/transport/browser/worker_connector.d.ts.map +0 -1
  590. package/dest/transport/browser/worker_connector.js +0 -30
  591. package/dest/transport/browser/worker_listener.d.ts +0 -39
  592. package/dest/transport/browser/worker_listener.d.ts.map +0 -1
  593. package/dest/transport/browser/worker_listener.js +0 -35
  594. package/dest/wasm/empty_wasi_sdk.d.ts +0 -130
  595. package/dest/wasm/empty_wasi_sdk.d.ts.map +0 -1
  596. package/dest/wasm/empty_wasi_sdk.js +0 -148
  597. package/dest/wasm/index.d.ts +0 -2
  598. package/dest/wasm/index.d.ts.map +0 -1
  599. package/dest/wasm/index.js +0 -1
  600. package/dest/wasm/wasm_module.d.ts +0 -136
  601. package/dest/wasm/wasm_module.d.ts.map +0 -1
  602. package/dest/wasm/wasm_module.js +0 -196
  603. package/dest/worker/browser/index.d.ts +0 -3
  604. package/dest/worker/browser/index.d.ts.map +0 -1
  605. package/dest/worker/browser/index.js +0 -2
  606. package/dest/worker/browser/start_web_module.d.ts +0 -7
  607. package/dest/worker/browser/start_web_module.d.ts.map +0 -1
  608. package/dest/worker/browser/start_web_module.js +0 -27
  609. package/dest/worker/browser/web_data_store.d.ts +0 -24
  610. package/dest/worker/browser/web_data_store.d.ts.map +0 -1
  611. package/dest/worker/browser/web_data_store.js +0 -29
  612. package/dest/worker/browser/web_worker.d.ts +0 -10
  613. package/dest/worker/browser/web_worker.d.ts.map +0 -1
  614. package/dest/worker/browser/web_worker.js +0 -25
  615. package/dest/worker/data_store.d.ts +0 -21
  616. package/dest/worker/data_store.d.ts.map +0 -1
  617. package/dest/worker/data_store.js +0 -3
  618. package/dest/worker/index.d.ts +0 -3
  619. package/dest/worker/index.d.ts.map +0 -1
  620. package/dest/worker/index.js +0 -1
  621. package/dest/worker/node/index.d.ts +0 -3
  622. package/dest/worker/node/index.d.ts.map +0 -1
  623. package/dest/worker/node/index.js +0 -2
  624. package/dest/worker/node/node_data_store.d.ts +0 -13
  625. package/dest/worker/node/node_data_store.d.ts.map +0 -1
  626. package/dest/worker/node/node_data_store.js +0 -20
  627. package/dest/worker/node/node_worker.d.ts +0 -6
  628. package/dest/worker/node/node_worker.d.ts.map +0 -1
  629. package/dest/worker/node/node_worker.js +0 -22
  630. package/dest/worker/node/start_node_module.d.ts +0 -7
  631. package/dest/worker/node/start_node_module.d.ts.map +0 -1
  632. package/dest/worker/node/start_node_module.js +0 -31
  633. package/dest/worker/wasm_worker.d.ts +0 -9
  634. package/dest/worker/wasm_worker.d.ts.map +0 -1
  635. package/dest/worker/wasm_worker.js +0 -3
  636. package/dest/worker/worker_pool.d.ts +0 -40
  637. package/dest/worker/worker_pool.d.ts.map +0 -1
  638. package/dest/worker/worker_pool.js +0 -51
  639. package/src/crypto/index.ts +0 -14
  640. package/src/crypto/pedersen/pedersen.elliptic.ts +0 -584
  641. package/src/fields/coordinate.ts +0 -104
  642. package/src/fields/index.ts +0 -3
  643. package/src/index.ts +0 -31
  644. package/src/log/debug.ts +0 -104
  645. package/src/log/log_history.ts +0 -44
  646. package/src/transport/browser/index.ts +0 -4
  647. package/src/transport/browser/message_port_socket.ts +0 -48
  648. package/src/transport/browser/shared_worker_connector.ts +0 -21
  649. package/src/transport/browser/shared_worker_listener.ts +0 -53
  650. package/src/transport/browser/worker_connector.ts +0 -30
  651. package/src/transport/browser/worker_listener.ts +0 -54
  652. package/src/wasm/README.md +0 -6
  653. package/src/wasm/empty_wasi_sdk.ts +0 -166
  654. package/src/wasm/fixtures/gcd.wasm +0 -0
  655. package/src/wasm/fixtures/gcd.wat +0 -27
  656. package/src/wasm/index.ts +0 -1
  657. package/src/wasm/wasm_module.ts +0 -260
  658. package/src/worker/browser/index.ts +0 -2
  659. package/src/worker/browser/start_web_module.ts +0 -24
  660. package/src/worker/browser/web_data_store.ts +0 -38
  661. package/src/worker/browser/web_worker.ts +0 -25
  662. package/src/worker/data_store.ts +0 -19
  663. package/src/worker/index.ts +0 -2
  664. package/src/worker/node/index.ts +0 -2
  665. package/src/worker/node/node_data_store.ts +0 -27
  666. package/src/worker/node/node_worker.ts +0 -23
  667. package/src/worker/node/start_node_module.ts +0 -30
  668. package/src/worker/wasm_worker.ts +0 -7
  669. package/src/worker/worker_pool.ts +0 -73
@@ -0,0 +1,179 @@
1
+ import { inspect } from 'util';
2
+ import { BufferReader } from '../../serialize/buffer_reader.js';
3
+ /**
4
+ * Represents a field derived from BaseField.
5
+ */
6
+ type DerivedField<T extends BaseField> = {
7
+ new (value: any): T;
8
+ /**
9
+ * All derived fields will specify a MODULUS.
10
+ */
11
+ MODULUS: bigint;
12
+ };
13
+ /**
14
+ * Base field class.
15
+ * Uses bigint as the internal representation.
16
+ * Buffers are generated on demand from the bigint value.
17
+ */
18
+ declare abstract class BaseField {
19
+ static SIZE_IN_BYTES: number;
20
+ private readonly asBigInt;
21
+ /**
22
+ * Return bigint representation.
23
+ * @deprecated Just to get things compiling. Use toBigInt().
24
+ * */
25
+ get value(): bigint;
26
+ /** Returns the size in bytes. */
27
+ get size(): number;
28
+ protected constructor(value: number | bigint | boolean | BaseField | Buffer);
29
+ protected abstract modulus(): bigint;
30
+ /**
31
+ * Converts the bigint to a Buffer.
32
+ */
33
+ toBuffer(): Buffer;
34
+ toString(): `0x${string}`;
35
+ toBigInt(): bigint;
36
+ toBool(): boolean;
37
+ /**
38
+ * Converts this field to a number.
39
+ * Throws if the underlying value is greater than MAX_SAFE_INTEGER.
40
+ */
41
+ toNumber(): number;
42
+ /**
43
+ * Converts this field to a number.
44
+ * May cause loss of precision if the underlying value is greater than MAX_SAFE_INTEGER.
45
+ */
46
+ toNumberUnsafe(): number;
47
+ toShortString(): string;
48
+ equals(rhs: BaseField): boolean;
49
+ lt(rhs: BaseField): boolean;
50
+ cmp(rhs: BaseField): -1 | 0 | 1;
51
+ isZero(): boolean;
52
+ isEmpty(): boolean;
53
+ toFriendlyJSON(): string;
54
+ toField(): this;
55
+ }
56
+ /**
57
+ * Constructs a field from a Buffer of BufferReader.
58
+ * It maybe not read the full 32 bytes if the Buffer is shorter, but it will padded in BaseField constructor.
59
+ */
60
+ export declare function fromBuffer<T extends BaseField>(buffer: Buffer | BufferReader, f: DerivedField<T>): T;
61
+ /** Branding to ensure fields are not interchangeable types. */
62
+ export interface Fr {
63
+ /** Brand. */
64
+ _branding: 'Fr';
65
+ }
66
+ /**
67
+ * Fr field class.
68
+ * @dev This class is used to represent elements of BN254 scalar field or elements in the base field of Grumpkin.
69
+ * (Grumpkin's scalar field corresponds to BN254's base field and vice versa.)
70
+ */
71
+ export declare class Fr extends BaseField {
72
+ static ZERO: Fr;
73
+ static ONE: Fr;
74
+ static MODULUS: bigint;
75
+ static MAX_FIELD_VALUE: Fr;
76
+ constructor(value: number | bigint | boolean | Fr | Buffer);
77
+ [inspect.custom](): string;
78
+ protected modulus(): bigint;
79
+ static random(): Fr;
80
+ static zero(): Fr;
81
+ static isZero(value: Fr): boolean;
82
+ static fromBuffer(buffer: Buffer | BufferReader): Fr;
83
+ static fromBufferReduce(buffer: Buffer): Fr;
84
+ /**
85
+ * Creates a Fr instance from a string.
86
+ * @param buf - the string to create a Fr from.
87
+ * @returns the Fr instance
88
+ * @remarks if the string only consists of numbers, we assume we are parsing a bigint,
89
+ * otherwise we require the hex string to be prepended with "0x", to ensure there is no misunderstanding
90
+ * as to what is being parsed.
91
+ */
92
+ static fromString(buf: string): Fr;
93
+ /**
94
+ * Creates a Fr instance from a hex string.
95
+ * @param buf - a hex encoded string.
96
+ * @returns the Fr instance
97
+ */
98
+ static fromHexString(buf: string): Fr;
99
+ /** Arithmetic */
100
+ add(rhs: Fr): Fr;
101
+ square(): Fr;
102
+ negate(): Fr;
103
+ sub(rhs: Fr): Fr;
104
+ mul(rhs: Fr): Fr;
105
+ div(rhs: Fr): Fr;
106
+ ediv(rhs: Fr): Fr;
107
+ /**
108
+ * Computes a square root of the field element.
109
+ * @returns A square root of the field element (null if it does not exist).
110
+ */
111
+ sqrt(): Promise<Fr | null>;
112
+ toJSON(): `0x${string}`;
113
+ /**
114
+ * Creates an Fr instance from a plain object without Zod validation.
115
+ * This method is optimized for performance and skips validation, making it suitable
116
+ * for deserializing trusted data (e.g., from C++ via MessagePack).
117
+ * Handles buffers, strings, numbers, bigints, or existing instances.
118
+ * @param obj - Plain object, buffer, string, number, bigint, boolean, or Fr instance
119
+ * @returns An Fr instance
120
+ */
121
+ static fromPlainObject(obj: any): Fr;
122
+ static get schema(): import("zod").ZodType<Fr, any, string>;
123
+ }
124
+ /**
125
+ * Branding to ensure fields are not interchangeable types.
126
+ */
127
+ export interface Fq {
128
+ /** Brand. */
129
+ _branding: 'Fq';
130
+ }
131
+ /**
132
+ * Fq field class.
133
+ * @dev This class is used to represent elements of BN254 base field or elements in the scalar field of Grumpkin.
134
+ * (Grumpkin's scalar field corresponds to BN254's base field and vice versa.)
135
+ */
136
+ export declare class Fq extends BaseField {
137
+ static ZERO: Fq;
138
+ static MODULUS: bigint;
139
+ private static HIGH_SHIFT;
140
+ private static LOW_MASK;
141
+ [inspect.custom](): string;
142
+ get lo(): Fr;
143
+ get hi(): Fr;
144
+ constructor(value: number | bigint | boolean | Fq | Buffer);
145
+ protected modulus(): bigint;
146
+ static random(): Fq;
147
+ static zero(): Fq;
148
+ static fromBuffer(buffer: Buffer | BufferReader): Fq;
149
+ static fromBufferReduce(buffer: Buffer): Fq;
150
+ /**
151
+ * Creates a Fq instance from a string.
152
+ * @param buf - the string to create a Fq from.
153
+ * @returns the Fq instance
154
+ * @remarks if the string only consists of numbers, we assume we are parsing a bigint,
155
+ * otherwise we require the hex string to be prepended with "0x", to ensure there is no misunderstanding
156
+ * as to what is being parsed.
157
+ */
158
+ static fromString(buf: string): Fq;
159
+ /**
160
+ * Creates a Fq instance from a hex string.
161
+ * @param buf - a hex encoded string.
162
+ * @returns the Fq instance
163
+ */
164
+ static fromHexString(buf: string): Fq;
165
+ static fromHighLow(high: Fr, low: Fr): Fq;
166
+ add(rhs: Fq): Fq;
167
+ /**
168
+ * Computes a square root of the field element.
169
+ * @returns A square root of the field element (null if it does not exist).
170
+ */
171
+ sqrt(): Promise<Fq | null>;
172
+ toJSON(): `0x${string}`;
173
+ toFields(): Fr[];
174
+ static get schema(): import("zod").ZodType<Fq, any, string>;
175
+ }
176
+ /** Wraps a function that returns a buffer so that all results are reduced into a field of the given type. */
177
+ export declare function reduceFn<TInput, TField extends BaseField>(fn: (input: TInput) => Buffer, field: DerivedField<TField>): (input: TInput) => TField;
178
+ export {};
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdXJ2ZXMvYm4yNTQvZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUsvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFLaEU7O0dBRUc7QUFDSCxLQUFLLFlBQVksQ0FBQyxDQUFDLFNBQVMsU0FBUyxJQUFJO0lBQ3ZDLEtBQUssS0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDcEI7O09BRUc7SUFDSCxPQUFPLEVBQUUsTUFBTSxDQUFDO0NBQ2pCLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsdUJBQWUsU0FBUztJQUN0QixNQUFNLENBQUMsYUFBYSxTQUFNO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFTO0lBRWxDOzs7U0FHSztJQUNMLElBQUksS0FBSyxJQUFJLE1BQU0sQ0FFbEI7SUFFRCxpQ0FBaUM7SUFDakMsSUFBSSxJQUFJLElBQUksTUFBTSxDQUVqQjtJQUVELFNBQVMsYUFBYSxLQUFLLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxPQUFPLEdBQUcsU0FBUyxHQUFHLE1BQU0sRUFtQjFFO0lBRUQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDO0lBRXJDOztPQUVHO0lBQ0gsUUFBUSxJQUFJLE1BQU0sQ0FFakI7SUFFRCxRQUFRLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FFeEI7SUFFRCxRQUFRLElBQUksTUFBTSxDQUVqQjtJQUVELE1BQU0sSUFBSSxPQUFPLENBRWhCO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxJQUFJLE1BQU0sQ0FLakI7SUFFRDs7O09BR0c7SUFDSCxjQUFjLElBQUksTUFBTSxDQUV2QjtJQUVELGFBQWEsSUFBSSxNQUFNLENBR3RCO0lBRUQsTUFBTSxDQUFDLEdBQUcsRUFBRSxT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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../src/curves/bn254/field.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,16 @@
1
1
  import { BarretenbergSync } from '@aztec/bb.js';
2
2
  import { inspect } from 'util';
3
- import { toBigIntBE, toBufferBE } from '../bigint-buffer/index.js';
4
- import { randomBytes } from '../crypto/random/index.js';
5
- import { hexSchemaFor } from '../schemas/utils.js';
6
- import { BufferReader } from '../serialize/buffer_reader.js';
7
- import { TypeRegistry } from '../serialize/type_registry.js';
8
- const ZERO_BUFFER = Buffer.alloc(32);
3
+ import { toBigIntBE, toBufferBE } from '../../bigint-buffer/index.js';
4
+ import { randomBytes } from '../../crypto/random/index.js';
5
+ import { hexSchemaFor } from '../../schemas/utils.js';
6
+ import { BufferReader } from '../../serialize/buffer_reader.js';
7
+ import { TypeRegistry } from '../../serialize/type_registry.js';
9
8
  /**
10
9
  * Base field class.
11
- * Conversions from Buffer to BigInt and vice-versa are not cheap.
12
- * We allow construction with either form and lazily convert to other as needed.
13
- * We only check we are within the field modulus when initializing with bigint.
10
+ * Uses bigint as the internal representation.
11
+ * Buffers are generated on demand from the bigint value.
14
12
  */ class BaseField {
15
13
  static SIZE_IN_BYTES = 32;
16
- asBuffer;
17
14
  asBigInt;
18
15
  /**
19
16
  * Return bigint representation.
@@ -29,79 +26,65 @@ const ZERO_BUFFER = Buffer.alloc(32);
29
26
  if (value.length > BaseField.SIZE_IN_BYTES) {
30
27
  throw new Error(`Value length ${value.length} exceeds ${BaseField.SIZE_IN_BYTES}`);
31
28
  }
32
- this.asBuffer = value.length === BaseField.SIZE_IN_BYTES ? value : Buffer.concat([
33
- Buffer.alloc(BaseField.SIZE_IN_BYTES - value.length),
34
- value
35
- ]);
29
+ this.asBigInt = toBigIntBE(value);
36
30
  } else if (typeof value === 'bigint' || typeof value === 'number' || typeof value === 'boolean') {
37
31
  this.asBigInt = BigInt(value);
38
- if (this.asBigInt >= this.modulus()) {
39
- throw new Error(`Value 0x${this.asBigInt.toString(16)} is greater or equal to field modulus.`);
40
- }
41
32
  } else if (value instanceof BaseField) {
42
- this.asBuffer = value.asBuffer;
43
33
  this.asBigInt = value.asBigInt;
44
34
  } else {
45
35
  throw new Error(`Type '${typeof value}' with value '${value}' passed to BaseField ctor.`);
46
36
  }
37
+ if (this.asBigInt < 0n) {
38
+ throw new Error(`Value 0x${this.asBigInt.toString(16)} is negative.`);
39
+ } else if (this.asBigInt >= this.modulus()) {
40
+ throw new Error(`Value 0x${this.asBigInt.toString(16)} is greater or equal to field modulus.`);
41
+ }
47
42
  }
48
43
  /**
49
- * We return a copy of the Buffer to ensure this remains immutable.
44
+ * Converts the bigint to a Buffer.
50
45
  */ toBuffer() {
51
- if (!this.asBuffer) {
52
- this.asBuffer = toBufferBE(this.asBigInt, 32);
53
- }
54
- return Buffer.from(this.asBuffer);
46
+ return toBufferBE(this.asBigInt, 32);
55
47
  }
56
48
  toString() {
57
- return `0x${this.toBuffer().toString('hex')}`;
49
+ return `0x${this.asBigInt.toString(16).padStart(64, '0')}`;
58
50
  }
59
51
  toBigInt() {
60
- if (this.asBigInt === undefined) {
61
- this.asBigInt = toBigIntBE(this.asBuffer);
62
- if (this.asBigInt >= this.modulus()) {
63
- throw new Error(`Value 0x${this.asBigInt.toString(16)} is greater or equal to field modulus.`);
64
- }
65
- }
66
52
  return this.asBigInt;
67
53
  }
68
54
  toBool() {
69
- return Boolean(this.toBigInt());
55
+ return this.asBigInt !== 0n;
70
56
  }
71
57
  /**
72
58
  * Converts this field to a number.
73
59
  * Throws if the underlying value is greater than MAX_SAFE_INTEGER.
74
60
  */ toNumber() {
75
- const value = this.toBigInt();
76
- if (value > Number.MAX_SAFE_INTEGER) {
77
- throw new Error(`Value ${value.toString(16)} greater than than max safe integer`);
61
+ if (this.asBigInt > Number.MAX_SAFE_INTEGER) {
62
+ throw new Error(`Value ${this.asBigInt.toString(16)} greater than than max safe integer`);
78
63
  }
79
- return Number(value);
64
+ return Number(this.asBigInt);
80
65
  }
81
66
  /**
82
67
  * Converts this field to a number.
83
68
  * May cause loss of precision if the underlying value is greater than MAX_SAFE_INTEGER.
84
69
  */ toNumberUnsafe() {
85
- const value = this.toBigInt();
86
- return Number(value);
70
+ return Number(this.asBigInt);
87
71
  }
88
72
  toShortString() {
89
73
  const str = this.toString();
90
74
  return `${str.slice(0, 10)}...${str.slice(-4)}`;
91
75
  }
92
76
  equals(rhs) {
93
- return this.toBuffer().equals(rhs.toBuffer());
77
+ return this.asBigInt === rhs.asBigInt;
94
78
  }
95
79
  lt(rhs) {
96
- return this.toBigInt() < rhs.toBigInt();
80
+ return this.asBigInt < rhs.asBigInt;
97
81
  }
98
82
  cmp(rhs) {
99
- const lhsBigInt = this.toBigInt();
100
- const rhsBigInt = rhs.toBigInt();
101
- return lhsBigInt === rhsBigInt ? 0 : lhsBigInt < rhsBigInt ? -1 : 1;
83
+ const rhsBigInt = rhs.asBigInt;
84
+ return this.asBigInt === rhsBigInt ? 0 : this.asBigInt < rhsBigInt ? -1 : 1;
102
85
  }
103
86
  isZero() {
104
- return this.toBuffer().equals(ZERO_BUFFER);
87
+ return this.asBigInt === 0n;
105
88
  }
106
89
  isEmpty() {
107
90
  return this.isZero();
@@ -141,7 +124,7 @@ const ZERO_BUFFER = Buffer.alloc(32);
141
124
  throw new Error(`Invalid hex-encoded string: "${buf}"`);
142
125
  }
143
126
  const buffer = Buffer.from(checked.length % 2 === 1 ? '0' + checked : checked, 'hex');
144
- return new f(buffer);
127
+ return new f(toBigIntBE(buffer));
145
128
  }
146
129
  /**
147
130
  * Fr field class.
@@ -233,24 +216,35 @@ const ZERO_BUFFER = Buffer.alloc(32);
233
216
  * Computes a square root of the field element.
234
217
  * @returns A square root of the field element (null if it does not exist).
235
218
  */ async sqrt() {
236
- const api = await BarretenbergSync.initSingleton(process.env.BB_WASM_PATH);
237
- const wasm = api.getWasm();
238
- const [buf] = wasm.callWasmExport('bn254_fr_sqrt', [
239
- this.toBuffer()
240
- ], [
241
- Fr.SIZE_IN_BYTES + 1
242
- ]);
243
- const isSqrt = buf[0] === 1;
244
- if (!isSqrt) {
219
+ await BarretenbergSync.initSingleton();
220
+ const api = BarretenbergSync.getSingleton();
221
+ const response = api.bn254FrSqrt({
222
+ input: this.toBuffer()
223
+ });
224
+ if (!response.isSquareRoot) {
245
225
  // Field element is not a quadratic residue mod p so it has no square root.
246
226
  return null;
247
227
  }
248
- return new Fr(Buffer.from(buf.slice(1)));
228
+ return Fr.fromBuffer(Buffer.from(response.value));
249
229
  }
250
230
  toJSON() {
251
231
  return this.toString();
252
232
  }
233
+ /**
234
+ * Creates an Fr instance from a plain object without Zod validation.
235
+ * This method is optimized for performance and skips validation, making it suitable
236
+ * for deserializing trusted data (e.g., from C++ via MessagePack).
237
+ * Handles buffers, strings, numbers, bigints, or existing instances.
238
+ * @param obj - Plain object, buffer, string, number, bigint, boolean, or Fr instance
239
+ * @returns An Fr instance
240
+ */ static fromPlainObject(obj) {
241
+ if (obj instanceof Fr) {
242
+ return obj;
243
+ }
244
+ return new Fr(obj);
245
+ }
253
246
  static get schema() {
247
+ // Serialization from hex string.
254
248
  return hexSchemaFor(Fr);
255
249
  }
256
250
  }
@@ -321,9 +315,33 @@ TypeRegistry.register('Fr', Fr);
321
315
  add(rhs) {
322
316
  return new Fq((this.toBigInt() + rhs.toBigInt()) % Fq.MODULUS);
323
317
  }
318
+ /**
319
+ * Computes a square root of the field element.
320
+ * @returns A square root of the field element (null if it does not exist).
321
+ */ async sqrt() {
322
+ await BarretenbergSync.initSingleton();
323
+ const api = BarretenbergSync.getSingleton();
324
+ const response = api.bn254FqSqrt({
325
+ input: this.toBuffer()
326
+ });
327
+ if (!response.isSquareRoot) {
328
+ // Field element is not a quadratic residue mod p so it has no square root.
329
+ return null;
330
+ }
331
+ return Fq.fromBuffer(Buffer.from(response.value));
332
+ }
324
333
  toJSON() {
325
334
  return this.toString();
326
335
  }
336
+ toFields() {
337
+ // The following has to match the order of the limbs in EmbeddedCurveScalar struct in noir::std. This is because
338
+ // this function is used when returning Scalar from the getAddressSecret oracle and in Noir the values get deserialized
339
+ // using the intrinsic serialization of Noir (which follows the order of the fields/members in the struct).
340
+ return [
341
+ this.lo,
342
+ this.hi
343
+ ];
344
+ }
327
345
  static get schema() {
328
346
  return hexSchemaFor(Fq);
329
347
  }
@@ -360,11 +378,10 @@ TypeRegistry.register('Fq', Fq);
360
378
  ];
361
379
  }
362
380
  }
363
- export const GrumpkinScalar = Fq;
364
381
  /** Wraps a function that returns a buffer so that all results are reduced into a field of the given type. */ export function reduceFn(fn, field) {
365
382
  return (input)=>fromBufferReduce(fn(input), field);
366
383
  }
367
- /** If we are in test mode, we register a special equality for fields. */ if (process.env.NODE_ENV === 'test' && typeof expect !== 'undefined') {
384
+ /** If we are in test mode, we register a special equality for fields. */ if (process.env.NODE_ENV === 'test') {
368
385
  const areFieldsEqual = (a, b)=>{
369
386
  const isAField = a instanceof BaseField;
370
387
  const isBField = b instanceof BaseField;
@@ -376,8 +393,13 @@ export const GrumpkinScalar = Fq;
376
393
  return false;
377
394
  }
378
395
  };
379
- // `addEqualityTesters` doesn't seem to be in the types yet.
380
- expect.addEqualityTesters([
381
- areFieldsEqual
382
- ]);
396
+ if (typeof expect !== 'undefined') {
397
+ // `addEqualityTesters` doesn't seem to be in the types yet.
398
+ expect.addEqualityTesters([
399
+ areFieldsEqual
400
+ ]);
401
+ } else {
402
+ globalThis.__extraEqualityTesters ??= [];
403
+ globalThis.__extraEqualityTesters.push(areFieldsEqual);
404
+ }
383
405
  }
@@ -0,0 +1,3 @@
1
+ export * from './field.js';
2
+ export * from './point.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdXJ2ZXMvYm4yNTQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxZQUFZLENBQUMifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/curves/bn254/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './field.js';
2
+ export * from './point.js';
@@ -0,0 +1,54 @@
1
+ import { Fq, Fr } from './field.js';
2
+ /**
3
+ * BN254 G1 point using foundation field classes.
4
+ * Represents a point on the BN254 elliptic curve in affine coordinates.
5
+ */
6
+ export declare class Bn254G1Point {
7
+ readonly x: Fq;
8
+ readonly y: Fq;
9
+ constructor(x: Fq, y: Fq);
10
+ private toBbApiPoint;
11
+ private static fromBbApiPoint;
12
+ isOnCurve(): Promise<boolean>;
13
+ /**
14
+ * Get the generator point for BN254 G1, or perform scalar multiplication.
15
+ * When called without arguments, returns the base generator point.
16
+ * When called with a scalar, returns scalar * generator (useful for public key derivation).
17
+ */
18
+ static generator(scalar?: Fr): Promise<Bn254G1Point>;
19
+ /**
20
+ * Decompress a BN254 G1 point from compressed form (32 bytes).
21
+ * The compressed format encodes the x-coordinate and the sign bit of the y-coordinate
22
+ * in the most significant bit.
23
+ */
24
+ static fromCompressed(compressed: Buffer): Promise<Bn254G1Point>;
25
+ /**
26
+ * Compress this BN254 G1 point to 32 bytes.
27
+ * The compressed format encodes the x-coordinate and the sign bit of the y-coordinate
28
+ * in the most significant bit (bit 255).
29
+ */
30
+ compress(): Buffer;
31
+ equals(other: Bn254G1Point): boolean;
32
+ toString(): string;
33
+ }
34
+ /**
35
+ * BN254 G2 point using foundation field classes.
36
+ * Represents a point on the BN254 G2 curve (twist curve) in affine coordinates.
37
+ * G2 points use extension field coordinates (Fq2).
38
+ */
39
+ export declare class Bn254G2Point {
40
+ readonly x: [Fq, Fq];
41
+ readonly y: [Fq, Fq];
42
+ constructor(x: [Fq, Fq], y: [Fq, Fq]);
43
+ private toBbApiPoint;
44
+ private static fromBbApiPoint;
45
+ /**
46
+ * Get the generator point for BN254 G2, or perform scalar multiplication.
47
+ * When called without arguments, returns the base generator point.
48
+ * When called with a scalar, returns scalar * generator.
49
+ */
50
+ static generator(scalar?: Fr): Promise<Bn254G2Point>;
51
+ equals(other: Bn254G2Point): boolean;
52
+ toString(): string;
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdXJ2ZXMvYm4yNTQvcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEM7OztHQUdHO0FBQ0gscUJBQWEsWUFBWTthQUVMLENBQUMsRUFBRSxFQUFFO2FBQ0wsQ0FBQyxFQUFFLEVBQUU7SUFGdkIsWUFDa0IsQ0FBQyxFQUFFLEVBQUUsRUFDTCxDQUFDLEVBQUUsRUFBRSxFQUNuQjtJQUVKLE9BQU8sQ0FBQyxZQUFZO0lBT3BCLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYztJQUl2QixTQUFTLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQU9sQztJQUVEOzs7O09BSUc7SUFDSCxPQUFhLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQWlCekQ7SUFFRDs7OztPQUlHO0lBQ0gsT0FBYSxjQUFjLENBQUMsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBWXJFO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsSUFBSSxNQUFNLENBU2pCO0lBRUQsTUFBTSxDQUFDLEtBQUssRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUVuQztJQUVELFFBQVEsSUFBSSxNQUFNLENBRWpCO0NBQ0Y7QUFFRDs7OztHQUlHO0FBQ0gscUJBQWEsWUFBWTthQUVMLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7YUFDWCxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBRjdCLFlBQ2tCLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFDWCxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQ3pCO0lBRUosT0FBTyxDQUFDLFlBQVk7SUFPcEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjO0lBTzdCOzs7O09BSUc7SUFDSCxPQUFhLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQWlCekQ7SUFFRCxNQUFNLENBQUMsS0FBSyxFQUFFLFlBQVksR0FBRyxPQUFPLENBT25DO0lBRUQsUUFBUSxJQUFJLE1BQU0sQ0FFakI7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"point.d.ts","sourceRoot":"","sources":["../../../src/curves/bn254/point.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAEpC;;;GAGG;AACH,qBAAa,YAAY;aAEL,CAAC,EAAE,EAAE;aACL,CAAC,EAAE,EAAE;IAFvB,YACkB,CAAC,EAAE,EAAE,EACL,CAAC,EAAE,EAAE,EACnB;IAEJ,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,MAAM,CAAC,cAAc;IAIvB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAOlC;IAED;;;;OAIG;IACH,OAAa,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAiBzD;IAED;;;;OAIG;IACH,OAAa,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAYrE;IAED;;;;OAIG;IACH,QAAQ,IAAI,MAAM,CASjB;IAED,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAEnC;IAED,QAAQ,IAAI,MAAM,CAEjB;CACF;AAED;;;;GAIG;AACH,qBAAa,YAAY;aAEL,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;aACX,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IAF7B,YACkB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACX,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACzB;IAEJ,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,MAAM,CAAC,cAAc;IAO7B;;;;OAIG;IACH,OAAa,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAiBzD;IAED,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAOnC;IAED,QAAQ,IAAI,MAAM,CAEjB;CACF"}
@@ -0,0 +1,143 @@
1
+ import { BN254_G1_GENERATOR, BN254_G2_GENERATOR, BarretenbergSync } from '@aztec/bb.js';
2
+ import { Fq } from './field.js';
3
+ /**
4
+ * BN254 G1 point using foundation field classes.
5
+ * Represents a point on the BN254 elliptic curve in affine coordinates.
6
+ */ export class Bn254G1Point {
7
+ x;
8
+ y;
9
+ constructor(x, y){
10
+ this.x = x;
11
+ this.y = y;
12
+ }
13
+ toBbApiPoint() {
14
+ return {
15
+ x: this.x.toBuffer(),
16
+ y: this.y.toBuffer()
17
+ };
18
+ }
19
+ static fromBbApiPoint(point) {
20
+ return new Bn254G1Point(Fq.fromBuffer(Buffer.from(point.x)), Fq.fromBuffer(Buffer.from(point.y)));
21
+ }
22
+ async isOnCurve() {
23
+ await BarretenbergSync.initSingleton();
24
+ const api = BarretenbergSync.getSingleton();
25
+ const apiPoint = this.toBbApiPoint();
26
+ const response = api.bn254G1IsOnCurve({
27
+ point: apiPoint
28
+ });
29
+ return response.isOnCurve;
30
+ }
31
+ /**
32
+ * Get the generator point for BN254 G1, or perform scalar multiplication.
33
+ * When called without arguments, returns the base generator point.
34
+ * When called with a scalar, returns scalar * generator (useful for public key derivation).
35
+ */ static async generator(scalar) {
36
+ if (!scalar) {
37
+ return new Bn254G1Point(Fq.fromBuffer(Buffer.from(BN254_G1_GENERATOR.x)), Fq.fromBuffer(Buffer.from(BN254_G1_GENERATOR.y)));
38
+ }
39
+ await BarretenbergSync.initSingleton();
40
+ const api = BarretenbergSync.getSingleton();
41
+ const response = api.bn254G1Mul({
42
+ point: BN254_G1_GENERATOR,
43
+ scalar: scalar.toBuffer()
44
+ });
45
+ return Bn254G1Point.fromBbApiPoint(response.point);
46
+ }
47
+ /**
48
+ * Decompress a BN254 G1 point from compressed form (32 bytes).
49
+ * The compressed format encodes the x-coordinate and the sign bit of the y-coordinate
50
+ * in the most significant bit.
51
+ */ static async fromCompressed(compressed) {
52
+ if (compressed.length !== 32) {
53
+ throw new Error('Invalid compressed point length');
54
+ }
55
+ await BarretenbergSync.initSingleton();
56
+ const api = BarretenbergSync.getSingleton();
57
+ const response = api.bn254G1FromCompressed({
58
+ compressed: new Uint8Array(compressed)
59
+ });
60
+ return Bn254G1Point.fromBbApiPoint(response.point);
61
+ }
62
+ /**
63
+ * Compress this BN254 G1 point to 32 bytes.
64
+ * The compressed format encodes the x-coordinate and the sign bit of the y-coordinate
65
+ * in the most significant bit (bit 255).
66
+ */ compress() {
67
+ const xBytes = this.x.toBuffer();
68
+ // Get the least significant bit of y to determine the sign
69
+ const yLsb = this.y.toBigInt() & 1n;
70
+ // If y is odd, set the most significant bit (bit 255) of the output
71
+ if (yLsb === 1n) {
72
+ xBytes[0] |= 0x80;
73
+ }
74
+ return xBytes;
75
+ }
76
+ equals(other) {
77
+ return this.x.equals(other.x) && this.y.equals(other.y);
78
+ }
79
+ toString() {
80
+ return `Bn254G1Point(x: ${this.x.toString()}, y: ${this.y.toString()})`;
81
+ }
82
+ }
83
+ /**
84
+ * BN254 G2 point using foundation field classes.
85
+ * Represents a point on the BN254 G2 curve (twist curve) in affine coordinates.
86
+ * G2 points use extension field coordinates (Fq2).
87
+ */ export class Bn254G2Point {
88
+ x;
89
+ y;
90
+ constructor(x, y){
91
+ this.x = x;
92
+ this.y = y;
93
+ }
94
+ toBbApiPoint() {
95
+ return {
96
+ x: [
97
+ this.x[0].toBuffer(),
98
+ this.x[1].toBuffer()
99
+ ],
100
+ y: [
101
+ this.y[0].toBuffer(),
102
+ this.y[1].toBuffer()
103
+ ]
104
+ };
105
+ }
106
+ static fromBbApiPoint(point) {
107
+ return new Bn254G2Point([
108
+ Fq.fromBuffer(Buffer.from(point.x[0])),
109
+ Fq.fromBuffer(Buffer.from(point.x[1]))
110
+ ], [
111
+ Fq.fromBuffer(Buffer.from(point.y[0])),
112
+ Fq.fromBuffer(Buffer.from(point.y[1]))
113
+ ]);
114
+ }
115
+ /**
116
+ * Get the generator point for BN254 G2, or perform scalar multiplication.
117
+ * When called without arguments, returns the base generator point.
118
+ * When called with a scalar, returns scalar * generator.
119
+ */ static async generator(scalar) {
120
+ if (!scalar) {
121
+ return new Bn254G2Point([
122
+ Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.x[0])),
123
+ Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.x[1]))
124
+ ], [
125
+ Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.y[0])),
126
+ Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.y[1]))
127
+ ]);
128
+ }
129
+ await BarretenbergSync.initSingleton();
130
+ const api = BarretenbergSync.getSingleton();
131
+ const response = api.bn254G2Mul({
132
+ point: BN254_G2_GENERATOR,
133
+ scalar: scalar.toBuffer()
134
+ });
135
+ return Bn254G2Point.fromBbApiPoint(response.point);
136
+ }
137
+ equals(other) {
138
+ return this.x[0].equals(other.x[0]) && this.x[1].equals(other.x[1]) && this.y[0].equals(other.y[0]) && this.y[1].equals(other.y[1]);
139
+ }
140
+ toString() {
141
+ return `Bn254G2Point(x: (${this.x[0].toString()}, ${this.x[1].toString()}), y: (${this.y[0].toString()}, ${this.y[1].toString()}))`;
142
+ }
143
+ }
@@ -0,0 +1,10 @@
1
+ import { Fq } from '../bn254/field.js';
2
+ export * from './point.js';
3
+ /**
4
+ * GrumpkinScalar is an Fq.
5
+ * @remarks Called GrumpkinScalar because it is used to represent elements in Grumpkin's scalar field as defined in
6
+ * the Aztec Protocol Specs.
7
+ */
8
+ export type GrumpkinScalar = Fq;
9
+ export declare const GrumpkinScalar: typeof Fq;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdXJ2ZXMvZ3J1bXBraW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZDLGNBQWMsWUFBWSxDQUFDO0FBRTNCOzs7O0dBSUc7QUFDSCxNQUFNLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxlQUFPLE1BQU0sY0FBYyxXQUFLLENBQUMifQ==