@aztec/foundation 0.0.0-test.1 → 0.0.1-commit.5476d83

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 (618) 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/epoch.d.ts +42 -0
  15. package/dest/branded-types/epoch.d.ts.map +1 -0
  16. package/dest/branded-types/epoch.js +59 -0
  17. package/dest/branded-types/index.d.ts +4 -0
  18. package/dest/branded-types/index.d.ts.map +1 -0
  19. package/dest/branded-types/index.js +2 -0
  20. package/dest/branded-types/slot.d.ts +42 -0
  21. package/dest/branded-types/slot.d.ts.map +1 -0
  22. package/dest/branded-types/slot.js +59 -0
  23. package/dest/branded-types/types.d.ts +5 -0
  24. package/dest/branded-types/types.d.ts.map +1 -0
  25. package/dest/branded-types/types.js +1 -0
  26. package/dest/buffer/buffer16.d.ts +77 -0
  27. package/dest/buffer/buffer16.d.ts.map +1 -0
  28. package/dest/buffer/buffer16.js +100 -0
  29. package/dest/buffer/buffer32.d.ts +4 -11
  30. package/dest/buffer/buffer32.d.ts.map +1 -1
  31. package/dest/buffer/buffer32.js +6 -6
  32. package/dest/buffer/index.d.ts +2 -1
  33. package/dest/buffer/index.d.ts.map +1 -1
  34. package/dest/buffer/index.js +1 -0
  35. package/dest/collection/array.d.ts +17 -4
  36. package/dest/collection/array.d.ts.map +1 -1
  37. package/dest/collection/array.js +57 -3
  38. package/dest/collection/index.d.ts +1 -1
  39. package/dest/collection/object.d.ts +17 -1
  40. package/dest/collection/object.d.ts.map +1 -1
  41. package/dest/collection/object.js +25 -0
  42. package/dest/committable/committable.d.ts +1 -1
  43. package/dest/committable/committable.d.ts.map +1 -1
  44. package/dest/committable/index.d.ts +1 -1
  45. package/dest/config/env_var.d.ts +2 -2
  46. package/dest/config/env_var.d.ts.map +1 -1
  47. package/dest/config/index.d.ts +49 -2
  48. package/dest/config/index.d.ts.map +1 -1
  49. package/dest/config/index.js +115 -7
  50. package/dest/config/network_config.d.ts +42 -0
  51. package/dest/config/network_config.d.ts.map +1 -0
  52. package/dest/config/network_config.js +9 -0
  53. package/dest/config/network_name.d.ts +3 -0
  54. package/dest/config/network_name.d.ts.map +1 -0
  55. package/dest/config/network_name.js +19 -0
  56. package/dest/config/secret_value.d.ts +28 -0
  57. package/dest/config/secret_value.d.ts.map +1 -0
  58. package/dest/config/secret_value.js +34 -0
  59. package/dest/crypto/aes128/index.d.ts +3 -5
  60. package/dest/crypto/aes128/index.d.ts.map +1 -1
  61. package/dest/crypto/aes128/index.js +19 -6
  62. package/dest/crypto/bls/bn254_keystore.d.ts +296 -0
  63. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -0
  64. package/dest/crypto/bls/bn254_keystore.js +218 -0
  65. package/dest/crypto/bls/index.d.ts +13 -0
  66. package/dest/crypto/bls/index.d.ts.map +1 -0
  67. package/dest/crypto/bls/index.js +87 -0
  68. package/dest/crypto/bn254/bn254_utils.d.ts +39 -0
  69. package/dest/crypto/bn254/bn254_utils.d.ts.map +1 -0
  70. package/dest/crypto/bn254/bn254_utils.js +56 -0
  71. package/dest/crypto/bn254/index.d.ts +55 -0
  72. package/dest/crypto/bn254/index.d.ts.map +1 -0
  73. package/dest/crypto/bn254/index.js +145 -0
  74. package/dest/crypto/ecdsa/index.d.ts +3 -3
  75. package/dest/crypto/ecdsa/index.d.ts.map +1 -1
  76. package/dest/crypto/ecdsa/index.js +62 -48
  77. package/dest/crypto/ecdsa/signature.d.ts +2 -13
  78. package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
  79. package/dest/crypto/grumpkin/index.d.ts +7 -14
  80. package/dest/crypto/grumpkin/index.d.ts.map +1 -1
  81. package/dest/crypto/grumpkin/index.js +59 -54
  82. package/dest/crypto/index.d.ts +3 -1
  83. package/dest/crypto/index.d.ts.map +1 -1
  84. package/dest/crypto/index.js +2 -0
  85. package/dest/crypto/keccak/index.d.ts +3 -5
  86. package/dest/crypto/keccak/index.d.ts.map +1 -1
  87. package/dest/crypto/keys/index.d.ts +1 -3
  88. package/dest/crypto/keys/index.d.ts.map +1 -1
  89. package/dest/crypto/keys/index.js +7 -4
  90. package/dest/crypto/pedersen/index.d.ts +1 -1
  91. package/dest/crypto/pedersen/pedersen.noble.d.ts +3 -5
  92. package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -1
  93. package/dest/crypto/pedersen/pedersen.wasm.d.ts +3 -5
  94. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  95. package/dest/crypto/pedersen/pedersen.wasm.js +23 -13
  96. package/dest/crypto/poseidon/index.d.ts +1 -3
  97. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  98. package/dest/crypto/poseidon/index.js +32 -17
  99. package/dest/crypto/random/index.d.ts +2 -4
  100. package/dest/crypto/random/index.d.ts.map +1 -1
  101. package/dest/crypto/random/index.js +2 -34
  102. package/dest/crypto/random/randomness_singleton.d.ts +1 -3
  103. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
  104. package/dest/crypto/schnorr/index.d.ts +1 -1
  105. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  106. package/dest/crypto/schnorr/index.js +29 -37
  107. package/dest/crypto/schnorr/signature.d.ts +4 -6
  108. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  109. package/dest/crypto/secp256k1/index.d.ts +5 -7
  110. package/dest/crypto/secp256k1/index.d.ts.map +1 -1
  111. package/dest/crypto/secp256k1/index.js +23 -18
  112. package/dest/crypto/secp256k1-signer/index.d.ts +1 -1
  113. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +1 -1
  114. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -1
  115. package/dest/crypto/secp256k1-signer/utils.d.ts +56 -5
  116. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
  117. package/dest/crypto/secp256k1-signer/utils.js +92 -6
  118. package/dest/crypto/serialize.d.ts +5 -7
  119. package/dest/crypto/serialize.d.ts.map +1 -1
  120. package/dest/crypto/sha256/index.d.ts +22 -5
  121. package/dest/crypto/sha256/index.d.ts.map +1 -1
  122. package/dest/crypto/sha256/index.js +42 -0
  123. package/dest/crypto/sha512/index.d.ts +2 -4
  124. package/dest/crypto/sha512/index.d.ts.map +1 -1
  125. package/dest/crypto/signature/index.d.ts +1 -3
  126. package/dest/crypto/signature/index.d.ts.map +1 -1
  127. package/dest/crypto/sync/index.d.ts +1 -1
  128. package/dest/crypto/sync/index.js +1 -1
  129. package/dest/crypto/sync/pedersen/index.d.ts +3 -5
  130. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
  131. package/dest/crypto/sync/pedersen/index.js +17 -10
  132. package/dest/crypto/sync/poseidon/index.d.ts +1 -3
  133. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
  134. package/dest/crypto/sync/poseidon/index.js +27 -12
  135. package/dest/decorators/index.d.ts +1 -1
  136. package/dest/decorators/memoize.d.ts +1 -1
  137. package/dest/decorators/memoize.d.ts.map +1 -1
  138. package/dest/error/index.d.ts +4 -4
  139. package/dest/error/index.d.ts.map +1 -1
  140. package/dest/eth-address/index.d.ts +16 -8
  141. package/dest/eth-address/index.d.ts.map +1 -1
  142. package/dest/eth-address/index.js +22 -0
  143. package/dest/eth-signature/eth_signature.d.ts +17 -18
  144. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  145. package/dest/eth-signature/eth_signature.js +31 -17
  146. package/dest/eth-signature/index.d.ts +1 -1
  147. package/dest/fields/bls12_fields.d.ts +148 -0
  148. package/dest/fields/bls12_fields.d.ts.map +1 -0
  149. package/dest/fields/bls12_fields.js +359 -0
  150. package/dest/fields/bls12_point.d.ts +220 -0
  151. package/dest/fields/bls12_point.d.ts.map +1 -0
  152. package/dest/fields/bls12_point.js +398 -0
  153. package/dest/fields/coordinate.d.ts +1 -6
  154. package/dest/fields/coordinate.d.ts.map +1 -1
  155. package/dest/fields/fields.d.ts +16 -4
  156. package/dest/fields/fields.d.ts.map +1 -1
  157. package/dest/fields/fields.js +57 -15
  158. package/dest/fields/index.d.ts +3 -1
  159. package/dest/fields/index.d.ts.map +1 -1
  160. package/dest/fields/index.js +2 -0
  161. package/dest/fields/point.d.ts +13 -15
  162. package/dest/fields/point.d.ts.map +1 -1
  163. package/dest/fields/point.js +20 -3
  164. package/dest/fs/index.d.ts +2 -1
  165. package/dest/fs/index.d.ts.map +1 -1
  166. package/dest/fs/index.js +1 -0
  167. package/dest/fs/run_in_dir.d.ts +1 -1
  168. package/dest/fs/try_rm_dir.d.ts +3 -0
  169. package/dest/fs/try_rm_dir.d.ts.map +1 -0
  170. package/dest/fs/try_rm_dir.js +16 -0
  171. package/dest/index.d.ts +3 -3
  172. package/dest/index.d.ts.map +1 -1
  173. package/dest/index.js +2 -2
  174. package/dest/iterable/all.d.ts +1 -1
  175. package/dest/iterable/filter.d.ts +1 -1
  176. package/dest/iterable/filter.js +1 -1
  177. package/dest/iterable/index.d.ts +1 -1
  178. package/dest/iterable/isAsyncIt.d.ts +1 -1
  179. package/dest/iterable/map.d.ts +1 -1
  180. package/dest/iterable/map.js +1 -1
  181. package/dest/iterable/peek.d.ts +1 -1
  182. package/dest/iterable/sort.d.ts +1 -1
  183. package/dest/iterable/take.d.ts +1 -1
  184. package/dest/iterable/toArray.d.ts +1 -1
  185. package/dest/jest/env.js +48 -0
  186. package/dest/jest/setupAfterEnv.js +3 -0
  187. package/dest/json-rpc/client/fetch.d.ts +3 -3
  188. package/dest/json-rpc/client/fetch.d.ts.map +1 -1
  189. package/dest/json-rpc/client/fetch.js +16 -30
  190. package/dest/json-rpc/client/index.d.ts +1 -1
  191. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +10 -4
  192. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  193. package/dest/json-rpc/client/safe_json_rpc_client.js +173 -13
  194. package/dest/json-rpc/client/undici.d.ts +1 -1
  195. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  196. package/dest/json-rpc/client/undici.js +6 -7
  197. package/dest/json-rpc/convert.d.ts +3 -10
  198. package/dest/json-rpc/convert.d.ts.map +1 -1
  199. package/dest/json-rpc/convert.js +1 -9
  200. package/dest/json-rpc/errors.d.ts +4 -0
  201. package/dest/json-rpc/errors.d.ts.map +1 -0
  202. package/dest/json-rpc/errors.js +6 -0
  203. package/dest/json-rpc/fixtures/class_a.d.ts +4 -2
  204. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
  205. package/dest/json-rpc/fixtures/class_b.d.ts +4 -2
  206. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
  207. package/dest/json-rpc/fixtures/test_state.d.ts +1 -1
  208. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
  209. package/dest/json-rpc/index.d.ts +3 -2
  210. package/dest/json-rpc/index.d.ts.map +1 -1
  211. package/dest/json-rpc/index.js +2 -1
  212. package/dest/json-rpc/js_utils.d.ts +1 -1
  213. package/dest/json-rpc/js_utils.d.ts.map +1 -1
  214. package/dest/json-rpc/server/index.d.ts +1 -1
  215. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +22 -23
  216. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  217. package/dest/json-rpc/server/safe_json_rpc_server.js +161 -56
  218. package/dest/json-rpc/server/telemetry.d.ts +1 -1
  219. package/dest/json-rpc/test/index.d.ts +1 -1
  220. package/dest/json-rpc/test/integration.d.ts +2 -3
  221. package/dest/json-rpc/test/integration.d.ts.map +1 -1
  222. package/dest/log/console.d.ts +1 -1
  223. package/dest/log/console.d.ts.map +1 -1
  224. package/dest/log/gcloud-logger-config.d.ts +1 -2
  225. package/dest/log/gcloud-logger-config.d.ts.map +1 -1
  226. package/dest/log/gcloud-logger-config.js +1 -9
  227. package/dest/log/index.d.ts +5 -5
  228. package/dest/log/index.d.ts.map +1 -1
  229. package/dest/log/index.js +4 -4
  230. package/dest/log/libp2p_logger.d.ts +1 -1
  231. package/dest/log/libp2p_logger.js +13 -2
  232. package/dest/log/log-filters.d.ts +1 -1
  233. package/dest/log/log-levels.d.ts +1 -1
  234. package/dest/log/log_fn.d.ts +2 -2
  235. package/dest/log/log_fn.d.ts.map +1 -1
  236. package/dest/log/noir_debug_log_util.d.ts +14 -0
  237. package/dest/log/noir_debug_log_util.d.ts.map +1 -0
  238. package/dest/log/noir_debug_log_util.js +14 -0
  239. package/dest/log/pino-logger.d.ts +4 -4
  240. package/dest/log/pino-logger.d.ts.map +1 -1
  241. package/dest/log/pino-logger.js +28 -2
  242. package/dest/message/index.d.ts +1 -1
  243. package/dest/message/index.d.ts.map +1 -1
  244. package/dest/mutex/index.d.ts +1 -1
  245. package/dest/mutex/index.d.ts.map +1 -1
  246. package/dest/mutex/mutex_database.d.ts +1 -1
  247. package/dest/mutex/mutex_database.d.ts.map +1 -1
  248. package/dest/noir/index.d.ts +1 -1
  249. package/dest/noir/noir_package_config.d.ts +9 -9
  250. package/dest/number/index.d.ts +3 -0
  251. package/dest/number/index.d.ts.map +1 -0
  252. package/dest/number/index.js +12 -0
  253. package/dest/profiler/index.d.ts +2 -0
  254. package/dest/profiler/index.d.ts.map +1 -0
  255. package/dest/profiler/index.js +1 -0
  256. package/dest/profiler/profiler.d.ts +8 -0
  257. package/dest/profiler/profiler.d.ts.map +1 -0
  258. package/dest/profiler/profiler.js +97 -0
  259. package/dest/promise/index.d.ts +1 -1
  260. package/dest/promise/running-promise.d.ts +2 -2
  261. package/dest/promise/running-promise.d.ts.map +1 -1
  262. package/dest/promise/running-promise.js +2 -2
  263. package/dest/promise/utils.d.ts +1 -1
  264. package/dest/queue/base_memory_queue.d.ts +1 -1
  265. package/dest/queue/base_memory_queue.d.ts.map +1 -1
  266. package/dest/queue/batch_queue.d.ts +2 -2
  267. package/dest/queue/batch_queue.d.ts.map +1 -1
  268. package/dest/queue/batch_queue.js +1 -1
  269. package/dest/queue/bounded_serial_queue.d.ts +1 -1
  270. package/dest/queue/bounded_serial_queue.d.ts.map +1 -1
  271. package/dest/queue/fifo_memory_queue.d.ts +1 -1
  272. package/dest/queue/fifo_memory_queue.d.ts.map +1 -1
  273. package/dest/queue/index.d.ts +1 -1
  274. package/dest/queue/priority_memory_queue.d.ts +1 -1
  275. package/dest/queue/priority_memory_queue.d.ts.map +1 -1
  276. package/dest/queue/priority_queue.d.ts +1 -1
  277. package/dest/queue/priority_queue.d.ts.map +1 -1
  278. package/dest/queue/semaphore.d.ts +1 -1
  279. package/dest/queue/semaphore.d.ts.map +1 -1
  280. package/dest/queue/serial_queue.d.ts +3 -3
  281. package/dest/queue/serial_queue.d.ts.map +1 -1
  282. package/dest/queue/serial_queue.js +7 -5
  283. package/dest/retry/index.d.ts +4 -3
  284. package/dest/retry/index.d.ts.map +1 -1
  285. package/dest/retry/index.js +2 -2
  286. package/dest/running-promise/index.d.ts +1 -1
  287. package/dest/schemas/api.d.ts +1 -1
  288. package/dest/schemas/api.d.ts.map +1 -1
  289. package/dest/schemas/index.d.ts +1 -1
  290. package/dest/schemas/parse.d.ts +1 -1
  291. package/dest/schemas/parse.js +1 -1
  292. package/dest/schemas/schemas.d.ts +15 -18
  293. package/dest/schemas/schemas.d.ts.map +1 -1
  294. package/dest/schemas/schemas.js +20 -8
  295. package/dest/schemas/types.d.ts +1 -1
  296. package/dest/schemas/utils.d.ts +4 -6
  297. package/dest/schemas/utils.d.ts.map +1 -1
  298. package/dest/schemas/utils.js +15 -5
  299. package/dest/serialize/buffer_reader.d.ts +28 -3
  300. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  301. package/dest/serialize/buffer_reader.js +44 -2
  302. package/dest/serialize/field_reader.d.ts +11 -2
  303. package/dest/serialize/field_reader.d.ts.map +1 -1
  304. package/dest/serialize/field_reader.js +18 -1
  305. package/dest/serialize/free_funcs.d.ts +24 -22
  306. package/dest/serialize/free_funcs.d.ts.map +1 -1
  307. package/dest/serialize/free_funcs.js +21 -27
  308. package/dest/serialize/index.d.ts +1 -1
  309. package/dest/serialize/serialize.d.ts +5 -6
  310. package/dest/serialize/serialize.d.ts.map +1 -1
  311. package/dest/serialize/type_registry.d.ts +1 -1
  312. package/dest/serialize/type_registry.d.ts.map +1 -1
  313. package/dest/serialize/types.d.ts +1 -1
  314. package/dest/sleep/index.d.ts +1 -1
  315. package/dest/sleep/index.d.ts.map +1 -1
  316. package/dest/string/index.d.ts +8 -3
  317. package/dest/string/index.d.ts.map +1 -1
  318. package/dest/string/index.js +27 -1
  319. package/dest/testing/files/index.d.ts +2 -3
  320. package/dest/testing/files/index.d.ts.map +1 -1
  321. package/dest/testing/files/index.js +3 -3
  322. package/dest/testing/formatting.d.ts +4 -0
  323. package/dest/testing/formatting.d.ts.map +1 -0
  324. package/dest/testing/formatting.js +3 -0
  325. package/dest/testing/index.d.ts +2 -1
  326. package/dest/testing/index.d.ts.map +1 -1
  327. package/dest/testing/index.js +1 -0
  328. package/dest/testing/port_allocator.d.ts +1 -1
  329. package/dest/testing/snapshot_serializer.d.ts +1 -1
  330. package/dest/testing/test_data.d.ts +1 -1
  331. package/dest/timer/date.d.ts +3 -2
  332. package/dest/timer/date.d.ts.map +1 -1
  333. package/dest/timer/date.js +5 -3
  334. package/dest/timer/elapsed.d.ts +1 -1
  335. package/dest/timer/index.d.ts +2 -2
  336. package/dest/timer/index.d.ts.map +1 -1
  337. package/dest/timer/index.js +1 -1
  338. package/dest/timer/timeout.d.ts +19 -6
  339. package/dest/timer/timeout.d.ts.map +1 -1
  340. package/dest/timer/timeout.js +43 -22
  341. package/dest/timer/timer.d.ts +1 -1
  342. package/dest/timer/timer.d.ts.map +1 -1
  343. package/dest/transport/dispatch/create_dispatch_fn.d.ts +1 -1
  344. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -1
  345. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +1 -1
  346. package/dest/transport/dispatch/messages.d.ts +1 -1
  347. package/dest/transport/index.d.ts +1 -2
  348. package/dest/transport/index.d.ts.map +1 -1
  349. package/dest/transport/index.js +0 -1
  350. package/dest/transport/interface/connector.d.ts +1 -1
  351. package/dest/transport/interface/connector.d.ts.map +1 -1
  352. package/dest/transport/interface/listener.d.ts +1 -2
  353. package/dest/transport/interface/listener.d.ts.map +1 -1
  354. package/dest/transport/interface/socket.d.ts +1 -1
  355. package/dest/transport/interface/socket.d.ts.map +1 -1
  356. package/dest/transport/interface/transferable.d.ts +1 -1
  357. package/dest/transport/node/index.d.ts +1 -1
  358. package/dest/transport/node/node_connector.d.ts +1 -2
  359. package/dest/transport/node/node_connector.d.ts.map +1 -1
  360. package/dest/transport/node/node_connector_socket.d.ts +1 -2
  361. package/dest/transport/node/node_connector_socket.d.ts.map +1 -1
  362. package/dest/transport/node/node_listener.d.ts +1 -2
  363. package/dest/transport/node/node_listener.d.ts.map +1 -1
  364. package/dest/transport/node/node_listener_socket.d.ts +1 -2
  365. package/dest/transport/node/node_listener_socket.d.ts.map +1 -1
  366. package/dest/transport/transport_client.d.ts +1 -2
  367. package/dest/transport/transport_client.d.ts.map +1 -1
  368. package/dest/transport/transport_server.d.ts +1 -10
  369. package/dest/transport/transport_server.d.ts.map +1 -1
  370. package/dest/trees/balanced_merkle_tree.d.ts +22 -0
  371. package/dest/trees/balanced_merkle_tree.d.ts.map +1 -0
  372. package/dest/trees/balanced_merkle_tree.js +64 -0
  373. package/dest/trees/hasher.d.ts +5 -7
  374. package/dest/trees/hasher.d.ts.map +1 -1
  375. package/dest/trees/index.d.ts +3 -1
  376. package/dest/trees/index.d.ts.map +1 -1
  377. package/dest/trees/index.js +2 -0
  378. package/dest/trees/indexed_merkle_tree.d.ts +1 -3
  379. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -1
  380. package/dest/trees/indexed_merkle_tree_calculator.d.ts +2 -4
  381. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  382. package/dest/trees/indexed_tree_leaf.d.ts +1 -3
  383. package/dest/trees/indexed_tree_leaf.d.ts.map +1 -1
  384. package/dest/trees/membership_witness.d.ts +5 -10
  385. package/dest/trees/membership_witness.d.ts.map +1 -1
  386. package/dest/trees/membership_witness.js +13 -0
  387. package/dest/trees/merkle_tree.d.ts +1 -3
  388. package/dest/trees/merkle_tree.d.ts.map +1 -1
  389. package/dest/trees/merkle_tree_calculator.d.ts +2 -4
  390. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  391. package/dest/trees/sibling_path.d.ts +5 -41
  392. package/dest/trees/sibling_path.d.ts.map +1 -1
  393. package/dest/trees/unbalanced_merkle_tree.d.ts +23 -10
  394. package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -1
  395. package/dest/trees/unbalanced_merkle_tree.js +72 -50
  396. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +49 -0
  397. package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -0
  398. package/dest/trees/unbalanced_merkle_tree_calculator.js +158 -0
  399. package/dest/trees/unbalanced_tree_store.d.ts +2 -1
  400. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
  401. package/dest/trees/unbalanced_tree_store.js +6 -0
  402. package/dest/types/index.d.ts +26 -3
  403. package/dest/types/index.d.ts.map +1 -1
  404. package/dest/url/index.d.ts +1 -1
  405. package/dest/url/index.d.ts.map +1 -1
  406. package/dest/url/index.js +1 -1
  407. package/dest/validation/index.d.ts +1 -1
  408. package/package.json +39 -43
  409. package/src/array/array.ts +13 -16
  410. package/src/async-pool/index.ts +1 -0
  411. package/src/bigint/index.ts +20 -0
  412. package/src/branded-types/epoch.ts +88 -0
  413. package/src/branded-types/index.ts +4 -0
  414. package/src/branded-types/slot.ts +88 -0
  415. package/src/branded-types/types.ts +2 -0
  416. package/src/buffer/buffer16.ts +133 -0
  417. package/src/buffer/buffer32.ts +8 -6
  418. package/src/buffer/index.ts +1 -0
  419. package/src/collection/array.ts +66 -4
  420. package/src/collection/object.ts +37 -0
  421. package/src/config/env_var.ts +152 -52
  422. package/src/config/index.ts +191 -8
  423. package/src/config/network_config.ts +16 -0
  424. package/src/config/network_name.ts +28 -0
  425. package/src/config/secret_value.ts +49 -0
  426. package/src/crypto/aes128/index.ts +19 -10
  427. package/src/crypto/bls/bn254_keystore.ts +287 -0
  428. package/src/crypto/bls/index.ts +77 -0
  429. package/src/crypto/bn254/bn254_utils.ts +64 -0
  430. package/src/crypto/bn254/index.ts +173 -0
  431. package/src/crypto/ecdsa/index.ts +41 -23
  432. package/src/crypto/grumpkin/index.ts +35 -45
  433. package/src/crypto/index.ts +2 -0
  434. package/src/crypto/keys/index.ts +5 -5
  435. package/src/crypto/pedersen/pedersen.wasm.ts +22 -18
  436. package/src/crypto/poseidon/index.ts +32 -24
  437. package/src/crypto/random/index.ts +2 -40
  438. package/src/crypto/schnorr/index.ts +20 -17
  439. package/src/crypto/secp256k1/index.ts +15 -11
  440. package/src/crypto/secp256k1-signer/utils.ts +120 -7
  441. package/src/crypto/sha256/index.ts +47 -0
  442. package/src/crypto/sync/index.ts +1 -1
  443. package/src/crypto/sync/pedersen/index.ts +16 -15
  444. package/src/crypto/sync/poseidon/index.ts +27 -22
  445. package/src/eth-address/index.ts +28 -2
  446. package/src/eth-signature/eth_signature.ts +44 -22
  447. package/src/fields/bls12_fields.ts +463 -0
  448. package/src/fields/bls12_point.ts +450 -0
  449. package/src/fields/fields.ts +53 -9
  450. package/src/fields/index.ts +2 -0
  451. package/src/fields/point.ts +20 -3
  452. package/src/fs/index.ts +1 -0
  453. package/src/fs/try_rm_dir.ts +15 -0
  454. package/src/index.ts +2 -2
  455. package/src/iterable/filter.ts +1 -1
  456. package/src/iterable/map.ts +1 -1
  457. package/src/jest/env.mjs +52 -0
  458. package/src/jest/setupAfterEnv.mjs +3 -0
  459. package/src/json-rpc/client/fetch.ts +14 -33
  460. package/src/json-rpc/client/safe_json_rpc_client.ts +226 -13
  461. package/src/json-rpc/client/undici.ts +8 -15
  462. package/src/json-rpc/convert.ts +3 -12
  463. package/src/json-rpc/errors.ts +6 -0
  464. package/src/json-rpc/fixtures/class_a.ts +4 -1
  465. package/src/json-rpc/fixtures/class_b.ts +4 -1
  466. package/src/json-rpc/index.ts +2 -1
  467. package/src/json-rpc/server/safe_json_rpc_server.ts +141 -48
  468. package/src/json-rpc/test/integration.ts +1 -1
  469. package/src/log/console.ts +4 -1
  470. package/src/log/gcloud-logger-config.ts +3 -7
  471. package/src/log/index.ts +4 -4
  472. package/src/log/libp2p_logger.ts +21 -2
  473. package/src/log/log_fn.ts +1 -1
  474. package/src/log/noir_debug_log_util.ts +21 -0
  475. package/src/log/pino-logger.ts +33 -2
  476. package/src/message/index.ts +5 -1
  477. package/src/mutex/mutex_database.ts +2 -3
  478. package/src/number/index.ts +14 -0
  479. package/src/profiler/index.ts +1 -0
  480. package/src/profiler/profiler.ts +125 -0
  481. package/src/promise/running-promise.ts +2 -2
  482. package/src/queue/batch_queue.ts +1 -1
  483. package/src/queue/bounded_serial_queue.ts +4 -1
  484. package/src/queue/serial_queue.ts +5 -5
  485. package/src/retry/index.ts +10 -5
  486. package/src/schemas/api.ts +4 -4
  487. package/src/schemas/parse.ts +1 -1
  488. package/src/schemas/schemas.ts +28 -10
  489. package/src/schemas/utils.ts +21 -8
  490. package/src/serialize/buffer_reader.ts +60 -3
  491. package/src/serialize/field_reader.ts +27 -3
  492. package/src/serialize/free_funcs.ts +25 -31
  493. package/src/serialize/serialize.ts +2 -0
  494. package/src/string/index.ts +36 -1
  495. package/src/testing/files/index.ts +7 -3
  496. package/src/testing/formatting.ts +3 -0
  497. package/src/testing/index.ts +1 -0
  498. package/src/timer/date.ts +9 -3
  499. package/src/timer/index.ts +1 -1
  500. package/src/timer/timeout.ts +54 -19
  501. package/src/transport/index.ts +0 -1
  502. package/src/transport/interface/connector.ts +0 -1
  503. package/src/transport/interface/listener.ts +2 -3
  504. package/src/transport/interface/socket.ts +2 -3
  505. package/src/transport/transport_client.ts +3 -4
  506. package/src/transport/transport_server.ts +4 -1
  507. package/src/trees/balanced_merkle_tree.ts +82 -0
  508. package/src/trees/hasher.ts +4 -4
  509. package/src/trees/index.ts +2 -0
  510. package/src/trees/indexed_merkle_tree.ts +5 -1
  511. package/src/trees/indexed_merkle_tree_calculator.ts +2 -2
  512. package/src/trees/membership_witness.ts +13 -0
  513. package/src/trees/merkle_tree.ts +4 -1
  514. package/src/trees/merkle_tree_calculator.ts +9 -4
  515. package/src/trees/unbalanced_merkle_tree.ts +98 -42
  516. package/src/trees/unbalanced_merkle_tree_calculator.ts +187 -0
  517. package/src/trees/unbalanced_tree_store.ts +5 -1
  518. package/src/types/index.ts +25 -4
  519. package/src/url/index.ts +0 -1
  520. package/dest/crypto/pedersen/pedersen.elliptic.d.ts +0 -13
  521. package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +0 -1
  522. package/dest/crypto/pedersen/pedersen.elliptic.js +0 -582
  523. package/dest/log/debug.d.ts +0 -56
  524. package/dest/log/debug.d.ts.map +0 -1
  525. package/dest/log/debug.js +0 -75
  526. package/dest/log/log_history.d.ts +0 -31
  527. package/dest/log/log_history.d.ts.map +0 -1
  528. package/dest/log/log_history.js +0 -38
  529. package/dest/transport/browser/index.d.ts +0 -5
  530. package/dest/transport/browser/index.d.ts.map +0 -1
  531. package/dest/transport/browser/index.js +0 -4
  532. package/dest/transport/browser/message_port_socket.d.ts +0 -37
  533. package/dest/transport/browser/message_port_socket.d.ts.map +0 -1
  534. package/dest/transport/browser/message_port_socket.js +0 -42
  535. package/dest/transport/browser/shared_worker_connector.d.ts +0 -19
  536. package/dest/transport/browser/shared_worker_connector.d.ts.map +0 -1
  537. package/dest/transport/browser/shared_worker_connector.js +0 -19
  538. package/dest/transport/browser/shared_worker_listener.d.ts +0 -38
  539. package/dest/transport/browser/shared_worker_listener.d.ts.map +0 -1
  540. package/dest/transport/browser/shared_worker_listener.js +0 -33
  541. package/dest/transport/browser/worker_connector.d.ts +0 -26
  542. package/dest/transport/browser/worker_connector.d.ts.map +0 -1
  543. package/dest/transport/browser/worker_connector.js +0 -30
  544. package/dest/transport/browser/worker_listener.d.ts +0 -39
  545. package/dest/transport/browser/worker_listener.d.ts.map +0 -1
  546. package/dest/transport/browser/worker_listener.js +0 -35
  547. package/dest/wasm/empty_wasi_sdk.d.ts +0 -130
  548. package/dest/wasm/empty_wasi_sdk.d.ts.map +0 -1
  549. package/dest/wasm/empty_wasi_sdk.js +0 -148
  550. package/dest/wasm/index.d.ts +0 -2
  551. package/dest/wasm/index.d.ts.map +0 -1
  552. package/dest/wasm/index.js +0 -1
  553. package/dest/wasm/wasm_module.d.ts +0 -136
  554. package/dest/wasm/wasm_module.d.ts.map +0 -1
  555. package/dest/wasm/wasm_module.js +0 -196
  556. package/dest/worker/browser/index.d.ts +0 -3
  557. package/dest/worker/browser/index.d.ts.map +0 -1
  558. package/dest/worker/browser/index.js +0 -2
  559. package/dest/worker/browser/start_web_module.d.ts +0 -7
  560. package/dest/worker/browser/start_web_module.d.ts.map +0 -1
  561. package/dest/worker/browser/start_web_module.js +0 -27
  562. package/dest/worker/browser/web_data_store.d.ts +0 -24
  563. package/dest/worker/browser/web_data_store.d.ts.map +0 -1
  564. package/dest/worker/browser/web_data_store.js +0 -29
  565. package/dest/worker/browser/web_worker.d.ts +0 -10
  566. package/dest/worker/browser/web_worker.d.ts.map +0 -1
  567. package/dest/worker/browser/web_worker.js +0 -25
  568. package/dest/worker/data_store.d.ts +0 -21
  569. package/dest/worker/data_store.d.ts.map +0 -1
  570. package/dest/worker/data_store.js +0 -3
  571. package/dest/worker/index.d.ts +0 -3
  572. package/dest/worker/index.d.ts.map +0 -1
  573. package/dest/worker/index.js +0 -1
  574. package/dest/worker/node/index.d.ts +0 -3
  575. package/dest/worker/node/index.d.ts.map +0 -1
  576. package/dest/worker/node/index.js +0 -2
  577. package/dest/worker/node/node_data_store.d.ts +0 -13
  578. package/dest/worker/node/node_data_store.d.ts.map +0 -1
  579. package/dest/worker/node/node_data_store.js +0 -20
  580. package/dest/worker/node/node_worker.d.ts +0 -6
  581. package/dest/worker/node/node_worker.d.ts.map +0 -1
  582. package/dest/worker/node/node_worker.js +0 -22
  583. package/dest/worker/node/start_node_module.d.ts +0 -7
  584. package/dest/worker/node/start_node_module.d.ts.map +0 -1
  585. package/dest/worker/node/start_node_module.js +0 -31
  586. package/dest/worker/wasm_worker.d.ts +0 -9
  587. package/dest/worker/wasm_worker.d.ts.map +0 -1
  588. package/dest/worker/wasm_worker.js +0 -3
  589. package/dest/worker/worker_pool.d.ts +0 -40
  590. package/dest/worker/worker_pool.d.ts.map +0 -1
  591. package/dest/worker/worker_pool.js +0 -51
  592. package/src/crypto/pedersen/pedersen.elliptic.ts +0 -584
  593. package/src/log/debug.ts +0 -104
  594. package/src/log/log_history.ts +0 -44
  595. package/src/transport/browser/index.ts +0 -4
  596. package/src/transport/browser/message_port_socket.ts +0 -48
  597. package/src/transport/browser/shared_worker_connector.ts +0 -21
  598. package/src/transport/browser/shared_worker_listener.ts +0 -53
  599. package/src/transport/browser/worker_connector.ts +0 -30
  600. package/src/transport/browser/worker_listener.ts +0 -54
  601. package/src/wasm/README.md +0 -6
  602. package/src/wasm/empty_wasi_sdk.ts +0 -166
  603. package/src/wasm/fixtures/gcd.wasm +0 -0
  604. package/src/wasm/fixtures/gcd.wat +0 -27
  605. package/src/wasm/index.ts +0 -1
  606. package/src/wasm/wasm_module.ts +0 -260
  607. package/src/worker/browser/index.ts +0 -2
  608. package/src/worker/browser/start_web_module.ts +0 -24
  609. package/src/worker/browser/web_data_store.ts +0 -38
  610. package/src/worker/browser/web_worker.ts +0 -25
  611. package/src/worker/data_store.ts +0 -19
  612. package/src/worker/index.ts +0 -2
  613. package/src/worker/node/index.ts +0 -2
  614. package/src/worker/node/node_data_store.ts +0 -27
  615. package/src/worker/node/node_worker.ts +0 -23
  616. package/src/worker/node/start_node_module.ts +0 -30
  617. package/src/worker/wasm_worker.ts +0 -7
  618. package/src/worker/worker_pool.ts +0 -73
@@ -41,6 +41,24 @@ export class EthAddress {
41
41
  return new EthAddress(Buffer.from(address.replace(/^0x/i, ''), 'hex'));
42
42
  }
43
43
 
44
+ /**
45
+ * Creates an EthAddress from a plain object without Zod validation.
46
+ * This method is optimized for performance and skips validation, making it suitable
47
+ * for deserializing trusted data (e.g., from C++ via MessagePack).
48
+ * Handles buffers (20 or 32 bytes), strings, or existing instances.
49
+ * @param obj - Plain object, buffer, string, or EthAddress instance
50
+ * @returns An EthAddress instance
51
+ */
52
+ public static fromPlainObject(obj: any): EthAddress {
53
+ if (obj instanceof EthAddress) {
54
+ return obj;
55
+ }
56
+ if (obj instanceof Buffer || Buffer.isBuffer(obj)) {
57
+ return obj.length === 20 ? new EthAddress(obj) : EthAddress.fromField(new Fr(obj));
58
+ }
59
+ return EthAddress.fromString(obj);
60
+ }
61
+
44
62
  /**
45
63
  * Create a random EthAddress instance with 20 random bytes.
46
64
  * This method generates a new Ethereum address with a randomly generated set of 20 bytes.
@@ -117,14 +135,14 @@ export class EthAddress {
117
135
  * @param address - The Ethereum address as a hex-encoded string.
118
136
  * @returns The Ethereum address in its checksum format.
119
137
  */
120
- public static toChecksumAddress(address: string) {
138
+ public static toChecksumAddress(address: string): `0x${string}` {
121
139
  if (!EthAddress.isAddress(address)) {
122
140
  throw new Error('Invalid address string.');
123
141
  }
124
142
 
125
143
  address = address.toLowerCase().replace(/^0x/i, '');
126
144
  const addressHash = keccak256String(address);
127
- let checksumAddress = '0x';
145
+ let checksumAddress: `0x${string}` = '0x';
128
146
 
129
147
  for (let i = 0; i < address.length; i++) {
130
148
  // If ith character is 9 to f then make it uppercase.
@@ -228,11 +246,19 @@ export class EthAddress {
228
246
  return new EthAddress(reader.readBytes(EthAddress.SIZE_IN_BYTES));
229
247
  }
230
248
 
249
+ /** Converts a number into an address. Useful for testing. */
250
+ static fromNumber(num: bigint | number): EthAddress {
251
+ const buffer = Buffer.alloc(EthAddress.SIZE_IN_BYTES);
252
+ buffer.writeBigUInt64BE(BigInt(num), 0);
253
+ return new EthAddress(buffer);
254
+ }
255
+
231
256
  toJSON() {
232
257
  return this.toString();
233
258
  }
234
259
 
235
260
  static get schema() {
261
+ // Serialization from hex string.
236
262
  return hexSchemaFor(EthAddress, EthAddress.isAddress);
237
263
  }
238
264
  }
@@ -5,27 +5,30 @@ import { z } from 'zod';
5
5
 
6
6
  import { hasHexPrefix, hexToBuffer } from '../string/index.js';
7
7
 
8
- /**Viem Signature
9
- *
10
- * A version of the Signature class that uses `0x${string}` values for r and s rather than
11
- * Buffer32s
8
+ /**
9
+ * A version of the Signature class that uses `0x${string}` values for r and s rather than Buffer32s
12
10
  */
13
11
  export type ViemSignature = {
14
12
  r: `0x${string}`;
15
13
  s: `0x${string}`;
16
14
  v: number;
17
- isEmpty: boolean;
15
+ };
16
+
17
+ export type ViemTransactionSignature = {
18
+ r: `0x${string}`;
19
+ s: `0x${string}`;
20
+ yParity: 0 | 1;
18
21
  };
19
22
 
20
23
  /**
21
- * Signature
22
- *
23
24
  * Contains a signature split into it's primary components (r,s,v)
24
25
  */
25
26
  export class Signature {
26
27
  // Cached values
27
28
  private size: number | undefined;
28
29
 
30
+ public readonly empty: boolean;
31
+
29
32
  constructor(
30
33
  /** The r value of the signature */
31
34
  public readonly r: Buffer32,
@@ -33,9 +36,9 @@ export class Signature {
33
36
  public readonly s: Buffer32,
34
37
  /** The v value of the signature */
35
38
  public readonly v: number,
36
- /** Does this struct store an empty signature */
37
- public readonly isEmpty: boolean = false,
38
- ) {}
39
+ ) {
40
+ this.empty = r.isZero() && s.isZero() && v === 0;
41
+ }
39
42
 
40
43
  static fromBuffer(buf: Buffer | BufferReader): Signature {
41
44
  const reader = BufferReader.asReader(buf);
@@ -44,9 +47,7 @@ export class Signature {
44
47
  const s = reader.readObject(Buffer32);
45
48
  const v = reader.readNumber();
46
49
 
47
- const isEmpty = r.isZero() && s.isZero();
48
-
49
- return new Signature(r, s, v, isEmpty);
50
+ return new Signature(r, s, v);
50
51
  }
51
52
 
52
53
  static isValidString(sig: `0x${string}`): boolean {
@@ -65,27 +66,35 @@ export class Signature {
65
66
  const s = reader.readObject(Buffer32);
66
67
  const v = parseInt(sig.slice(2 + 64 * 2), 16);
67
68
 
68
- const isEmpty = r.isZero() && s.isZero();
69
+ return new Signature(r, s, v);
70
+ }
71
+
72
+ static fromViemSignature(sig: ViemSignature): Signature {
73
+ return new Signature(Buffer32.fromBuffer(hexToBuffer(sig.r)), Buffer32.fromBuffer(hexToBuffer(sig.s)), sig.v);
74
+ }
69
75
 
70
- return new Signature(r, s, v, isEmpty);
76
+ static fromViemTransactionSignature(sig: ViemTransactionSignature): Signature {
77
+ return new Signature(Buffer32.fromBuffer(hexToBuffer(sig.r)), Buffer32.fromBuffer(hexToBuffer(sig.s)), sig.yParity);
71
78
  }
72
79
 
73
80
  static random(): Signature {
74
- return new Signature(Buffer32.random(), Buffer32.random(), Math.floor(Math.random() * 2), false);
81
+ return new Signature(Buffer32.random(), Buffer32.random(), 1);
75
82
  }
76
83
 
77
84
  static empty(): Signature {
78
- return new Signature(Buffer32.ZERO, Buffer32.ZERO, 0, true);
85
+ return new Signature(Buffer32.ZERO, Buffer32.ZERO, 0);
86
+ }
87
+
88
+ isEmpty(): boolean {
89
+ return this.empty;
79
90
  }
80
91
 
81
92
  equals(other: Signature): boolean {
82
- return this.r.equals(other.r) && this.s.equals(other.s) && this.v === other.v && this.isEmpty === other.isEmpty;
93
+ return this.r.equals(other.r) && this.s.equals(other.s) && this.v === other.v && this.empty === other.empty;
83
94
  }
84
95
 
85
96
  toBuffer(): Buffer {
86
- const buffer = serializeToBuffer([this.r, this.s, this.v]);
87
- this.size = buffer.length;
88
- return buffer;
97
+ return serializeToBuffer([this.r, this.s, this.v]);
89
98
  }
90
99
 
91
100
  getSize(): number {
@@ -110,7 +119,20 @@ export class Signature {
110
119
  r: this.r.toString(),
111
120
  s: this.s.toString(),
112
121
  v: this.v,
113
- isEmpty: this.isEmpty,
122
+ };
123
+ }
124
+
125
+ /**
126
+ * Return the signature with `0x${string}` encodings for r and s. Verifies v is valid
127
+ */
128
+ toViemTransactionSignature(): ViemTransactionSignature {
129
+ if (this.v !== 0 && this.v !== 1) {
130
+ throw new Error('Invalid transaction signature');
131
+ }
132
+ return {
133
+ r: this.r.toString(),
134
+ s: this.s.toString(),
135
+ yParity: this.v,
114
136
  };
115
137
  }
116
138
 
@@ -0,0 +1,463 @@
1
+ /* eslint-disable camelcase */
2
+ import { bls12_381 } from '@noble/curves/bls12-381';
3
+ import { inspect } from 'util';
4
+
5
+ import { toBigIntBE, toBufferBE } from '../bigint-buffer/index.js';
6
+ import { randomBytes } from '../crypto/random/index.js';
7
+ import { hexSchemaFor } from '../schemas/utils.js';
8
+ import { BufferReader } from '../serialize/buffer_reader.js';
9
+ import { TypeRegistry } from '../serialize/type_registry.js';
10
+ import { Fr } from './fields.js';
11
+
12
+ /**
13
+ * Represents a field derived from BLS12Field.
14
+ */
15
+ type BLS12DerivedField<T extends BLS12Field> = {
16
+ new (value: any): T;
17
+ /**
18
+ * All derived fields will specify MODULUS and SIZE_IN_BYTES.
19
+ */
20
+ MODULUS: bigint;
21
+ SIZE_IN_BYTES: number;
22
+ };
23
+
24
+ /**
25
+ * Base BLS12field class.
26
+ */
27
+ export abstract class BLS12Field {
28
+ private asBuffer?: Buffer;
29
+ private asBigInt?: bigint;
30
+
31
+ protected constructor(value: number | bigint | Buffer) {
32
+ if (Buffer.isBuffer(value)) {
33
+ if (value.length > this.size()) {
34
+ throw new Error(`Value length ${value.length} exceeds ${this.size()}`);
35
+ }
36
+ this.asBuffer =
37
+ value.length === this.size() ? value : Buffer.concat([Buffer.alloc(this.size() - value.length), value]);
38
+ this.toBigInt();
39
+ } else if (typeof value === 'bigint' || typeof value === 'number') {
40
+ this.asBigInt = BigInt(value);
41
+ if (this.asBigInt >= this.modulus()) {
42
+ throw new Error(`Value 0x${this.asBigInt.toString(16)} is greater or equal to field modulus.`);
43
+ }
44
+ this.toBuffer();
45
+ } else {
46
+ throw new Error(`Type '${typeof value}' with value '${value}' passed to BLS12Field constructor.`);
47
+ }
48
+ }
49
+
50
+ protected abstract modulus(): bigint;
51
+ protected abstract size(): number;
52
+
53
+ /**
54
+ * We return a copy of the Buffer to ensure this remains immutable.
55
+ */
56
+ toBuffer(): Buffer {
57
+ if (!this.asBuffer) {
58
+ this.asBuffer = toBufferBE(this.asBigInt!, this.size());
59
+ }
60
+ return Buffer.from(this.asBuffer);
61
+ }
62
+
63
+ toString(): `0x${string}` {
64
+ return `0x${this.toBuffer().toString('hex')}`;
65
+ }
66
+
67
+ toBigInt(): bigint {
68
+ if (this.asBigInt === undefined) {
69
+ this.asBigInt = toBigIntBE(this.asBuffer!);
70
+ if (this.asBigInt >= this.modulus()) {
71
+ throw new Error(`Value 0x${this.asBigInt.toString(16)} is greater or equal to field modulus.`);
72
+ }
73
+ }
74
+ return this.asBigInt;
75
+ }
76
+
77
+ toNoirBigNum(): { limbs: string[] } {
78
+ const buffer = this.toBuffer();
79
+ const limbs = [];
80
+ // Split into 120 bit (=15 byte) limbs
81
+ for (let i = 0; i < Math.ceil(this.size() / 15); i++) {
82
+ limbs.push(buffer.subarray(-(i + 1) * 15, this.size() - i * 15));
83
+ }
84
+ return {
85
+ limbs: limbs.map(l => `0x${l.toString('hex')}`),
86
+ };
87
+ }
88
+
89
+ equals(rhs: BLS12Field): boolean {
90
+ return this.toBuffer().equals(rhs.toBuffer());
91
+ }
92
+
93
+ lt(rhs: BLS12Field): boolean {
94
+ return this.toBigInt() < rhs.toBigInt();
95
+ }
96
+
97
+ isZero(): boolean {
98
+ return this.toBigInt() === 0n;
99
+ }
100
+
101
+ isEmpty(): boolean {
102
+ return this.isZero();
103
+ }
104
+
105
+ isNegative(): boolean {
106
+ // Returns whether the field element is above the halfway point of (p-1)/2
107
+ // Generally referred to as 'negative' but also referred to as 'greater' (e.g. in point compression)
108
+ return this.toBigInt() > (this.modulus() - 1n) / 2n;
109
+ }
110
+
111
+ toFriendlyJSON(): string {
112
+ return this.toString();
113
+ }
114
+
115
+ toField() {
116
+ return this;
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Constructs a field from a Buffer of BufferReader.
122
+ * It maybe not read the full SIZE_IN_BYTES bytes if the Buffer is shorter, but it will padded in BLS12Field constructor.
123
+ */
124
+ function fromBuffer<T extends BLS12Field>(buffer: Buffer | BufferReader, f: BLS12DerivedField<T>) {
125
+ const reader = BufferReader.asReader(buffer);
126
+ return new f(reader.readBytes(f.SIZE_IN_BYTES));
127
+ }
128
+
129
+ /**
130
+ * Returns a random field element.
131
+ */
132
+ function random<T extends BLS12Field>(f: BLS12DerivedField<T>): T {
133
+ return new f(toBigIntBE(randomBytes(f.SIZE_IN_BYTES * 2)) % f.MODULUS);
134
+ }
135
+
136
+ /**
137
+ * Constructs a field from a 0x prefixed hex string.
138
+ */
139
+ function fromHexString<T extends BLS12Field>(str: string, f: BLS12DerivedField<T>) {
140
+ return new f(bufferFromHexString(str));
141
+ }
142
+
143
+ /**
144
+ * Constructs a field from noir BigNum type.
145
+ */
146
+ function fromNoirBigNum<T extends BLS12Field>(bignum: { limbs: string[] }, f: BLS12DerivedField<T>) {
147
+ // We have 120 bit (=15 byte) limbs
148
+ let bigint = 0n;
149
+ for (let i = 0; i < bignum.limbs.length; i++) {
150
+ bigint += BigInt(bignum.limbs[i]) << BigInt(120 * i);
151
+ }
152
+ return new f(bigint);
153
+ }
154
+
155
+ /**
156
+ * Constructs a buffer from a hex string.
157
+ * Differs from bigint-buffer's fromHex() by allowing odd number of characters.
158
+ */
159
+ function bufferFromHexString(str: string) {
160
+ const withoutPrefix = str.replace(/^0x/i, '');
161
+ const checked = withoutPrefix.match(/^[0-9A-F]+$/i)?.[0];
162
+ if (checked === undefined) {
163
+ throw new Error(`Invalid hex-encoded string: "${str}"`);
164
+ }
165
+ return Buffer.from(checked.length % 2 === 1 ? '0' + checked : checked, 'hex');
166
+ }
167
+
168
+ /**
169
+ * Fr field class.
170
+ * @dev This class is used to represent elements of BLS12-381 scalar field.
171
+ */
172
+ export class BLS12Fr extends BLS12Field {
173
+ static SIZE_IN_BYTES = bls12_381.fields.Fr.BYTES;
174
+ static MODULUS = bls12_381.fields.Fr.ORDER;
175
+ static ZERO = new BLS12Fr(0n);
176
+ static ONE = new BLS12Fr(1n);
177
+ static MAX_FIELD_VALUE = new BLS12Fr(this.MODULUS - 1n);
178
+
179
+ constructor(value: number | bigint | Buffer) {
180
+ super(value);
181
+ }
182
+
183
+ [inspect.custom]() {
184
+ return `BLS12Fr<${this.toString()}>`;
185
+ }
186
+
187
+ protected modulus() {
188
+ return BLS12Fr.MODULUS;
189
+ }
190
+
191
+ protected size() {
192
+ return BLS12Fr.SIZE_IN_BYTES;
193
+ }
194
+
195
+ static random() {
196
+ return random(BLS12Fr);
197
+ }
198
+
199
+ static zero() {
200
+ return BLS12Fr.ZERO;
201
+ }
202
+
203
+ static isZero(value: BLS12Fr) {
204
+ return value.isZero();
205
+ }
206
+
207
+ static fromBuffer(buffer: Buffer | BufferReader) {
208
+ return fromBuffer(buffer, BLS12Fr);
209
+ }
210
+
211
+ /**
212
+ * Creates a BLS12Fr instance from a string.
213
+ * @param buf - the string to create a BLS12Fr from.
214
+ * @returns the BLS12Fr instance
215
+ * @remarks if the string only consists of numbers, we assume we are parsing a bigint,
216
+ * otherwise we require the hex string to be prepended with "0x", to ensure there is no misunderstanding
217
+ * as to what is being parsed.
218
+ */
219
+ static fromString(buf: string) {
220
+ if (buf.match(/^\d+$/) !== null) {
221
+ return new BLS12Fr(toBufferBE(BigInt(buf), BLS12Fr.SIZE_IN_BYTES));
222
+ }
223
+ if (buf.match(/^0x/i) !== null) {
224
+ return fromHexString(buf, BLS12Fr);
225
+ }
226
+
227
+ throw new Error(`Tried to create a BLS12Fr from an invalid string: ${buf}`);
228
+ }
229
+
230
+ /**
231
+ * Creates a BLS12Fr instance from a hex string.
232
+ * @param buf - a hex encoded string.
233
+ * @returns the BLS12Fr instance
234
+ */
235
+ static fromHexString(buf: string) {
236
+ return fromHexString(buf, BLS12Fr);
237
+ }
238
+
239
+ /**
240
+ * Constructs a field from noir BigNum type.
241
+ */
242
+ static fromNoirBigNum(bignum: { limbs: string[] }) {
243
+ return fromNoirBigNum(bignum, BLS12Fr);
244
+ }
245
+
246
+ /**
247
+ * Creates a BLS12Fr instance from a BN254 Fr instance.
248
+ * @dev The BN254 field size < BLS12_381, so we cannot overflow here.
249
+ * Useful for blob related calculations.
250
+ * @param field - a BN254 Fr instance.
251
+ * @returns the BLS12Fr instance
252
+ */
253
+ static fromBN254Fr(field: Fr) {
254
+ return BLS12Fr.fromBuffer(field.toBuffer());
255
+ }
256
+
257
+ /**
258
+ * Creates a BN254 Fr instance from a BLS12Fr instance.
259
+ * @dev The BN254 field size < BLS12_381, so we must check the size here
260
+ * Useful for blob related calculations.
261
+ * @param field - a BLS12Fr instance.
262
+ * @returns the BN254 Fr instance
263
+ */
264
+ toBN254Fr() {
265
+ if (this.toBigInt() >= Fr.MODULUS) {
266
+ throw new Error(`BLS12-381 Fr field ${this} too large to be converted into a BN254 Fr field`);
267
+ }
268
+ return Fr.fromBuffer(this.toBuffer());
269
+ }
270
+
271
+ /** Arithmetic - wrapper around noble curves */
272
+
273
+ add(rhs: BLS12Fr) {
274
+ return new BLS12Fr(bls12_381.fields.Fr.add(this.toBigInt(), rhs.toBigInt()));
275
+ }
276
+
277
+ square() {
278
+ return new BLS12Fr(bls12_381.fields.Fr.sqr(this.toBigInt()));
279
+ }
280
+
281
+ negate() {
282
+ return new BLS12Fr(bls12_381.fields.Fr.neg(this.toBigInt()));
283
+ }
284
+
285
+ sub(rhs: BLS12Fr) {
286
+ return new BLS12Fr(bls12_381.fields.Fr.sub(this.toBigInt(), rhs.toBigInt()));
287
+ }
288
+
289
+ mul(rhs: BLS12Fr) {
290
+ return new BLS12Fr(bls12_381.fields.Fr.mul(this.toBigInt(), rhs.toBigInt()));
291
+ }
292
+
293
+ div(rhs: BLS12Fr) {
294
+ return new BLS12Fr(bls12_381.fields.Fr.div(this.toBigInt(), rhs.toBigInt()));
295
+ }
296
+
297
+ sqrt() {
298
+ // The noble library throws when the field does not have a sqrt.
299
+ // We would rather have it return null to avoid throwing when (e.g.) checking candidates.
300
+ let res;
301
+ try {
302
+ res = bls12_381.fields.Fr.sqrt(this.toBigInt());
303
+ } catch (error: any) {
304
+ if (error.message.includes('Cannot find square root')) {
305
+ return null;
306
+ } else {
307
+ throw error;
308
+ }
309
+ }
310
+ return new BLS12Fr(res);
311
+ }
312
+
313
+ pow(rhs: bigint) {
314
+ return new BLS12Fr(bls12_381.fields.Fr.pow(this.toBigInt(), rhs));
315
+ }
316
+
317
+ toJSON() {
318
+ return this.toString();
319
+ }
320
+
321
+ static get schema() {
322
+ return hexSchemaFor(BLS12Fr);
323
+ }
324
+ }
325
+
326
+ // For deserializing JSON.
327
+ TypeRegistry.register('BLS12Fr', BLS12Fr);
328
+
329
+ /**
330
+ * Fq field class.
331
+ * @dev This class is used to represent elements of BLS12-381 base field.
332
+ */
333
+ export class BLS12Fq extends BLS12Field {
334
+ static SIZE_IN_BYTES = bls12_381.fields.Fp.BYTES;
335
+ static MODULUS = bls12_381.fields.Fp.ORDER;
336
+ static ZERO = new BLS12Fq(0n);
337
+ static ONE = new BLS12Fq(1n);
338
+ static MAX_FIELD_VALUE = new BLS12Fq(this.MODULUS - 1n);
339
+
340
+ constructor(value: number | bigint | Buffer) {
341
+ super(value);
342
+ }
343
+
344
+ [inspect.custom]() {
345
+ return `BLS12Fq<${this.toString()}>`;
346
+ }
347
+
348
+ protected modulus() {
349
+ return BLS12Fq.MODULUS;
350
+ }
351
+
352
+ protected size() {
353
+ return BLS12Fq.SIZE_IN_BYTES;
354
+ }
355
+
356
+ static random() {
357
+ return random(BLS12Fq);
358
+ }
359
+
360
+ static zero() {
361
+ return BLS12Fq.ZERO;
362
+ }
363
+
364
+ static isZero(value: BLS12Fq) {
365
+ return value.isZero();
366
+ }
367
+
368
+ static fromBuffer(buffer: Buffer | BufferReader) {
369
+ return fromBuffer(buffer, BLS12Fq);
370
+ }
371
+
372
+ /**
373
+ * Creates a BLS12Fq instance from a string.
374
+ * @param buf - the string to create a BLS12Fq from.
375
+ * @returns the BLS12Fq instance
376
+ * @remarks if the string only consists of numbers, we assume we are parsing a bigint,
377
+ * otherwise we require the hex string to be prepended with "0x", to ensure there is no misunderstanding
378
+ * as to what is being parsed.
379
+ */
380
+ static fromString(buf: string) {
381
+ if (buf.match(/^\d+$/) !== null) {
382
+ return new BLS12Fq(toBufferBE(BigInt(buf), BLS12Fq.SIZE_IN_BYTES));
383
+ }
384
+ if (buf.match(/^0x/i) !== null) {
385
+ return fromHexString(buf, BLS12Fq);
386
+ }
387
+
388
+ throw new Error(`Tried to create a BLS12Fq from an invalid string: ${buf}`);
389
+ }
390
+
391
+ /**
392
+ * Creates a BLS12Fq instance from a hex string.
393
+ * @param buf - a hex encoded string.
394
+ * @returns the BLS12Fq instance
395
+ */
396
+ static fromHexString(buf: string) {
397
+ return fromHexString(buf, BLS12Fq);
398
+ }
399
+
400
+ /**
401
+ * Constructs a field from noir BigNum type.
402
+ */
403
+ static fromNoirBigNum(bignum: { limbs: string[] }) {
404
+ return fromNoirBigNum(bignum, BLS12Fq);
405
+ }
406
+
407
+ /** Arithmetic - wrapper around noble curves */
408
+
409
+ add(rhs: BLS12Fq) {
410
+ return new BLS12Fq(bls12_381.fields.Fp.add(this.toBigInt(), rhs.toBigInt()));
411
+ }
412
+
413
+ square() {
414
+ return new BLS12Fq(bls12_381.fields.Fp.sqr(this.toBigInt()));
415
+ }
416
+
417
+ negate() {
418
+ return new BLS12Fq(bls12_381.fields.Fp.neg(this.toBigInt()));
419
+ }
420
+
421
+ sub(rhs: BLS12Fq) {
422
+ return new BLS12Fq(bls12_381.fields.Fp.sub(this.toBigInt(), rhs.toBigInt()));
423
+ }
424
+
425
+ mul(rhs: BLS12Fq) {
426
+ return new BLS12Fq(bls12_381.fields.Fp.mul(this.toBigInt(), rhs.toBigInt()));
427
+ }
428
+
429
+ div(rhs: BLS12Fq) {
430
+ return new BLS12Fq(bls12_381.fields.Fp.div(this.toBigInt(), rhs.toBigInt()));
431
+ }
432
+
433
+ sqrt() {
434
+ // The noble library throws when the field does not have a sqrt.
435
+ // We would rather have it return null to avoid throwing when (e.g.) checking candidates.
436
+ let res;
437
+ try {
438
+ res = bls12_381.fields.Fp.sqrt(this.toBigInt());
439
+ } catch (error: any) {
440
+ if (error.message.includes('Cannot find square root')) {
441
+ return null;
442
+ } else {
443
+ throw error;
444
+ }
445
+ }
446
+ return new BLS12Fq(res);
447
+ }
448
+
449
+ pow(rhs: bigint) {
450
+ return new BLS12Fq(bls12_381.fields.Fp.pow(this.toBigInt(), rhs));
451
+ }
452
+
453
+ toJSON() {
454
+ return this.toString();
455
+ }
456
+
457
+ static get schema() {
458
+ return hexSchemaFor(BLS12Fq);
459
+ }
460
+ }
461
+
462
+ // For deserializing JSON.
463
+ TypeRegistry.register('BLS12Fq', BLS12Fq);