@aztec/foundation 0.0.0-test.0

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 (736) hide show
  1. package/README.md +1 -0
  2. package/dest/array/array.d.ts +71 -0
  3. package/dest/array/array.d.ts.map +1 -0
  4. package/dest/array/array.js +100 -0
  5. package/dest/array/index.d.ts +2 -0
  6. package/dest/array/index.d.ts.map +1 -0
  7. package/dest/array/index.js +1 -0
  8. package/dest/async-map/index.d.ts +13 -0
  9. package/dest/async-map/index.d.ts.map +1 -0
  10. package/dest/async-map/index.js +17 -0
  11. package/dest/async-pool/index.d.ts +3 -0
  12. package/dest/async-pool/index.d.ts.map +1 -0
  13. package/dest/async-pool/index.js +47 -0
  14. package/dest/bigint-buffer/index.d.ts +42 -0
  15. package/dest/bigint-buffer/index.d.ts.map +1 -0
  16. package/dest/bigint-buffer/index.js +76 -0
  17. package/dest/buffer/buffer32.d.ts +91 -0
  18. package/dest/buffer/buffer32.d.ts.map +1 -0
  19. package/dest/buffer/buffer32.js +115 -0
  20. package/dest/buffer/index.d.ts +2 -0
  21. package/dest/buffer/index.d.ts.map +1 -0
  22. package/dest/buffer/index.js +1 -0
  23. package/dest/collection/array.d.ts +101 -0
  24. package/dest/collection/array.d.ts.map +1 -0
  25. package/dest/collection/array.js +164 -0
  26. package/dest/collection/index.d.ts +3 -0
  27. package/dest/collection/index.d.ts.map +1 -0
  28. package/dest/collection/index.js +2 -0
  29. package/dest/collection/object.d.ts +14 -0
  30. package/dest/collection/object.d.ts.map +1 -0
  31. package/dest/collection/object.js +32 -0
  32. package/dest/committable/committable.d.ts +28 -0
  33. package/dest/committable/committable.d.ts.map +1 -0
  34. package/dest/committable/committable.js +36 -0
  35. package/dest/committable/index.d.ts +2 -0
  36. package/dest/committable/index.d.ts.map +1 -0
  37. package/dest/committable/index.js +1 -0
  38. package/dest/config/env_var.d.ts +2 -0
  39. package/dest/config/env_var.d.ts.map +1 -0
  40. package/dest/config/env_var.js +1 -0
  41. package/dest/config/index.d.ts +66 -0
  42. package/dest/config/index.d.ts.map +1 -0
  43. package/dest/config/index.js +125 -0
  44. package/dest/crypto/aes128/index.d.ts +34 -0
  45. package/dest/crypto/aes128/index.d.ts.map +1 -0
  46. package/dest/crypto/aes128/index.js +49 -0
  47. package/dest/crypto/ecdsa/index.d.ts +39 -0
  48. package/dest/crypto/ecdsa/index.d.ts.map +1 -0
  49. package/dest/crypto/ecdsa/index.js +88 -0
  50. package/dest/crypto/ecdsa/signature.d.ts +71 -0
  51. package/dest/crypto/ecdsa/signature.d.ts.map +1 -0
  52. package/dest/crypto/ecdsa/signature.js +92 -0
  53. package/dest/crypto/grumpkin/index.d.ts +47 -0
  54. package/dest/crypto/grumpkin/index.d.ts.map +1 -0
  55. package/dest/crypto/grumpkin/index.js +154 -0
  56. package/dest/crypto/index.d.ts +15 -0
  57. package/dest/crypto/index.d.ts.map +1 -0
  58. package/dest/crypto/index.js +14 -0
  59. package/dest/crypto/keccak/index.d.ts +28 -0
  60. package/dest/crypto/keccak/index.d.ts.map +1 -0
  61. package/dest/crypto/keccak/index.js +248 -0
  62. package/dest/crypto/keys/index.d.ts +5 -0
  63. package/dest/crypto/keys/index.d.ts.map +1 -0
  64. package/dest/crypto/keys/index.js +7 -0
  65. package/dest/crypto/pedersen/index.d.ts +2 -0
  66. package/dest/crypto/pedersen/index.d.ts.map +1 -0
  67. package/dest/crypto/pedersen/index.js +1 -0
  68. package/dest/crypto/pedersen/pedersen.elliptic.d.ts +13 -0
  69. package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +1 -0
  70. package/dest/crypto/pedersen/pedersen.elliptic.js +582 -0
  71. package/dest/crypto/pedersen/pedersen.noble.d.ts +11 -0
  72. package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -0
  73. package/dest/crypto/pedersen/pedersen.noble.js +558 -0
  74. package/dest/crypto/pedersen/pedersen.wasm.d.ts +21 -0
  75. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -0
  76. package/dest/crypto/pedersen/pedersen.wasm.js +41 -0
  77. package/dest/crypto/poseidon/index.d.ts +26 -0
  78. package/dest/crypto/poseidon/index.d.ts.map +1 -0
  79. package/dest/crypto/poseidon/index.js +58 -0
  80. package/dest/crypto/random/index.d.ts +25 -0
  81. package/dest/crypto/random/index.d.ts.map +1 -0
  82. package/dest/crypto/random/index.js +70 -0
  83. package/dest/crypto/random/randomness_singleton.d.ts +25 -0
  84. package/dest/crypto/random/randomness_singleton.d.ts.map +1 -0
  85. package/dest/crypto/random/randomness_singleton.js +55 -0
  86. package/dest/crypto/schnorr/index.d.ts +30 -0
  87. package/dest/crypto/schnorr/index.d.ts.map +1 -0
  88. package/dest/crypto/schnorr/index.js +68 -0
  89. package/dest/crypto/schnorr/signature.d.ts +70 -0
  90. package/dest/crypto/schnorr/signature.d.ts.map +1 -0
  91. package/dest/crypto/schnorr/signature.js +93 -0
  92. package/dest/crypto/secp256k1/index.d.ts +32 -0
  93. package/dest/crypto/secp256k1/index.d.ts.map +1 -0
  94. package/dest/crypto/secp256k1/index.js +116 -0
  95. package/dest/crypto/secp256k1-signer/index.d.ts +3 -0
  96. package/dest/crypto/secp256k1-signer/index.d.ts.map +1 -0
  97. package/dest/crypto/secp256k1-signer/index.js +2 -0
  98. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts +24 -0
  99. package/dest/crypto/secp256k1-signer/secp256k1_signer.d.ts.map +1 -0
  100. package/dest/crypto/secp256k1-signer/secp256k1_signer.js +30 -0
  101. package/dest/crypto/secp256k1-signer/utils.d.ts +40 -0
  102. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -0
  103. package/dest/crypto/secp256k1-signer/utils.js +84 -0
  104. package/dest/crypto/serialize.d.ts +53 -0
  105. package/dest/crypto/serialize.d.ts.map +1 -0
  106. package/dest/crypto/serialize.js +68 -0
  107. package/dest/crypto/sha256/index.d.ts +20 -0
  108. package/dest/crypto/sha256/index.d.ts.map +1 -0
  109. package/dest/crypto/sha256/index.js +166 -0
  110. package/dest/crypto/sha512/index.d.ts +11 -0
  111. package/dest/crypto/sha512/index.d.ts.map +1 -0
  112. package/dest/crypto/sha512/index.js +12 -0
  113. package/dest/crypto/signature/index.d.ts +19 -0
  114. package/dest/crypto/signature/index.d.ts.map +1 -0
  115. package/dest/crypto/signature/index.js +3 -0
  116. package/dest/crypto/sync/index.d.ts +3 -0
  117. package/dest/crypto/sync/index.d.ts.map +1 -0
  118. package/dest/crypto/sync/index.js +4 -0
  119. package/dest/crypto/sync/pedersen/index.d.ts +21 -0
  120. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -0
  121. package/dest/crypto/sync/pedersen/index.js +38 -0
  122. package/dest/crypto/sync/poseidon/index.d.ts +26 -0
  123. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -0
  124. package/dest/crypto/sync/poseidon/index.js +53 -0
  125. package/dest/decorators/index.d.ts +2 -0
  126. package/dest/decorators/index.d.ts.map +1 -0
  127. package/dest/decorators/index.js +1 -0
  128. package/dest/decorators/memoize.d.ts +2 -0
  129. package/dest/decorators/memoize.d.ts.map +1 -0
  130. package/dest/decorators/memoize.js +11 -0
  131. package/dest/error/index.d.ts +21 -0
  132. package/dest/error/index.d.ts.map +1 -0
  133. package/dest/error/index.js +17 -0
  134. package/dest/eth-address/index.d.ts +134 -0
  135. package/dest/eth-address/index.d.ts.map +1 -0
  136. package/dest/eth-address/index.js +198 -0
  137. package/dest/eth-signature/eth_signature.d.ts +62 -0
  138. package/dest/eth-signature/eth_signature.d.ts.map +1 -0
  139. package/dest/eth-signature/eth_signature.js +91 -0
  140. package/dest/eth-signature/index.d.ts +2 -0
  141. package/dest/eth-signature/index.d.ts.map +1 -0
  142. package/dest/eth-signature/index.js +1 -0
  143. package/dest/fields/coordinate.d.ts +68 -0
  144. package/dest/fields/coordinate.d.ts.map +1 -0
  145. package/dest/fields/coordinate.js +96 -0
  146. package/dest/fields/fields.d.ts +176 -0
  147. package/dest/fields/fields.d.ts.map +1 -0
  148. package/dest/fields/fields.js +383 -0
  149. package/dest/fields/index.d.ts +4 -0
  150. package/dest/fields/index.d.ts.map +1 -0
  151. package/dest/fields/index.js +3 -0
  152. package/dest/fields/point.d.ts +175 -0
  153. package/dest/fields/point.d.ts.map +1 -0
  154. package/dest/fields/point.js +260 -0
  155. package/dest/fs/index.d.ts +2 -0
  156. package/dest/fs/index.d.ts.map +1 -0
  157. package/dest/fs/index.js +1 -0
  158. package/dest/fs/run_in_dir.d.ts +2 -0
  159. package/dest/fs/run_in_dir.d.ts.map +1 -0
  160. package/dest/fs/run_in_dir.js +31 -0
  161. package/dest/index.d.ts +31 -0
  162. package/dest/index.d.ts.map +1 -0
  163. package/dest/index.js +31 -0
  164. package/dest/iterable/all.d.ts +9 -0
  165. package/dest/iterable/all.d.ts.map +1 -0
  166. package/dest/iterable/all.js +18 -0
  167. package/dest/iterable/filter.d.ts +10 -0
  168. package/dest/iterable/filter.d.ts.map +1 -0
  169. package/dest/iterable/filter.js +48 -0
  170. package/dest/iterable/index.d.ts +8 -0
  171. package/dest/iterable/index.d.ts.map +1 -0
  172. package/dest/iterable/index.js +7 -0
  173. package/dest/iterable/isAsyncIt.d.ts +7 -0
  174. package/dest/iterable/isAsyncIt.d.ts.map +1 -0
  175. package/dest/iterable/isAsyncIt.js +7 -0
  176. package/dest/iterable/map.d.ts +12 -0
  177. package/dest/iterable/map.d.ts.map +1 -0
  178. package/dest/iterable/map.js +36 -0
  179. package/dest/iterable/peek.d.ts +19 -0
  180. package/dest/iterable/peek.d.ts.map +1 -0
  181. package/dest/iterable/peek.js +33 -0
  182. package/dest/iterable/sort.d.ts +14 -0
  183. package/dest/iterable/sort.d.ts.map +1 -0
  184. package/dest/iterable/sort.js +15 -0
  185. package/dest/iterable/take.d.ts +10 -0
  186. package/dest/iterable/take.d.ts.map +1 -0
  187. package/dest/iterable/take.js +32 -0
  188. package/dest/iterable/toArray.d.ts +2 -0
  189. package/dest/iterable/toArray.d.ts.map +1 -0
  190. package/dest/iterable/toArray.js +7 -0
  191. package/dest/jest/setup.js +7 -0
  192. package/dest/json-rpc/client/fetch.d.ts +32 -0
  193. package/dest/json-rpc/client/fetch.d.ts.map +1 -0
  194. package/dest/json-rpc/client/fetch.js +77 -0
  195. package/dest/json-rpc/client/index.d.ts +3 -0
  196. package/dest/json-rpc/client/index.d.ts.map +1 -0
  197. package/dest/json-rpc/client/index.js +2 -0
  198. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +26 -0
  199. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -0
  200. package/dest/json-rpc/client/safe_json_rpc_client.js +57 -0
  201. package/dest/json-rpc/client/undici.d.ts +5 -0
  202. package/dest/json-rpc/client/undici.d.ts.map +1 -0
  203. package/dest/json-rpc/client/undici.js +63 -0
  204. package/dest/json-rpc/convert.d.ts +27 -0
  205. package/dest/json-rpc/convert.d.ts.map +1 -0
  206. package/dest/json-rpc/convert.js +48 -0
  207. package/dest/json-rpc/fixtures/class_a.d.ts +11 -0
  208. package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -0
  209. package/dest/json-rpc/fixtures/class_a.js +20 -0
  210. package/dest/json-rpc/fixtures/class_b.d.ts +11 -0
  211. package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -0
  212. package/dest/json-rpc/fixtures/class_b.js +20 -0
  213. package/dest/json-rpc/fixtures/test_state.d.ts +89 -0
  214. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -0
  215. package/dest/json-rpc/fixtures/test_state.js +131 -0
  216. package/dest/json-rpc/index.d.ts +2 -0
  217. package/dest/json-rpc/index.d.ts.map +1 -0
  218. package/dest/json-rpc/index.js +1 -0
  219. package/dest/json-rpc/js_utils.d.ts +13 -0
  220. package/dest/json-rpc/js_utils.d.ts.map +1 -0
  221. package/dest/json-rpc/js_utils.js +16 -0
  222. package/dest/json-rpc/server/index.d.ts +2 -0
  223. package/dest/json-rpc/server/index.d.ts.map +1 -0
  224. package/dest/json-rpc/server/index.js +1 -0
  225. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +140 -0
  226. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -0
  227. package/dest/json-rpc/server/safe_json_rpc_server.js +346 -0
  228. package/dest/json-rpc/server/telemetry.d.ts +2 -0
  229. package/dest/json-rpc/server/telemetry.d.ts.map +1 -0
  230. package/dest/json-rpc/server/telemetry.js +0 -0
  231. package/dest/json-rpc/test/index.d.ts +2 -0
  232. package/dest/json-rpc/test/index.d.ts.map +1 -0
  233. package/dest/json-rpc/test/index.js +1 -0
  234. package/dest/json-rpc/test/integration.d.ts +15 -0
  235. package/dest/json-rpc/test/integration.d.ts.map +1 -0
  236. package/dest/json-rpc/test/integration.js +21 -0
  237. package/dest/log/console.d.ts +11 -0
  238. package/dest/log/console.d.ts.map +1 -0
  239. package/dest/log/console.js +36 -0
  240. package/dest/log/debug.d.ts +56 -0
  241. package/dest/log/debug.d.ts.map +1 -0
  242. package/dest/log/debug.js +75 -0
  243. package/dest/log/gcloud-logger-config.d.ts +14 -0
  244. package/dest/log/gcloud-logger-config.d.ts.map +1 -0
  245. package/dest/log/gcloud-logger-config.js +66 -0
  246. package/dest/log/index.d.ts +7 -0
  247. package/dest/log/index.d.ts.map +1 -0
  248. package/dest/log/index.js +6 -0
  249. package/dest/log/libp2p_logger.d.ts +7 -0
  250. package/dest/log/libp2p_logger.d.ts.map +1 -0
  251. package/dest/log/libp2p_logger.js +55 -0
  252. package/dest/log/log-filters.d.ts +7 -0
  253. package/dest/log/log-filters.d.ts.map +1 -0
  254. package/dest/log/log-filters.js +59 -0
  255. package/dest/log/log-levels.d.ts +3 -0
  256. package/dest/log/log-levels.d.ts.map +1 -0
  257. package/dest/log/log-levels.js +10 -0
  258. package/dest/log/log_fn.d.ts +7 -0
  259. package/dest/log/log_fn.d.ts.map +1 -0
  260. package/dest/log/log_fn.js +1 -0
  261. package/dest/log/log_history.d.ts +31 -0
  262. package/dest/log/log_history.d.ts.map +1 -0
  263. package/dest/log/log_history.js +38 -0
  264. package/dest/log/pino-logger.d.ts +57 -0
  265. package/dest/log/pino-logger.d.ts.map +1 -0
  266. package/dest/log/pino-logger.js +207 -0
  267. package/dest/message/index.d.ts +32 -0
  268. package/dest/message/index.d.ts.map +1 -0
  269. package/dest/message/index.js +27 -0
  270. package/dest/mutex/index.d.ts +53 -0
  271. package/dest/mutex/index.d.ts.map +1 -0
  272. package/dest/mutex/index.js +78 -0
  273. package/dest/mutex/mutex_database.d.ts +10 -0
  274. package/dest/mutex/mutex_database.d.ts.map +1 -0
  275. package/dest/mutex/mutex_database.js +4 -0
  276. package/dest/noir/index.d.ts +2 -0
  277. package/dest/noir/index.d.ts.map +1 -0
  278. package/dest/noir/index.js +1 -0
  279. package/dest/noir/noir_package_config.d.ts +129 -0
  280. package/dest/noir/noir_package_config.d.ts.map +1 -0
  281. package/dest/noir/noir_package_config.js +36 -0
  282. package/dest/promise/index.d.ts +3 -0
  283. package/dest/promise/index.d.ts.map +1 -0
  284. package/dest/promise/index.js +2 -0
  285. package/dest/promise/running-promise.d.ts +47 -0
  286. package/dest/promise/running-promise.d.ts.map +1 -0
  287. package/dest/promise/running-promise.js +110 -0
  288. package/dest/promise/utils.d.ts +12 -0
  289. package/dest/promise/utils.d.ts.map +1 -0
  290. package/dest/promise/utils.js +20 -0
  291. package/dest/queue/base_memory_queue.d.ts +65 -0
  292. package/dest/queue/base_memory_queue.d.ts.map +1 -0
  293. package/dest/queue/base_memory_queue.js +116 -0
  294. package/dest/queue/batch_queue.d.ts +47 -0
  295. package/dest/queue/batch_queue.d.ts.map +1 -0
  296. package/dest/queue/batch_queue.js +105 -0
  297. package/dest/queue/bounded_serial_queue.d.ts +56 -0
  298. package/dest/queue/bounded_serial_queue.d.ts.map +1 -0
  299. package/dest/queue/bounded_serial_queue.js +84 -0
  300. package/dest/queue/fifo_memory_queue.d.ts +21 -0
  301. package/dest/queue/fifo_memory_queue.d.ts.map +1 -0
  302. package/dest/queue/fifo_memory_queue.js +29 -0
  303. package/dest/queue/index.d.ts +7 -0
  304. package/dest/queue/index.d.ts.map +1 -0
  305. package/dest/queue/index.js +6 -0
  306. package/dest/queue/priority_memory_queue.d.ts +13 -0
  307. package/dest/queue/priority_memory_queue.d.ts.map +1 -0
  308. package/dest/queue/priority_memory_queue.js +16 -0
  309. package/dest/queue/priority_queue.d.ts +14 -0
  310. package/dest/queue/priority_queue.d.ts.map +1 -0
  311. package/dest/queue/priority_queue.js +29 -0
  312. package/dest/queue/semaphore.d.ts +23 -0
  313. package/dest/queue/semaphore.d.ts.map +1 -0
  314. package/dest/queue/semaphore.js +26 -0
  315. package/dest/queue/serial_queue.d.ts +49 -0
  316. package/dest/queue/serial_queue.d.ts.map +1 -0
  317. package/dest/queue/serial_queue.js +72 -0
  318. package/dest/retry/index.d.ts +44 -0
  319. package/dest/retry/index.d.ts.map +1 -0
  320. package/dest/retry/index.js +93 -0
  321. package/dest/running-promise/index.d.ts +2 -0
  322. package/dest/running-promise/index.d.ts.map +1 -0
  323. package/dest/running-promise/index.js +1 -0
  324. package/dest/schemas/api.d.ts +21 -0
  325. package/dest/schemas/api.d.ts.map +1 -0
  326. package/dest/schemas/api.js +3 -0
  327. package/dest/schemas/index.d.ts +6 -0
  328. package/dest/schemas/index.d.ts.map +1 -0
  329. package/dest/schemas/index.js +5 -0
  330. package/dest/schemas/parse.d.ts +9 -0
  331. package/dest/schemas/parse.d.ts.map +1 -0
  332. package/dest/schemas/parse.js +22 -0
  333. package/dest/schemas/schemas.d.ts +45 -0
  334. package/dest/schemas/schemas.d.ts.map +1 -0
  335. package/dest/schemas/schemas.js +38 -0
  336. package/dest/schemas/types.d.ts +3 -0
  337. package/dest/schemas/types.d.ts.map +1 -0
  338. package/dest/schemas/types.js +1 -0
  339. package/dest/schemas/utils.d.ts +53 -0
  340. package/dest/schemas/utils.d.ts.map +1 -0
  341. package/dest/schemas/utils.js +60 -0
  342. package/dest/serialize/buffer_reader.d.ts +239 -0
  343. package/dest/serialize/buffer_reader.d.ts.map +1 -0
  344. package/dest/serialize/buffer_reader.js +290 -0
  345. package/dest/serialize/field_reader.d.ts +112 -0
  346. package/dest/serialize/field_reader.d.ts.map +1 -0
  347. package/dest/serialize/field_reader.js +147 -0
  348. package/dest/serialize/free_funcs.d.ts +105 -0
  349. package/dest/serialize/free_funcs.d.ts.map +1 -0
  350. package/dest/serialize/free_funcs.js +189 -0
  351. package/dest/serialize/index.d.ts +7 -0
  352. package/dest/serialize/index.d.ts.map +1 -0
  353. package/dest/serialize/index.js +6 -0
  354. package/dest/serialize/serialize.d.ts +182 -0
  355. package/dest/serialize/serialize.d.ts.map +1 -0
  356. package/dest/serialize/serialize.js +248 -0
  357. package/dest/serialize/type_registry.d.ts +23 -0
  358. package/dest/serialize/type_registry.d.ts.map +1 -0
  359. package/dest/serialize/type_registry.js +61 -0
  360. package/dest/serialize/types.d.ts +33 -0
  361. package/dest/serialize/types.d.ts.map +1 -0
  362. package/dest/serialize/types.js +21 -0
  363. package/dest/sleep/index.d.ts +51 -0
  364. package/dest/sleep/index.d.ts.map +1 -0
  365. package/dest/sleep/index.js +67 -0
  366. package/dest/string/index.d.ts +11 -0
  367. package/dest/string/index.d.ts.map +1 -0
  368. package/dest/string/index.js +24 -0
  369. package/dest/testing/files/index.d.ts +20 -0
  370. package/dest/testing/files/index.d.ts.map +1 -0
  371. package/dest/testing/files/index.js +58 -0
  372. package/dest/testing/index.d.ts +4 -0
  373. package/dest/testing/index.d.ts.map +1 -0
  374. package/dest/testing/index.js +3 -0
  375. package/dest/testing/port_allocator.d.ts +10 -0
  376. package/dest/testing/port_allocator.d.ts.map +1 -0
  377. package/dest/testing/port_allocator.js +29 -0
  378. package/dest/testing/snapshot_serializer.d.ts +5 -0
  379. package/dest/testing/snapshot_serializer.d.ts.map +1 -0
  380. package/dest/testing/snapshot_serializer.js +32 -0
  381. package/dest/testing/test_data.d.ts +7 -0
  382. package/dest/testing/test_data.d.ts.map +1 -0
  383. package/dest/testing/test_data.js +29 -0
  384. package/dest/timer/date.d.ts +13 -0
  385. package/dest/timer/date.d.ts.map +1 -0
  386. package/dest/timer/date.js +24 -0
  387. package/dest/timer/elapsed.d.ts +13 -0
  388. package/dest/timer/elapsed.d.ts.map +1 -0
  389. package/dest/timer/elapsed.js +25 -0
  390. package/dest/timer/index.d.ts +5 -0
  391. package/dest/timer/index.d.ts.map +1 -0
  392. package/dest/timer/index.js +4 -0
  393. package/dest/timer/timeout.d.ts +41 -0
  394. package/dest/timer/timeout.d.ts.map +1 -0
  395. package/dest/timer/timeout.js +66 -0
  396. package/dest/timer/timer.d.ts +37 -0
  397. package/dest/timer/timer.d.ts.map +1 -0
  398. package/dest/timer/timer.js +40 -0
  399. package/dest/transport/browser/index.d.ts +5 -0
  400. package/dest/transport/browser/index.d.ts.map +1 -0
  401. package/dest/transport/browser/index.js +4 -0
  402. package/dest/transport/browser/message_port_socket.d.ts +37 -0
  403. package/dest/transport/browser/message_port_socket.d.ts.map +1 -0
  404. package/dest/transport/browser/message_port_socket.js +42 -0
  405. package/dest/transport/browser/shared_worker_connector.d.ts +19 -0
  406. package/dest/transport/browser/shared_worker_connector.d.ts.map +1 -0
  407. package/dest/transport/browser/shared_worker_connector.js +19 -0
  408. package/dest/transport/browser/shared_worker_listener.d.ts +38 -0
  409. package/dest/transport/browser/shared_worker_listener.d.ts.map +1 -0
  410. package/dest/transport/browser/shared_worker_listener.js +33 -0
  411. package/dest/transport/browser/worker_connector.d.ts +26 -0
  412. package/dest/transport/browser/worker_connector.d.ts.map +1 -0
  413. package/dest/transport/browser/worker_connector.js +30 -0
  414. package/dest/transport/browser/worker_listener.d.ts +39 -0
  415. package/dest/transport/browser/worker_listener.d.ts.map +1 -0
  416. package/dest/transport/browser/worker_listener.js +35 -0
  417. package/dest/transport/dispatch/create_dispatch_fn.d.ts +25 -0
  418. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -0
  419. package/dest/transport/dispatch/create_dispatch_fn.js +17 -0
  420. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +102 -0
  421. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -0
  422. package/dest/transport/dispatch/create_dispatch_proxy.js +59 -0
  423. package/dest/transport/dispatch/messages.d.ts +52 -0
  424. package/dest/transport/dispatch/messages.d.ts.map +1 -0
  425. package/dest/transport/dispatch/messages.js +13 -0
  426. package/dest/transport/index.d.ts +12 -0
  427. package/dest/transport/index.d.ts.map +1 -0
  428. package/dest/transport/index.js +11 -0
  429. package/dest/transport/interface/connector.d.ts +8 -0
  430. package/dest/transport/interface/connector.d.ts.map +1 -0
  431. package/dest/transport/interface/connector.js +3 -0
  432. package/dest/transport/interface/listener.d.ts +13 -0
  433. package/dest/transport/interface/listener.d.ts.map +1 -0
  434. package/dest/transport/interface/listener.js +4 -0
  435. package/dest/transport/interface/socket.d.ts +13 -0
  436. package/dest/transport/interface/socket.d.ts.map +1 -0
  437. package/dest/transport/interface/socket.js +7 -0
  438. package/dest/transport/interface/transferable.d.ts +68 -0
  439. package/dest/transport/interface/transferable.d.ts.map +1 -0
  440. package/dest/transport/interface/transferable.js +63 -0
  441. package/dest/transport/node/index.d.ts +3 -0
  442. package/dest/transport/node/index.d.ts.map +1 -0
  443. package/dest/transport/node/index.js +2 -0
  444. package/dest/transport/node/node_connector.d.ts +28 -0
  445. package/dest/transport/node/node_connector.d.ts.map +1 -0
  446. package/dest/transport/node/node_connector.js +26 -0
  447. package/dest/transport/node/node_connector_socket.d.ts +42 -0
  448. package/dest/transport/node/node_connector_socket.d.ts.map +1 -0
  449. package/dest/transport/node/node_connector_socket.js +44 -0
  450. package/dest/transport/node/node_listener.d.ts +26 -0
  451. package/dest/transport/node/node_listener.d.ts.map +1 -0
  452. package/dest/transport/node/node_listener.js +26 -0
  453. package/dest/transport/node/node_listener_socket.d.ts +37 -0
  454. package/dest/transport/node/node_listener_socket.d.ts.map +1 -0
  455. package/dest/transport/node/node_listener_socket.js +40 -0
  456. package/dest/transport/transport_client.d.ts +61 -0
  457. package/dest/transport/transport_client.d.ts.map +1 -0
  458. package/dest/transport/transport_client.js +96 -0
  459. package/dest/transport/transport_server.d.ts +56 -0
  460. package/dest/transport/transport_server.d.ts.map +1 -0
  461. package/dest/transport/transport_server.js +114 -0
  462. package/dest/trees/hasher.d.ts +39 -0
  463. package/dest/trees/hasher.d.ts.map +1 -0
  464. package/dest/trees/hasher.js +5 -0
  465. package/dest/trees/index.d.ts +11 -0
  466. package/dest/trees/index.d.ts.map +1 -0
  467. package/dest/trees/index.js +10 -0
  468. package/dest/trees/indexed_merkle_tree.d.ts +13 -0
  469. package/dest/trees/indexed_merkle_tree.d.ts.map +1 -0
  470. package/dest/trees/indexed_merkle_tree.js +27 -0
  471. package/dest/trees/indexed_merkle_tree_calculator.d.ts +23 -0
  472. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -0
  473. package/dest/trees/indexed_merkle_tree_calculator.js +83 -0
  474. package/dest/trees/indexed_tree_leaf.d.ts +57 -0
  475. package/dest/trees/indexed_tree_leaf.d.ts.map +1 -0
  476. package/dest/trees/indexed_tree_leaf.js +5 -0
  477. package/dest/trees/membership_witness.d.ts +62 -0
  478. package/dest/trees/membership_witness.d.ts.map +1 -0
  479. package/dest/trees/membership_witness.js +70 -0
  480. package/dest/trees/merkle_tree.d.ts +18 -0
  481. package/dest/trees/merkle_tree.d.ts.map +1 -0
  482. package/dest/trees/merkle_tree.js +58 -0
  483. package/dest/trees/merkle_tree_calculator.d.ts +16 -0
  484. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -0
  485. package/dest/trees/merkle_tree_calculator.js +61 -0
  486. package/dest/trees/sibling_path.d.ts +132 -0
  487. package/dest/trees/sibling_path.d.ts.map +1 -0
  488. package/dest/trees/sibling_path.js +144 -0
  489. package/dest/trees/unbalanced_merkle_tree.d.ts +17 -0
  490. package/dest/trees/unbalanced_merkle_tree.d.ts.map +1 -0
  491. package/dest/trees/unbalanced_merkle_tree.js +100 -0
  492. package/dest/trees/unbalanced_tree_store.d.ts +19 -0
  493. package/dest/trees/unbalanced_tree_store.d.ts.map +1 -0
  494. package/dest/trees/unbalanced_tree_store.js +94 -0
  495. package/dest/types/index.d.ts +19 -0
  496. package/dest/types/index.d.ts.map +1 -0
  497. package/dest/types/index.js +3 -0
  498. package/dest/url/index.d.ts +9 -0
  499. package/dest/url/index.d.ts.map +1 -0
  500. package/dest/url/index.js +62 -0
  501. package/dest/validation/index.d.ts +9 -0
  502. package/dest/validation/index.d.ts.map +1 -0
  503. package/dest/validation/index.js +15 -0
  504. package/dest/wasm/empty_wasi_sdk.d.ts +130 -0
  505. package/dest/wasm/empty_wasi_sdk.d.ts.map +1 -0
  506. package/dest/wasm/empty_wasi_sdk.js +148 -0
  507. package/dest/wasm/index.d.ts +2 -0
  508. package/dest/wasm/index.d.ts.map +1 -0
  509. package/dest/wasm/index.js +1 -0
  510. package/dest/wasm/wasm_module.d.ts +136 -0
  511. package/dest/wasm/wasm_module.d.ts.map +1 -0
  512. package/dest/wasm/wasm_module.js +196 -0
  513. package/dest/worker/browser/index.d.ts +3 -0
  514. package/dest/worker/browser/index.d.ts.map +1 -0
  515. package/dest/worker/browser/index.js +2 -0
  516. package/dest/worker/browser/start_web_module.d.ts +7 -0
  517. package/dest/worker/browser/start_web_module.d.ts.map +1 -0
  518. package/dest/worker/browser/start_web_module.js +27 -0
  519. package/dest/worker/browser/web_data_store.d.ts +24 -0
  520. package/dest/worker/browser/web_data_store.d.ts.map +1 -0
  521. package/dest/worker/browser/web_data_store.js +29 -0
  522. package/dest/worker/browser/web_worker.d.ts +10 -0
  523. package/dest/worker/browser/web_worker.d.ts.map +1 -0
  524. package/dest/worker/browser/web_worker.js +25 -0
  525. package/dest/worker/data_store.d.ts +21 -0
  526. package/dest/worker/data_store.d.ts.map +1 -0
  527. package/dest/worker/data_store.js +3 -0
  528. package/dest/worker/index.d.ts +3 -0
  529. package/dest/worker/index.d.ts.map +1 -0
  530. package/dest/worker/index.js +1 -0
  531. package/dest/worker/node/index.d.ts +3 -0
  532. package/dest/worker/node/index.d.ts.map +1 -0
  533. package/dest/worker/node/index.js +2 -0
  534. package/dest/worker/node/node_data_store.d.ts +13 -0
  535. package/dest/worker/node/node_data_store.d.ts.map +1 -0
  536. package/dest/worker/node/node_data_store.js +20 -0
  537. package/dest/worker/node/node_worker.d.ts +6 -0
  538. package/dest/worker/node/node_worker.d.ts.map +1 -0
  539. package/dest/worker/node/node_worker.js +22 -0
  540. package/dest/worker/node/start_node_module.d.ts +7 -0
  541. package/dest/worker/node/start_node_module.d.ts.map +1 -0
  542. package/dest/worker/node/start_node_module.js +31 -0
  543. package/dest/worker/wasm_worker.d.ts +9 -0
  544. package/dest/worker/wasm_worker.d.ts.map +1 -0
  545. package/dest/worker/wasm_worker.js +3 -0
  546. package/dest/worker/worker_pool.d.ts +40 -0
  547. package/dest/worker/worker_pool.d.ts.map +1 -0
  548. package/dest/worker/worker_pool.js +51 -0
  549. package/package.json +176 -0
  550. package/src/array/array.ts +150 -0
  551. package/src/array/index.ts +1 -0
  552. package/src/async-map/index.ts +18 -0
  553. package/src/async-pool/index.ts +50 -0
  554. package/src/bigint-buffer/index.ts +87 -0
  555. package/src/buffer/buffer32.ts +144 -0
  556. package/src/buffer/index.ts +1 -0
  557. package/src/collection/array.ts +203 -0
  558. package/src/collection/index.ts +2 -0
  559. package/src/collection/object.ts +52 -0
  560. package/src/committable/committable.ts +46 -0
  561. package/src/committable/index.ts +1 -0
  562. package/src/config/env_var.ts +207 -0
  563. package/src/config/index.ts +167 -0
  564. package/src/crypto/aes128/index.ts +59 -0
  565. package/src/crypto/ecdsa/index.ts +70 -0
  566. package/src/crypto/ecdsa/signature.ts +100 -0
  567. package/src/crypto/grumpkin/index.ts +97 -0
  568. package/src/crypto/index.ts +14 -0
  569. package/src/crypto/keccak/index.ts +283 -0
  570. package/src/crypto/keys/index.ts +10 -0
  571. package/src/crypto/pedersen/index.ts +1 -0
  572. package/src/crypto/pedersen/pedersen.elliptic.ts +584 -0
  573. package/src/crypto/pedersen/pedersen.noble.ts +573 -0
  574. package/src/crypto/pedersen/pedersen.wasm.ts +48 -0
  575. package/src/crypto/poseidon/index.ts +77 -0
  576. package/src/crypto/random/index.ts +85 -0
  577. package/src/crypto/random/randomness_singleton.ts +62 -0
  578. package/src/crypto/schnorr/index.ts +55 -0
  579. package/src/crypto/schnorr/signature.ts +116 -0
  580. package/src/crypto/secp256k1/index.ts +57 -0
  581. package/src/crypto/secp256k1-signer/index.ts +2 -0
  582. package/src/crypto/secp256k1-signer/secp256k1_signer.ts +38 -0
  583. package/src/crypto/secp256k1-signer/utils.ts +99 -0
  584. package/src/crypto/serialize.ts +85 -0
  585. package/src/crypto/sha256/index.ts +147 -0
  586. package/src/crypto/sha512/index.ts +16 -0
  587. package/src/crypto/signature/index.ts +17 -0
  588. package/src/crypto/sync/index.ts +6 -0
  589. package/src/crypto/sync/pedersen/index.ts +45 -0
  590. package/src/crypto/sync/poseidon/index.ts +76 -0
  591. package/src/decorators/index.ts +1 -0
  592. package/src/decorators/memoize.ts +11 -0
  593. package/src/error/index.ts +22 -0
  594. package/src/eth-address/index.ts +241 -0
  595. package/src/eth-signature/eth_signature.ts +128 -0
  596. package/src/eth-signature/index.ts +1 -0
  597. package/src/fields/coordinate.ts +104 -0
  598. package/src/fields/fields.ts +505 -0
  599. package/src/fields/index.ts +3 -0
  600. package/src/fields/point.ts +300 -0
  601. package/src/fs/index.ts +1 -0
  602. package/src/fs/run_in_dir.ts +33 -0
  603. package/src/index.ts +31 -0
  604. package/src/iterable/all.ts +32 -0
  605. package/src/iterable/filter.ts +77 -0
  606. package/src/iterable/index.ts +7 -0
  607. package/src/iterable/isAsyncIt.ts +8 -0
  608. package/src/iterable/map.ts +66 -0
  609. package/src/iterable/peek.ts +58 -0
  610. package/src/iterable/sort.ts +39 -0
  611. package/src/iterable/take.ts +54 -0
  612. package/src/iterable/toArray.ts +9 -0
  613. package/src/jest/setup.mjs +9 -0
  614. package/src/json-rpc/README.md +55 -0
  615. package/src/json-rpc/client/fetch.ts +103 -0
  616. package/src/json-rpc/client/index.ts +2 -0
  617. package/src/json-rpc/client/safe_json_rpc_client.ts +67 -0
  618. package/src/json-rpc/client/undici.ts +75 -0
  619. package/src/json-rpc/convert.ts +61 -0
  620. package/src/json-rpc/fixtures/class_a.ts +15 -0
  621. package/src/json-rpc/fixtures/class_b.ts +15 -0
  622. package/src/json-rpc/fixtures/test_state.ts +143 -0
  623. package/src/json-rpc/index.ts +1 -0
  624. package/src/json-rpc/js_utils.ts +21 -0
  625. package/src/json-rpc/server/index.ts +1 -0
  626. package/src/json-rpc/server/safe_json_rpc_server.ts +376 -0
  627. package/src/json-rpc/server/telemetry.ts +0 -0
  628. package/src/json-rpc/test/index.ts +1 -0
  629. package/src/json-rpc/test/integration.ts +35 -0
  630. package/src/log/console.ts +39 -0
  631. package/src/log/debug.ts +104 -0
  632. package/src/log/gcloud-logger-config.ts +71 -0
  633. package/src/log/index.ts +6 -0
  634. package/src/log/libp2p_logger.ts +67 -0
  635. package/src/log/log-filters.ts +63 -0
  636. package/src/log/log-levels.ts +3 -0
  637. package/src/log/log_fn.ts +5 -0
  638. package/src/log/log_history.ts +44 -0
  639. package/src/log/pino-logger.ts +243 -0
  640. package/src/message/index.ts +43 -0
  641. package/src/mutex/index.ts +84 -0
  642. package/src/mutex/mutex_database.ts +12 -0
  643. package/src/noir/index.ts +1 -0
  644. package/src/noir/noir_package_config.ts +54 -0
  645. package/src/promise/index.ts +2 -0
  646. package/src/promise/running-promise.ts +125 -0
  647. package/src/promise/utils.ts +29 -0
  648. package/src/queue/base_memory_queue.ts +138 -0
  649. package/src/queue/batch_queue.ts +120 -0
  650. package/src/queue/bounded_serial_queue.ts +100 -0
  651. package/src/queue/fifo_memory_queue.ts +39 -0
  652. package/src/queue/index.ts +6 -0
  653. package/src/queue/priority_memory_queue.ts +20 -0
  654. package/src/queue/priority_queue.ts +34 -0
  655. package/src/queue/semaphore.ts +33 -0
  656. package/src/queue/serial_queue.ts +86 -0
  657. package/src/retry/index.ts +100 -0
  658. package/src/running-promise/index.ts +1 -0
  659. package/src/schemas/api.ts +47 -0
  660. package/src/schemas/index.ts +5 -0
  661. package/src/schemas/parse.ts +29 -0
  662. package/src/schemas/schemas.ts +64 -0
  663. package/src/schemas/types.ts +3 -0
  664. package/src/schemas/utils.ts +112 -0
  665. package/src/serialize/buffer_reader.ts +383 -0
  666. package/src/serialize/field_reader.ts +184 -0
  667. package/src/serialize/free_funcs.ts +204 -0
  668. package/src/serialize/index.ts +6 -0
  669. package/src/serialize/serialize.ts +336 -0
  670. package/src/serialize/type_registry.ts +75 -0
  671. package/src/serialize/types.ts +40 -0
  672. package/src/sleep/index.ts +75 -0
  673. package/src/string/index.ts +31 -0
  674. package/src/testing/files/index.ts +69 -0
  675. package/src/testing/index.ts +3 -0
  676. package/src/testing/port_allocator.ts +31 -0
  677. package/src/testing/snapshot_serializer.ts +33 -0
  678. package/src/testing/test_data.ts +36 -0
  679. package/src/timer/date.ts +24 -0
  680. package/src/timer/elapsed.ts +23 -0
  681. package/src/timer/index.ts +4 -0
  682. package/src/timer/timeout.ts +70 -0
  683. package/src/timer/timer.ts +48 -0
  684. package/src/transport/browser/index.ts +4 -0
  685. package/src/transport/browser/message_port_socket.ts +48 -0
  686. package/src/transport/browser/shared_worker_connector.ts +21 -0
  687. package/src/transport/browser/shared_worker_listener.ts +53 -0
  688. package/src/transport/browser/worker_connector.ts +30 -0
  689. package/src/transport/browser/worker_listener.ts +54 -0
  690. package/src/transport/dispatch/create_dispatch_fn.ts +35 -0
  691. package/src/transport/dispatch/create_dispatch_proxy.ts +141 -0
  692. package/src/transport/dispatch/messages.ts +58 -0
  693. package/src/transport/index.ts +11 -0
  694. package/src/transport/interface/connector.ts +9 -0
  695. package/src/transport/interface/listener.ts +16 -0
  696. package/src/transport/interface/socket.ts +15 -0
  697. package/src/transport/interface/transferable.ts +125 -0
  698. package/src/transport/node/index.ts +2 -0
  699. package/src/transport/node/node_connector.ts +30 -0
  700. package/src/transport/node/node_connector_socket.ts +52 -0
  701. package/src/transport/node/node_listener.ts +34 -0
  702. package/src/transport/node/node_listener_socket.ts +48 -0
  703. package/src/transport/transport_client.ts +131 -0
  704. package/src/transport/transport_server.ts +108 -0
  705. package/src/trees/hasher.ts +39 -0
  706. package/src/trees/index.ts +10 -0
  707. package/src/trees/indexed_merkle_tree.ts +36 -0
  708. package/src/trees/indexed_merkle_tree_calculator.ts +94 -0
  709. package/src/trees/indexed_tree_leaf.ts +56 -0
  710. package/src/trees/membership_witness.ts +99 -0
  711. package/src/trees/merkle_tree.ts +72 -0
  712. package/src/trees/merkle_tree_calculator.ts +67 -0
  713. package/src/trees/sibling_path.ts +183 -0
  714. package/src/trees/unbalanced_merkle_tree.ts +103 -0
  715. package/src/trees/unbalanced_tree_store.ts +102 -0
  716. package/src/types/index.ts +25 -0
  717. package/src/url/index.ts +73 -0
  718. package/src/validation/index.ts +18 -0
  719. package/src/wasm/README.md +6 -0
  720. package/src/wasm/empty_wasi_sdk.ts +166 -0
  721. package/src/wasm/fixtures/gcd.wasm +0 -0
  722. package/src/wasm/fixtures/gcd.wat +27 -0
  723. package/src/wasm/index.ts +1 -0
  724. package/src/wasm/wasm_module.ts +260 -0
  725. package/src/worker/browser/index.ts +2 -0
  726. package/src/worker/browser/start_web_module.ts +24 -0
  727. package/src/worker/browser/web_data_store.ts +38 -0
  728. package/src/worker/browser/web_worker.ts +25 -0
  729. package/src/worker/data_store.ts +19 -0
  730. package/src/worker/index.ts +2 -0
  731. package/src/worker/node/index.ts +2 -0
  732. package/src/worker/node/node_data_store.ts +27 -0
  733. package/src/worker/node/node_worker.ts +23 -0
  734. package/src/worker/node/start_node_module.ts +30 -0
  735. package/src/worker/wasm_worker.ts +7 -0
  736. package/src/worker/worker_pool.ts +73 -0
@@ -0,0 +1,189 @@
1
+ import { Fr } from '../fields/fields.js';
2
+ /**
3
+ * Convert a boolean value to its corresponding byte representation in a Buffer of size 1.
4
+ * The function takes a boolean value and writes it into a new buffer as either 1 (true) or 0 (false).
5
+ * This method is useful for converting a boolean value into a binary format that can be stored or transmitted easily.
6
+ *
7
+ * @param b - The boolean value to be converted.
8
+ * @returns A Buffer containing the byte representation of the input boolean value.
9
+ */ export function boolToByte(b) {
10
+ const buf = Buffer.alloc(1);
11
+ buf.writeUInt8(b ? 1 : 0);
12
+ return buf;
13
+ }
14
+ /**
15
+ * @param n - The input number to be converted to a big-endian unsigned 16-bit integer Buffer.
16
+ * @param bufferSize - Optional, the size of the output Buffer (default is 2).
17
+ * @returns A Buffer containing the big-endian unsigned 16-bit integer representation of the input number.
18
+ */ export function numToUInt16BE(n, bufferSize = 2) {
19
+ const buf = Buffer.alloc(bufferSize);
20
+ buf.writeUInt16BE(n, bufferSize - 2);
21
+ return buf;
22
+ }
23
+ /**
24
+ * Convert a number into a 4-byte little-endian unsigned integer buffer.
25
+ * The input number is serialized as an unsigned 32-bit integer in little-endian byte order,
26
+ * and returned as a Buffer of specified size (defaults to 4).
27
+ * If the provided bufferSize is greater than 4, the additional bytes will be padded with zeros.
28
+ *
29
+ * @param n - The number to be converted into a little-endian unsigned integer buffer.
30
+ * @param bufferSize - Optional, the size of the output buffer (default value is 4).
31
+ * @returns A Buffer containing the serialized little-endian unsigned integer representation of the input number.
32
+ */ export function numToUInt32LE(n, bufferSize = 4) {
33
+ const buf = Buffer.alloc(bufferSize);
34
+ buf.writeUInt32LE(n, bufferSize - 4);
35
+ return buf;
36
+ }
37
+ /**
38
+ * Convert a number to a big-endian unsigned 32-bit integer Buffer.
39
+ * This function takes a number and an optional buffer size as input and creates a Buffer with the specified size (defaults to 4) containing the big-endian representation of the input number as an unsigned 32-bit integer. Note that the bufferSize should be greater than or equal to 4, otherwise the output Buffer might truncate the serialized value.
40
+ *
41
+ * @param n - The input number to be converted to a big-endian unsigned 32-bit integer Buffer.
42
+ * @param bufferSize - Optional, the size of the output Buffer (default is 4).
43
+ * @returns A Buffer containing the big-endian unsigned 32-bit integer representation of the input number.
44
+ */ export function numToUInt32BE(n, bufferSize = 4) {
45
+ const buf = Buffer.alloc(bufferSize);
46
+ buf.writeUInt32BE(n, bufferSize - 4);
47
+ return buf;
48
+ }
49
+ /**
50
+ * Serialize a number into a big-endian signed 32-bit integer Buffer with the specified buffer size.
51
+ * This function converts the input number into its binary representation and stores it in a Buffer
52
+ * with the provided buffer size. By default, the buffer size is set to 4 bytes which represents a 32-bit integer.
53
+ * The function will use the last 4 bytes of the buffer to store the serialized number. If the input number
54
+ * is outside the range of a 32-bit signed integer, the resulting serialization may be incorrect due to truncation.
55
+ *
56
+ * @param n - The number to be serialized as a signed 32-bit integer.
57
+ * @param bufferSize - Optional, the size of the output Buffer (default is 4 bytes).
58
+ * @returns A Buffer containing the serialized big-endian signed 32-bit integer.
59
+ */ export function numToInt32BE(n, bufferSize = 4) {
60
+ const buf = Buffer.alloc(bufferSize);
61
+ buf.writeInt32BE(n, bufferSize - 4);
62
+ return buf;
63
+ }
64
+ /**
65
+ * Convert a number to an 8-bit unsigned integer and return it as a Buffer of length 1.
66
+ * The input number is written as an 8-bit unsigned integer into the buffer. This function
67
+ * is useful for converting small numeric values to a standardized binary format that can be
68
+ * easily stored or transmitted.
69
+ *
70
+ * @param n - The number to be converted to an 8-bit unsigned integer.
71
+ * @returns A Buffer containing the 8-bit unsigned integer representation of the input number.
72
+ */ export function numToUInt8(n) {
73
+ const bufferSize = 1;
74
+ const buf = Buffer.alloc(bufferSize);
75
+ buf.writeUInt8(n, 0);
76
+ return buf;
77
+ }
78
+ /**
79
+ * Adds a 4-byte byte-length prefix to a buffer.
80
+ * @param buf - The input Buffer to be prefixed
81
+ * @returns A Buffer with 4-byte byte-length prefix.
82
+ */ export function prefixBufferWithLength(buf) {
83
+ const lengthBuf = Buffer.alloc(4);
84
+ lengthBuf.writeUInt32BE(buf.length, 0);
85
+ return Buffer.concat([
86
+ lengthBuf,
87
+ buf
88
+ ]);
89
+ }
90
+ /**
91
+ * Parse a buffer as a big integer.
92
+ */ export function toBigInt(buf) {
93
+ const hex = buf.toString('hex');
94
+ if (hex.length === 0) {
95
+ return BigInt(0);
96
+ }
97
+ return BigInt(`0x${hex}`);
98
+ }
99
+ /**
100
+ * Stores full 256 bits of information in 2 fields.
101
+ * @param buf - 32 bytes of data
102
+ * @returns 2 field elements
103
+ */ export function to2Fields(buf) {
104
+ if (buf.length !== 32) {
105
+ throw new Error('Buffer must be 32 bytes');
106
+ }
107
+ // Split the hash into two fields, a high and a low
108
+ const buf1 = Buffer.concat([
109
+ Buffer.alloc(16),
110
+ buf.subarray(0, 16)
111
+ ]);
112
+ const buf2 = Buffer.concat([
113
+ Buffer.alloc(16),
114
+ buf.subarray(16, 32)
115
+ ]);
116
+ return [
117
+ Fr.fromBuffer(buf1),
118
+ Fr.fromBuffer(buf2)
119
+ ];
120
+ }
121
+ /**
122
+ * Reconstructs the original 32 bytes of data from 2 field elements.
123
+ * @param field1 - First field element
124
+ * @param field2 - Second field element
125
+ * @returns 32 bytes of data as a Buffer
126
+ */ export function from2Fields(field1, field2) {
127
+ // Convert the field elements back to buffers
128
+ const buf1 = field1.toBuffer();
129
+ const buf2 = field2.toBuffer();
130
+ // Remove the padding (first 16 bytes) from each buffer
131
+ const originalPart1 = buf1.subarray(Fr.SIZE_IN_BYTES / 2, Fr.SIZE_IN_BYTES);
132
+ const originalPart2 = buf2.subarray(Fr.SIZE_IN_BYTES / 2, Fr.SIZE_IN_BYTES);
133
+ // Concatenate the two parts to form the original buffer
134
+ return Buffer.concat([
135
+ originalPart1,
136
+ originalPart2
137
+ ]);
138
+ }
139
+ /**
140
+ * Truncates SHA hashes to match Noir's truncated version
141
+ * @param buf - 32 bytes of data
142
+ * @returns 31 bytes of data padded to 32
143
+ */ export function truncateAndPad(buf) {
144
+ // Note that we always truncate here, to match solidity's sha256ToField()
145
+ if (buf.length !== 32) {
146
+ throw new Error('Buffer to truncate must be 32 bytes');
147
+ }
148
+ return Buffer.concat([
149
+ Buffer.alloc(1),
150
+ buf.subarray(0, 31)
151
+ ]);
152
+ }
153
+ /**
154
+ * Stores 248 bits of information in 1 field.
155
+ * @param buf - 32 or 31 bytes of data
156
+ * @returns 1 field element
157
+ */ export function toTruncField(buf) {
158
+ if (buf.length !== 32 && buf.length !== 31) {
159
+ throw new Error('Buffer must be 31 or 32 bytes');
160
+ }
161
+ if (buf.length == 32 && buf[0] == 0 || buf.length == 31) {
162
+ return Fr.fromBuffer(buf);
163
+ } else {
164
+ // Note: safer to NOT truncate here, all inputs are expected to be truncated
165
+ // from Noir or L1 Contracts or Class.hash() methods
166
+ throw new Error(`Number ${toBigInt(buf)} does not fit in 31 byte truncated buffer`);
167
+ }
168
+ }
169
+ /**
170
+ * Reconstructs the original 31 bytes of data from 1 truncated field element.
171
+ * @param field - field element
172
+ * @returns 31 bytes of data as a Buffer
173
+ */ export function fromTruncField(field) {
174
+ const buffer = field.toBuffer();
175
+ if (buffer[0] != 0) {
176
+ throw new Error(`Number ${field} does not fit in 31 byte truncated buffer`);
177
+ }
178
+ return buffer;
179
+ }
180
+ export function fromFieldsTuple(fields) {
181
+ return from2Fields(fields[0], fields[1]);
182
+ }
183
+ export function toHumanReadable(buf, maxLen) {
184
+ const result = buf.every((byte)=>byte >= 32 && byte <= 126) ? buf.toString('ascii') : `0x${buf.toString('hex')}`;
185
+ if (maxLen && result.length > maxLen) {
186
+ return result.slice(0, maxLen) + '...';
187
+ }
188
+ return result;
189
+ }
@@ -0,0 +1,7 @@
1
+ export * from './free_funcs.js';
2
+ export * from './buffer_reader.js';
3
+ export * from './field_reader.js';
4
+ export * from './types.js';
5
+ export * from './serialize.js';
6
+ export * from './type_registry.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serialize/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './free_funcs.js';
2
+ export * from './buffer_reader.js';
3
+ export * from './field_reader.js';
4
+ export * from './types.js';
5
+ export * from './serialize.js';
6
+ export * from './type_registry.js';
@@ -0,0 +1,182 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import { Fr } from '../fields/fields.js';
4
+ /**
5
+ * For serializing an array of fixed length buffers.
6
+ * @param arr - Array of bufferable.
7
+ * @param prefixLength - The length of the prefix (denominated in bytes).
8
+ * @returns The serialized buffers.
9
+ */
10
+ export declare function serializeArrayOfBufferableToVector(objs: Bufferable[], prefixLength?: number): Buffer;
11
+ /**
12
+ * Helper function for deserializeArrayFromVector.
13
+ */
14
+ type DeserializeFn<T> = (buf: Buffer, offset: number) => {
15
+ /**
16
+ * The deserialized type.
17
+ */
18
+ elem: T;
19
+ /**
20
+ * How many bytes to advance by.
21
+ */
22
+ adv: number;
23
+ };
24
+ /**
25
+ * Deserializes an array from a vector on an element-by-element basis.
26
+ * @param deserialize - A function used to deserialize each element of the vector.
27
+ * @param vector - The vector to deserialize.
28
+ * @param offset - The position in the vector to start deserializing from.
29
+ * @returns Deserialized array and how many bytes we advanced by.
30
+ */
31
+ export declare function deserializeArrayFromVector<T>(deserialize: DeserializeFn<T>, vector: Buffer, offset?: number): {
32
+ /**
33
+ * The deserialized array.
34
+ */
35
+ elem: T[];
36
+ /**
37
+ * How many bytes we advanced by.
38
+ */
39
+ adv: number;
40
+ };
41
+ /**
42
+ * Cast a uint8 array to a number.
43
+ * @param array - The uint8 array.
44
+ * @returns The number.
45
+ */
46
+ export declare function uint8ArrayToNum(array: Uint8Array): number;
47
+ /**
48
+ * Serializes a boolean to a buffer.
49
+ * @param value - Value to serialize.
50
+ * @returns The serialized boolean.
51
+ */
52
+ export declare function boolToBuffer(value: boolean, bufferSize?: number): Buffer;
53
+ /**
54
+ * Deserialize the 256-bit number at address `offset`.
55
+ * @param buf - The buffer.
56
+ * @param offset - The address.
57
+ * @returns The deserialized 256-bit field.
58
+ */
59
+ export declare function deserializeField(buf: Buffer, offset?: number): {
60
+ elem: Buffer;
61
+ adv: number;
62
+ };
63
+ /** A type that can be written to a buffer. */
64
+ export type Bufferable = boolean | Buffer | Uint8Array | number | bigint | string | {
65
+ /**
66
+ * Serialize to a buffer.
67
+ */
68
+ toBuffer: () => Buffer;
69
+ } | Bufferable[];
70
+ /** A type that can be converted to a Field or a Field array. */
71
+ export type Fieldable = Fr | boolean | number | bigint | Buffer | {
72
+ /**
73
+ * Serialize to a field.
74
+ * @dev Duplicate to `toField` but left as is as it is used in AVM codebase.
75
+ */
76
+ toFr: () => Fr;
77
+ } | {
78
+ /** Serialize to a field. */
79
+ toField: () => Fr;
80
+ } | {
81
+ /** Serialize to an array of fields. */
82
+ toFields: () => Fr[];
83
+ } | Fieldable[];
84
+ /**
85
+ * Serializes a list of objects contiguously.
86
+ * @param objs - Objects to serialize.
87
+ * @returns A buffer list with the concatenation of all fields.
88
+ */
89
+ export declare function serializeToBufferArray(...objs: Bufferable[]): Buffer[];
90
+ /**
91
+ * Serializes a list of objects contiguously.
92
+ * @param objs - Objects to serialize.
93
+ * @returns An array of fields with the concatenation of all fields.
94
+ */
95
+ export declare function serializeToFields(...objs: Fieldable[]): Fr[];
96
+ /**
97
+ * Serializes a list of objects contiguously.
98
+ * @param objs - Objects to serialize.
99
+ * @returns A single buffer with the concatenation of all fields.
100
+ */
101
+ export declare function serializeToBuffer(...objs: Bufferable[]): Buffer;
102
+ /**
103
+ * Returns a user-friendly JSON representation of an object, showing buffers as hex strings.
104
+ * @param obj - Object to json-stringify.
105
+ * @returns A JSON string.
106
+ */
107
+ export declare function toFriendlyJSON(obj: object): string;
108
+ /**
109
+ * Serialize a BigInt value into a Buffer of specified width.
110
+ * The function converts the input BigInt into its big-endian representation and stores it in a Buffer of the given width.
111
+ * If the width is not provided, a default value of 32 bytes will be used. It is important to provide an appropriate width
112
+ * to avoid truncation or incorrect serialization of large BigInt values.
113
+ *
114
+ * @param n - The BigInt value to be serialized.
115
+ * @param width - The width (in bytes) of the output Buffer, optional with default value 32.
116
+ * @returns A Buffer containing the serialized BigInt value in big-endian format.
117
+ */
118
+ export declare function serializeBigInt(n: bigint, width?: number): Buffer;
119
+ /**
120
+ * Deserialize a big integer from a buffer, given an offset and width.
121
+ * Reads the specified number of bytes from the buffer starting at the offset, converts it to a big integer, and returns the deserialized result along with the number of bytes read (advanced).
122
+ *
123
+ * @param buf - The buffer containing the big integer to be deserialized.
124
+ * @param offset - The position in the buffer where the big integer starts. Defaults to 0.
125
+ * @param width - The number of bytes to read from the buffer for the big integer. Defaults to 32.
126
+ * @returns An object containing the deserialized big integer value ('elem') and the number of bytes advanced ('adv').
127
+ */
128
+ export declare function deserializeBigInt(buf: Buffer, offset?: number, width?: number): {
129
+ elem: bigint;
130
+ adv: number;
131
+ };
132
+ /**
133
+ * Serializes a Date object into a Buffer containing its timestamp as a big integer value.
134
+ * The resulting Buffer has a fixed width of 8 bytes, representing a 64-bit big-endian integer.
135
+ * This function is useful for converting date values into a binary format that can be stored or transmitted easily.
136
+ *
137
+ * @param date - The Date object to be serialized.
138
+ * @returns A Buffer containing the serialized timestamp of the input Date object.
139
+ */
140
+ export declare function serializeDate(date: Date): Buffer;
141
+ /**
142
+ * Deserialize a boolean value from a given buffer at the specified offset.
143
+ * Reads a single byte at the provided offset in the buffer and returns
144
+ * the deserialized boolean value along with the number of bytes read (adv).
145
+ *
146
+ * @param buf - The buffer containing the serialized boolean value.
147
+ * @param offset - The position in the buffer to start reading the boolean value.
148
+ * @returns An object containing the deserialized boolean value (elem) and the number of bytes read (adv).
149
+ */
150
+ export declare function deserializeBool(buf: Buffer, offset?: number): {
151
+ elem: number;
152
+ adv: number;
153
+ };
154
+ /**
155
+ * Deserialize a 4-byte unsigned integer from a buffer, starting at the specified offset.
156
+ * The deserialization reads 4 bytes from the given buffer and converts it into a number.
157
+ * Returns an object containing the deserialized unsigned integer and the number of bytes advanced (4).
158
+ *
159
+ * @param buf - The buffer containing the serialized unsigned integer.
160
+ * @param offset - The starting position in the buffer to deserialize from (default is 0).
161
+ * @returns An object with the deserialized unsigned integer as 'elem' and the number of bytes advanced ('adv') as 4.
162
+ */
163
+ export declare function deserializeUInt32(buf: Buffer, offset?: number): {
164
+ elem: number;
165
+ adv: number;
166
+ };
167
+ /**
168
+ * Deserialize a signed 32-bit integer from a buffer at the given offset.
169
+ * The input 'buf' should be a Buffer containing binary data, and 'offset' should be the position in the buffer
170
+ * where the signed 32-bit integer starts. Returns an object with both the deserialized integer (elem) and the
171
+ * number of bytes advanced in the buffer (adv, always equal to 4).
172
+ *
173
+ * @param buf - The buffer containing the binary data.
174
+ * @param offset - Optional, the position in the buffer where the signed 32-bit integer starts (default is 0).
175
+ * @returns An object with the deserialized integer as 'elem' and the number of bytes advanced as 'adv'.
176
+ */
177
+ export declare function deserializeInt32(buf: Buffer, offset?: number): {
178
+ elem: number;
179
+ adv: number;
180
+ };
181
+ export {};
182
+ //# sourceMappingURL=serialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/serialize/serialize.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAGzC;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,YAAY,SAAI,GAAG,MAAM,CAa/F;AAED;;GAEG;AACH,KAAK,aAAa,CAAC,CAAC,IAAI,CACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,KACX;IACH;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IACR;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAC1C,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,EAC7B,MAAM,EAAE,MAAM,EACd,MAAM,SAAI,GACT;IACD;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IACV;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAWA;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAGzD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,SAAI,GAAG,MAAM,CAInE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;EAGvD;AAED,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,MAAM,GACN,UAAU,GACV,MAAM,GACN,MAAM,GACN,MAAM,GACN;IACE;;OAEG;IACH,QAAQ,EAAE,MAAM,MAAM,CAAC;CACxB,GACD,UAAU,EAAE,CAAC;AAEjB,gEAAgE;AAChE,MAAM,MAAM,SAAS,GACjB,EAAE,GACF,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN;IACE;;;OAGG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,GACD;IACE,4BAA4B;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GACD;IACE,uCAAuC;IACvC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;CACtB,GACD,SAAS,EAAE,CAAC;AAEhB;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CA4BtE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,CAsB5D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA4BlD;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,UAEpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,EAAE,KAAK,SAAK;;;EAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,UAEvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;EAGtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;EAGxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;EAGvD"}
@@ -0,0 +1,248 @@
1
+ import { toBigIntBE, toBufferBE } from '../bigint-buffer/index.js';
2
+ import { Fr } from '../fields/fields.js';
3
+ import { numToUInt32BE } from './free_funcs.js';
4
+ /**
5
+ * For serializing an array of fixed length buffers.
6
+ * @param arr - Array of bufferable.
7
+ * @param prefixLength - The length of the prefix (denominated in bytes).
8
+ * @returns The serialized buffers.
9
+ */ export function serializeArrayOfBufferableToVector(objs, prefixLength = 4) {
10
+ const arr = serializeToBufferArray(objs);
11
+ let lengthBuf;
12
+ if (prefixLength === 1) {
13
+ lengthBuf = Buffer.alloc(1);
14
+ lengthBuf.writeUInt8(arr.length, 0);
15
+ } else if (prefixLength === 4) {
16
+ lengthBuf = Buffer.alloc(4);
17
+ lengthBuf.writeUInt32BE(arr.length, 0);
18
+ } else {
19
+ throw new Error(`Unsupported prefix length. Got ${prefixLength}, expected 1 or 4`);
20
+ }
21
+ return Buffer.concat([
22
+ lengthBuf,
23
+ ...arr
24
+ ]);
25
+ }
26
+ /**
27
+ * Deserializes an array from a vector on an element-by-element basis.
28
+ * @param deserialize - A function used to deserialize each element of the vector.
29
+ * @param vector - The vector to deserialize.
30
+ * @param offset - The position in the vector to start deserializing from.
31
+ * @returns Deserialized array and how many bytes we advanced by.
32
+ */ export function deserializeArrayFromVector(deserialize, vector, offset = 0) {
33
+ let pos = offset;
34
+ const size = vector.readUInt32BE(pos);
35
+ pos += 4;
36
+ const arr = new Array(size);
37
+ for(let i = 0; i < size; ++i){
38
+ const { elem, adv } = deserialize(vector, pos);
39
+ pos += adv;
40
+ arr[i] = elem;
41
+ }
42
+ return {
43
+ elem: arr,
44
+ adv: pos - offset
45
+ };
46
+ }
47
+ /**
48
+ * Cast a uint8 array to a number.
49
+ * @param array - The uint8 array.
50
+ * @returns The number.
51
+ */ export function uint8ArrayToNum(array) {
52
+ const buf = Buffer.from(array);
53
+ return buf.readUint32LE();
54
+ }
55
+ /**
56
+ * Serializes a boolean to a buffer.
57
+ * @param value - Value to serialize.
58
+ * @returns The serialized boolean.
59
+ */ export function boolToBuffer(value, bufferSize = 1) {
60
+ const buf = Buffer.alloc(bufferSize);
61
+ buf.writeUInt8(value ? 1 : 0, bufferSize - 1);
62
+ return buf;
63
+ }
64
+ /**
65
+ * Deserialize the 256-bit number at address `offset`.
66
+ * @param buf - The buffer.
67
+ * @param offset - The address.
68
+ * @returns The deserialized 256-bit field.
69
+ */ export function deserializeField(buf, offset = 0) {
70
+ const adv = 32;
71
+ return {
72
+ elem: buf.slice(offset, offset + adv),
73
+ adv
74
+ };
75
+ }
76
+ /**
77
+ * Serializes a list of objects contiguously.
78
+ * @param objs - Objects to serialize.
79
+ * @returns A buffer list with the concatenation of all fields.
80
+ */ export function serializeToBufferArray(...objs) {
81
+ const ret = [];
82
+ for (const obj of objs){
83
+ if (Array.isArray(obj)) {
84
+ ret.push(...serializeToBufferArray(...obj));
85
+ } else if (Buffer.isBuffer(obj)) {
86
+ ret.push(obj);
87
+ } else if (typeof obj === 'boolean') {
88
+ ret.push(boolToBuffer(obj));
89
+ } else if (typeof obj === 'bigint') {
90
+ // Throw if bigint does not fit into 32 bytes
91
+ if (obj > BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff')) {
92
+ throw new Error(`BigInt ${obj} does not fit into 32 bytes`);
93
+ }
94
+ ret.push(serializeBigInt(obj));
95
+ } else if (typeof obj === 'number') {
96
+ // Note: barretenberg assumes everything is big-endian
97
+ ret.push(numToUInt32BE(obj)); // TODO: Are we always passing numbers as UInt32?
98
+ } else if (typeof obj === 'string') {
99
+ ret.push(numToUInt32BE(obj.length));
100
+ ret.push(Buffer.from(obj));
101
+ } else if ('toBuffer' in obj) {
102
+ ret.push(obj.toBuffer());
103
+ } else {
104
+ throw new Error(`Cannot serialize input to buffer: ${typeof obj} ${obj.constructor?.name}`);
105
+ }
106
+ }
107
+ return ret;
108
+ }
109
+ /**
110
+ * Serializes a list of objects contiguously.
111
+ * @param objs - Objects to serialize.
112
+ * @returns An array of fields with the concatenation of all fields.
113
+ */ export function serializeToFields(...objs) {
114
+ const ret = [];
115
+ for (const obj of objs){
116
+ if (Array.isArray(obj)) {
117
+ ret.push(...serializeToFields(...obj));
118
+ } else if (obj instanceof Fr) {
119
+ ret.push(obj);
120
+ } else if (typeof obj === 'boolean' || typeof obj === 'number' || typeof obj === 'bigint') {
121
+ ret.push(new Fr(obj));
122
+ } else if ('toFields' in obj) {
123
+ ret.push(...obj.toFields());
124
+ } else if ('toFr' in obj) {
125
+ ret.push(obj.toFr());
126
+ } else if ('toField' in obj) {
127
+ ret.push(obj.toField());
128
+ } else if (Buffer.isBuffer(obj)) {
129
+ ret.push(Fr.fromBuffer(obj));
130
+ } else {
131
+ throw new Error(`Cannot serialize input to field: ${typeof obj} ${obj.constructor?.name}`);
132
+ }
133
+ }
134
+ return ret;
135
+ }
136
+ /**
137
+ * Serializes a list of objects contiguously.
138
+ * @param objs - Objects to serialize.
139
+ * @returns A single buffer with the concatenation of all fields.
140
+ */ export function serializeToBuffer(...objs) {
141
+ return Buffer.concat(serializeToBufferArray(...objs));
142
+ }
143
+ /**
144
+ * Returns a user-friendly JSON representation of an object, showing buffers as hex strings.
145
+ * @param obj - Object to json-stringify.
146
+ * @returns A JSON string.
147
+ */ export function toFriendlyJSON(obj) {
148
+ return JSON.stringify(obj, (key, value)=>{
149
+ if (value !== null && typeof value === 'object' && value.type === 'Buffer' && Array.isArray(value.data)) {
150
+ return '0x' + Buffer.from(value.data).toString('hex');
151
+ } else if (typeof value === 'bigint') {
152
+ return value.toString();
153
+ } else if (value && value.toFriendlyJSON) {
154
+ return value.toFriendlyJSON();
155
+ } else if (value && value.type && [
156
+ 'Fr',
157
+ 'Fq',
158
+ 'AztecAddress',
159
+ 'EthAddress'
160
+ ].includes(value.type)) {
161
+ return value.value;
162
+ } else {
163
+ return value;
164
+ }
165
+ }, 2);
166
+ }
167
+ /**
168
+ * Serialize a BigInt value into a Buffer of specified width.
169
+ * The function converts the input BigInt into its big-endian representation and stores it in a Buffer of the given width.
170
+ * If the width is not provided, a default value of 32 bytes will be used. It is important to provide an appropriate width
171
+ * to avoid truncation or incorrect serialization of large BigInt values.
172
+ *
173
+ * @param n - The BigInt value to be serialized.
174
+ * @param width - The width (in bytes) of the output Buffer, optional with default value 32.
175
+ * @returns A Buffer containing the serialized BigInt value in big-endian format.
176
+ */ export function serializeBigInt(n, width = 32) {
177
+ return toBufferBE(n, width);
178
+ }
179
+ /**
180
+ * Deserialize a big integer from a buffer, given an offset and width.
181
+ * Reads the specified number of bytes from the buffer starting at the offset, converts it to a big integer, and returns the deserialized result along with the number of bytes read (advanced).
182
+ *
183
+ * @param buf - The buffer containing the big integer to be deserialized.
184
+ * @param offset - The position in the buffer where the big integer starts. Defaults to 0.
185
+ * @param width - The number of bytes to read from the buffer for the big integer. Defaults to 32.
186
+ * @returns An object containing the deserialized big integer value ('elem') and the number of bytes advanced ('adv').
187
+ */ export function deserializeBigInt(buf, offset = 0, width = 32) {
188
+ return {
189
+ elem: toBigIntBE(buf.subarray(offset, offset + width)),
190
+ adv: width
191
+ };
192
+ }
193
+ /**
194
+ * Serializes a Date object into a Buffer containing its timestamp as a big integer value.
195
+ * The resulting Buffer has a fixed width of 8 bytes, representing a 64-bit big-endian integer.
196
+ * This function is useful for converting date values into a binary format that can be stored or transmitted easily.
197
+ *
198
+ * @param date - The Date object to be serialized.
199
+ * @returns A Buffer containing the serialized timestamp of the input Date object.
200
+ */ export function serializeDate(date) {
201
+ return serializeBigInt(BigInt(date.getTime()), 8);
202
+ }
203
+ /**
204
+ * Deserialize a boolean value from a given buffer at the specified offset.
205
+ * Reads a single byte at the provided offset in the buffer and returns
206
+ * the deserialized boolean value along with the number of bytes read (adv).
207
+ *
208
+ * @param buf - The buffer containing the serialized boolean value.
209
+ * @param offset - The position in the buffer to start reading the boolean value.
210
+ * @returns An object containing the deserialized boolean value (elem) and the number of bytes read (adv).
211
+ */ export function deserializeBool(buf, offset = 0) {
212
+ const adv = 1;
213
+ return {
214
+ elem: buf.readUInt8(offset),
215
+ adv
216
+ };
217
+ }
218
+ /**
219
+ * Deserialize a 4-byte unsigned integer from a buffer, starting at the specified offset.
220
+ * The deserialization reads 4 bytes from the given buffer and converts it into a number.
221
+ * Returns an object containing the deserialized unsigned integer and the number of bytes advanced (4).
222
+ *
223
+ * @param buf - The buffer containing the serialized unsigned integer.
224
+ * @param offset - The starting position in the buffer to deserialize from (default is 0).
225
+ * @returns An object with the deserialized unsigned integer as 'elem' and the number of bytes advanced ('adv') as 4.
226
+ */ export function deserializeUInt32(buf, offset = 0) {
227
+ const adv = 4;
228
+ return {
229
+ elem: buf.readUInt32BE(offset),
230
+ adv
231
+ };
232
+ }
233
+ /**
234
+ * Deserialize a signed 32-bit integer from a buffer at the given offset.
235
+ * The input 'buf' should be a Buffer containing binary data, and 'offset' should be the position in the buffer
236
+ * where the signed 32-bit integer starts. Returns an object with both the deserialized integer (elem) and the
237
+ * number of bytes advanced in the buffer (adv, always equal to 4).
238
+ *
239
+ * @param buf - The buffer containing the binary data.
240
+ * @param offset - Optional, the position in the buffer where the signed 32-bit integer starts (default is 0).
241
+ * @returns An object with the deserialized integer as 'elem' and the number of bytes advanced as 'adv'.
242
+ */ export function deserializeInt32(buf, offset = 0) {
243
+ const adv = 4;
244
+ return {
245
+ elem: buf.readInt32BE(offset),
246
+ adv
247
+ };
248
+ }
@@ -0,0 +1,23 @@
1
+ type Deserializable = {
2
+ fromString(str: string): object;
3
+ };
4
+ /**
5
+ * Register a class here that has a toJSON method that returns:
6
+ * ```
7
+ * {
8
+ * "type": "ExampleClassName",
9
+ * "value": <result of ExampleClassName.toString()>
10
+ * }
11
+ * ```
12
+ * and has an e.g. ExampleClassName.fromString(string) method.
13
+ * This means you can then easily serialize/deserialize the type using JSON.stringify and JSON.parse.
14
+ */
15
+ export declare class TypeRegistry {
16
+ private static registry;
17
+ static register(typeName: string, constructor: Deserializable): void;
18
+ static getConstructor(typeName: string): Deserializable | undefined;
19
+ }
20
+ export declare function resolver(_: any, value: any): any;
21
+ export declare function reviver(key: string, value: any): any;
22
+ export {};
23
+ //# sourceMappingURL=type_registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type_registry.d.ts","sourceRoot":"","sources":["../../src/serialize/type_registry.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0C;WAEnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,GAAG,IAAI;WAI7D,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;CAG3E;AAmBD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,OAgB1C;AAGD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAW9C"}