@aztec/bb.js 3.0.0-devnet.2 → 3.0.0-devnet.20251212

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 (595) hide show
  1. package/build/amd64-linux/bb +0 -0
  2. package/build/amd64-linux/nodejs_module.node +0 -0
  3. package/build/amd64-macos/bb +0 -0
  4. package/build/amd64-macos/nodejs_module.node +0 -0
  5. package/build/arm64-linux/bb +0 -0
  6. package/build/arm64-linux/nodejs_module.node +0 -0
  7. package/build/arm64-macos/bb +0 -0
  8. package/build/arm64-macos/nodejs_module.node +0 -0
  9. package/dest/browser/async_map/index.d.ts +1 -1
  10. package/dest/browser/async_map/index.js +1 -1
  11. package/dest/browser/barretenberg/backend.d.ts +30 -39
  12. package/dest/browser/barretenberg/backend.d.ts.map +1 -1
  13. package/dest/browser/barretenberg/backend.js +103 -98
  14. package/dest/browser/barretenberg/index.d.ts +4 -6
  15. package/dest/browser/barretenberg/index.d.ts.map +1 -1
  16. package/dest/browser/barretenberg/index.js +20 -29
  17. package/dest/browser/barretenberg/testing/bigint-buffer.d.ts +17 -0
  18. package/dest/browser/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
  19. package/dest/browser/barretenberg/testing/bigint-buffer.js +37 -0
  20. package/dest/browser/barretenberg/testing/fields.d.ts +16 -0
  21. package/dest/browser/barretenberg/testing/fields.d.ts.map +1 -0
  22. package/dest/browser/barretenberg/testing/fields.js +47 -0
  23. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  24. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  25. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.js +5 -6
  26. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +1 -1
  27. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -1
  28. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +1 -3
  29. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +1 -1
  30. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +1 -7
  31. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  32. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  33. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +5 -4
  34. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +13 -7
  35. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  36. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.js +45 -18
  37. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +1 -1
  38. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -1
  39. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +1 -3
  40. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +1 -1
  41. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +1 -7
  42. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +9 -8
  43. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
  44. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.js +4 -3
  45. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +1 -1
  46. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
  47. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +1 -1
  48. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
  49. package/dest/browser/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
  50. package/dest/browser/barretenberg_wasm/fetch_code/browser/index.js +1 -1
  51. package/dest/browser/barretenberg_wasm/fetch_code/index.d.ts +1 -1
  52. package/dest/browser/barretenberg_wasm/helpers/browser/index.d.ts +2 -2
  53. package/dest/browser/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -1
  54. package/dest/browser/barretenberg_wasm/helpers/browser/index.js +9 -2
  55. package/dest/browser/barretenberg_wasm/helpers/index.d.ts +1 -1
  56. package/dest/browser/barretenberg_wasm/index.d.ts +1 -1
  57. package/dest/browser/barretenberg_wasm/index.d.ts.map +1 -1
  58. package/dest/browser/barretenberg_wasm/index.js +2 -3
  59. package/dest/browser/bb_backends/browser/index.d.ts +1 -1
  60. package/dest/browser/bb_backends/browser/index.js +1 -1
  61. package/dest/browser/bb_backends/browser/platform.d.ts +4 -0
  62. package/dest/browser/bb_backends/browser/platform.d.ts.map +1 -0
  63. package/dest/browser/bb_backends/browser/platform.js +10 -0
  64. package/dest/browser/bb_backends/index.d.ts +10 -7
  65. package/dest/browser/bb_backends/index.d.ts.map +1 -1
  66. package/dest/browser/bb_backends/index.js +8 -7
  67. package/dest/browser/bb_backends/interface.d.ts +1 -1
  68. package/dest/browser/bb_backends/wasm.d.ts +1 -1
  69. package/dest/browser/bb_backends/wasm.d.ts.map +1 -1
  70. package/dest/browser/bb_backends/wasm.js +5 -3
  71. package/dest/browser/bbapi_exception.d.ts +7 -0
  72. package/dest/browser/bbapi_exception.d.ts.map +1 -0
  73. package/dest/browser/bbapi_exception.js +14 -0
  74. package/dest/browser/bin/index.d.ts +3 -0
  75. package/dest/browser/bin/index.d.ts.map +1 -0
  76. package/dest/browser/bin/index.js +11 -0
  77. package/dest/browser/cbind/generate.d.ts +1 -1
  78. package/dest/browser/cbind/generate.js +93 -1
  79. package/dest/browser/cbind/generated/api_types.d.ts +632 -400
  80. package/dest/browser/cbind/generated/api_types.d.ts.map +1 -1
  81. package/dest/browser/cbind/generated/api_types.js +773 -465
  82. package/dest/browser/cbind/generated/async.d.ts +16 -11
  83. package/dest/browser/cbind/generated/async.d.ts.map +1 -1
  84. package/dest/browser/cbind/generated/async.js +305 -96
  85. package/dest/browser/cbind/generated/curve_constants.d.ts +45 -0
  86. package/dest/browser/cbind/generated/curve_constants.d.ts.map +1 -0
  87. package/dest/browser/cbind/generated/curve_constants.js +45 -0
  88. package/dest/browser/cbind/generated/sync.d.ts +16 -11
  89. package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
  90. package/dest/browser/cbind/generated/sync.js +300 -96
  91. package/dest/browser/cbind/schema_compiler.d.ts +1 -1
  92. package/dest/browser/cbind/schema_compiler.d.ts.map +1 -1
  93. package/dest/browser/cbind/schema_compiler.js +29 -8
  94. package/dest/browser/crs/browser/cached_net_crs.d.ts +1 -1
  95. package/dest/browser/crs/browser/cached_net_crs.d.ts.map +1 -1
  96. package/dest/browser/crs/browser/cached_net_crs.js +6 -1
  97. package/dest/browser/crs/browser/index.d.ts +1 -1
  98. package/dest/browser/crs/index.d.ts +1 -1
  99. package/dest/browser/crs/net_crs.d.ts +1 -16
  100. package/dest/browser/crs/net_crs.d.ts.map +1 -1
  101. package/dest/browser/crs/net_crs.js +6 -1
  102. package/dest/browser/index.d.ts +6 -3
  103. package/dest/browser/index.d.ts.map +1 -1
  104. package/dest/browser/index.js +5 -2
  105. package/dest/browser/proof/index.d.ts +1 -1
  106. package/dest/browser/proof/index.js +1 -1
  107. package/dest/browser/random/browser/index.d.ts +1 -1
  108. package/dest/browser/random/browser/index.d.ts.map +1 -1
  109. package/dest/browser/random/browser/index.js +1 -1
  110. package/dest/browser/random/index.d.ts +1 -1
  111. package/dest/browser/retry/index.d.ts +1 -1
  112. package/dest/browser/retry/index.js +1 -1
  113. package/dest/node/async_map/index.d.ts +1 -1
  114. package/dest/node/async_map/index.js +1 -1
  115. package/dest/node/barretenberg/backend.d.ts +30 -39
  116. package/dest/node/barretenberg/backend.d.ts.map +1 -1
  117. package/dest/node/barretenberg/backend.js +103 -98
  118. package/dest/node/barretenberg/blake2s.test.d.ts +1 -1
  119. package/dest/node/barretenberg/blake2s.test.js +2 -2
  120. package/dest/node/barretenberg/index.d.ts +4 -6
  121. package/dest/node/barretenberg/index.d.ts.map +1 -1
  122. package/dest/node/barretenberg/index.js +20 -29
  123. package/dest/node/barretenberg/pedersen.test.d.ts +1 -1
  124. package/dest/node/barretenberg/pedersen.test.js +2 -2
  125. package/dest/node/barretenberg/poseidon.bench.test.d.ts +1 -1
  126. package/dest/node/barretenberg/poseidon.bench.test.js +81 -79
  127. package/dest/node/barretenberg/poseidon.test.d.ts +1 -1
  128. package/dest/node/barretenberg/poseidon.test.js +2 -2
  129. package/dest/node/barretenberg/testing/bigint-buffer.d.ts +17 -0
  130. package/dest/node/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
  131. package/dest/node/barretenberg/testing/bigint-buffer.js +37 -0
  132. package/dest/node/barretenberg/testing/fields.d.ts +16 -0
  133. package/dest/node/barretenberg/testing/fields.d.ts.map +1 -0
  134. package/dest/node/barretenberg/testing/fields.js +47 -0
  135. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  136. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  137. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  138. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +5 -6
  139. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +1 -1
  140. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -1
  141. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +1 -3
  142. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +1 -1
  143. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +1 -7
  144. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +1 -1
  145. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -1
  146. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +1 -3
  147. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +1 -1
  148. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +1 -8
  149. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  150. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  151. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +5 -4
  152. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +13 -7
  153. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  154. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +45 -18
  155. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +1 -1
  156. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -1
  157. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +1 -3
  158. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +1 -1
  159. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +1 -7
  160. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +1 -1
  161. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -1
  162. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +1 -3
  163. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +1 -1
  164. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +1 -7
  165. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +9 -8
  166. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
  167. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.js +4 -3
  168. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +1 -1
  169. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +1 -1
  170. package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
  171. package/dest/node/barretenberg_wasm/fetch_code/browser/index.js +1 -1
  172. package/dest/node/barretenberg_wasm/fetch_code/index.d.ts +1 -1
  173. package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
  174. package/dest/node/barretenberg_wasm/fetch_code/node/index.js +1 -1
  175. package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts +2 -2
  176. package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -1
  177. package/dest/node/barretenberg_wasm/helpers/browser/index.js +9 -2
  178. package/dest/node/barretenberg_wasm/helpers/index.d.ts +1 -1
  179. package/dest/node/barretenberg_wasm/helpers/node/index.d.ts +5 -6
  180. package/dest/node/barretenberg_wasm/helpers/node/index.d.ts.map +1 -1
  181. package/dest/node/barretenberg_wasm/helpers/node/index.js +14 -6
  182. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts +2 -2
  183. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -1
  184. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.js +1 -1
  185. package/dest/node/barretenberg_wasm/index.d.ts +1 -1
  186. package/dest/node/barretenberg_wasm/index.d.ts.map +1 -1
  187. package/dest/node/barretenberg_wasm/index.js +2 -3
  188. package/dest/node/barretenberg_wasm/index.test.d.ts +1 -1
  189. package/dest/node/barretenberg_wasm/index.test.js +1 -1
  190. package/dest/node/bb_backends/browser/index.d.ts +1 -1
  191. package/dest/node/bb_backends/browser/index.js +1 -1
  192. package/dest/node/bb_backends/browser/platform.d.ts +4 -0
  193. package/dest/node/bb_backends/browser/platform.d.ts.map +1 -0
  194. package/dest/node/bb_backends/browser/platform.js +10 -0
  195. package/dest/node/bb_backends/index.d.ts +10 -7
  196. package/dest/node/bb_backends/index.d.ts.map +1 -1
  197. package/dest/node/bb_backends/index.js +8 -7
  198. package/dest/node/bb_backends/interface.d.ts +1 -1
  199. package/dest/node/bb_backends/node/index.d.ts +1 -1
  200. package/dest/node/bb_backends/node/index.d.ts.map +1 -1
  201. package/dest/node/bb_backends/node/index.js +15 -9
  202. package/dest/node/bb_backends/node/native_pipe.d.ts +1 -1
  203. package/dest/node/bb_backends/node/native_pipe.d.ts.map +1 -1
  204. package/dest/node/bb_backends/node/native_pipe.js +11 -10
  205. package/dest/node/bb_backends/node/native_shm.d.ts +3 -3
  206. package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -1
  207. package/dest/node/bb_backends/node/native_shm.js +49 -22
  208. package/dest/node/bb_backends/node/native_shm_async.d.ts +51 -0
  209. package/dest/node/bb_backends/node/native_shm_async.d.ts.map +1 -0
  210. package/dest/node/bb_backends/node/native_shm_async.js +237 -0
  211. package/dest/node/bb_backends/node/native_socket.d.ts +2 -2
  212. package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -1
  213. package/dest/node/bb_backends/node/native_socket.js +43 -31
  214. package/dest/node/bb_backends/node/platform.d.ts +1 -1
  215. package/dest/node/bb_backends/node/platform.js +1 -1
  216. package/dest/node/bb_backends/wasm.d.ts +1 -1
  217. package/dest/node/bb_backends/wasm.d.ts.map +1 -1
  218. package/dest/node/bb_backends/wasm.js +5 -3
  219. package/dest/node/bbapi/exception_handling.test.d.ts +2 -0
  220. package/dest/node/bbapi/exception_handling.test.d.ts.map +1 -0
  221. package/dest/node/bbapi/exception_handling.test.js +48 -0
  222. package/dest/node/bbapi_exception.d.ts +7 -0
  223. package/dest/node/bbapi_exception.d.ts.map +1 -0
  224. package/dest/node/bbapi_exception.js +14 -0
  225. package/dest/node/benchmark/index.d.ts +1 -1
  226. package/dest/node/benchmark/index.js +1 -1
  227. package/dest/node/benchmark/timer.d.ts +1 -1
  228. package/dest/node/benchmark/timer.d.ts.map +1 -1
  229. package/dest/node/benchmark/timer.js +2 -1
  230. package/dest/node/bin/index.d.ts +3 -0
  231. package/dest/node/bin/index.d.ts.map +1 -0
  232. package/dest/node/bin/index.js +11 -0
  233. package/dest/node/cbind/generate.d.ts +1 -1
  234. package/dest/node/cbind/generate.js +93 -1
  235. package/dest/node/cbind/generated/api_types.d.ts +632 -400
  236. package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
  237. package/dest/node/cbind/generated/api_types.js +773 -465
  238. package/dest/node/cbind/generated/async.d.ts +16 -11
  239. package/dest/node/cbind/generated/async.d.ts.map +1 -1
  240. package/dest/node/cbind/generated/async.js +305 -96
  241. package/dest/node/cbind/generated/curve_constants.d.ts +45 -0
  242. package/dest/node/cbind/generated/curve_constants.d.ts.map +1 -0
  243. package/dest/node/cbind/generated/curve_constants.js +45 -0
  244. package/dest/node/cbind/generated/sync.d.ts +16 -11
  245. package/dest/node/cbind/generated/sync.d.ts.map +1 -1
  246. package/dest/node/cbind/generated/sync.js +300 -96
  247. package/dest/node/cbind/schema_compiler.d.ts +1 -1
  248. package/dest/node/cbind/schema_compiler.d.ts.map +1 -1
  249. package/dest/node/cbind/schema_compiler.js +29 -8
  250. package/dest/node/crs/browser/cached_net_crs.d.ts +1 -1
  251. package/dest/node/crs/browser/cached_net_crs.d.ts.map +1 -1
  252. package/dest/node/crs/browser/cached_net_crs.js +6 -1
  253. package/dest/node/crs/browser/index.d.ts +1 -1
  254. package/dest/node/crs/index.d.ts +1 -1
  255. package/dest/node/crs/net_crs.d.ts +1 -16
  256. package/dest/node/crs/net_crs.d.ts.map +1 -1
  257. package/dest/node/crs/net_crs.js +6 -1
  258. package/dest/node/crs/node/index.d.ts +1 -1
  259. package/dest/node/crs/node/index.d.ts.map +1 -1
  260. package/dest/node/crs/node/index.js +11 -6
  261. package/dest/node/index.d.ts +6 -3
  262. package/dest/node/index.d.ts.map +1 -1
  263. package/dest/node/index.js +5 -2
  264. package/dest/node/proof/index.d.ts +1 -1
  265. package/dest/node/proof/index.js +1 -1
  266. package/dest/node/random/browser/index.d.ts +1 -1
  267. package/dest/node/random/browser/index.d.ts.map +1 -1
  268. package/dest/node/random/browser/index.js +1 -1
  269. package/dest/node/random/index.d.ts +1 -1
  270. package/dest/node/random/node/index.d.ts +1 -1
  271. package/dest/node/random/node/index.js +1 -1
  272. package/dest/node/retry/index.d.ts +1 -1
  273. package/dest/node/retry/index.js +1 -1
  274. package/dest/node-cjs/async_map/index.d.ts +1 -1
  275. package/dest/node-cjs/async_map/index.js +1 -1
  276. package/dest/node-cjs/barretenberg/backend.d.ts +30 -39
  277. package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
  278. package/dest/node-cjs/barretenberg/backend.js +108 -103
  279. package/dest/node-cjs/barretenberg/blake2s.test.d.ts +1 -1
  280. package/dest/node-cjs/barretenberg/blake2s.test.js +6 -6
  281. package/dest/node-cjs/barretenberg/index.d.ts +4 -6
  282. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
  283. package/dest/node-cjs/barretenberg/index.js +25 -34
  284. package/dest/node-cjs/barretenberg/pedersen.test.d.ts +1 -1
  285. package/dest/node-cjs/barretenberg/pedersen.test.js +9 -9
  286. package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts +1 -1
  287. package/dest/node-cjs/barretenberg/poseidon.bench.test.js +89 -87
  288. package/dest/node-cjs/barretenberg/poseidon.test.d.ts +1 -1
  289. package/dest/node-cjs/barretenberg/poseidon.test.js +4 -4
  290. package/dest/node-cjs/barretenberg/testing/bigint-buffer.d.ts +17 -0
  291. package/dest/node-cjs/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
  292. package/dest/node-cjs/barretenberg/testing/bigint-buffer.js +43 -0
  293. package/dest/node-cjs/barretenberg/testing/fields.d.ts +16 -0
  294. package/dest/node-cjs/barretenberg/testing/fields.d.ts.map +1 -0
  295. package/dest/node-cjs/barretenberg/testing/fields.js +51 -0
  296. package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  297. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  298. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  299. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +7 -8
  300. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +1 -1
  301. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -1
  302. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +3 -5
  303. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +1 -1
  304. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +1 -7
  305. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +1 -1
  306. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -1
  307. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +1 -3
  308. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +1 -1
  309. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +1 -8
  310. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  311. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  312. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +5 -4
  313. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +13 -7
  314. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  315. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +45 -18
  316. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +1 -1
  317. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -1
  318. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +3 -5
  319. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +1 -1
  320. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +1 -7
  321. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +1 -1
  322. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -1
  323. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +1 -3
  324. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +1 -1
  325. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +1 -7
  326. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +9 -8
  327. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
  328. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.js +4 -3
  329. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +1 -1
  330. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
  331. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +1 -1
  332. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
  333. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
  334. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.js +2 -2
  335. package/dest/node-cjs/barretenberg_wasm/fetch_code/index.d.ts +1 -1
  336. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
  337. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.js +2 -2
  338. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts +2 -2
  339. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -1
  340. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.js +9 -2
  341. package/dest/node-cjs/barretenberg_wasm/helpers/index.d.ts +1 -1
  342. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts +5 -6
  343. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts.map +1 -1
  344. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.js +15 -7
  345. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts +2 -2
  346. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -1
  347. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.js +1 -1
  348. package/dest/node-cjs/barretenberg_wasm/index.d.ts +1 -1
  349. package/dest/node-cjs/barretenberg_wasm/index.d.ts.map +1 -1
  350. package/dest/node-cjs/barretenberg_wasm/index.js +2 -3
  351. package/dest/node-cjs/barretenberg_wasm/index.test.d.ts +1 -1
  352. package/dest/node-cjs/barretenberg_wasm/index.test.js +1 -1
  353. package/dest/node-cjs/bb_backends/browser/index.d.ts +1 -1
  354. package/dest/node-cjs/bb_backends/browser/index.js +1 -1
  355. package/dest/node-cjs/bb_backends/browser/platform.d.ts +4 -0
  356. package/dest/node-cjs/bb_backends/browser/platform.d.ts.map +1 -0
  357. package/dest/node-cjs/bb_backends/browser/platform.js +15 -0
  358. package/dest/node-cjs/bb_backends/index.d.ts +10 -7
  359. package/dest/node-cjs/bb_backends/index.d.ts.map +1 -1
  360. package/dest/node-cjs/bb_backends/index.js +6 -6
  361. package/dest/node-cjs/bb_backends/interface.d.ts +1 -1
  362. package/dest/node-cjs/bb_backends/node/index.d.ts +1 -1
  363. package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -1
  364. package/dest/node-cjs/bb_backends/node/index.js +15 -9
  365. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts +1 -1
  366. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts.map +1 -1
  367. package/dest/node-cjs/bb_backends/node/native_pipe.js +11 -10
  368. package/dest/node-cjs/bb_backends/node/native_shm.d.ts +3 -3
  369. package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -1
  370. package/dest/node-cjs/bb_backends/node/native_shm.js +49 -22
  371. package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts +51 -0
  372. package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts.map +1 -0
  373. package/dest/node-cjs/bb_backends/node/native_shm_async.js +241 -0
  374. package/dest/node-cjs/bb_backends/node/native_socket.d.ts +2 -2
  375. package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -1
  376. package/dest/node-cjs/bb_backends/node/native_socket.js +43 -31
  377. package/dest/node-cjs/bb_backends/node/platform.d.ts +1 -1
  378. package/dest/node-cjs/bb_backends/node/platform.js +2 -2
  379. package/dest/node-cjs/bb_backends/wasm.d.ts +1 -1
  380. package/dest/node-cjs/bb_backends/wasm.d.ts.map +1 -1
  381. package/dest/node-cjs/bb_backends/wasm.js +5 -3
  382. package/dest/node-cjs/bbapi/exception_handling.test.d.ts +2 -0
  383. package/dest/node-cjs/bbapi/exception_handling.test.d.ts.map +1 -0
  384. package/dest/node-cjs/bbapi/exception_handling.test.js +50 -0
  385. package/dest/node-cjs/bbapi_exception.d.ts +7 -0
  386. package/dest/node-cjs/bbapi_exception.d.ts.map +1 -0
  387. package/dest/node-cjs/bbapi_exception.js +18 -0
  388. package/dest/node-cjs/benchmark/index.d.ts +1 -1
  389. package/dest/node-cjs/benchmark/index.js +2 -2
  390. package/dest/node-cjs/benchmark/timer.d.ts +1 -1
  391. package/dest/node-cjs/benchmark/timer.d.ts.map +1 -1
  392. package/dest/node-cjs/benchmark/timer.js +2 -1
  393. package/dest/node-cjs/bin/index.d.ts +3 -0
  394. package/dest/node-cjs/bin/index.d.ts.map +1 -0
  395. package/dest/node-cjs/bin/index.js +13 -0
  396. package/dest/node-cjs/cbind/generate.d.ts +1 -1
  397. package/dest/node-cjs/cbind/generate.js +93 -1
  398. package/dest/node-cjs/cbind/generated/api_types.d.ts +632 -400
  399. package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
  400. package/dest/node-cjs/cbind/generated/api_types.js +843 -507
  401. package/dest/node-cjs/cbind/generated/async.d.ts +16 -11
  402. package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
  403. package/dest/node-cjs/cbind/generated/async.js +304 -95
  404. package/dest/node-cjs/cbind/generated/curve_constants.d.ts +45 -0
  405. package/dest/node-cjs/cbind/generated/curve_constants.d.ts.map +1 -0
  406. package/dest/node-cjs/cbind/generated/curve_constants.js +48 -0
  407. package/dest/node-cjs/cbind/generated/sync.d.ts +16 -11
  408. package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
  409. package/dest/node-cjs/cbind/generated/sync.js +299 -95
  410. package/dest/node-cjs/cbind/schema_compiler.d.ts +1 -1
  411. package/dest/node-cjs/cbind/schema_compiler.d.ts.map +1 -1
  412. package/dest/node-cjs/cbind/schema_compiler.js +29 -8
  413. package/dest/node-cjs/crs/browser/cached_net_crs.d.ts +1 -1
  414. package/dest/node-cjs/crs/browser/cached_net_crs.d.ts.map +1 -1
  415. package/dest/node-cjs/crs/browser/cached_net_crs.js +6 -1
  416. package/dest/node-cjs/crs/browser/index.d.ts +1 -1
  417. package/dest/node-cjs/crs/browser/index.js +2 -2
  418. package/dest/node-cjs/crs/index.d.ts +1 -1
  419. package/dest/node-cjs/crs/index.js +2 -2
  420. package/dest/node-cjs/crs/net_crs.d.ts +1 -16
  421. package/dest/node-cjs/crs/net_crs.d.ts.map +1 -1
  422. package/dest/node-cjs/crs/net_crs.js +6 -1
  423. package/dest/node-cjs/crs/node/index.d.ts +1 -1
  424. package/dest/node-cjs/crs/node/index.d.ts.map +1 -1
  425. package/dest/node-cjs/crs/node/index.js +11 -6
  426. package/dest/node-cjs/index.d.ts +6 -3
  427. package/dest/node-cjs/index.d.ts.map +1 -1
  428. package/dest/node-cjs/index.js +28 -11
  429. package/dest/node-cjs/proof/index.d.ts +1 -1
  430. package/dest/node-cjs/proof/index.js +1 -1
  431. package/dest/node-cjs/random/browser/index.d.ts +1 -1
  432. package/dest/node-cjs/random/browser/index.d.ts.map +1 -1
  433. package/dest/node-cjs/random/browser/index.js +1 -1
  434. package/dest/node-cjs/random/index.d.ts +1 -1
  435. package/dest/node-cjs/random/node/index.d.ts +1 -1
  436. package/dest/node-cjs/random/node/index.js +1 -1
  437. package/dest/node-cjs/retry/index.d.ts +1 -1
  438. package/dest/node-cjs/retry/index.js +1 -1
  439. package/package.json +8 -6
  440. package/src/barretenberg/backend.ts +125 -126
  441. package/src/barretenberg/blake2s.test.ts +1 -1
  442. package/src/barretenberg/index.ts +24 -29
  443. package/src/barretenberg/pedersen.test.ts +1 -1
  444. package/src/barretenberg/poseidon.bench.test.ts +161 -157
  445. package/src/barretenberg/poseidon.test.ts +1 -1
  446. package/src/barretenberg/testing/fields.ts +63 -0
  447. package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +1 -2
  448. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts +0 -2
  449. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts +0 -7
  450. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts +0 -2
  451. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts +0 -9
  452. package/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts +4 -4
  453. package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +37 -4
  454. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts +0 -2
  455. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts +0 -7
  456. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts +0 -2
  457. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts +0 -7
  458. package/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts +3 -2
  459. package/src/barretenberg_wasm/helpers/browser/index.ts +8 -1
  460. package/src/barretenberg_wasm/helpers/node/index.ts +13 -6
  461. package/src/barretenberg_wasm/index.ts +1 -2
  462. package/src/bb_backends/browser/platform.ts +11 -0
  463. package/src/bb_backends/index.ts +9 -6
  464. package/src/bb_backends/node/index.ts +16 -8
  465. package/src/bb_backends/node/native_shm.ts +48 -24
  466. package/src/bb_backends/node/native_shm_async.ts +266 -0
  467. package/src/bb_backends/node/native_socket.ts +31 -17
  468. package/src/bb_backends/wasm.ts +1 -2
  469. package/src/bbapi/exception_handling.test.ts +54 -0
  470. package/src/bbapi_exception.ts +13 -0
  471. package/src/bin/index.ts +14 -0
  472. package/src/cbind/generate.ts +99 -0
  473. package/src/cbind/schema_compiler.ts +25 -3
  474. package/src/crs/node/index.ts +4 -5
  475. package/src/index.ts +32 -1
  476. package/dest/browser/bb_backends/sync_to_async_adapter.d.ts +0 -15
  477. package/dest/browser/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
  478. package/dest/browser/bb_backends/sync_to_async_adapter.js +0 -20
  479. package/dest/browser/bigint-array/index.d.ts +0 -17
  480. package/dest/browser/bigint-array/index.d.ts.map +0 -1
  481. package/dest/browser/bigint-array/index.js +0 -37
  482. package/dest/browser/log/browser/index.d.ts +0 -6
  483. package/dest/browser/log/browser/index.d.ts.map +0 -1
  484. package/dest/browser/log/browser/index.js +0 -28
  485. package/dest/browser/log/index.d.ts +0 -2
  486. package/dest/browser/log/index.d.ts.map +0 -1
  487. package/dest/browser/log/index.js +0 -2
  488. package/dest/browser/log/types.d.ts +0 -6
  489. package/dest/browser/log/types.d.ts.map +0 -1
  490. package/dest/browser/log/types.js +0 -2
  491. package/dest/browser/serialize/buffer_reader.d.ts +0 -28
  492. package/dest/browser/serialize/buffer_reader.d.ts.map +0 -1
  493. package/dest/browser/serialize/buffer_reader.js +0 -66
  494. package/dest/browser/serialize/index.d.ts +0 -3
  495. package/dest/browser/serialize/index.d.ts.map +0 -1
  496. package/dest/browser/serialize/index.js +0 -3
  497. package/dest/browser/serialize/serialize.d.ts +0 -18
  498. package/dest/browser/serialize/serialize.d.ts.map +0 -1
  499. package/dest/browser/serialize/serialize.js +0 -72
  500. package/dest/browser/types/fields.d.ts +0 -43
  501. package/dest/browser/types/fields.d.ts.map +0 -1
  502. package/dest/browser/types/fields.js +0 -102
  503. package/dest/browser/types/index.d.ts +0 -3
  504. package/dest/browser/types/index.d.ts.map +0 -1
  505. package/dest/browser/types/index.js +0 -3
  506. package/dest/browser/types/point.d.ts +0 -16
  507. package/dest/browser/types/point.d.ts.map +0 -1
  508. package/dest/browser/types/point.js +0 -31
  509. package/dest/node/bb_backends/sync_to_async_adapter.d.ts +0 -15
  510. package/dest/node/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
  511. package/dest/node/bb_backends/sync_to_async_adapter.js +0 -20
  512. package/dest/node/bigint-array/index.d.ts +0 -17
  513. package/dest/node/bigint-array/index.d.ts.map +0 -1
  514. package/dest/node/bigint-array/index.js +0 -37
  515. package/dest/node/log/browser/index.d.ts +0 -6
  516. package/dest/node/log/browser/index.d.ts.map +0 -1
  517. package/dest/node/log/browser/index.js +0 -28
  518. package/dest/node/log/index.d.ts +0 -2
  519. package/dest/node/log/index.d.ts.map +0 -1
  520. package/dest/node/log/index.js +0 -2
  521. package/dest/node/log/node/index.d.ts +0 -6
  522. package/dest/node/log/node/index.d.ts.map +0 -1
  523. package/dest/node/log/node/index.js +0 -40
  524. package/dest/node/log/types.d.ts +0 -6
  525. package/dest/node/log/types.d.ts.map +0 -1
  526. package/dest/node/log/types.js +0 -2
  527. package/dest/node/serialize/buffer_reader.d.ts +0 -28
  528. package/dest/node/serialize/buffer_reader.d.ts.map +0 -1
  529. package/dest/node/serialize/buffer_reader.js +0 -66
  530. package/dest/node/serialize/index.d.ts +0 -3
  531. package/dest/node/serialize/index.d.ts.map +0 -1
  532. package/dest/node/serialize/index.js +0 -3
  533. package/dest/node/serialize/serialize.d.ts +0 -18
  534. package/dest/node/serialize/serialize.d.ts.map +0 -1
  535. package/dest/node/serialize/serialize.js +0 -72
  536. package/dest/node/types/fields.d.ts +0 -43
  537. package/dest/node/types/fields.d.ts.map +0 -1
  538. package/dest/node/types/fields.js +0 -102
  539. package/dest/node/types/index.d.ts +0 -3
  540. package/dest/node/types/index.d.ts.map +0 -1
  541. package/dest/node/types/index.js +0 -3
  542. package/dest/node/types/point.d.ts +0 -16
  543. package/dest/node/types/point.d.ts.map +0 -1
  544. package/dest/node/types/point.js +0 -31
  545. package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts +0 -15
  546. package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
  547. package/dest/node-cjs/bb_backends/sync_to_async_adapter.js +0 -24
  548. package/dest/node-cjs/bigint-array/index.d.ts +0 -17
  549. package/dest/node-cjs/bigint-array/index.d.ts.map +0 -1
  550. package/dest/node-cjs/bigint-array/index.js +0 -43
  551. package/dest/node-cjs/log/browser/index.d.ts +0 -6
  552. package/dest/node-cjs/log/browser/index.d.ts.map +0 -1
  553. package/dest/node-cjs/log/browser/index.js +0 -30
  554. package/dest/node-cjs/log/index.d.ts +0 -2
  555. package/dest/node-cjs/log/index.d.ts.map +0 -1
  556. package/dest/node-cjs/log/index.js +0 -8
  557. package/dest/node-cjs/log/node/index.d.ts +0 -6
  558. package/dest/node-cjs/log/node/index.d.ts.map +0 -1
  559. package/dest/node-cjs/log/node/index.js +0 -42
  560. package/dest/node-cjs/log/types.d.ts +0 -6
  561. package/dest/node-cjs/log/types.d.ts.map +0 -1
  562. package/dest/node-cjs/log/types.js +0 -3
  563. package/dest/node-cjs/serialize/buffer_reader.d.ts +0 -28
  564. package/dest/node-cjs/serialize/buffer_reader.d.ts.map +0 -1
  565. package/dest/node-cjs/serialize/buffer_reader.js +0 -70
  566. package/dest/node-cjs/serialize/index.d.ts +0 -3
  567. package/dest/node-cjs/serialize/index.d.ts.map +0 -1
  568. package/dest/node-cjs/serialize/index.js +0 -6
  569. package/dest/node-cjs/serialize/serialize.d.ts +0 -18
  570. package/dest/node-cjs/serialize/serialize.d.ts.map +0 -1
  571. package/dest/node-cjs/serialize/serialize.js +0 -82
  572. package/dest/node-cjs/types/fields.d.ts +0 -43
  573. package/dest/node-cjs/types/fields.d.ts.map +0 -1
  574. package/dest/node-cjs/types/fields.js +0 -107
  575. package/dest/node-cjs/types/index.d.ts +0 -3
  576. package/dest/node-cjs/types/index.d.ts.map +0 -1
  577. package/dest/node-cjs/types/index.js +0 -6
  578. package/dest/node-cjs/types/point.d.ts +0 -16
  579. package/dest/node-cjs/types/point.d.ts.map +0 -1
  580. package/dest/node-cjs/types/point.js +0 -35
  581. package/src/bb_backends/sync_to_async_adapter.ts +0 -21
  582. package/src/cbind/generated/api_types.ts +0 -3757
  583. package/src/cbind/generated/async.ts +0 -504
  584. package/src/cbind/generated/sync.ts +0 -455
  585. package/src/log/browser/index.ts +0 -35
  586. package/src/log/index.ts +0 -1
  587. package/src/log/node/index.ts +0 -52
  588. package/src/log/types.ts +0 -6
  589. package/src/serialize/buffer_reader.ts +0 -85
  590. package/src/serialize/index.ts +0 -2
  591. package/src/serialize/serialize.ts +0 -75
  592. package/src/types/fields.ts +0 -126
  593. package/src/types/index.ts +0 -2
  594. package/src/types/point.ts +0 -38
  595. /package/src/{bigint-array/index.ts → barretenberg/testing/bigint-buffer.ts} +0 -0
@@ -0,0 +1,266 @@
1
+ import { createRequire } from 'module';
2
+ import { spawn, ChildProcess } from 'child_process';
3
+ import { openSync, closeSync } from 'fs';
4
+ import { IMsgpackBackendAsync } from '../interface.js';
5
+ import { findNapiBinary, findPackageRoot } from './platform.js';
6
+
7
+ // Import the NAPI module
8
+ // The addon is built to the nodejs_module directory
9
+ const addonPath = findNapiBinary();
10
+ // Try loading, but don't throw if it doesn't exist (will be caught in constructor)
11
+ let addon: any = null;
12
+ try {
13
+ if (addonPath) {
14
+ const require = createRequire(findPackageRoot()!);
15
+ addon = require(addonPath);
16
+ }
17
+ } catch (err) {
18
+ // Addon not built yet or not available
19
+ addon = null;
20
+ }
21
+
22
+ let instanceCounter = 0;
23
+
24
+ /**
25
+ * Asynchronous shared memory backend that communicates with bb binary via shared memory.
26
+ * Uses NAPI module with background thread polling for async operations.
27
+ * Supports request pipelining - multiple requests can be in flight simultaneously.
28
+ *
29
+ * Architecture (matches socket backend pattern):
30
+ * - bb acts as the SERVER, TypeScript is the CLIENT
31
+ * - bb creates the shared memory region
32
+ * - TypeScript connects via NAPI wrapper (MsgpackClientAsync)
33
+ * - TypeScript manages promise queue (single-threaded, no mutex needed)
34
+ * - C++ background thread polls for responses, calls JavaScript callback
35
+ * - JavaScript callback pops queue and resolves promises in FIFO order
36
+ */
37
+ export class BarretenbergNativeShmAsyncBackend implements IMsgpackBackendAsync {
38
+ private process: ChildProcess;
39
+ private client: any; // NAPI MsgpackClientAsync instance
40
+ private logFd?: number; // File descriptor for logs
41
+
42
+ // Queue of pending callbacks for pipelined requests
43
+ // Responses come back in FIFO order, so we match them with queued callbacks
44
+ private pendingCallbacks: Array<{
45
+ resolve: (data: Uint8Array) => void;
46
+ reject: (error: Error) => void;
47
+ }> = [];
48
+
49
+ private constructor(process: ChildProcess, client: any, logFd?: number) {
50
+ this.process = process;
51
+ this.client = client;
52
+ this.logFd = logFd;
53
+
54
+ // Register our response handler with the C++ client
55
+ // This callback will be invoked from the background thread via ThreadSafeFunction
56
+ this.client.setResponseCallback((responseBuffer: Buffer) => {
57
+ this.handleResponse(responseBuffer);
58
+ });
59
+ }
60
+
61
+ /**
62
+ * Handle response from C++ background thread
63
+ * Dequeues the next pending callback and resolves it (FIFO order)
64
+ */
65
+ private handleResponse(responseBuffer: Buffer): void {
66
+ // Response is complete - dequeue the next pending callback (FIFO)
67
+ const callback = this.pendingCallbacks.shift();
68
+ if (callback) {
69
+ callback.resolve(new Uint8Array(responseBuffer));
70
+ } else {
71
+ // This shouldn't happen - response without a pending request
72
+ console.warn('Received response but no pending callback');
73
+ }
74
+
75
+ // If no more pending callbacks, release ref to allow process to exit
76
+ if (this.pendingCallbacks.length === 0) {
77
+ this.client.release();
78
+ }
79
+ }
80
+
81
+ /**
82
+ * Create and initialize an async shared memory backend.
83
+ * @param bbBinaryPath Path to bb binary
84
+ * @param threads Optional number of threads (defaults to min(32, num_cpus))
85
+ * @param logger Optional logger function for bb output
86
+ */
87
+ static async new(
88
+ bbBinaryPath: string,
89
+ threads?: number,
90
+ logger?: (msg: string) => void,
91
+ ): Promise<BarretenbergNativeShmAsyncBackend> {
92
+ if (!addon || !addon.MsgpackClientAsync) {
93
+ throw new Error('Shared memory async NAPI not available.');
94
+ }
95
+
96
+ // Create a unique shared memory name
97
+ const shmName = `bb-async-${process.pid}-${instanceCounter++}`;
98
+
99
+ // If threads not set use num cpu cores, max 32 (same as socket backend)
100
+ const hwc = threads ? threads.toString() : '1';
101
+ const env = { ...process.env, HARDWARE_CONCURRENCY: hwc };
102
+
103
+ // Set up file logging if logger is provided
104
+ // Direct file redirection bypasses Node event loop - logs are written even if process hangs
105
+ let logFd: number | undefined;
106
+ let logPath: string | undefined;
107
+ if (logger) {
108
+ logPath = `/tmp/${shmName}.log`;
109
+ logFd = openSync(logPath, 'w');
110
+ logger(`BB process logs redirected to: ${logPath}`);
111
+ }
112
+
113
+ // Spawn bb process with shared memory mode
114
+ // Use larger ring buffers for async mode to support pipelining
115
+ const args = [
116
+ 'msgpack',
117
+ 'run',
118
+ '--input',
119
+ `${shmName}.shm`,
120
+ '--request-ring-size',
121
+ `${1024 * 1024 * 4}`,
122
+ '--response-ring-size',
123
+ `${1024 * 1024 * 4}`,
124
+ ];
125
+ const bbProcess = spawn(bbBinaryPath, args, {
126
+ stdio: ['ignore', logFd ?? 'ignore', logFd ?? 'ignore'],
127
+ env,
128
+ });
129
+
130
+ // Disconnect from event loop so process can exit without waiting for bb
131
+ // The bb process has parent death monitoring (prctl on Linux, kqueue on macOS)
132
+ // so it will automatically exit when Node.js exits
133
+ bbProcess.unref();
134
+
135
+ // Track if process has exited
136
+ let processExited = false;
137
+ let exitError: Error | null = null;
138
+
139
+ bbProcess.on('error', err => {
140
+ processExited = true;
141
+ exitError = new Error(`Native backend process error: ${err.message}`);
142
+ });
143
+
144
+ bbProcess.on('exit', (code, signal) => {
145
+ processExited = true;
146
+ if (code !== null && code !== 0) {
147
+ exitError = new Error(`Native backend process exited with code ${code}`);
148
+ } else if (signal && signal !== 'SIGTERM') {
149
+ exitError = new Error(`Native backend process killed with signal ${signal}`);
150
+ }
151
+ });
152
+
153
+ // Wait for bb to create shared memory
154
+ // Retry connection every 100ms for up to 5 seconds (longer than sync for thread startup)
155
+ const retryInterval = 100; // ms
156
+ const timeout = 5000; // ms
157
+ const maxAttempts = Math.floor(timeout / retryInterval);
158
+ let client: any = null;
159
+
160
+ try {
161
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
162
+ // Check if bb process has exited before attempting connection
163
+ if (processExited) {
164
+ throw exitError || new Error('Native backend process exited unexpectedly during startup');
165
+ }
166
+
167
+ // Wait before attempting connection (except first attempt)
168
+ if (attempt > 0) {
169
+ await new Promise(resolve => setTimeout(resolve, retryInterval));
170
+ }
171
+
172
+ try {
173
+ // Create NAPI async client
174
+ client = new addon.MsgpackClientAsync(shmName);
175
+ break; // Success!
176
+ } catch (err: any) {
177
+ // Connection failed, will retry
178
+ if (attempt === maxAttempts - 1) {
179
+ // Last attempt failed - check one more time if process exited
180
+ if (processExited && exitError) {
181
+ throw exitError;
182
+ }
183
+ throw new Error(`Failed to connect to shared memory after ${timeout}ms: ${err.message}`);
184
+ }
185
+ }
186
+ }
187
+
188
+ if (!client) {
189
+ throw new Error('Failed to create client connection');
190
+ }
191
+
192
+ return new BarretenbergNativeShmAsyncBackend(bbProcess, client, logFd);
193
+ } finally {
194
+ // If we failed to connect, ensure the process is killed and log file closed
195
+ if (!client) {
196
+ bbProcess.kill('SIGKILL');
197
+ if (logFd !== undefined) {
198
+ try {
199
+ closeSync(logFd);
200
+ } catch (e) {
201
+ // Ignore errors during cleanup
202
+ }
203
+ }
204
+ }
205
+ }
206
+ }
207
+
208
+ /**
209
+ * Send a msgpack request asynchronously.
210
+ * Supports pipelining - can be called multiple times before awaiting responses.
211
+ * Use Promise.all() to send multiple requests concurrently.
212
+ *
213
+ * Example:
214
+ * const results = await Promise.all([
215
+ * backend.call(buf1),
216
+ * backend.call(buf2),
217
+ * backend.call(buf3)
218
+ * ]);
219
+ *
220
+ * @param inputBuffer The msgpack-encoded request
221
+ * @returns Promise resolving to msgpack-encoded response
222
+ */
223
+ async call(inputBuffer: Uint8Array): Promise<Uint8Array> {
224
+ return new Promise((resolve, reject) => {
225
+ // If this is the first pending callback, acquire ref to keep event loop alive
226
+ if (this.pendingCallbacks.length === 0) {
227
+ this.client.acquire();
228
+ }
229
+
230
+ // Enqueue this promise's callbacks (FIFO order)
231
+ this.pendingCallbacks.push({ resolve, reject });
232
+
233
+ try {
234
+ // Send request to shared memory (synchronous write)
235
+ // C++ call() no longer returns a promise - we manage them here
236
+ this.client.call(Buffer.from(inputBuffer));
237
+ } catch (err: any) {
238
+ // Send failed - dequeue the callback we just added and reject
239
+ this.pendingCallbacks.pop();
240
+
241
+ // If queue is now empty, release ref to allow exit
242
+ if (this.pendingCallbacks.length === 0) {
243
+ this.client.release();
244
+ }
245
+
246
+ reject(new Error(`Shared memory async call failed: ${err.message}`));
247
+ }
248
+ });
249
+ }
250
+
251
+ async destroy(): Promise<void> {
252
+ // Kill the bb process
253
+ // Background thread and callbacks will be cleaned up by OS on process exit
254
+ this.process.kill('SIGTERM');
255
+ this.process.removeAllListeners();
256
+
257
+ // Close log file if open
258
+ if (this.logFd !== undefined) {
259
+ try {
260
+ closeSync(this.logFd);
261
+ } catch (e) {
262
+ // Ignore errors during cleanup
263
+ }
264
+ }
265
+ }
266
+ }
@@ -5,6 +5,7 @@ import * as os from 'os';
5
5
  import * as path from 'path';
6
6
  import { IMsgpackBackendAsync } from '../interface.js';
7
7
  import { findPackageRoot } from './platform.js';
8
+ import readline from 'readline';
8
9
 
9
10
  /**
10
11
  * Asynchronous native backend that communicates with bb binary via Unix Domain Socket.
@@ -40,7 +41,7 @@ export class BarretenbergNativeSocketAsyncBackend implements IMsgpackBackendAsyn
40
41
  private responseBuffer: Buffer | null = null;
41
42
  private responseBytesRead: number = 0;
42
43
 
43
- constructor(bbBinaryPath: string, threads?: number) {
44
+ constructor(bbBinaryPath: string, threads?: number, logger?: (msg: string) => void) {
44
45
  // Create a unique socket path in temp directory
45
46
  this.socketPath = path.join(os.tmpdir(), `bb-${process.pid}-${Date.now()}.sock`);
46
47
 
@@ -57,18 +58,28 @@ export class BarretenbergNativeSocketAsyncBackend implements IMsgpackBackendAsyn
57
58
  connectionReject = reject;
58
59
  });
59
60
 
60
- // Set HARDWARE_CONCURRENCY if threads specified
61
- const env = threads !== undefined ? { ...process.env, HARDWARE_CONCURRENCY: threads.toString() } : process.env;
61
+ // If threads not set use num cpu cores, max 32.
62
+ const hwc = threads ? threads.toString() : Math.min(32, os.cpus.length).toString();
63
+ const env = { ...process.env, HARDWARE_CONCURRENCY: '1' };
62
64
 
63
65
  // Spawn bb process - it will create the socket server
64
- const args = [bbBinaryPath, 'msgpack', 'run', '--input', this.socketPath];
65
- this.process = spawn(findPackageRoot() + '/scripts/kill_wrapper.sh', args, {
66
- stdio: ['ignore', 'ignore', 'ignore'],
66
+ const args = ['msgpack', 'run', '--input', this.socketPath];
67
+ this.process = spawn(bbBinaryPath, args, {
68
+ stdio: ['ignore', logger ? 'pipe' : 'ignore', logger ? 'pipe' : 'ignore'],
67
69
  env,
68
70
  });
69
- // Disconnect from event loop so process can exit. The kill wrapper will reap bb once parent (node) dies.
71
+
72
+ // Disconnect from event loop so process can exit without waiting for bb
73
+ // The bb process has parent death monitoring (prctl on Linux, kqueue on macOS)
74
+ // so it will automatically exit when Node.js exits
70
75
  this.process.unref();
71
76
 
77
+ if (logger) {
78
+ logger("Logger attached to bb process. DON'T FORGET TO DESTROY THE BACKEND to allow Node.js to exit.");
79
+ readline.createInterface({ input: this.process.stdout! }).on('line', logger);
80
+ readline.createInterface({ input: this.process.stderr! }).on('line', logger);
81
+ }
82
+
72
83
  this.process.on('error', err => {
73
84
  if (connectionReject) {
74
85
  connectionReject(new Error(`Native backend process error: ${err.message}`));
@@ -157,7 +168,7 @@ export class BarretenbergNativeSocketAsyncBackend implements IMsgpackBackendAsyn
157
168
 
158
169
  // Set up event handlers
159
170
  this.socket.once('connect', () => {
160
- this.socket!.unref();
171
+ // Socket starts referenced - will be unreferenced when no callbacks pending
161
172
 
162
173
  // Clear connection timeout on successful connection
163
174
  if (this.connectionTimeout) {
@@ -232,6 +243,11 @@ export class BarretenbergNativeSocketAsyncBackend implements IMsgpackBackendAsyn
232
243
  console.warn('Received response but no pending callback');
233
244
  }
234
245
 
246
+ // If no more pending callbacks, unref socket to allow process to exit
247
+ if (this.pendingCallbacks.length === 0 && this.socket) {
248
+ this.socket.unref();
249
+ }
250
+
235
251
  // Reset state for next message
236
252
  this.readingLength = true;
237
253
  this.lengthBytesRead = 0;
@@ -252,6 +268,11 @@ export class BarretenbergNativeSocketAsyncBackend implements IMsgpackBackendAsyn
252
268
  }
253
269
 
254
270
  return new Promise((resolve, reject) => {
271
+ // If this is the first pending callback, ref the socket to keep event loop alive
272
+ if (this.pendingCallbacks.length === 0) {
273
+ this.socket!.ref();
274
+ }
275
+
255
276
  // Enqueue this promise's callbacks (FIFO order)
256
277
  this.pendingCallbacks.push({ resolve, reject });
257
278
 
@@ -298,15 +319,8 @@ export class BarretenbergNativeSocketAsyncBackend implements IMsgpackBackendAsyn
298
319
  }
299
320
 
300
321
  async destroy(): Promise<void> {
301
- // Cleanup first (closes socket, unrefs everything)
302
322
  this.cleanup();
303
-
304
- // Send SIGTERM for graceful shutdown
305
- // Process is unref'd so won't block event loop - just kill and return
306
- try {
307
- this.process.kill('SIGTERM');
308
- } catch (e) {
309
- // Already dead
310
- }
323
+ this.process.kill('SIGTERM');
324
+ this.process.removeAllListeners();
311
325
  }
312
326
  }
@@ -3,7 +3,6 @@ import { fetchModuleAndThreads } from '../barretenberg_wasm/index.js';
3
3
  import { IMsgpackBackendSync, IMsgpackBackendAsync } from './interface.js';
4
4
  import { createMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js';
5
5
  import { getRemoteBarretenbergWasm } from '../barretenberg_wasm/helpers/index.js';
6
- import { createDebugLogger } from '../log/index.js';
7
6
  import { proxy } from 'comlink';
8
7
 
9
8
  /**
@@ -76,7 +75,7 @@ export class BarretenbergWasmAsyncBackend implements IMsgpackBackendAsync {
76
75
  await wasm.init(
77
76
  module,
78
77
  threads,
79
- proxy(options.logger ?? createDebugLogger('bb_wasm_async')),
78
+ proxy(options.logger ?? (() => {})),
80
79
  options.memory?.initial,
81
80
  options.memory?.maximum,
82
81
  );
@@ -0,0 +1,54 @@
1
+ import { BarretenbergWasmSyncBackend } from '../bb_backends/wasm.js';
2
+ import { SyncApi } from '../cbind/generated/sync.js';
3
+ import { BBApiException } from '../bbapi_exception.js';
4
+
5
+ describe('BBApi Exception Handling from bb.js', () => {
6
+ let backend: BarretenbergWasmSyncBackend;
7
+ let api: SyncApi;
8
+
9
+ beforeAll(async () => {
10
+ backend = await BarretenbergWasmSyncBackend.new();
11
+ api = new SyncApi(backend);
12
+ }, 60000);
13
+
14
+ afterAll(() => {
15
+ backend.destroy();
16
+ });
17
+
18
+ it('should catch CRS initialization exceptions from WASM', () => {
19
+ // Create an SrsInitSrs command with invalid data that will cause an exception in C++
20
+ // We pass buffers that are too small, which will cause validation to fail
21
+ const invalidCommand = {
22
+ numPoints: 100, // Request 100 points (requires 6400 bytes)
23
+ pointsBuf: new Uint8Array(10), // Only 10 bytes - will cause exception
24
+ g2Point: new Uint8Array(10), // Only 10 bytes (needs 128) - will cause exception
25
+ };
26
+
27
+ // In WASM builds, throw_or_abort calls abort directly which throws a generic Error
28
+ // In native builds with exceptions, our try-catch in bbapi converts it to ErrorResponse
29
+ // This test verifies that errors are catchable from bb.js (even if as generic Error in WASM)
30
+ expect(() => {
31
+ api.srsInitSrs(invalidCommand);
32
+ }).toThrow();
33
+ });
34
+
35
+ it('should return error message from caught exception', () => {
36
+ const invalidCommand = {
37
+ numPoints: 100,
38
+ pointsBuf: new Uint8Array(10),
39
+ g2Point: new Uint8Array(10),
40
+ };
41
+
42
+ try {
43
+ api.srsInitSrs(invalidCommand);
44
+ fail('Expected exception to be thrown');
45
+ } catch (error) {
46
+ // Error is catchable and contains a useful message
47
+ expect(error).toBeInstanceOf(Error);
48
+ expect((error as Error).message).toBeTruthy();
49
+ expect((error as Error).message.length).toBeGreaterThan(0);
50
+ expect((error as Error).message).toContain('g1_identity');
51
+ console.log('Successfully caught exception from bb.js with message:', (error as Error).message);
52
+ }
53
+ });
54
+ });
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Exception thrown when barretenberg API operations fail
3
+ */
4
+ export class BBApiException extends Error {
5
+ constructor(message: string) {
6
+ super(message);
7
+ this.name = 'BBApiException';
8
+ // Maintains proper stack trace for where our error was thrown (only available on V8)
9
+ if (Error.captureStackTrace) {
10
+ Error.captureStackTrace(this, BBApiException);
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ import { findBbBinary } from '../bb_backends/node/platform.js';
3
+ import { spawnSync } from 'node:child_process';
4
+
5
+ const bin = findBbBinary();
6
+
7
+ if (!bin) {
8
+ console.error('Could not find bb binary. Please ensure it is built and accessible.');
9
+ process.exit(1);
10
+ }
11
+
12
+ const result = spawnSync(bin, process.argv.slice(2), { stdio: 'inherit' });
13
+
14
+ process.exit(result.status ?? 1);
@@ -7,6 +7,7 @@ import { dirname, join } from 'path';
7
7
  import { exec } from 'child_process';
8
8
  import { promisify } from 'util';
9
9
  import { fileURLToPath } from 'url';
10
+ import { unpack } from 'msgpackr';
10
11
  import {
11
12
  createSharedTypesCompiler,
12
13
  createSyncApiCompiler,
@@ -73,9 +74,107 @@ async function generate() {
73
74
  console.log(`✓ ${config.name}: ${outputPath}`);
74
75
  }
75
76
 
77
+ // Generate curve constants
78
+ console.log('\nGenerating curve constants...');
79
+ await generateCurveConstants(bbBuildPath, outputDir);
80
+
76
81
  console.log('\nGeneration complete!');
77
82
  }
78
83
 
84
+ async function generateCurveConstants(bbBuildPath: string, outputDir: string) {
85
+ // Get curve constants from bb as msgpack binary
86
+ const { stdout: constantsBuffer } = await execAsync(`${bbBuildPath} msgpack curve_constants`, {
87
+ encoding: 'buffer',
88
+ maxBuffer: 10 * 1024 * 1024, // 10MB buffer
89
+ });
90
+
91
+ // Decode msgpack
92
+ const constants = unpack(constantsBuffer as Buffer);
93
+
94
+ // Helper to convert Uint8Array to hex string
95
+ const toHex = (bytes: Uint8Array) => '0x' + Buffer.from(bytes).toString('hex');
96
+
97
+ // Helper to convert Uint8Array to bigint (big-endian)
98
+ const toBigInt = (bytes: Uint8Array) => {
99
+ let result = 0n;
100
+ for (const byte of bytes) {
101
+ result = (result << 8n) | BigInt(byte);
102
+ }
103
+ return result;
104
+ };
105
+
106
+ // Helper to serialize point coordinate (handles both Uint8Array and array of Uint8Array for field2)
107
+ const serializeCoordinate = (coord: Uint8Array | Uint8Array[]) => {
108
+ if (Array.isArray(coord)) {
109
+ // For field2 (like BN254 G2), we have array of two Uint8Arrays
110
+ return `[${coord.map(c => `new Uint8Array([${Array.from(c).join(', ')}])`).join(', ')}]`;
111
+ } else {
112
+ // For regular fields, single Uint8Array
113
+ return `new Uint8Array([${Array.from(coord).join(', ')}])`;
114
+ }
115
+ };
116
+
117
+ // Generate TypeScript file
118
+ const content = `/**
119
+ * Curve constants generated from barretenberg native binary.
120
+ * DO NOT EDIT - This file is auto-generated by generate.ts
121
+ */
122
+
123
+ /**
124
+ * BN254 curve constants
125
+ */
126
+ export const BN254_FR_MODULUS = ${toBigInt(constants.bn254_fr_modulus)}n;
127
+ export const BN254_FQ_MODULUS = ${toBigInt(constants.bn254_fq_modulus)}n;
128
+
129
+ export const BN254_G1_GENERATOR = {
130
+ x: ${serializeCoordinate(constants.bn254_g1_generator.x)},
131
+ y: ${serializeCoordinate(constants.bn254_g1_generator.y)},
132
+ } as const;
133
+
134
+ export const BN254_G2_GENERATOR = {
135
+ x: ${serializeCoordinate(constants.bn254_g2_generator.x)},
136
+ y: ${serializeCoordinate(constants.bn254_g2_generator.y)},
137
+ } as const;
138
+
139
+ /**
140
+ * Grumpkin curve constants
141
+ */
142
+ export const GRUMPKIN_FR_MODULUS = ${toBigInt(constants.grumpkin_fr_modulus)}n;
143
+ export const GRUMPKIN_FQ_MODULUS = ${toBigInt(constants.grumpkin_fq_modulus)}n;
144
+
145
+ export const GRUMPKIN_G1_GENERATOR = {
146
+ x: ${serializeCoordinate(constants.grumpkin_g1_generator.x)},
147
+ y: ${serializeCoordinate(constants.grumpkin_g1_generator.y)},
148
+ } as const;
149
+
150
+ /**
151
+ * Secp256k1 curve constants
152
+ */
153
+ export const SECP256K1_FR_MODULUS = ${toBigInt(constants.secp256k1_fr_modulus)}n;
154
+ export const SECP256K1_FQ_MODULUS = ${toBigInt(constants.secp256k1_fq_modulus)}n;
155
+
156
+ export const SECP256K1_G1_GENERATOR = {
157
+ x: ${serializeCoordinate(constants.secp256k1_g1_generator.x)},
158
+ y: ${serializeCoordinate(constants.secp256k1_g1_generator.y)},
159
+ } as const;
160
+
161
+ /**
162
+ * Secp256r1 curve constants
163
+ */
164
+ export const SECP256R1_FR_MODULUS = ${toBigInt(constants.secp256r1_fr_modulus)}n;
165
+ export const SECP256R1_FQ_MODULUS = ${toBigInt(constants.secp256r1_fq_modulus)}n;
166
+
167
+ export const SECP256R1_G1_GENERATOR = {
168
+ x: ${serializeCoordinate(constants.secp256r1_g1_generator.x)},
169
+ y: ${serializeCoordinate(constants.secp256r1_g1_generator.y)},
170
+ } as const;
171
+ `;
172
+
173
+ const outputPath = join(outputDir, 'curve_constants.ts');
174
+ writeFileSync(outputPath, content);
175
+ console.log(`✓ Curve constants: ${outputPath}`);
176
+ }
177
+
79
178
  // Run the generator
80
179
  generate().catch(error => {
81
180
  console.error('Generation failed:', error);
@@ -84,9 +84,16 @@ export class SchemaCompiler {
84
84
  const commands = commandsSchema[1] as Array<[string, Schema]>;
85
85
  const responses = responsesSchema[1] as Array<[string, Schema]>;
86
86
 
87
+ // Filter out ErrorResponse - it's a special error variant, not a command response
88
+ const normalResponses = responses.filter(([name]) => name !== 'ErrorResponse');
89
+
90
+ if (commands.length !== normalResponses.length) {
91
+ throw new Error(`Command count (${commands.length}) does not match response count (${normalResponses.length})`);
92
+ }
93
+
87
94
  for (let i = 0; i < commands.length; i++) {
88
95
  const [commandName] = commands[i];
89
- const [responseName] = responses[i];
96
+ const [responseName] = normalResponses[i];
90
97
 
91
98
  this.functionMetadata.push({
92
99
  name: camelCase(commandName),
@@ -399,6 +406,13 @@ export class SchemaCompiler {
399
406
  return { typeName: 'string' };
400
407
  case 'bin32':
401
408
  return { typeName: 'Uint8Array' };
409
+ case 'field2':
410
+ // field2 is an extension field type (fq2) represented as a tuple of two Uint8Arrays
411
+ return {
412
+ typeName: 'Field2',
413
+ msgpackTypeName: '[Uint8Array, Uint8Array]',
414
+ declaration: 'export type Field2 = [Uint8Array, Uint8Array];',
415
+ };
402
416
  default:
403
417
  return { typeName: pascalCase(schema) };
404
418
  }
@@ -674,8 +688,11 @@ ${destroyMethod}
674
688
  return ` ${name}(command: ${commandType}): Promise<${responseType}> {
675
689
  const msgpackCommand = from${commandType}(command);
676
690
  return msgpackCall(this.backend, [["${capitalize(name)}", msgpackCommand]]).then(([variantName, result]: [string, any]) => {
691
+ if (variantName === 'ErrorResponse') {
692
+ throw new BBApiException(result.message || 'Unknown error from barretenberg');
693
+ }
677
694
  if (variantName !== '${responseType}') {
678
- throw new Error(\`Expected variant name '${responseType}' but got '\${variantName}'\`);
695
+ throw new BBApiException(\`Expected variant name '${responseType}' but got '\${variantName}'\`);
679
696
  }
680
697
  return to${responseType}(result);
681
698
  });
@@ -686,8 +703,11 @@ ${destroyMethod}
686
703
  return ` ${name}(command: ${commandType}): ${responseType} {
687
704
  const msgpackCommand = from${commandType}(command);
688
705
  const [variantName, result] = msgpackCall(this.backend, [["${capitalize(name)}", msgpackCommand]]);
706
+ if (variantName === 'ErrorResponse') {
707
+ throw new BBApiException(result.message || 'Unknown error from barretenberg');
708
+ }
689
709
  if (variantName !== '${responseType}') {
690
- throw new Error(\`Expected variant name '${responseType}' but got '\${variantName}'\`);
710
+ throw new BBApiException(\`Expected variant name '${responseType}' but got '\${variantName}'\`);
691
711
  }
692
712
  return to${responseType}(result);
693
713
  }`;
@@ -708,6 +728,7 @@ export function createSyncApiCompiler(): SchemaCompiler {
708
728
  imports: [
709
729
  `import { IMsgpackBackendSync } from '../../bb_backends/interface.js';`,
710
730
  `import { Decoder, Encoder } from 'msgpackr';`,
731
+ `import { BBApiException } from '../../bbapi_exception.js';`,
711
732
  ],
712
733
  });
713
734
  }
@@ -718,6 +739,7 @@ export function createAsyncApiCompiler(): SchemaCompiler {
718
739
  imports: [
719
740
  `import { IMsgpackBackendAsync } from '../../bb_backends/interface.js';`,
720
741
  `import { Decoder, Encoder } from 'msgpackr';`,
742
+ `import { BBApiException } from '../../bbapi_exception.js';`,
721
743
  ],
722
744
  });
723
745
  }