@aztec/bb.js 3.0.0-nightly.20251016 → 3.0.0-nightly.20251023

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 (368) hide show
  1. package/README.md +12 -78
  2. package/dest/browser/barretenberg/backend.d.ts +1 -1
  3. package/dest/browser/barretenberg/backend.d.ts.map +1 -1
  4. package/dest/browser/barretenberg/backend.js +21 -13
  5. package/dest/browser/barretenberg/index.d.ts +44 -43
  6. package/dest/browser/barretenberg/index.d.ts.map +1 -1
  7. package/dest/browser/barretenberg/index.js +130 -79
  8. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  9. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  10. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
  11. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
  12. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  13. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
  14. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
  15. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  16. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.js +54 -13
  17. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
  18. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
  19. package/dest/browser/bb_backends/browser/index.d.ts +11 -0
  20. package/dest/browser/bb_backends/browser/index.d.ts.map +1 -0
  21. package/dest/browser/bb_backends/browser/index.js +39 -0
  22. package/dest/browser/bb_backends/index.d.ts +45 -0
  23. package/dest/browser/bb_backends/index.d.ts.map +1 -0
  24. package/dest/browser/bb_backends/index.js +15 -0
  25. package/dest/browser/bb_backends/interface.d.ts +33 -0
  26. package/dest/browser/bb_backends/interface.d.ts.map +1 -0
  27. package/dest/browser/bb_backends/interface.js +2 -0
  28. package/dest/browser/bb_backends/sync_to_async_adapter.d.ts +15 -0
  29. package/dest/browser/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
  30. package/dest/browser/bb_backends/sync_to_async_adapter.js +20 -0
  31. package/dest/browser/bb_backends/wasm.d.ts +56 -0
  32. package/dest/browser/bb_backends/wasm.d.ts.map +1 -0
  33. package/dest/browser/bb_backends/wasm.js +90 -0
  34. package/dest/browser/cbind/generate.js +2 -7
  35. package/dest/browser/cbind/generated/api_types.d.ts +1167 -0
  36. package/dest/browser/cbind/generated/api_types.d.ts.map +1 -1
  37. package/dest/browser/cbind/generated/api_types.js +1609 -47
  38. package/dest/browser/cbind/generated/async.d.ts +38 -4
  39. package/dest/browser/cbind/generated/async.d.ts.map +1 -1
  40. package/dest/browser/cbind/generated/async.js +327 -21
  41. package/dest/browser/cbind/generated/sync.d.ts +39 -5
  42. package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
  43. package/dest/browser/cbind/generated/sync.js +294 -21
  44. package/dest/browser/cbind/schema_compiler.d.ts +2 -4
  45. package/dest/browser/cbind/schema_compiler.d.ts.map +1 -1
  46. package/dest/browser/cbind/schema_compiler.js +74 -178
  47. package/dest/browser/index.d.ts +2 -2
  48. package/dest/browser/index.d.ts.map +1 -1
  49. package/dest/browser/index.js +3 -3
  50. package/dest/browser/serialize/index.d.ts +0 -1
  51. package/dest/browser/serialize/index.d.ts.map +1 -1
  52. package/dest/browser/serialize/index.js +1 -2
  53. package/dest/browser/serialize/serialize.d.ts +0 -35
  54. package/dest/browser/serialize/serialize.d.ts.map +1 -1
  55. package/dest/browser/serialize/serialize.js +1 -68
  56. package/dest/browser/types/fields.d.ts.map +1 -1
  57. package/dest/browser/types/fields.js +3 -3
  58. package/dest/browser/types/index.d.ts +0 -3
  59. package/dest/browser/types/index.d.ts.map +1 -1
  60. package/dest/browser/types/index.js +1 -4
  61. package/dest/node/barretenberg/__snapshots__/pedersen.test.js.snap +2 -2
  62. package/dest/node/barretenberg/__snapshots__/poseidon.test.js.snap +3 -3
  63. package/dest/node/barretenberg/backend.d.ts +1 -1
  64. package/dest/node/barretenberg/backend.d.ts.map +1 -1
  65. package/dest/node/barretenberg/backend.js +21 -13
  66. package/dest/node/barretenberg/blake2s.test.js +21 -18
  67. package/dest/node/barretenberg/index.d.ts +44 -43
  68. package/dest/node/barretenberg/index.d.ts.map +1 -1
  69. package/dest/node/barretenberg/index.js +130 -79
  70. package/dest/node/barretenberg/pedersen.test.js +24 -17
  71. package/dest/node/barretenberg/poseidon.bench.test.d.ts +2 -0
  72. package/dest/node/barretenberg/poseidon.bench.test.d.ts.map +1 -0
  73. package/dest/node/barretenberg/poseidon.bench.test.js +216 -0
  74. package/dest/node/barretenberg/poseidon.test.js +15 -15
  75. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  76. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  77. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  78. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
  79. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
  80. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  81. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
  82. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
  83. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  84. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +54 -13
  85. package/dest/node/barretenberg_wasm/index.test.js +11 -10
  86. package/dest/node/bb_backends/browser/index.d.ts +11 -0
  87. package/dest/node/bb_backends/browser/index.d.ts.map +1 -0
  88. package/dest/node/bb_backends/browser/index.js +39 -0
  89. package/dest/node/bb_backends/index.d.ts +45 -0
  90. package/dest/node/bb_backends/index.d.ts.map +1 -0
  91. package/dest/node/bb_backends/index.js +15 -0
  92. package/dest/node/bb_backends/interface.d.ts +33 -0
  93. package/dest/node/bb_backends/interface.d.ts.map +1 -0
  94. package/dest/node/bb_backends/interface.js +2 -0
  95. package/dest/node/bb_backends/node/index.d.ts +11 -0
  96. package/dest/node/bb_backends/node/index.d.ts.map +1 -0
  97. package/dest/node/bb_backends/node/index.js +80 -0
  98. package/dest/node/bb_backends/node/native_pipe.d.ts +25 -0
  99. package/dest/node/bb_backends/node/native_pipe.d.ts.map +1 -0
  100. package/dest/node/bb_backends/node/native_pipe.js +113 -0
  101. package/dest/node/bb_backends/node/native_shm.d.ts +28 -0
  102. package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -0
  103. package/dest/node/bb_backends/node/native_shm.js +150 -0
  104. package/dest/node/bb_backends/node/native_socket.d.ts +34 -0
  105. package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -0
  106. package/dest/node/bb_backends/node/native_socket.js +269 -0
  107. package/dest/node/bb_backends/node/platform.d.ts +27 -0
  108. package/dest/node/bb_backends/node/platform.d.ts.map +1 -0
  109. package/dest/node/bb_backends/node/platform.js +124 -0
  110. package/dest/node/bb_backends/sync_to_async_adapter.d.ts +15 -0
  111. package/dest/node/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
  112. package/dest/node/bb_backends/sync_to_async_adapter.js +20 -0
  113. package/dest/node/bb_backends/wasm.d.ts +56 -0
  114. package/dest/node/bb_backends/wasm.d.ts.map +1 -0
  115. package/dest/node/bb_backends/wasm.js +90 -0
  116. package/dest/node/cbind/generate.js +2 -7
  117. package/dest/node/cbind/generated/api_types.d.ts +1167 -0
  118. package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
  119. package/dest/node/cbind/generated/api_types.js +1609 -47
  120. package/dest/node/cbind/generated/async.d.ts +38 -4
  121. package/dest/node/cbind/generated/async.d.ts.map +1 -1
  122. package/dest/node/cbind/generated/async.js +327 -21
  123. package/dest/node/cbind/generated/sync.d.ts +39 -5
  124. package/dest/node/cbind/generated/sync.d.ts.map +1 -1
  125. package/dest/node/cbind/generated/sync.js +294 -21
  126. package/dest/node/cbind/schema_compiler.d.ts +2 -4
  127. package/dest/node/cbind/schema_compiler.d.ts.map +1 -1
  128. package/dest/node/cbind/schema_compiler.js +74 -178
  129. package/dest/node/index.d.ts +2 -2
  130. package/dest/node/index.d.ts.map +1 -1
  131. package/dest/node/index.js +3 -3
  132. package/dest/node/serialize/index.d.ts +0 -1
  133. package/dest/node/serialize/index.d.ts.map +1 -1
  134. package/dest/node/serialize/index.js +1 -2
  135. package/dest/node/serialize/serialize.d.ts +0 -35
  136. package/dest/node/serialize/serialize.d.ts.map +1 -1
  137. package/dest/node/serialize/serialize.js +1 -68
  138. package/dest/node/types/fields.d.ts.map +1 -1
  139. package/dest/node/types/fields.js +3 -3
  140. package/dest/node/types/index.d.ts +0 -3
  141. package/dest/node/types/index.d.ts.map +1 -1
  142. package/dest/node/types/index.js +1 -4
  143. package/dest/node-cjs/barretenberg/backend.d.ts +1 -1
  144. package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
  145. package/dest/node-cjs/barretenberg/backend.js +20 -12
  146. package/dest/node-cjs/barretenberg/blake2s.test.js +19 -16
  147. package/dest/node-cjs/barretenberg/index.d.ts +44 -43
  148. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
  149. package/dest/node-cjs/barretenberg/index.js +136 -84
  150. package/dest/node-cjs/barretenberg/pedersen.test.js +24 -17
  151. package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts +2 -0
  152. package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts.map +1 -0
  153. package/dest/node-cjs/barretenberg/poseidon.bench.test.js +218 -0
  154. package/dest/node-cjs/barretenberg/poseidon.test.js +15 -15
  155. package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  156. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  157. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  158. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
  159. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
  160. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  161. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
  162. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
  163. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  164. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +54 -13
  165. package/dest/node-cjs/barretenberg_wasm/index.test.js +11 -10
  166. package/dest/node-cjs/bb_backends/browser/index.d.ts +11 -0
  167. package/dest/node-cjs/bb_backends/browser/index.d.ts.map +1 -0
  168. package/dest/node-cjs/bb_backends/browser/index.js +43 -0
  169. package/dest/node-cjs/bb_backends/index.d.ts +45 -0
  170. package/dest/node-cjs/bb_backends/index.d.ts.map +1 -0
  171. package/dest/node-cjs/bb_backends/index.js +18 -0
  172. package/dest/node-cjs/bb_backends/interface.d.ts +33 -0
  173. package/dest/node-cjs/bb_backends/interface.d.ts.map +1 -0
  174. package/dest/node-cjs/bb_backends/interface.js +3 -0
  175. package/dest/node-cjs/bb_backends/node/index.d.ts +11 -0
  176. package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -0
  177. package/dest/node-cjs/bb_backends/node/index.js +84 -0
  178. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts +25 -0
  179. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts.map +1 -0
  180. package/dest/node-cjs/bb_backends/node/native_pipe.js +117 -0
  181. package/dest/node-cjs/bb_backends/node/native_shm.d.ts +28 -0
  182. package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -0
  183. package/dest/node-cjs/bb_backends/node/native_shm.js +154 -0
  184. package/dest/node-cjs/bb_backends/node/native_socket.d.ts +34 -0
  185. package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -0
  186. package/dest/node-cjs/bb_backends/node/native_socket.js +274 -0
  187. package/dest/node-cjs/bb_backends/node/platform.d.ts +27 -0
  188. package/dest/node-cjs/bb_backends/node/platform.d.ts.map +1 -0
  189. package/dest/node-cjs/bb_backends/node/platform.js +131 -0
  190. package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts +15 -0
  191. package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
  192. package/dest/node-cjs/bb_backends/sync_to_async_adapter.js +24 -0
  193. package/dest/node-cjs/bb_backends/wasm.d.ts +56 -0
  194. package/dest/node-cjs/bb_backends/wasm.d.ts.map +1 -0
  195. package/dest/node-cjs/bb_backends/wasm.js +95 -0
  196. package/dest/node-cjs/cbind/generate.js +1 -6
  197. package/dest/node-cjs/cbind/generated/api_types.d.ts +1167 -0
  198. package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
  199. package/dest/node-cjs/cbind/generated/api_types.js +1747 -47
  200. package/dest/node-cjs/cbind/generated/async.d.ts +38 -4
  201. package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
  202. package/dest/node-cjs/cbind/generated/async.js +326 -20
  203. package/dest/node-cjs/cbind/generated/sync.d.ts +39 -5
  204. package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
  205. package/dest/node-cjs/cbind/generated/sync.js +293 -20
  206. package/dest/node-cjs/cbind/schema_compiler.d.ts +2 -4
  207. package/dest/node-cjs/cbind/schema_compiler.d.ts.map +1 -1
  208. package/dest/node-cjs/cbind/schema_compiler.js +74 -179
  209. package/dest/node-cjs/index.d.ts +2 -2
  210. package/dest/node-cjs/index.d.ts.map +1 -1
  211. package/dest/node-cjs/index.js +3 -3
  212. package/dest/node-cjs/serialize/index.d.ts +0 -1
  213. package/dest/node-cjs/serialize/index.d.ts.map +1 -1
  214. package/dest/node-cjs/serialize/index.js +1 -2
  215. package/dest/node-cjs/serialize/serialize.d.ts +0 -35
  216. package/dest/node-cjs/serialize/serialize.d.ts.map +1 -1
  217. package/dest/node-cjs/serialize/serialize.js +1 -79
  218. package/dest/node-cjs/types/fields.d.ts.map +1 -1
  219. package/dest/node-cjs/types/fields.js +2 -2
  220. package/dest/node-cjs/types/index.d.ts +0 -3
  221. package/dest/node-cjs/types/index.d.ts.map +1 -1
  222. package/dest/node-cjs/types/index.js +1 -4
  223. package/package.json +3 -4
  224. package/src/barretenberg/__snapshots__/pedersen.test.ts.snap +2 -2
  225. package/src/barretenberg/__snapshots__/poseidon.test.ts.snap +3 -3
  226. package/src/barretenberg/backend.ts +37 -32
  227. package/src/barretenberg/blake2s.test.ts +20 -21
  228. package/src/barretenberg/index.ts +136 -117
  229. package/src/barretenberg/pedersen.test.ts +23 -16
  230. package/src/barretenberg/poseidon.bench.test.ts +267 -0
  231. package/src/barretenberg/poseidon.test.ts +14 -14
  232. package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +3 -3
  233. package/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts +17 -9
  234. package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +66 -15
  235. package/src/barretenberg_wasm/index.test.ts +12 -11
  236. package/src/bb_backends/browser/index.ts +50 -0
  237. package/src/bb_backends/index.ts +49 -0
  238. package/src/bb_backends/interface.ts +35 -0
  239. package/src/bb_backends/node/index.ts +94 -0
  240. package/src/bb_backends/node/native_pipe.ts +127 -0
  241. package/src/bb_backends/node/native_shm.ts +171 -0
  242. package/src/bb_backends/node/native_socket.ts +312 -0
  243. package/src/bb_backends/node/platform.ts +151 -0
  244. package/src/bb_backends/sync_to_async_adapter.ts +21 -0
  245. package/src/bb_backends/wasm.ts +110 -0
  246. package/src/cbind/README.md +1 -1
  247. package/src/cbind/generate.ts +0 -6
  248. package/src/cbind/schema_compiler.ts +131 -241
  249. package/src/index.ts +2 -1
  250. package/src/serialize/index.ts +0 -1
  251. package/src/serialize/serialize.ts +0 -82
  252. package/src/types/fields.ts +2 -2
  253. package/src/types/index.ts +0 -3
  254. package/dest/browser/barretenberg_api/index.d.ts +0 -109
  255. package/dest/browser/barretenberg_api/index.d.ts.map +0 -1
  256. package/dest/browser/barretenberg_api/index.js +0 -699
  257. package/dest/browser/cbind/generated/native.d.ts +0 -31
  258. package/dest/browser/cbind/generated/native.d.ts.map +0 -1
  259. package/dest/browser/cbind/generated/native.js +0 -234
  260. package/dest/browser/serialize/output_type.d.ts +0 -11
  261. package/dest/browser/serialize/output_type.d.ts.map +0 -1
  262. package/dest/browser/serialize/output_type.js +0 -44
  263. package/dest/browser/types/fixed_size_buffer.d.ts +0 -26
  264. package/dest/browser/types/fixed_size_buffer.d.ts.map +0 -1
  265. package/dest/browser/types/fixed_size_buffer.js +0 -51
  266. package/dest/browser/types/ptr.d.ts +0 -13
  267. package/dest/browser/types/ptr.d.ts.map +0 -1
  268. package/dest/browser/types/ptr.js +0 -19
  269. package/dest/browser/types/raw_buffer.d.ts +0 -3
  270. package/dest/browser/types/raw_buffer.d.ts.map +0 -1
  271. package/dest/browser/types/raw_buffer.js +0 -5
  272. package/dest/node/barretenberg/common.test.d.ts +0 -2
  273. package/dest/node/barretenberg/common.test.d.ts.map +0 -1
  274. package/dest/node/barretenberg/common.test.js +0 -20
  275. package/dest/node/barretenberg_api/index.d.ts +0 -109
  276. package/dest/node/barretenberg_api/index.d.ts.map +0 -1
  277. package/dest/node/barretenberg_api/index.js +0 -699
  278. package/dest/node/bindgen/function_declaration.d.ts +0 -11
  279. package/dest/node/bindgen/function_declaration.d.ts.map +0 -1
  280. package/dest/node/bindgen/function_declaration.js +0 -2
  281. package/dest/node/bindgen/index.d.ts +0 -2
  282. package/dest/node/bindgen/index.d.ts.map +0 -1
  283. package/dest/node/bindgen/index.js +0 -15
  284. package/dest/node/bindgen/mappings.d.ts +0 -4
  285. package/dest/node/bindgen/mappings.d.ts.map +0 -1
  286. package/dest/node/bindgen/mappings.js +0 -64
  287. package/dest/node/bindgen/rust.d.ts +0 -2
  288. package/dest/node/bindgen/rust.d.ts.map +0 -1
  289. package/dest/node/bindgen/rust.js +0 -43
  290. package/dest/node/bindgen/to_camel_case.d.ts +0 -2
  291. package/dest/node/bindgen/to_camel_case.d.ts.map +0 -1
  292. package/dest/node/bindgen/to_camel_case.js +0 -11
  293. package/dest/node/bindgen/typescript.d.ts +0 -2
  294. package/dest/node/bindgen/typescript.d.ts.map +0 -1
  295. package/dest/node/bindgen/typescript.js +0 -100
  296. package/dest/node/cbind/generated/native.d.ts +0 -31
  297. package/dest/node/cbind/generated/native.d.ts.map +0 -1
  298. package/dest/node/cbind/generated/native.js +0 -234
  299. package/dest/node/main.d.ts +0 -13
  300. package/dest/node/main.d.ts.map +0 -1
  301. package/dest/node/main.js +0 -459
  302. package/dest/node/serialize/output_type.d.ts +0 -11
  303. package/dest/node/serialize/output_type.d.ts.map +0 -1
  304. package/dest/node/serialize/output_type.js +0 -44
  305. package/dest/node/types/fixed_size_buffer.d.ts +0 -26
  306. package/dest/node/types/fixed_size_buffer.d.ts.map +0 -1
  307. package/dest/node/types/fixed_size_buffer.js +0 -51
  308. package/dest/node/types/ptr.d.ts +0 -13
  309. package/dest/node/types/ptr.d.ts.map +0 -1
  310. package/dest/node/types/ptr.js +0 -19
  311. package/dest/node/types/raw_buffer.d.ts +0 -3
  312. package/dest/node/types/raw_buffer.d.ts.map +0 -1
  313. package/dest/node/types/raw_buffer.js +0 -5
  314. package/dest/node-cjs/barretenberg/common.test.d.ts +0 -2
  315. package/dest/node-cjs/barretenberg/common.test.d.ts.map +0 -1
  316. package/dest/node-cjs/barretenberg/common.test.js +0 -22
  317. package/dest/node-cjs/barretenberg_api/index.d.ts +0 -109
  318. package/dest/node-cjs/barretenberg_api/index.d.ts.map +0 -1
  319. package/dest/node-cjs/barretenberg_api/index.js +0 -704
  320. package/dest/node-cjs/bindgen/function_declaration.d.ts +0 -11
  321. package/dest/node-cjs/bindgen/function_declaration.d.ts.map +0 -1
  322. package/dest/node-cjs/bindgen/function_declaration.js +0 -3
  323. package/dest/node-cjs/bindgen/index.d.ts +0 -2
  324. package/dest/node-cjs/bindgen/index.d.ts.map +0 -1
  325. package/dest/node-cjs/bindgen/index.js +0 -17
  326. package/dest/node-cjs/bindgen/mappings.d.ts +0 -4
  327. package/dest/node-cjs/bindgen/mappings.d.ts.map +0 -1
  328. package/dest/node-cjs/bindgen/mappings.js +0 -69
  329. package/dest/node-cjs/bindgen/rust.d.ts +0 -2
  330. package/dest/node-cjs/bindgen/rust.d.ts.map +0 -1
  331. package/dest/node-cjs/bindgen/rust.js +0 -47
  332. package/dest/node-cjs/bindgen/to_camel_case.d.ts +0 -2
  333. package/dest/node-cjs/bindgen/to_camel_case.d.ts.map +0 -1
  334. package/dest/node-cjs/bindgen/to_camel_case.js +0 -14
  335. package/dest/node-cjs/bindgen/typescript.d.ts +0 -2
  336. package/dest/node-cjs/bindgen/typescript.d.ts.map +0 -1
  337. package/dest/node-cjs/bindgen/typescript.js +0 -104
  338. package/dest/node-cjs/cbind/generated/native.d.ts +0 -31
  339. package/dest/node-cjs/cbind/generated/native.d.ts.map +0 -1
  340. package/dest/node-cjs/cbind/generated/native.js +0 -238
  341. package/dest/node-cjs/main.d.ts +0 -13
  342. package/dest/node-cjs/main.d.ts.map +0 -1
  343. package/dest/node-cjs/main.js +0 -470
  344. package/dest/node-cjs/serialize/output_type.d.ts +0 -11
  345. package/dest/node-cjs/serialize/output_type.d.ts.map +0 -1
  346. package/dest/node-cjs/serialize/output_type.js +0 -51
  347. package/dest/node-cjs/types/fixed_size_buffer.d.ts +0 -26
  348. package/dest/node-cjs/types/fixed_size_buffer.d.ts.map +0 -1
  349. package/dest/node-cjs/types/fixed_size_buffer.js +0 -57
  350. package/dest/node-cjs/types/ptr.d.ts +0 -13
  351. package/dest/node-cjs/types/ptr.d.ts.map +0 -1
  352. package/dest/node-cjs/types/ptr.js +0 -23
  353. package/dest/node-cjs/types/raw_buffer.d.ts +0 -3
  354. package/dest/node-cjs/types/raw_buffer.d.ts.map +0 -1
  355. package/dest/node-cjs/types/raw_buffer.js +0 -9
  356. package/src/barretenberg/common.test.ts +0 -23
  357. package/src/barretenberg_api/index.ts +0 -1216
  358. package/src/bindgen/function_declaration.ts +0 -11
  359. package/src/bindgen/index.ts +0 -17
  360. package/src/bindgen/mappings.ts +0 -67
  361. package/src/bindgen/rust.ts +0 -52
  362. package/src/bindgen/to_camel_case.ts +0 -10
  363. package/src/bindgen/typescript.ts +0 -116
  364. package/src/main.ts +0 -534
  365. package/src/serialize/output_type.ts +0 -53
  366. package/src/types/fixed_size_buffer.ts +0 -59
  367. package/src/types/ptr.ts +0 -20
  368. package/src/types/raw_buffer.ts +0 -3
@@ -0,0 +1,110 @@
1
+ import { BarretenbergWasmMain, BarretenbergWasmMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/index.js';
2
+ import { fetchModuleAndThreads } from '../barretenberg_wasm/index.js';
3
+ import { IMsgpackBackendSync, IMsgpackBackendAsync } from './interface.js';
4
+ import { createMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js';
5
+ import { getRemoteBarretenbergWasm } from '../barretenberg_wasm/helpers/index.js';
6
+ import { createDebugLogger } from '../log/index.js';
7
+ import { proxy } from 'comlink';
8
+
9
+ /**
10
+ * Synchronous WASM backend that wraps BarretenbergWasmMain.
11
+ * Encapsulates all WASM initialization and memory management.
12
+ */
13
+ export class BarretenbergWasmSyncBackend implements IMsgpackBackendSync {
14
+ private constructor(private wasm: BarretenbergWasmMain) {}
15
+
16
+ /**
17
+ * Create and initialize a synchronous WASM backend.
18
+ * @param wasmPath Optional path to WASM files
19
+ * @param logger Optional logging function
20
+ */
21
+ static async new(wasmPath?: string, logger?: (msg: string) => void): Promise<BarretenbergWasmSyncBackend> {
22
+ const wasm = new BarretenbergWasmMain();
23
+ const { module, threads } = await fetchModuleAndThreads(1, wasmPath, logger);
24
+ await wasm.init(module, threads, logger);
25
+ return new BarretenbergWasmSyncBackend(wasm);
26
+ }
27
+
28
+ call(inputBuffer: Uint8Array): Uint8Array {
29
+ return this.wasm.cbindCall('bbapi', inputBuffer);
30
+ }
31
+
32
+ destroy(): void {
33
+ // BarretenbergWasmMain has async destroy, but for sync API we call it without awaiting
34
+ // This is consistent with the synchronous semantics expected by the caller
35
+ void this.wasm.destroy();
36
+ }
37
+ }
38
+
39
+ /**
40
+ * Asynchronous WASM backend that supports both direct WASM and worker-based modes.
41
+ *
42
+ * Worker mode (default): Runs WASM on a worker thread to avoid blocking the main thread.
43
+ * - Browser-safe: Won't block UI during long operations
44
+ * - Overhead: ~3-4x slower due to serialize/deserialize for each call
45
+ * - Use for: Browser environments, long-running operations
46
+ *
47
+ * Direct mode (useWorker: false): Runs WASM directly on the calling thread.
48
+ * - Performance: ~3-4x faster (no serialize/deserialize overhead)
49
+ * - Warning: Will block the thread during operations
50
+ * - Use for: Node.js, benchmarks, tight loops where performance is critical
51
+ */
52
+ export class BarretenbergWasmAsyncBackend implements IMsgpackBackendAsync {
53
+ private constructor(
54
+ private wasm: BarretenbergWasmMain | BarretenbergWasmMainWorker,
55
+ private worker?: any,
56
+ ) {}
57
+
58
+ /**
59
+ * Create and initialize an asynchronous WASM backend.
60
+ * @param options.threads Number of threads (defaults to hardware max, up to 32 for parallel proving)
61
+ * @param options.wasmPath Optional path to WASM files
62
+ * @param options.logger Optional logging function
63
+ * @param options.memory Optional initial and maximum memory configuration
64
+ * @param options.useWorker Run on worker thread (default: true for browser safety)
65
+ */
66
+ static async new(
67
+ options: {
68
+ threads?: number;
69
+ wasmPath?: string;
70
+ logger?: (msg: string) => void;
71
+ memory?: { initial?: number; maximum?: number };
72
+ useWorker?: boolean;
73
+ } = {},
74
+ ): Promise<BarretenbergWasmAsyncBackend> {
75
+ // Default to worker mode for browser safety
76
+ const useWorker = options.useWorker ?? true;
77
+
78
+ if (useWorker) {
79
+ // Worker-based mode: runs on worker thread (browser-safe)
80
+ const worker = await createMainWorker();
81
+ const wasm = getRemoteBarretenbergWasm<BarretenbergWasmMainWorker>(worker);
82
+ const { module, threads } = await fetchModuleAndThreads(options.threads, options.wasmPath, options.logger);
83
+ await wasm.init(
84
+ module,
85
+ threads,
86
+ proxy(options.logger ?? createDebugLogger('bb_wasm_async')),
87
+ options.memory?.initial,
88
+ options.memory?.maximum,
89
+ );
90
+ return new BarretenbergWasmAsyncBackend(wasm, worker);
91
+ } else {
92
+ // Direct mode: runs on calling thread (faster but blocks thread)
93
+ const wasm = new BarretenbergWasmMain();
94
+ const { module, threads } = await fetchModuleAndThreads(options.threads, options.wasmPath, options.logger);
95
+ await wasm.init(module, threads, options.logger, options.memory?.initial, options.memory?.maximum);
96
+ return new BarretenbergWasmAsyncBackend(wasm);
97
+ }
98
+ }
99
+
100
+ async call(inputBuffer: Uint8Array): Promise<Uint8Array> {
101
+ return this.wasm.cbindCall('bbapi', inputBuffer);
102
+ }
103
+
104
+ async destroy(): Promise<void> {
105
+ await this.wasm.destroy();
106
+ if (this.worker) {
107
+ await this.worker.terminate();
108
+ }
109
+ }
110
+ }
@@ -1 +1 @@
1
- Derive bindings from the reported scheme of msgpack from bb. Currently redundant with bindgen, until that is supplanted.
1
+ Derives bindings from the reported msgpack schema from bb.
@@ -11,7 +11,6 @@ import {
11
11
  createSharedTypesCompiler,
12
12
  createSyncApiCompiler,
13
13
  createAsyncApiCompiler,
14
- createNativeApiCompiler,
15
14
  type SchemaCompiler,
16
15
  } from './schema_compiler.js';
17
16
 
@@ -39,11 +38,6 @@ const GENERATORS: GeneratorConfig[] = [
39
38
  outputFile: 'generated/async.ts',
40
39
  createCompiler: createAsyncApiCompiler,
41
40
  },
42
- {
43
- name: 'Native API',
44
- outputFile: 'generated/native.ts',
45
- createCompiler: createNativeApiCompiler,
46
- },
47
41
  ];
48
42
 
49
43
  // @ts-ignore
@@ -34,7 +34,7 @@ export interface FunctionMetadata {
34
34
 
35
35
  // Compiler configuration
36
36
  export interface CompilerConfig {
37
- mode: 'types' | 'sync' | 'async' | 'native';
37
+ mode: 'types' | 'sync' | 'async';
38
38
  imports?: string[];
39
39
  wasmImport?: string;
40
40
  }
@@ -72,8 +72,12 @@ export class SchemaCompiler {
72
72
  this.processSchema(responsesSchema);
73
73
 
74
74
  // Extract function metadata from named unions
75
- if (!Array.isArray(commandsSchema) || commandsSchema[0] !== 'named_union' ||
76
- !Array.isArray(responsesSchema) || responsesSchema[0] !== 'named_union') {
75
+ if (
76
+ !Array.isArray(commandsSchema) ||
77
+ commandsSchema[0] !== 'named_union' ||
78
+ !Array.isArray(responsesSchema) ||
79
+ responsesSchema[0] !== 'named_union'
80
+ ) {
77
81
  throw new Error('Expected named_union schema format');
78
82
  }
79
83
 
@@ -115,10 +119,7 @@ export class SchemaCompiler {
115
119
  * Generate the complete output
116
120
  */
117
121
  compile(): string {
118
- const parts: string[] = [
119
- '// AUTOGENERATED FILE - DO NOT EDIT',
120
- '',
121
- ];
122
+ const parts: string[] = ['// AUTOGENERATED FILE - DO NOT EDIT', ''];
122
123
 
123
124
  // Generate imports
124
125
  parts.push(...this.generateImports());
@@ -131,55 +132,51 @@ export class SchemaCompiler {
131
132
  .sort((a, b) => a.typeName.localeCompare(b.typeName));
132
133
 
133
134
  // Group declarations
134
- const typeAliases = sortedTypes.filter(t =>
135
- t.declaration?.startsWith('export type') && !t.declaration?.includes('interface')
135
+ const typeAliases = sortedTypes.filter(
136
+ t => t.declaration?.startsWith('export type') && !t.declaration?.includes('interface'),
136
137
  );
137
- const publicInterfaces = sortedTypes.filter(t =>
138
- t.declaration?.includes('export interface')
139
- );
140
- const privateInterfaces = sortedTypes.filter(t =>
141
- t.declaration?.includes('interface Msgpack')
142
- );
143
-
144
- // Add type aliases if needed
145
- if (typeAliases.length > 0) {
146
- parts.push('// Type aliases');
147
- for (const type of typeAliases) {
148
- parts.push(type.declaration!);
138
+ const publicInterfaces = sortedTypes.filter(t => t.declaration?.includes('export interface'));
139
+ const privateInterfaces = sortedTypes.filter(t => t.declaration?.includes('interface Msgpack'));
140
+
141
+ // Add type aliases if needed
142
+ if (typeAliases.length > 0) {
143
+ parts.push('// Type aliases');
144
+ for (const type of typeAliases) {
145
+ parts.push(type.declaration!);
146
+ }
147
+ parts.push('');
149
148
  }
150
- parts.push('');
151
- }
152
149
 
153
- // Add tuple helper if needed
154
- if (this.needsTupleHelper()) {
155
- parts.push(
156
- '// Tuple type for fixed-size arrays',
157
- 'type Tuple<T, N extends number> = N extends N ? (number extends N ? T[] : _TupleOf<T, N, []>) : never;',
158
- 'type _TupleOf<T, N extends number, R extends unknown[]> = R[\'length\'] extends N ? R : _TupleOf<T, N, [T, ...R]>;',
159
- '',
160
- '// Helper functions',
161
- 'function mapTuple<T, S, N extends number>(tuple: Tuple<T, N>, fn: (item: T) => S): Tuple<S, N> {',
162
- ' return tuple.map(fn) as Tuple<S, N>;',
163
- '}',
164
- ''
165
- );
166
- }
150
+ // Add tuple helper if needed
151
+ if (this.needsTupleHelper()) {
152
+ parts.push(
153
+ '// Tuple type for fixed-size arrays',
154
+ 'type Tuple<T, N extends number> = N extends N ? (number extends N ? T[] : _TupleOf<T, N, []>) : never;',
155
+ "type _TupleOf<T, N extends number, R extends unknown[]> = R['length'] extends N ? R : _TupleOf<T, N, [T, ...R]>;",
156
+ '',
157
+ '// Helper functions',
158
+ 'function mapTuple<T, S, N extends number>(tuple: Tuple<T, N>, fn: (item: T) => S): Tuple<S, N> {',
159
+ ' return tuple.map(fn) as Tuple<S, N>;',
160
+ '}',
161
+ '',
162
+ );
163
+ }
167
164
 
168
- // Add public interfaces
169
- if (publicInterfaces.length > 0) {
170
- parts.push('// Public interfaces (exported)');
171
- for (const type of publicInterfaces) {
172
- parts.push(type.declaration!, '');
165
+ // Add public interfaces
166
+ if (publicInterfaces.length > 0) {
167
+ parts.push('// Public interfaces (exported)');
168
+ for (const type of publicInterfaces) {
169
+ parts.push(type.declaration!, '');
170
+ }
173
171
  }
174
- }
175
172
 
176
- // Add private interfaces
177
- if (privateInterfaces.length > 0) {
178
- parts.push('// Private Msgpack interfaces (not exported)');
179
- for (const type of privateInterfaces) {
180
- parts.push(type.declaration!, '');
173
+ // Add private interfaces
174
+ if (privateInterfaces.length > 0) {
175
+ parts.push('// Private Msgpack interfaces (not exported)');
176
+ for (const type of privateInterfaces) {
177
+ parts.push(type.declaration!, '');
178
+ }
181
179
  }
182
- }
183
180
 
184
181
  // Add conversion functions (only for api_types.ts)
185
182
  const conversions = sortedTypes.filter(t => t.toMethod || t.fromMethod);
@@ -218,9 +215,7 @@ export class SchemaCompiler {
218
215
  }
219
216
 
220
217
  private needsTupleHelper(): boolean {
221
- return Array.from(this.typeCache.values()).some(t =>
222
- t.typeName.includes('Tuple<')
223
- );
218
+ return Array.from(this.typeCache.values()).some(t => t.typeName.includes('Tuple<'));
224
219
  }
225
220
 
226
221
  private trackTypeUsage(typeName: string): void {
@@ -296,10 +291,15 @@ export class SchemaCompiler {
296
291
  switch (type) {
297
292
  case 'array': {
298
293
  const [subtype, size] = args[0];
294
+ // Special case: byte arrays should be Uint8Array
295
+ if (subtype === 'unsigned char') {
296
+ return { typeName: 'Uint8Array' };
297
+ }
298
+ // For other types, use T[] - idiomatic TypeScript for fixed-length homogeneous arrays
299
299
  const subtypeInfo = this.processSchema(subtype);
300
300
  return {
301
- typeName: `Tuple<${subtypeInfo.typeName}, ${size}>`,
302
- msgpackTypeName: `Tuple<${subtypeInfo.msgpackTypeName || subtypeInfo.typeName}, ${size}>`,
301
+ typeName: `${subtypeInfo.typeName}[]`,
302
+ msgpackTypeName: `${subtypeInfo.msgpackTypeName || subtypeInfo.typeName}[]`,
303
303
  };
304
304
  }
305
305
 
@@ -392,6 +392,7 @@ export class SchemaCompiler {
392
392
  case 'unsigned int':
393
393
  case 'unsigned short':
394
394
  case 'unsigned long':
395
+ case 'unsigned char':
395
396
  case 'double':
396
397
  return { typeName: 'number' };
397
398
  case 'string':
@@ -477,15 +478,19 @@ export class SchemaCompiler {
477
478
  return `function to${name}(o: Msgpack${name}): ${name} {\n return {};\n}`;
478
479
  }
479
480
 
480
- const checks = fields.map(([key]) =>
481
- ` if (o.${key} === undefined) { throw new Error("Expected ${key} in ${name} deserialization"); }`
482
- ).join('\n');
481
+ const checks = fields
482
+ .map(
483
+ ([key]) => ` if (o.${key} === undefined) { throw new Error("Expected ${key} in ${name} deserialization"); }`,
484
+ )
485
+ .join('\n');
483
486
 
484
- const conversions = fields.map(([key, value]) => {
485
- const typeInfo = this.processSchema(value);
486
- const converter = this.generateConverter(typeInfo, `o.${key}`, 'to');
487
- return ` ${camelCase(key)}: ${converter},`;
488
- }).join('\n');
487
+ const conversions = fields
488
+ .map(([key, value]) => {
489
+ const typeInfo = this.processSchema(value);
490
+ const converter = this.generateConverter(typeInfo, `o.${key}`, 'to');
491
+ return ` ${camelCase(key)}: ${converter},`;
492
+ })
493
+ .join('\n');
489
494
 
490
495
  return `function to${name}(o: Msgpack${name}): ${name} {
491
496
  ${checks};
@@ -502,15 +507,20 @@ ${conversions}
502
507
  return `function from${name}(o: ${name}): Msgpack${name} {\n return {};\n}`;
503
508
  }
504
509
 
505
- const checks = fields.map(([key]) =>
506
- ` if (o.${camelCase(key)} === undefined) { throw new Error("Expected ${camelCase(key)} in ${name} serialization"); }`
507
- ).join('\n');
510
+ const checks = fields
511
+ .map(
512
+ ([key]) =>
513
+ ` if (o.${camelCase(key)} === undefined) { throw new Error("Expected ${camelCase(key)} in ${name} serialization"); }`,
514
+ )
515
+ .join('\n');
508
516
 
509
- const conversions = fields.map(([key, value]) => {
510
- const typeInfo = this.processSchema(value);
511
- const converter = this.generateConverter(typeInfo, `o.${camelCase(key)}`, 'from');
512
- return ` ${key}: ${converter},`;
513
- }).join('\n');
517
+ const conversions = fields
518
+ .map(([key, value]) => {
519
+ const typeInfo = this.processSchema(value);
520
+ const converter = this.generateConverter(typeInfo, `o.${camelCase(key)}`, 'from');
521
+ return ` ${key}: ${converter},`;
522
+ })
523
+ .join('\n');
514
524
 
515
525
  return `function from${name}(o: ${name}): Msgpack${name} {
516
526
  ${checks};
@@ -531,8 +541,8 @@ ${conversions}
531
541
  }
532
542
  }
533
543
 
534
- // Handle custom types
535
- if (typeInfo.declaration) {
544
+ // Handle custom types that have conversion methods (not just type aliases)
545
+ if (typeInfo.toMethod || typeInfo.fromMethod) {
536
546
  return `${direction}${typeInfo.typeName}(${value})`;
537
547
  }
538
548
 
@@ -579,9 +589,9 @@ ${conversions}
579
589
  }
580
590
 
581
591
  private generateBbApiBaseInterface(): string {
582
- const methods = this.functionMetadata.map(m =>
583
- ` ${m.name}(command: ${m.commandType}): Promise<${m.responseType}>;`
584
- ).join('\n');
592
+ const methods = this.functionMetadata
593
+ .map(m => ` ${m.name}(command: ${m.commandType}): Promise<${m.responseType}>;`)
594
+ .join('\n');
585
595
 
586
596
  return `export interface BbApiBase {
587
597
  ${methods}
@@ -593,69 +603,77 @@ ${methods}
593
603
  const className = this.getApiClassName();
594
604
  const methods = this.functionMetadata.map(m => this.generateApiMethod(m)).join('\n\n');
595
605
 
596
- if (this.config.mode === 'native') {
597
- return this.generateNativeApiClass(methods);
598
- }
599
-
600
606
  // For sync API, don't implement BbApiBase since methods are synchronous
601
607
  const implementsClause = this.config.mode === 'sync' ? '' : ' implements BbApiBase';
602
608
 
603
- const msgpackCallHelper = `${this.config.mode === 'async' ? 'async ' : ''}function msgpackCall(wasm: ${this.getWasmType()}, cbind: string, input: any[]) {` +
604
- ` const inputBuffer = new Encoder({ useRecords: false }).pack(input);` +
605
- ` const encodedResult = ${this.config.mode === 'async' ? 'await ' : ''}wasm.cbindCall(cbind, inputBuffer);` +
606
- ` return new Decoder({ useRecords: false }).unpack(encodedResult);` +
607
- `}\n`;
609
+ // For tracing all calls to bb.
610
+ // const msgpackCallHelper =
611
+ // `${this.config.mode === 'async' ? 'async ' : ''}function msgpackCall(backend: ${this.getBackendType()}, input: any[]) {\n` +
612
+ // ` const commandName = input[0]?.[0] || 'unknown';\n` +
613
+ // ` process.stderr.write(\`[BB MSGPACK ${this.config.mode === 'async' ? 'ASYNC' : 'SYNC'}] \${commandName}\\n\`);\n` +
614
+ // ` const inputBuffer = new Encoder({ useRecords: false }).pack(input);\n` +
615
+ // ` const encodedResult = ${this.config.mode === 'async' ? 'await ' : ''}backend.call(inputBuffer);\n` +
616
+ // ` const result = new Decoder({ useRecords: false }).unpack(encodedResult);\n` +
617
+ // ` process.stderr.write(\`[BB MSGPACK ${this.config.mode === 'async' ? 'ASYNC' : 'SYNC'}] \${commandName} => completed\\n\`);\n` +
618
+ // ` return result;\n` +
619
+ // `}\n`;
620
+ const msgpackCallHelper =
621
+ `${this.config.mode === 'async' ? 'async ' : ''}function msgpackCall(backend: ${this.getBackendType()}, input: any[]) {` +
622
+ ` const inputBuffer = new Encoder({ useRecords: false }).pack(input);` +
623
+ ` const encodedResult = ${this.config.mode === 'async' ? 'await ' : ''}backend.call(inputBuffer);` +
624
+ ` return new Decoder({ useRecords: false }).unpack(encodedResult);` +
625
+ `}\n`;
626
+ const destroyMethod =
627
+ this.config.mode === 'sync'
628
+ ? ` destroy(): void {
629
+ if (this.backend.destroy) this.backend.destroy();
630
+ }`
631
+ : ` destroy(): Promise<void> {
632
+ return this.backend.destroy ? this.backend.destroy() : Promise.resolve();
633
+ }`;
634
+
608
635
  return (
609
636
  msgpackCallHelper +
610
637
  `export class ${className}${implementsClause} {
611
- constructor(protected wasm: ${this.getWasmType()}) {}
638
+ constructor(protected backend: ${this.getBackendType()}) {}
612
639
 
613
640
  ${methods}
614
641
 
615
- destroy(): Promise<void> {
616
- return this.wasm.destroy();
617
- }
642
+ ${destroyMethod}
618
643
  }`
619
644
  );
620
645
  }
621
646
 
622
647
  private getApiClassName(): string {
623
648
  switch (this.config.mode) {
624
- case 'sync': return 'SyncApi';
625
- case 'async': return 'AsyncApi';
626
- case 'native': return 'NativeApi';
627
- default: throw new Error(`Invalid mode: ${this.config.mode}`);
649
+ case 'sync':
650
+ return 'SyncApi';
651
+ case 'async':
652
+ return 'AsyncApi';
653
+ default:
654
+ throw new Error(`Invalid mode: ${this.config.mode}`);
628
655
  }
629
656
  }
630
657
 
631
- private getWasmType(): string {
658
+ private getBackendType(): string {
632
659
  switch (this.config.mode) {
633
- case 'sync': return 'BarretenbergWasmMain';
634
- case 'async': return 'BarretenbergWasmMainWorker';
635
- default: return '';
660
+ case 'sync':
661
+ return 'IMsgpackBackendSync';
662
+ case 'async':
663
+ return 'IMsgpackBackendAsync';
664
+ default:
665
+ return '';
636
666
  }
637
667
  }
638
668
 
639
669
  private generateApiMethod(metadata: FunctionMetadata): string {
640
670
  const { name, commandType, responseType } = metadata;
641
671
 
642
- if (this.config.mode === 'native') {
643
- return ` ${name}(command: ${commandType}): Promise<${responseType}> {
644
- const msgpackCommand = from${commandType}(command);
645
- return this.sendCommand(['${metadata.commandType}', msgpackCommand]).then(([variantName, result]: [string, any]) => {
646
- if (variantName !== '${responseType}') {
647
- throw new Error(\`Expected variant name '${responseType}' but got '\${variantName}'\`);
648
- }
649
- return to${responseType}(result);
650
- });
651
- }`;
652
- }
653
-
654
672
  // For async mode, queue immediately and return promise
655
673
  if (this.config.mode === 'async') {
656
674
  return ` ${name}(command: ${commandType}): Promise<${responseType}> {
657
675
  const msgpackCommand = from${commandType}(command);
658
- return msgpackCall(this.wasm, 'bbapi', [["${capitalize(name)}", msgpackCommand]]).then(([variantName, result]: [string, any]) => {
676
+ return msgpackCall(this.backend, [["${capitalize(name)}", msgpackCommand]]).then(([variantName, result]: [string, any]) => {
659
677
  if (variantName !== '${responseType}') {
660
678
  throw new Error(\`Expected variant name '${responseType}' but got '\${variantName}'\`);
661
679
  }
@@ -667,131 +685,13 @@ ${methods}
667
685
  // For sync mode, keep the synchronous behavior
668
686
  return ` ${name}(command: ${commandType}): ${responseType} {
669
687
  const msgpackCommand = from${commandType}(command);
670
- const [variantName, result] = msgpackCall(this.wasm, 'bbapi', [["${capitalize(name)}", msgpackCommand]]);
688
+ const [variantName, result] = msgpackCall(this.backend, [["${capitalize(name)}", msgpackCommand]]);
671
689
  if (variantName !== '${responseType}') {
672
690
  throw new Error(\`Expected variant name '${responseType}' but got '\${variantName}'\`);
673
691
  }
674
692
  return to${responseType}(result);
675
693
  }`;
676
694
  }
677
-
678
- private generateNativeApiClass(methods: string): string {
679
- return `interface NativeApiRequest {
680
- resolve: (value: any) => void;
681
- reject: (error: any) => void;
682
- }
683
-
684
- class StreamBuffer {
685
- private buffer = Buffer.alloc(0);
686
- private expectedLength: number | null = null;
687
-
688
- addData(data: Buffer): Buffer[] {
689
- // Create buffer to grow as needed
690
- const newBuffer = Buffer.allocUnsafe(this.buffer.length + data.length);
691
- this.buffer.copy(newBuffer, 0);
692
- data.copy(newBuffer, this.buffer.length);
693
- this.buffer = newBuffer;
694
-
695
- const messages: Buffer[] = [];
696
-
697
- while (true) {
698
- if (this.expectedLength === null) {
699
- if (this.buffer.length < 4) break;
700
- this.expectedLength = this.buffer.readUInt32LE(0);
701
- this.buffer = this.buffer.subarray(4);
702
- }
703
-
704
- if (this.buffer.length < this.expectedLength) break;
705
-
706
- // Extract complete message
707
- const messageBuffer = this.buffer.subarray(0, this.expectedLength);
708
- messages.push(messageBuffer);
709
- this.buffer = this.buffer.subarray(this.expectedLength);
710
- this.expectedLength = null;
711
- }
712
-
713
- return messages;
714
- }
715
- }
716
-
717
- export class NativeApi implements BbApiBase {
718
- private decoder = new Decoder({ useRecords: false });
719
- private encoder = new Encoder({ useRecords: false });
720
- private pendingRequests: NativeApiRequest[] = [];
721
-
722
- private constructor(private proc: ChildProcess) {}
723
-
724
- static async new(bbPath = 'bb', logger = console.log): Promise<NativeApi> {
725
- const proc = spawn(bbPath, ['msgpack', 'run'], {
726
- stdio: ['pipe', 'pipe', 'pipe'],
727
- });
728
-
729
- if (!proc.stdout || !proc.stdin) {
730
- throw new Error('Failed to initialize bb process');
731
- }
732
-
733
- const api = new NativeApi(proc);
734
- const streamBuffer = new StreamBuffer();
735
-
736
- proc.stdout.on('data', (data: Buffer) => {
737
- const messages = streamBuffer.addData(data);
738
-
739
- for (const messageBuffer of messages) {
740
- const pendingRequest = api.pendingRequests.shift();
741
- if (!pendingRequest) {
742
- throw new Error('Received response without a pending request');
743
- }
744
-
745
- try {
746
- const decoded = api.decoder.decode(messageBuffer);
747
- if (!Array.isArray(decoded) || decoded.length !== 2) {
748
- throw new Error(\`Invalid response format: \${JSON.stringify(decoded)}\`);
749
- }
750
- const [variantName, result] = decoded;
751
- pendingRequest.resolve([variantName, result]);
752
- } catch (error) {
753
- pendingRequest.reject(error);
754
- break;
755
- }
756
- }
757
- });
758
-
759
- proc.stderr.on('data', (data: Buffer) => {
760
- logger(data.toString().trim());
761
- });
762
-
763
- proc.on('error', err => {
764
- throw new Error(err.message);
765
- });
766
- return api;
767
- }
768
-
769
- private sendCommand(command: any): Promise<any> {
770
- return new Promise((resolve, reject) => {
771
- this.pendingRequests.push({ resolve, reject });
772
- const encoded = this.encoder.encode(command);
773
-
774
- // Write length prefix (4 bytes, little-endian)
775
- const lengthBuffer = Buffer.allocUnsafe(4);
776
- lengthBuffer.writeUInt32LE(encoded.length, 0);
777
-
778
- // Write length prefix followed by the encoded data
779
- this.proc.stdin!.write(lengthBuffer);
780
- this.proc.stdin!.write(encoded);
781
- });
782
- }
783
-
784
- async close(): Promise<void> {
785
- this.proc.kill();
786
- }
787
-
788
- destroy(): Promise<void> {
789
- return this.close();
790
- }
791
-
792
- ${methods}
793
- }`;
794
- }
795
695
  }
796
696
 
797
697
  // Factory methods for creating configured compilers
@@ -806,7 +706,7 @@ export function createSyncApiCompiler(): SchemaCompiler {
806
706
  return new SchemaCompiler({
807
707
  mode: 'sync',
808
708
  imports: [
809
- `import { BarretenbergWasmMain } from "../../barretenberg_wasm/barretenberg_wasm_main/index.js";`,
709
+ `import { IMsgpackBackendSync } from '../../bb_backends/interface.js';`,
810
710
  `import { Decoder, Encoder } from 'msgpackr';`,
811
711
  ],
812
712
  });
@@ -816,18 +716,8 @@ export function createAsyncApiCompiler(): SchemaCompiler {
816
716
  return new SchemaCompiler({
817
717
  mode: 'async',
818
718
  imports: [
819
- `import { BarretenbergWasmMainWorker } from "../../barretenberg_wasm/barretenberg_wasm_main/index.js";`,
820
- `import { Decoder, Encoder } from 'msgpackr';`
821
- ],
822
- });
823
- }
824
-
825
- export function createNativeApiCompiler(): SchemaCompiler {
826
- return new SchemaCompiler({
827
- mode: 'native',
828
- imports: [
829
- `import { spawn, ChildProcess } from 'child_process';`,
830
- `import { Decoder, Encoder } from 'msgpackr';`
719
+ `import { IMsgpackBackendAsync } from '../../bb_backends/interface.js';`,
720
+ `import { Decoder, Encoder } from 'msgpackr';`,
831
721
  ],
832
722
  });
833
723
  }
package/src/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { Crs, GrumpkinCrs } from './crs/index.js';
2
2
  export {
3
3
  type BackendOptions,
4
+ BackendType,
4
5
  Barretenberg,
5
6
  BarretenbergSync,
6
7
  UltraHonkVerifierBackend,
@@ -9,5 +10,5 @@ export {
9
10
  } from './barretenberg/index.js';
10
11
 
11
12
  export { randomBytes } from './random/index.js';
12
- export { RawBuffer, Fr } from './types/index.js';
13
+ export { Fr } from './types/index.js';
13
14
  export { splitHonkProof, reconstructHonkProof, deflattenFields, type ProofData } from './proof/index.js';
@@ -1,3 +1,2 @@
1
1
  export * from './buffer_reader.js';
2
- export * from './output_type.js';
3
2
  export * from './serialize.js';