@aztec/bb.js 0.0.1-commit.b655e406 → 0.0.1-commit.bf2612ae

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 (630) 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 +58 -40
  12. package/dest/browser/barretenberg/backend.d.ts.map +1 -1
  13. package/dest/browser/barretenberg/backend.js +143 -94
  14. package/dest/browser/barretenberg/index.d.ts +3 -5
  15. package/dest/browser/barretenberg/index.d.ts.map +1 -1
  16. package/dest/browser/barretenberg/index.js +19 -28
  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 +12 -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 +1 -1
  72. package/dest/browser/bbapi_exception.d.ts.map +1 -1
  73. package/dest/browser/bbapi_exception.js +1 -1
  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 +5 -2
  78. package/dest/browser/cbind/generate.d.ts.map +1 -1
  79. package/dest/browser/cbind/generate.js +47 -25
  80. package/dest/browser/cbind/generated/api_types.d.ts +766 -1687
  81. package/dest/browser/cbind/generated/api_types.d.ts.map +1 -1
  82. package/dest/browser/cbind/generated/api_types.js +1465 -1555
  83. package/dest/browser/cbind/generated/async.d.ts +3 -5
  84. package/dest/browser/cbind/generated/async.d.ts.map +1 -1
  85. package/dest/browser/cbind/generated/async.js +14 -33
  86. package/dest/browser/cbind/generated/curve_constants.d.ts +1 -1
  87. package/dest/browser/cbind/generated/sync.d.ts +3 -5
  88. package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
  89. package/dest/browser/cbind/generated/sync.js +14 -31
  90. package/dest/browser/cbind/naming.d.ts +16 -0
  91. package/dest/browser/cbind/naming.d.ts.map +1 -0
  92. package/dest/browser/cbind/naming.js +24 -0
  93. package/dest/browser/cbind/rust_codegen.d.ts +26 -0
  94. package/dest/browser/cbind/rust_codegen.d.ts.map +1 -0
  95. package/dest/browser/cbind/rust_codegen.js +461 -0
  96. package/dest/browser/cbind/schema_visitor.d.ts +47 -0
  97. package/dest/browser/cbind/schema_visitor.d.ts.map +1 -0
  98. package/dest/browser/cbind/schema_visitor.js +158 -0
  99. package/dest/browser/cbind/typescript_codegen.d.ts +30 -0
  100. package/dest/browser/cbind/typescript_codegen.d.ts.map +1 -0
  101. package/dest/browser/cbind/typescript_codegen.js +365 -0
  102. package/dest/browser/crs/browser/cached_net_crs.d.ts +1 -1
  103. package/dest/browser/crs/browser/cached_net_crs.d.ts.map +1 -1
  104. package/dest/browser/crs/browser/cached_net_crs.js +6 -1
  105. package/dest/browser/crs/browser/index.d.ts +1 -1
  106. package/dest/browser/crs/index.d.ts +1 -1
  107. package/dest/browser/crs/net_crs.d.ts +1 -16
  108. package/dest/browser/crs/net_crs.d.ts.map +1 -1
  109. package/dest/browser/crs/net_crs.js +6 -1
  110. package/dest/browser/index.d.ts +3 -2
  111. package/dest/browser/index.d.ts.map +1 -1
  112. package/dest/browser/index.js +3 -2
  113. package/dest/browser/proof/index.d.ts +1 -1
  114. package/dest/browser/proof/index.js +1 -1
  115. package/dest/browser/random/browser/index.d.ts +1 -1
  116. package/dest/browser/random/browser/index.d.ts.map +1 -1
  117. package/dest/browser/random/browser/index.js +1 -1
  118. package/dest/browser/random/index.d.ts +1 -1
  119. package/dest/browser/retry/index.d.ts +1 -1
  120. package/dest/browser/retry/index.js +1 -1
  121. package/dest/node/async_map/index.d.ts +1 -1
  122. package/dest/node/async_map/index.js +1 -1
  123. package/dest/node/barretenberg/backend.d.ts +58 -40
  124. package/dest/node/barretenberg/backend.d.ts.map +1 -1
  125. package/dest/node/barretenberg/backend.js +143 -94
  126. package/dest/node/barretenberg/backend.test.d.ts +2 -0
  127. package/dest/node/barretenberg/backend.test.d.ts.map +1 -0
  128. package/dest/node/barretenberg/backend.test.js +103 -0
  129. package/dest/node/barretenberg/blake2s.test.d.ts +1 -1
  130. package/dest/node/barretenberg/blake2s.test.js +2 -2
  131. package/dest/node/barretenberg/index.d.ts +3 -5
  132. package/dest/node/barretenberg/index.d.ts.map +1 -1
  133. package/dest/node/barretenberg/index.js +19 -28
  134. package/dest/node/barretenberg/pedersen.test.d.ts +1 -1
  135. package/dest/node/barretenberg/pedersen.test.js +2 -2
  136. package/dest/node/barretenberg/poseidon.bench.test.d.ts +1 -1
  137. package/dest/node/barretenberg/poseidon.bench.test.js +80 -79
  138. package/dest/node/barretenberg/poseidon.test.d.ts +1 -1
  139. package/dest/node/barretenberg/poseidon.test.js +2 -2
  140. package/dest/node/barretenberg/testing/bigint-buffer.d.ts +17 -0
  141. package/dest/node/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
  142. package/dest/node/barretenberg/testing/bigint-buffer.js +37 -0
  143. package/dest/node/barretenberg/testing/fields.d.ts +16 -0
  144. package/dest/node/barretenberg/testing/fields.d.ts.map +1 -0
  145. package/dest/node/barretenberg/testing/fields.js +47 -0
  146. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  147. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  148. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  149. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +5 -6
  150. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +1 -1
  151. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -1
  152. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +1 -3
  153. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +1 -1
  154. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +1 -7
  155. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +1 -1
  156. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -1
  157. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +1 -3
  158. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +1 -1
  159. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +1 -8
  160. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  161. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  162. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +5 -4
  163. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +13 -7
  164. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  165. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +45 -18
  166. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +1 -1
  167. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -1
  168. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +1 -3
  169. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +1 -1
  170. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +1 -7
  171. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +1 -1
  172. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -1
  173. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +1 -3
  174. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +1 -1
  175. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +1 -7
  176. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +9 -8
  177. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
  178. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.js +4 -3
  179. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +1 -1
  180. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +1 -1
  181. package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
  182. package/dest/node/barretenberg_wasm/fetch_code/browser/index.js +1 -1
  183. package/dest/node/barretenberg_wasm/fetch_code/index.d.ts +1 -1
  184. package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
  185. package/dest/node/barretenberg_wasm/fetch_code/node/index.js +1 -1
  186. package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts +2 -2
  187. package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -1
  188. package/dest/node/barretenberg_wasm/helpers/browser/index.js +9 -2
  189. package/dest/node/barretenberg_wasm/helpers/index.d.ts +1 -1
  190. package/dest/node/barretenberg_wasm/helpers/node/index.d.ts +5 -6
  191. package/dest/node/barretenberg_wasm/helpers/node/index.d.ts.map +1 -1
  192. package/dest/node/barretenberg_wasm/helpers/node/index.js +14 -6
  193. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts +2 -2
  194. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -1
  195. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.js +1 -1
  196. package/dest/node/barretenberg_wasm/index.d.ts +1 -1
  197. package/dest/node/barretenberg_wasm/index.d.ts.map +1 -1
  198. package/dest/node/barretenberg_wasm/index.js +2 -3
  199. package/dest/node/barretenberg_wasm/index.test.d.ts +1 -1
  200. package/dest/node/barretenberg_wasm/index.test.js +1 -1
  201. package/dest/node/bb_backends/browser/index.d.ts +1 -1
  202. package/dest/node/bb_backends/browser/index.js +1 -1
  203. package/dest/node/bb_backends/browser/platform.d.ts +4 -0
  204. package/dest/node/bb_backends/browser/platform.d.ts.map +1 -0
  205. package/dest/node/bb_backends/browser/platform.js +10 -0
  206. package/dest/node/bb_backends/index.d.ts +12 -7
  207. package/dest/node/bb_backends/index.d.ts.map +1 -1
  208. package/dest/node/bb_backends/index.js +8 -7
  209. package/dest/node/bb_backends/interface.d.ts +1 -1
  210. package/dest/node/bb_backends/node/index.d.ts +1 -1
  211. package/dest/node/bb_backends/node/index.d.ts.map +1 -1
  212. package/dest/node/bb_backends/node/index.js +17 -11
  213. package/dest/node/bb_backends/node/native_pipe.d.ts +1 -1
  214. package/dest/node/bb_backends/node/native_pipe.d.ts.map +1 -1
  215. package/dest/node/bb_backends/node/native_pipe.js +11 -10
  216. package/dest/node/bb_backends/node/native_shm.d.ts +4 -3
  217. package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -1
  218. package/dest/node/bb_backends/node/native_shm.js +85 -39
  219. package/dest/node/bb_backends/node/native_shm_async.d.ts +51 -0
  220. package/dest/node/bb_backends/node/native_shm_async.d.ts.map +1 -0
  221. package/dest/node/bb_backends/node/native_shm_async.js +233 -0
  222. package/dest/node/bb_backends/node/native_socket.d.ts +2 -2
  223. package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -1
  224. package/dest/node/bb_backends/node/native_socket.js +46 -32
  225. package/dest/node/bb_backends/node/platform.d.ts +1 -1
  226. package/dest/node/bb_backends/node/platform.d.ts.map +1 -1
  227. package/dest/node/bb_backends/node/platform.js +7 -2
  228. package/dest/node/bb_backends/wasm.d.ts +1 -1
  229. package/dest/node/bb_backends/wasm.d.ts.map +1 -1
  230. package/dest/node/bb_backends/wasm.js +5 -3
  231. package/dest/node/bbapi/exception_handling.test.d.ts +2 -0
  232. package/dest/node/bbapi/exception_handling.test.d.ts.map +1 -0
  233. package/dest/node/bbapi/exception_handling.test.js +48 -0
  234. package/dest/node/bbapi_exception.d.ts +1 -1
  235. package/dest/node/bbapi_exception.d.ts.map +1 -1
  236. package/dest/node/bbapi_exception.js +1 -1
  237. package/dest/node/benchmark/index.d.ts +1 -1
  238. package/dest/node/benchmark/index.js +1 -1
  239. package/dest/node/benchmark/timer.d.ts +1 -1
  240. package/dest/node/benchmark/timer.d.ts.map +1 -1
  241. package/dest/node/benchmark/timer.js +2 -1
  242. package/dest/node/bin/index.d.ts +3 -0
  243. package/dest/node/bin/index.d.ts.map +1 -0
  244. package/dest/node/bin/index.js +11 -0
  245. package/dest/node/cbind/generate.d.ts +5 -2
  246. package/dest/node/cbind/generate.d.ts.map +1 -1
  247. package/dest/node/cbind/generate.js +47 -25
  248. package/dest/node/cbind/generated/api_types.d.ts +766 -1687
  249. package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
  250. package/dest/node/cbind/generated/api_types.js +1465 -1555
  251. package/dest/node/cbind/generated/async.d.ts +3 -5
  252. package/dest/node/cbind/generated/async.d.ts.map +1 -1
  253. package/dest/node/cbind/generated/async.js +14 -33
  254. package/dest/node/cbind/generated/curve_constants.d.ts +1 -1
  255. package/dest/node/cbind/generated/sync.d.ts +3 -5
  256. package/dest/node/cbind/generated/sync.d.ts.map +1 -1
  257. package/dest/node/cbind/generated/sync.js +14 -31
  258. package/dest/node/cbind/naming.d.ts +16 -0
  259. package/dest/node/cbind/naming.d.ts.map +1 -0
  260. package/dest/node/cbind/naming.js +24 -0
  261. package/dest/node/cbind/rust_codegen.d.ts +26 -0
  262. package/dest/node/cbind/rust_codegen.d.ts.map +1 -0
  263. package/dest/node/cbind/rust_codegen.js +461 -0
  264. package/dest/node/cbind/schema_visitor.d.ts +47 -0
  265. package/dest/node/cbind/schema_visitor.d.ts.map +1 -0
  266. package/dest/node/cbind/schema_visitor.js +158 -0
  267. package/dest/node/cbind/typescript_codegen.d.ts +30 -0
  268. package/dest/node/cbind/typescript_codegen.d.ts.map +1 -0
  269. package/dest/node/cbind/typescript_codegen.js +365 -0
  270. package/dest/node/crs/browser/cached_net_crs.d.ts +1 -1
  271. package/dest/node/crs/browser/cached_net_crs.d.ts.map +1 -1
  272. package/dest/node/crs/browser/cached_net_crs.js +6 -1
  273. package/dest/node/crs/browser/index.d.ts +1 -1
  274. package/dest/node/crs/index.d.ts +1 -1
  275. package/dest/node/crs/net_crs.d.ts +1 -16
  276. package/dest/node/crs/net_crs.d.ts.map +1 -1
  277. package/dest/node/crs/net_crs.js +6 -1
  278. package/dest/node/crs/node/index.d.ts +1 -1
  279. package/dest/node/crs/node/index.d.ts.map +1 -1
  280. package/dest/node/crs/node/index.js +11 -6
  281. package/dest/node/index.d.ts +3 -2
  282. package/dest/node/index.d.ts.map +1 -1
  283. package/dest/node/index.js +3 -2
  284. package/dest/node/proof/index.d.ts +1 -1
  285. package/dest/node/proof/index.js +1 -1
  286. package/dest/node/random/browser/index.d.ts +1 -1
  287. package/dest/node/random/browser/index.d.ts.map +1 -1
  288. package/dest/node/random/browser/index.js +1 -1
  289. package/dest/node/random/index.d.ts +1 -1
  290. package/dest/node/random/node/index.d.ts +1 -1
  291. package/dest/node/random/node/index.js +1 -1
  292. package/dest/node/retry/index.d.ts +1 -1
  293. package/dest/node/retry/index.js +1 -1
  294. package/dest/node-cjs/async_map/index.d.ts +1 -1
  295. package/dest/node-cjs/async_map/index.js +1 -1
  296. package/dest/node-cjs/barretenberg/backend.d.ts +58 -40
  297. package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
  298. package/dest/node-cjs/barretenberg/backend.js +151 -100
  299. package/dest/node-cjs/barretenberg/backend.test.d.ts +2 -0
  300. package/dest/node-cjs/barretenberg/backend.test.d.ts.map +1 -0
  301. package/dest/node-cjs/barretenberg/backend.test.js +105 -0
  302. package/dest/node-cjs/barretenberg/blake2s.test.d.ts +1 -1
  303. package/dest/node-cjs/barretenberg/blake2s.test.js +6 -6
  304. package/dest/node-cjs/barretenberg/index.d.ts +3 -5
  305. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
  306. package/dest/node-cjs/barretenberg/index.js +27 -34
  307. package/dest/node-cjs/barretenberg/pedersen.test.d.ts +1 -1
  308. package/dest/node-cjs/barretenberg/pedersen.test.js +9 -9
  309. package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts +1 -1
  310. package/dest/node-cjs/barretenberg/poseidon.bench.test.js +89 -88
  311. package/dest/node-cjs/barretenberg/poseidon.test.d.ts +1 -1
  312. package/dest/node-cjs/barretenberg/poseidon.test.js +4 -4
  313. package/dest/node-cjs/barretenberg/testing/bigint-buffer.d.ts +17 -0
  314. package/dest/node-cjs/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
  315. package/dest/node-cjs/barretenberg/testing/bigint-buffer.js +43 -0
  316. package/dest/node-cjs/barretenberg/testing/fields.d.ts +16 -0
  317. package/dest/node-cjs/barretenberg/testing/fields.d.ts.map +1 -0
  318. package/dest/node-cjs/barretenberg/testing/fields.js +51 -0
  319. package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  320. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  321. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  322. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +7 -8
  323. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +1 -1
  324. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -1
  325. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +3 -5
  326. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +1 -1
  327. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +1 -7
  328. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +1 -1
  329. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -1
  330. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +1 -3
  331. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +1 -1
  332. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +1 -8
  333. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  334. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  335. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +5 -4
  336. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +13 -7
  337. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  338. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +45 -18
  339. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +1 -1
  340. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -1
  341. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +3 -5
  342. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +1 -1
  343. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +1 -7
  344. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +1 -1
  345. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -1
  346. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +1 -3
  347. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +1 -1
  348. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +1 -7
  349. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +9 -8
  350. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
  351. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.js +4 -3
  352. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +1 -1
  353. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
  354. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +1 -1
  355. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
  356. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
  357. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.js +2 -2
  358. package/dest/node-cjs/barretenberg_wasm/fetch_code/index.d.ts +1 -1
  359. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
  360. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.js +2 -2
  361. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts +2 -2
  362. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -1
  363. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.js +9 -2
  364. package/dest/node-cjs/barretenberg_wasm/helpers/index.d.ts +1 -1
  365. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts +5 -6
  366. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts.map +1 -1
  367. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.js +15 -7
  368. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts +2 -2
  369. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -1
  370. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.js +1 -1
  371. package/dest/node-cjs/barretenberg_wasm/index.d.ts +1 -1
  372. package/dest/node-cjs/barretenberg_wasm/index.d.ts.map +1 -1
  373. package/dest/node-cjs/barretenberg_wasm/index.js +2 -3
  374. package/dest/node-cjs/barretenberg_wasm/index.test.d.ts +1 -1
  375. package/dest/node-cjs/barretenberg_wasm/index.test.js +1 -1
  376. package/dest/node-cjs/bb_backends/browser/index.d.ts +1 -1
  377. package/dest/node-cjs/bb_backends/browser/index.js +1 -1
  378. package/dest/node-cjs/bb_backends/browser/platform.d.ts +4 -0
  379. package/dest/node-cjs/bb_backends/browser/platform.d.ts.map +1 -0
  380. package/dest/node-cjs/bb_backends/browser/platform.js +15 -0
  381. package/dest/node-cjs/bb_backends/index.d.ts +12 -7
  382. package/dest/node-cjs/bb_backends/index.d.ts.map +1 -1
  383. package/dest/node-cjs/bb_backends/index.js +6 -6
  384. package/dest/node-cjs/bb_backends/interface.d.ts +1 -1
  385. package/dest/node-cjs/bb_backends/node/index.d.ts +1 -1
  386. package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -1
  387. package/dest/node-cjs/bb_backends/node/index.js +17 -11
  388. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts +1 -1
  389. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts.map +1 -1
  390. package/dest/node-cjs/bb_backends/node/native_pipe.js +11 -10
  391. package/dest/node-cjs/bb_backends/node/native_shm.d.ts +4 -3
  392. package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -1
  393. package/dest/node-cjs/bb_backends/node/native_shm.js +85 -39
  394. package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts +51 -0
  395. package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts.map +1 -0
  396. package/dest/node-cjs/bb_backends/node/native_shm_async.js +237 -0
  397. package/dest/node-cjs/bb_backends/node/native_socket.d.ts +2 -2
  398. package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -1
  399. package/dest/node-cjs/bb_backends/node/native_socket.js +46 -32
  400. package/dest/node-cjs/bb_backends/node/platform.d.ts +1 -1
  401. package/dest/node-cjs/bb_backends/node/platform.d.ts.map +1 -1
  402. package/dest/node-cjs/bb_backends/node/platform.js +8 -3
  403. package/dest/node-cjs/bb_backends/wasm.d.ts +1 -1
  404. package/dest/node-cjs/bb_backends/wasm.d.ts.map +1 -1
  405. package/dest/node-cjs/bb_backends/wasm.js +5 -3
  406. package/dest/node-cjs/bbapi/exception_handling.test.d.ts +2 -0
  407. package/dest/node-cjs/bbapi/exception_handling.test.d.ts.map +1 -0
  408. package/dest/node-cjs/bbapi/exception_handling.test.js +50 -0
  409. package/dest/node-cjs/bbapi_exception.d.ts +1 -1
  410. package/dest/node-cjs/bbapi_exception.d.ts.map +1 -1
  411. package/dest/node-cjs/bbapi_exception.js +1 -1
  412. package/dest/node-cjs/benchmark/index.d.ts +1 -1
  413. package/dest/node-cjs/benchmark/index.js +2 -2
  414. package/dest/node-cjs/benchmark/timer.d.ts +1 -1
  415. package/dest/node-cjs/benchmark/timer.d.ts.map +1 -1
  416. package/dest/node-cjs/benchmark/timer.js +2 -1
  417. package/dest/node-cjs/bin/index.d.ts +3 -0
  418. package/dest/node-cjs/bin/index.d.ts.map +1 -0
  419. package/dest/node-cjs/bin/index.js +13 -0
  420. package/dest/node-cjs/cbind/generate.d.ts +5 -2
  421. package/dest/node-cjs/cbind/generate.d.ts.map +1 -1
  422. package/dest/node-cjs/cbind/generate.js +47 -25
  423. package/dest/node-cjs/cbind/generated/api_types.d.ts +766 -1687
  424. package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
  425. package/dest/node-cjs/cbind/generated/api_types.js +1671 -1771
  426. package/dest/node-cjs/cbind/generated/async.d.ts +3 -5
  427. package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
  428. package/dest/node-cjs/cbind/generated/async.js +13 -32
  429. package/dest/node-cjs/cbind/generated/curve_constants.d.ts +1 -1
  430. package/dest/node-cjs/cbind/generated/sync.d.ts +3 -5
  431. package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
  432. package/dest/node-cjs/cbind/generated/sync.js +13 -30
  433. package/dest/node-cjs/cbind/naming.d.ts +16 -0
  434. package/dest/node-cjs/cbind/naming.d.ts.map +1 -0
  435. package/dest/node-cjs/cbind/naming.js +28 -0
  436. package/dest/node-cjs/cbind/rust_codegen.d.ts +26 -0
  437. package/dest/node-cjs/cbind/rust_codegen.d.ts.map +1 -0
  438. package/dest/node-cjs/cbind/rust_codegen.js +465 -0
  439. package/dest/node-cjs/cbind/schema_visitor.d.ts +47 -0
  440. package/dest/node-cjs/cbind/schema_visitor.d.ts.map +1 -0
  441. package/dest/node-cjs/cbind/schema_visitor.js +162 -0
  442. package/dest/node-cjs/cbind/typescript_codegen.d.ts +30 -0
  443. package/dest/node-cjs/cbind/typescript_codegen.d.ts.map +1 -0
  444. package/dest/node-cjs/cbind/typescript_codegen.js +369 -0
  445. package/dest/node-cjs/crs/browser/cached_net_crs.d.ts +1 -1
  446. package/dest/node-cjs/crs/browser/cached_net_crs.d.ts.map +1 -1
  447. package/dest/node-cjs/crs/browser/cached_net_crs.js +6 -1
  448. package/dest/node-cjs/crs/browser/index.d.ts +1 -1
  449. package/dest/node-cjs/crs/browser/index.js +2 -2
  450. package/dest/node-cjs/crs/index.d.ts +1 -1
  451. package/dest/node-cjs/crs/index.js +2 -2
  452. package/dest/node-cjs/crs/net_crs.d.ts +1 -16
  453. package/dest/node-cjs/crs/net_crs.d.ts.map +1 -1
  454. package/dest/node-cjs/crs/net_crs.js +6 -1
  455. package/dest/node-cjs/crs/node/index.d.ts +1 -1
  456. package/dest/node-cjs/crs/node/index.d.ts.map +1 -1
  457. package/dest/node-cjs/crs/node/index.js +11 -6
  458. package/dest/node-cjs/index.d.ts +3 -2
  459. package/dest/node-cjs/index.d.ts.map +1 -1
  460. package/dest/node-cjs/index.js +12 -8
  461. package/dest/node-cjs/proof/index.d.ts +1 -1
  462. package/dest/node-cjs/proof/index.js +1 -1
  463. package/dest/node-cjs/random/browser/index.d.ts +1 -1
  464. package/dest/node-cjs/random/browser/index.d.ts.map +1 -1
  465. package/dest/node-cjs/random/browser/index.js +1 -1
  466. package/dest/node-cjs/random/index.d.ts +1 -1
  467. package/dest/node-cjs/random/node/index.d.ts +1 -1
  468. package/dest/node-cjs/random/node/index.js +1 -1
  469. package/dest/node-cjs/retry/index.d.ts +1 -1
  470. package/dest/node-cjs/retry/index.js +1 -1
  471. package/package.json +8 -6
  472. package/src/barretenberg/backend.test.ts +122 -0
  473. package/src/barretenberg/backend.ts +170 -122
  474. package/src/barretenberg/blake2s.test.ts +1 -1
  475. package/src/barretenberg/index.ts +25 -28
  476. package/src/barretenberg/pedersen.test.ts +1 -1
  477. package/src/barretenberg/poseidon.bench.test.ts +160 -157
  478. package/src/barretenberg/poseidon.test.ts +1 -1
  479. package/src/{types → barretenberg/testing}/fields.ts +12 -26
  480. package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +1 -2
  481. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts +0 -2
  482. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts +0 -7
  483. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts +0 -2
  484. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts +0 -9
  485. package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +38 -5
  486. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts +0 -2
  487. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts +0 -7
  488. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts +0 -2
  489. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts +0 -7
  490. package/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts +3 -2
  491. package/src/barretenberg_wasm/helpers/browser/index.ts +8 -1
  492. package/src/barretenberg_wasm/helpers/node/index.ts +13 -6
  493. package/src/barretenberg_wasm/index.ts +1 -2
  494. package/src/bb_backends/browser/platform.ts +11 -0
  495. package/src/bb_backends/index.ts +12 -6
  496. package/src/bb_backends/node/index.ts +23 -10
  497. package/src/bb_backends/node/native_shm.ts +81 -38
  498. package/src/bb_backends/node/native_shm_async.ts +262 -0
  499. package/src/bb_backends/node/native_socket.ts +35 -19
  500. package/src/bb_backends/node/platform.ts +6 -1
  501. package/src/bb_backends/wasm.ts +1 -2
  502. package/src/bbapi/exception_handling.test.ts +54 -0
  503. package/src/bin/index.ts +14 -0
  504. package/src/cbind/generate.ts +51 -32
  505. package/src/cbind/naming.ts +27 -0
  506. package/src/cbind/rust_codegen.ts +504 -0
  507. package/src/cbind/schema_visitor.ts +219 -0
  508. package/src/cbind/typescript_codegen.ts +419 -0
  509. package/src/crs/node/index.ts +4 -5
  510. package/src/index.ts +6 -0
  511. package/dest/browser/bb_backends/sync_to_async_adapter.d.ts +0 -15
  512. package/dest/browser/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
  513. package/dest/browser/bb_backends/sync_to_async_adapter.js +0 -20
  514. package/dest/browser/bigint-array/index.d.ts +0 -17
  515. package/dest/browser/bigint-array/index.d.ts.map +0 -1
  516. package/dest/browser/bigint-array/index.js +0 -37
  517. package/dest/browser/cbind/schema_compiler.d.ts +0 -68
  518. package/dest/browser/cbind/schema_compiler.d.ts.map +0 -1
  519. package/dest/browser/cbind/schema_compiler.js +0 -599
  520. package/dest/browser/log/browser/index.d.ts +0 -6
  521. package/dest/browser/log/browser/index.d.ts.map +0 -1
  522. package/dest/browser/log/browser/index.js +0 -28
  523. package/dest/browser/log/index.d.ts +0 -2
  524. package/dest/browser/log/index.d.ts.map +0 -1
  525. package/dest/browser/log/index.js +0 -2
  526. package/dest/browser/log/types.d.ts +0 -6
  527. package/dest/browser/log/types.d.ts.map +0 -1
  528. package/dest/browser/log/types.js +0 -2
  529. package/dest/browser/serialize/index.d.ts +0 -2
  530. package/dest/browser/serialize/index.d.ts.map +0 -1
  531. package/dest/browser/serialize/index.js +0 -2
  532. package/dest/browser/serialize/serialize.d.ts +0 -18
  533. package/dest/browser/serialize/serialize.d.ts.map +0 -1
  534. package/dest/browser/serialize/serialize.js +0 -72
  535. package/dest/browser/types/fields.d.ts +0 -23
  536. package/dest/browser/types/fields.d.ts.map +0 -1
  537. package/dest/browser/types/fields.js +0 -61
  538. package/dest/browser/types/index.d.ts +0 -3
  539. package/dest/browser/types/index.d.ts.map +0 -1
  540. package/dest/browser/types/index.js +0 -3
  541. package/dest/browser/types/point.d.ts +0 -18
  542. package/dest/browser/types/point.d.ts.map +0 -1
  543. package/dest/browser/types/point.js +0 -28
  544. package/dest/node/bb_backends/sync_to_async_adapter.d.ts +0 -15
  545. package/dest/node/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
  546. package/dest/node/bb_backends/sync_to_async_adapter.js +0 -20
  547. package/dest/node/bigint-array/index.d.ts +0 -17
  548. package/dest/node/bigint-array/index.d.ts.map +0 -1
  549. package/dest/node/bigint-array/index.js +0 -37
  550. package/dest/node/cbind/schema_compiler.d.ts +0 -68
  551. package/dest/node/cbind/schema_compiler.d.ts.map +0 -1
  552. package/dest/node/cbind/schema_compiler.js +0 -599
  553. package/dest/node/log/browser/index.d.ts +0 -6
  554. package/dest/node/log/browser/index.d.ts.map +0 -1
  555. package/dest/node/log/browser/index.js +0 -28
  556. package/dest/node/log/index.d.ts +0 -2
  557. package/dest/node/log/index.d.ts.map +0 -1
  558. package/dest/node/log/index.js +0 -2
  559. package/dest/node/log/node/index.d.ts +0 -6
  560. package/dest/node/log/node/index.d.ts.map +0 -1
  561. package/dest/node/log/node/index.js +0 -40
  562. package/dest/node/log/types.d.ts +0 -6
  563. package/dest/node/log/types.d.ts.map +0 -1
  564. package/dest/node/log/types.js +0 -2
  565. package/dest/node/serialize/index.d.ts +0 -2
  566. package/dest/node/serialize/index.d.ts.map +0 -1
  567. package/dest/node/serialize/index.js +0 -2
  568. package/dest/node/serialize/serialize.d.ts +0 -18
  569. package/dest/node/serialize/serialize.d.ts.map +0 -1
  570. package/dest/node/serialize/serialize.js +0 -72
  571. package/dest/node/types/fields.d.ts +0 -23
  572. package/dest/node/types/fields.d.ts.map +0 -1
  573. package/dest/node/types/fields.js +0 -61
  574. package/dest/node/types/index.d.ts +0 -3
  575. package/dest/node/types/index.d.ts.map +0 -1
  576. package/dest/node/types/index.js +0 -3
  577. package/dest/node/types/point.d.ts +0 -18
  578. package/dest/node/types/point.d.ts.map +0 -1
  579. package/dest/node/types/point.js +0 -28
  580. package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts +0 -15
  581. package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
  582. package/dest/node-cjs/bb_backends/sync_to_async_adapter.js +0 -24
  583. package/dest/node-cjs/bigint-array/index.d.ts +0 -17
  584. package/dest/node-cjs/bigint-array/index.d.ts.map +0 -1
  585. package/dest/node-cjs/bigint-array/index.js +0 -43
  586. package/dest/node-cjs/cbind/schema_compiler.d.ts +0 -68
  587. package/dest/node-cjs/cbind/schema_compiler.d.ts.map +0 -1
  588. package/dest/node-cjs/cbind/schema_compiler.js +0 -606
  589. package/dest/node-cjs/log/browser/index.d.ts +0 -6
  590. package/dest/node-cjs/log/browser/index.d.ts.map +0 -1
  591. package/dest/node-cjs/log/browser/index.js +0 -30
  592. package/dest/node-cjs/log/index.d.ts +0 -2
  593. package/dest/node-cjs/log/index.d.ts.map +0 -1
  594. package/dest/node-cjs/log/index.js +0 -8
  595. package/dest/node-cjs/log/node/index.d.ts +0 -6
  596. package/dest/node-cjs/log/node/index.d.ts.map +0 -1
  597. package/dest/node-cjs/log/node/index.js +0 -42
  598. package/dest/node-cjs/log/types.d.ts +0 -6
  599. package/dest/node-cjs/log/types.d.ts.map +0 -1
  600. package/dest/node-cjs/log/types.js +0 -3
  601. package/dest/node-cjs/serialize/index.d.ts +0 -2
  602. package/dest/node-cjs/serialize/index.d.ts.map +0 -1
  603. package/dest/node-cjs/serialize/index.js +0 -5
  604. package/dest/node-cjs/serialize/serialize.d.ts +0 -18
  605. package/dest/node-cjs/serialize/serialize.d.ts.map +0 -1
  606. package/dest/node-cjs/serialize/serialize.js +0 -82
  607. package/dest/node-cjs/types/fields.d.ts +0 -23
  608. package/dest/node-cjs/types/fields.d.ts.map +0 -1
  609. package/dest/node-cjs/types/fields.js +0 -65
  610. package/dest/node-cjs/types/index.d.ts +0 -3
  611. package/dest/node-cjs/types/index.d.ts.map +0 -1
  612. package/dest/node-cjs/types/index.js +0 -6
  613. package/dest/node-cjs/types/point.d.ts +0 -18
  614. package/dest/node-cjs/types/point.d.ts.map +0 -1
  615. package/dest/node-cjs/types/point.js +0 -32
  616. package/src/bb_backends/sync_to_async_adapter.ts +0 -21
  617. package/src/cbind/generated/api_types.ts +0 -4271
  618. package/src/cbind/generated/async.ts +0 -717
  619. package/src/cbind/generated/curve_constants.ts +0 -53
  620. package/src/cbind/generated/sync.ts +0 -663
  621. package/src/cbind/schema_compiler.ts +0 -745
  622. package/src/log/browser/index.ts +0 -35
  623. package/src/log/index.ts +0 -1
  624. package/src/log/node/index.ts +0 -52
  625. package/src/log/types.ts +0 -6
  626. package/src/serialize/index.ts +0 -1
  627. package/src/serialize/serialize.ts +0 -75
  628. package/src/types/index.ts +0 -2
  629. package/src/types/point.ts +0 -32
  630. /package/src/{bigint-array/index.ts → barretenberg/testing/bigint-buffer.ts} +0 -0
Binary file
Binary file
Binary file
Binary file
@@ -7,4 +7,4 @@
7
7
  * The equivalent with asyncMap: `await asyncMap(arr, async e => { ... })`.
8
8
  */
9
9
  export declare function asyncMap<T, U>(arr: T[], fn: (e: T, i: number) => Promise<U>): Promise<U[]>;
10
- //# sourceMappingURL=index.d.ts.map
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hc3luY19tYXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILHdCQUFzQixRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FNaEcifQ==
@@ -13,4 +13,4 @@ export async function asyncMap(arr, fn) {
13
13
  }
14
14
  return results;
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXN5bmNfbWFwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFFBQVEsQ0FBTyxHQUFRLEVBQUUsRUFBbUM7SUFDaEYsTUFBTSxPQUFPLEdBQVEsRUFBRSxDQUFDO0lBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyJ9
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXN5bmNfbWFwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFFBQVEsQ0FBTyxHQUFRLEVBQUUsRUFBbUMsRUFBZ0I7SUFDaEcsTUFBTSxPQUFPLEdBQVEsRUFBRSxDQUFDO0lBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFBQSxDQUNoQiJ9
@@ -1,75 +1,93 @@
1
- import { BackendOptions, Barretenberg, CircuitOptions } from './index.js';
1
+ import { Barretenberg } from './index.js';
2
2
  import { ProofData } from '../proof/index.js';
3
3
  export declare class AztecClientBackendError extends Error {
4
4
  constructor(message: string);
5
5
  }
6
+ /**
7
+ * Target verification environment for proof generation.
8
+ * This determines the hash function used and whether zero-knowledge is enabled.
9
+ */
10
+ export type VerifierTarget = 'evm' | 'evm-no-zk' | 'noir-recursive' | 'noir-recursive-no-zk' | 'noir-rollup' | 'noir-rollup-no-zk' | 'starknet' | 'starknet-no-zk';
6
11
  /**
7
12
  * Options for the UltraHonkBackend.
8
13
  */
9
14
  export type UltraHonkBackendOptions = {
10
- /** Selecting this option will use the keccak hash function instead of poseidon
11
- * when generating challenges in the proof.
12
- * Use this when you want to verify the created proof on an EVM chain.
15
+ /**
16
+ * Target verification environment. Determines hash function and ZK settings.
17
+ * This is the recommended way to configure proof generation.
18
+ *
19
+ * @example
20
+ * // For EVM/Solidity verification
21
+ * backend.generateProof(witness, { verifierTarget: 'evm' });
22
+ *
23
+ * // For recursive verification in Noir
24
+ * backend.generateProof(witness, { verifierTarget: 'noir-recursive' });
13
25
  */
26
+ verifierTarget?: VerifierTarget;
27
+ /** @deprecated Use verifierTarget: 'evm-no-zk' instead */
14
28
  keccak?: boolean;
15
- /** Selecting this option will use the keccak hash function instead of poseidon
16
- * when generating challenges in the proof.
17
- * Use this when you want to verify the created proof on an EVM chain.
18
- */
29
+ /** @deprecated Use verifierTarget: 'evm' instead */
19
30
  keccakZK?: boolean;
20
- /** Selecting this option will use the poseidon/stark252 hash function instead of poseidon
21
- * when generating challenges in the proof.
22
- * Use this when you want to verify the created proof on an Starknet chain with Garaga.
23
- */
31
+ /** @deprecated Use verifierTarget: 'starknet-no-zk' instead */
24
32
  starknet?: boolean;
25
- /** Selecting this option will use the poseidon/stark252 hash function instead of poseidon
26
- * when generating challenges in the proof.
27
- * Use this when you want to verify the created proof on an Starknet chain with Garaga.
28
- */
33
+ /** @deprecated Use verifierTarget: 'starknet' instead */
29
34
  starknetZK?: boolean;
30
35
  };
31
36
  export declare class UltraHonkVerifierBackend {
32
- protected backendOptions: BackendOptions;
33
- protected circuitOptions: CircuitOptions;
34
- protected api: Barretenberg;
35
- constructor(backendOptions?: BackendOptions, circuitOptions?: CircuitOptions);
36
- /** @ignore */
37
- private instantiate;
37
+ private api;
38
+ constructor(api: Barretenberg);
38
39
  verifyProof(proofData: ProofData & {
39
40
  verificationKey: Uint8Array;
40
41
  }, options?: UltraHonkBackendOptions): Promise<boolean>;
41
- destroy(): Promise<void>;
42
42
  }
43
43
  export declare class UltraHonkBackend {
44
- protected backendOptions: BackendOptions;
45
- protected circuitOptions: CircuitOptions;
46
- protected api: Barretenberg;
47
- protected acirUncompressedBytecode: Uint8Array;
48
- constructor(acirBytecode: string, backendOptions?: BackendOptions, circuitOptions?: CircuitOptions);
49
- /** @ignore */
50
- private instantiate;
44
+ private api;
45
+ private acirUncompressedBytecode;
46
+ constructor(acirBytecode: string, api: Barretenberg);
51
47
  generateProof(compressedWitness: Uint8Array, options?: UltraHonkBackendOptions): Promise<ProofData>;
52
48
  verifyProof(proofData: ProofData, options?: UltraHonkBackendOptions): Promise<boolean>;
53
49
  getVerificationKey(options?: UltraHonkBackendOptions): Promise<Uint8Array>;
54
50
  /** @description Returns a solidity verifier */
55
51
  getSolidityVerifier(vk: Uint8Array, options?: UltraHonkBackendOptions): Promise<string>;
56
- generateRecursiveProofArtifacts(_proof: Uint8Array, _numOfPublicInputs: number): Promise<{
52
+ generateRecursiveProofArtifacts(_proof: Uint8Array, _numOfPublicInputs: number, options?: UltraHonkBackendOptions): Promise<{
57
53
  proofAsFields: string[];
58
54
  vkAsFields: string[];
59
55
  vkHash: string;
60
56
  }>;
61
- destroy(): Promise<void>;
62
57
  }
63
58
  export declare class AztecClientBackend {
64
- protected acirBuf: Uint8Array[];
65
- protected options: BackendOptions;
66
- protected api: Barretenberg;
67
- constructor(acirBuf: Uint8Array[], options?: BackendOptions);
68
- /** @ignore */
69
- private instantiate;
59
+ private acirBuf;
60
+ private api;
61
+ constructor(acirBuf: Uint8Array[], api: Barretenberg);
70
62
  prove(witnessBuf: Uint8Array[], vksBuf?: Uint8Array[]): Promise<[Uint8Array[], Uint8Array, Uint8Array]>;
71
63
  verify(proof: Uint8Array, vk: Uint8Array): Promise<boolean>;
64
+ private verifyNative;
72
65
  gates(): Promise<number[]>;
73
- destroy(): Promise<void>;
74
66
  }
75
- //# sourceMappingURL=backend.d.ts.map
67
+ /**
68
+ * Convert a field element (32-byte Uint8Array) to a string.
69
+ *
70
+ * @param field - A 32-byte field element
71
+ * @param radix - The radix for string conversion (2-36), defaults to 10 (decimal)
72
+ * @returns The field value as a string in the specified radix
73
+ *
74
+ * @example
75
+ * const decimal = fieldToString(field); // "12345678"
76
+ * const hex = fieldToString(field, 16); // "bc614e"
77
+ */
78
+ export declare function fieldToString(field: Uint8Array, radix?: number): string;
79
+ /**
80
+ * Convert an array of field elements to an array of strings.
81
+ * Useful for passing VK fields to Noir circuits.
82
+ *
83
+ * @param fields - Array of 32-byte field elements
84
+ * @param radix - The radix for string conversion (2-36), defaults to 10 (decimal)
85
+ * @returns Array of strings in the specified radix
86
+ *
87
+ * @example
88
+ * const vkAsFields = await barretenbergAPI.vkAsFields({ verificationKey: vk });
89
+ * const vkDecimalStrings = fieldsToStrings(vkAsFields.fields); // ["12345678", "87654321", ...]
90
+ * const vkHexStrings = fieldsToStrings(vkAsFields.fields, 16); // ["bc614e", "5397fb1", ...]
91
+ */
92
+ export declare function fieldsToStrings(fields: Uint8Array[], radix?: number): string[];
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhcnJldGVuYmVyZy9iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBb0MsTUFBTSxtQkFBbUIsQ0FBQztBQUtoRixxQkFBYSx1QkFBd0IsU0FBUSxLQUFLO0lBQ2hELFlBQVksT0FBTyxFQUFFLE1BQU0sRUFFMUI7Q0FDRjtBQUVEOzs7R0FHRztBQUNILE1BQU0sTUFBTSxjQUFjLEdBQ3RCLEtBQUssR0FDTCxXQUFXLEdBQ1gsZ0JBQWdCLEdBQ2hCLHNCQUFzQixHQUN0QixhQUFhLEdBQ2IsbUJBQW1CLEdBQ25CLFVBQVUsR0FDVixnQkFBZ0IsQ0FBQztBQUVyQjs7R0FFRztBQUNILE1BQU0sTUFBTSx1QkFBdUIsR0FBRztJQUNwQzs7Ozs7Ozs7OztPQVVHO0lBQ0gsY0FBYyxDQUFDLEVBQUUsY0FBYyxDQUFDO0lBSWhDLDBEQUEwRDtJQUMxRCxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDakIsb0RBQW9EO0lBQ3BELFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUNuQiwrREFBK0Q7SUFDL0QsUUFBUSxDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ25CLHlEQUF5RDtJQUN6RCxVQUFVLENBQUMsRUFBRSxPQUFPLENBQUM7Q0FDdEIsQ0FBQztBQWtGRixxQkFBYSx3QkFBd0I7SUFDdkIsT0FBTyxDQUFDLEdBQUc7SUFBdkIsWUFBb0IsR0FBRyxFQUFFLFlBQVksRUFBSTtJQUVuQyxXQUFXLENBQ2YsU0FBUyxFQUFFLFNBQVMsR0FBRztRQUFFLGVBQWUsRUFBRSxVQUFVLENBQUE7S0FBRSxFQUN0RCxPQUFPLENBQUMsRUFBRSx1QkFBdUIsR0FDaEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVlsQjtDQUNGO0FBRUQscUJBQWEsZ0JBQWdCO0lBVXpCLE9BQU8sQ0FBQyxHQUFHO0lBSmIsT0FBTyxDQUFDLHdCQUF3QixDQUFhO0lBRTdDLFlBQ0UsWUFBWSxFQUFFLE1BQU0sRUFDWixHQUFHLEVBQUUsWUFBWSxFQUcxQjtJQUVLLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsdUJBQXVCLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQW9CeEc7SUFFSyxXQUFXLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSx1QkFBdUIsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBb0IzRjtJQUVLLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FTL0U7SUFFRCwrQ0FBK0M7SUFDekMsbUJBQW1CLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSx1QkFBdUIsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBTTVGO0lBR0ssK0JBQStCLENBRW5DLE1BQU0sRUFBRSxVQUFVLEVBRWxCLGtCQUFrQixFQUFFLE1BQU0sRUFDMUIsT0FBTyxDQUFDLEVBQUUsdUJBQXVCLEdBQ2hDLE9BQU8sQ0FBQztRQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUFDLE1BQU0sRUFBRSxNQUFNLENBQUE7S0FBRSxDQUFDLENBaUM1RTtDQUNGO0FBRUQscUJBQWEsa0JBQWtCO0lBTzNCLE9BQU8sQ0FBQyxPQUFPO0lBQ2YsT0FBTyxDQUFDLEdBQUc7SUFGYixZQUNVLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFDckIsR0FBRyxFQUFFLFlBQVksRUFDdkI7SUFFRSxLQUFLLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxFQUFFLE1BQU0sR0FBRSxVQUFVLEVBQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0EyRGhIO0lBRUssTUFBTSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBTWhFO1lBTWEsWUFBWTtJQVFwQixLQUFLLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBYS9CO0NBQ0Y7QUFpQkQ7Ozs7Ozs7Ozs7R0FVRztBQUNILHdCQUFnQixhQUFhLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEdBQUUsTUFBVyxHQUFHLE1BQU0sQ0FPM0U7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCx3QkFBZ0IsZUFBZSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsRUFBRSxLQUFLLEdBQUUsTUFBVyxHQUFHLE1BQU0sRUFBRSxDQUVsRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../src/barretenberg/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAoC,MAAM,mBAAmB,CAAC;AAMhF,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAG5B;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAsBF,qBAAa,wBAAwB;IAIjC,SAAS,CAAC,cAAc,EAAE,cAAc;IACxC,SAAS,CAAC,cAAc,EAAE,cAAc;IAJ1C,SAAS,CAAC,GAAG,EAAG,YAAY,CAAC;gBAGjB,cAAc,GAAE,cAA+B,EAC/C,cAAc,GAAE,cAAqC;IAEjE,cAAc;YACA,WAAW;IAUnB,WAAW,CACf,SAAS,EAAE,SAAS,GAAG;QAAE,eAAe,EAAE,UAAU,CAAA;KAAE,EACtD,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,OAAO,CAAC;IAenB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAMzB;AAED,qBAAa,gBAAgB;IAWzB,SAAS,CAAC,cAAc,EAAE,cAAc;IACxC,SAAS,CAAC,cAAc,EAAE,cAAc;IAN1C,SAAS,CAAC,GAAG,EAAG,YAAY,CAAC;IAC7B,SAAS,CAAC,wBAAwB,EAAE,UAAU,CAAC;gBAG7C,YAAY,EAAE,MAAM,EACV,cAAc,GAAE,cAA+B,EAC/C,cAAc,GAAE,cAAqC;IAIjE,cAAc;YACA,WAAW;IAUnB,aAAa,CAAC,iBAAiB,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,SAAS,CAAC;IAwBnG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBtF,kBAAkB,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IAahF,+CAA+C;IACzC,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;IAUvF,+BAA+B,CAEnC,MAAM,EAAE,UAAU,EAElB,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAsCvE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/B;AAED,qBAAa,kBAAkB;IAS3B,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE;IAC/B,SAAS,CAAC,OAAO,EAAE,cAAc;IAJnC,SAAS,CAAC,GAAG,EAAG,YAAY,CAAC;gBAGjB,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,GAAE,cAA+B;IAGpD,cAAc;YACA,WAAW;IAQnB,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,MAAM,GAAE,UAAU,EAAO,GAAG,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IA8D3G,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3D,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAgB1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/B"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../src/barretenberg/backend.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,6 @@
1
- import { Barretenberg } from './index.js';
2
1
  import { uint8ArrayToHex, hexToUint8Array } from '../proof/index.js';
3
2
  import { fromChonkProof, toChonkProof } from '../cbind/generated/api_types.js';
4
3
  import { ungzip } from 'pako';
5
- import { Buffer } from 'buffer';
6
4
  import { Decoder, Encoder } from 'msgpackr';
7
5
  export class AztecClientBackendError extends Error {
8
6
  constructor(message) {
@@ -10,6 +8,63 @@ export class AztecClientBackendError extends Error {
10
8
  }
11
9
  }
12
10
  function getProofSettingsFromOptions(options) {
11
+ // Check for conflicting options - verifierTarget should not be combined with legacy options
12
+ if (options?.verifierTarget) {
13
+ const legacyOptions = [options.keccak, options.keccakZK, options.starknet, options.starknetZK].filter(Boolean);
14
+ if (legacyOptions.length > 0) {
15
+ throw new Error('Cannot use verifierTarget with legacy options (keccak, keccakZK, starknet, starknetZK). ' +
16
+ 'Use verifierTarget alone.');
17
+ }
18
+ switch (options.verifierTarget) {
19
+ case 'evm':
20
+ return { ipaAccumulation: false, oracleHashType: 'keccak', disableZk: false, optimizedSolidityVerifier: false };
21
+ case 'evm-no-zk':
22
+ return { ipaAccumulation: false, oracleHashType: 'keccak', disableZk: true, optimizedSolidityVerifier: false };
23
+ case 'noir-recursive':
24
+ return {
25
+ ipaAccumulation: false,
26
+ oracleHashType: 'poseidon2',
27
+ disableZk: false,
28
+ optimizedSolidityVerifier: false,
29
+ };
30
+ case 'noir-recursive-no-zk':
31
+ return {
32
+ ipaAccumulation: false,
33
+ oracleHashType: 'poseidon2',
34
+ disableZk: true,
35
+ optimizedSolidityVerifier: false,
36
+ };
37
+ case 'noir-rollup':
38
+ return {
39
+ ipaAccumulation: true,
40
+ oracleHashType: 'poseidon2',
41
+ disableZk: false,
42
+ optimizedSolidityVerifier: false,
43
+ };
44
+ case 'noir-rollup-no-zk':
45
+ return {
46
+ ipaAccumulation: true,
47
+ oracleHashType: 'poseidon2',
48
+ disableZk: true,
49
+ optimizedSolidityVerifier: false,
50
+ };
51
+ case 'starknet':
52
+ return {
53
+ ipaAccumulation: false,
54
+ oracleHashType: 'starknet',
55
+ disableZk: false,
56
+ optimizedSolidityVerifier: false,
57
+ };
58
+ case 'starknet-no-zk':
59
+ return {
60
+ ipaAccumulation: false,
61
+ oracleHashType: 'starknet',
62
+ disableZk: true,
63
+ optimizedSolidityVerifier: false,
64
+ };
65
+ }
66
+ }
67
+ // Legacy options support (deprecated)
13
68
  return {
14
69
  ipaAccumulation: false,
15
70
  oracleHashType: options?.keccak || options?.keccakZK
@@ -17,27 +72,16 @@ function getProofSettingsFromOptions(options) {
17
72
  : options?.starknet || options?.starknetZK
18
73
  ? 'starknet'
19
74
  : 'poseidon2',
20
- // TODO no current way to target non-zk poseidon2 hash
21
75
  disableZk: options?.keccak || options?.starknet ? true : false,
22
76
  optimizedSolidityVerifier: false,
23
77
  };
24
78
  }
25
79
  export class UltraHonkVerifierBackend {
26
- constructor(backendOptions = { threads: 1 }, circuitOptions = { recursive: false }) {
27
- this.backendOptions = backendOptions;
28
- this.circuitOptions = circuitOptions;
29
- }
30
- /** @ignore */
31
- async instantiate() {
32
- if (!this.api) {
33
- const api = await Barretenberg.new(this.backendOptions);
34
- const honkRecursion = true;
35
- await api.initSRSForCircuitSize(0);
36
- this.api = api;
37
- }
80
+ api;
81
+ constructor(api) {
82
+ this.api = api;
38
83
  }
39
84
  async verifyProof(proofData, options) {
40
- await this.instantiate();
41
85
  const proofFrs = [];
42
86
  for (let i = 0; i < proofData.proof.length; i += 32) {
43
87
  proofFrs.push(proofData.proof.slice(i, i + 32));
@@ -50,37 +94,26 @@ export class UltraHonkVerifierBackend {
50
94
  });
51
95
  return verified;
52
96
  }
53
- destroy() {
54
- if (!this.api) {
55
- return Promise.resolve();
56
- }
57
- return this.api.destroy();
58
- }
59
97
  }
60
98
  export class UltraHonkBackend {
61
- constructor(acirBytecode, backendOptions = { threads: 1 }, circuitOptions = { recursive: false }) {
62
- this.backendOptions = backendOptions;
63
- this.circuitOptions = circuitOptions;
99
+ api;
100
+ // These type assertions are used so that we don't
101
+ // have to initialize `api` in the constructor.
102
+ // These are initialized asynchronously in the `init` function,
103
+ // constructors cannot be asynchronous which is why we do this.
104
+ acirUncompressedBytecode;
105
+ constructor(acirBytecode, api) {
106
+ this.api = api;
64
107
  this.acirUncompressedBytecode = acirToUint8Array(acirBytecode);
65
108
  }
66
- /** @ignore */
67
- async instantiate() {
68
- if (!this.api) {
69
- const api = await Barretenberg.new(this.backendOptions);
70
- const honkRecursion = true;
71
- await api.acirInitSRS(this.acirUncompressedBytecode, this.circuitOptions.recursive, honkRecursion);
72
- this.api = api;
73
- }
74
- }
75
109
  async generateProof(compressedWitness, options) {
76
- await this.instantiate();
77
110
  const witness = ungzip(compressedWitness);
78
111
  const { proof, publicInputs } = await this.api.circuitProve({
79
112
  witness,
80
113
  circuit: {
81
114
  name: 'circuit',
82
- bytecode: Buffer.from(this.acirUncompressedBytecode),
83
- verificationKey: Buffer.from([]), // Empty VK - lower performance.
115
+ bytecode: this.acirUncompressedBytecode,
116
+ verificationKey: new Uint8Array(0), // Empty VK - lower performance.
84
117
  },
85
118
  settings: getProofSettingsFromOptions(options),
86
119
  });
@@ -93,7 +126,6 @@ export class UltraHonkBackend {
93
126
  return { proof: flatProof, publicInputs: publicInputs.map(uint8ArrayToHex) };
94
127
  }
95
128
  async verifyProof(proofData, options) {
96
- await this.instantiate();
97
129
  const proofFrs = [];
98
130
  for (let i = 0; i < proofData.proof.length; i += 32) {
99
131
  proofFrs.push(proofData.proof.slice(i, i + 32));
@@ -115,11 +147,10 @@ export class UltraHonkBackend {
115
147
  return verified;
116
148
  }
117
149
  async getVerificationKey(options) {
118
- await this.instantiate();
119
150
  const vkResult = await this.api.circuitComputeVk({
120
151
  circuit: {
121
152
  name: 'circuit',
122
- bytecode: Buffer.from(this.acirUncompressedBytecode),
153
+ bytecode: this.acirUncompressedBytecode,
123
154
  },
124
155
  settings: getProofSettingsFromOptions(options),
125
156
  });
@@ -127,7 +158,6 @@ export class UltraHonkBackend {
127
158
  }
128
159
  /** @description Returns a solidity verifier */
129
160
  async getSolidityVerifier(vk, options) {
130
- await this.instantiate();
131
161
  const result = await this.api.circuitWriteSolidityVerifier({
132
162
  verificationKey: vk,
133
163
  settings: getProofSettingsFromOptions(options),
@@ -139,8 +169,7 @@ export class UltraHonkBackend {
139
169
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
140
170
  _proof,
141
171
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
142
- _numOfPublicInputs) {
143
- await this.instantiate();
172
+ _numOfPublicInputs, options) {
144
173
  // TODO(https://github.com/noir-lang/noir/issues/5661): This needs to be updated to handle recursive aggregation.
145
174
  // There is still a proofAsFields method but we could consider getting rid of it as the proof itself
146
175
  // is a list of field elements.
@@ -148,14 +177,12 @@ export class UltraHonkBackend {
148
177
  // inserted at an offset.
149
178
  // const proof = reconstructProofWithPublicInputs(proofData);
150
179
  // const proofAsFields = (await this.api.acirProofAsFieldsUltraHonk(proof)).slice(numOfPublicInputs);
151
- // TODO: perhaps we should put this in the init function. Need to benchmark
152
- // TODO how long it takes.
153
180
  const vkResult = await this.api.circuitComputeVk({
154
181
  circuit: {
155
182
  name: 'circuit',
156
- bytecode: Buffer.from(this.acirUncompressedBytecode),
183
+ bytecode: this.acirUncompressedBytecode,
157
184
  },
158
- settings: getProofSettingsFromOptions({}),
185
+ settings: getProofSettingsFromOptions(options),
159
186
  });
160
187
  // Convert VK bytes to field elements (32-byte chunks)
161
188
  const vkAsFields = [];
@@ -173,25 +200,17 @@ export class UltraHonkBackend {
173
200
  vkHash: uint8ArrayToHex(vkResult.hash),
174
201
  };
175
202
  }
176
- async destroy() {
177
- if (!this.api) {
178
- return;
179
- }
180
- await this.api.destroy();
181
- }
182
203
  }
183
204
  export class AztecClientBackend {
184
- constructor(acirBuf, options = { threads: 1 }) {
205
+ acirBuf;
206
+ api;
207
+ // These type assertions are used so that we don't
208
+ // have to initialize `api` in the constructor.
209
+ // These are initialized asynchronously in the `init` function,
210
+ // constructors cannot be asynchronous which is why we do this.
211
+ constructor(acirBuf, api) {
185
212
  this.acirBuf = acirBuf;
186
- this.options = options;
187
- }
188
- /** @ignore */
189
- async instantiate() {
190
- if (!this.api) {
191
- const api = await Barretenberg.new(this.options);
192
- await api.initSRSChonk();
193
- this.api = api;
194
- }
213
+ this.api = api;
195
214
  }
196
215
  async prove(witnessBuf, vksBuf = []) {
197
216
  if (vksBuf.length !== 0 && this.acirBuf.length !== witnessBuf.length) {
@@ -201,26 +220,25 @@ export class AztecClientBackend {
201
220
  // NOTE: we allow 0 as an explicit 'I have no VKs'. This is a deprecated feature.
202
221
  throw new AztecClientBackendError('Witness and VKs must have the same stack depth!');
203
222
  }
204
- await this.instantiate();
205
223
  // Queue IVC start with the number of circuits
206
224
  this.api.chonkStart({ numCircuits: this.acirBuf.length });
207
225
  // Queue load and accumulate for each circuit
208
226
  for (let i = 0; i < this.acirBuf.length; i++) {
209
227
  const bytecode = this.acirBuf[i];
210
- const witness = witnessBuf[i] || Buffer.from([]);
211
- const vk = vksBuf[i] || Buffer.from([]);
228
+ const witness = witnessBuf[i] || new Uint8Array(0);
229
+ const vk = vksBuf[i] || new Uint8Array(0);
212
230
  const functionName = `unknown_wasm_${i}`;
213
231
  // Load the circuit
214
232
  this.api.chonkLoad({
215
233
  circuit: {
216
234
  name: functionName,
217
- bytecode: Buffer.from(bytecode),
218
- verificationKey: Buffer.from(vk),
235
+ bytecode: bytecode,
236
+ verificationKey: vk,
219
237
  },
220
238
  });
221
239
  // Accumulate with witness
222
240
  this.api.chonkAccumulate({
223
- witness: Buffer.from(witness),
241
+ witness,
224
242
  });
225
243
  }
226
244
  // Generate the proof (and wait for all previous steps to finish)
@@ -228,7 +246,7 @@ export class AztecClientBackend {
228
246
  // The API currently expects a msgpack-encoded API.
229
247
  const proof = new Encoder({ useRecords: false }).encode(fromChonkProof(proveResult.proof));
230
248
  // Generate the VK
231
- const vkResult = await this.api.chonkComputeIvcVk({
249
+ const vkResult = await this.api.chonkComputeVk({
232
250
  circuit: {
233
251
  name: 'hiding',
234
252
  bytecode: this.acirBuf[this.acirBuf.length - 1],
@@ -237,26 +255,35 @@ export class AztecClientBackend {
237
255
  const proofFields = [
238
256
  proveResult.proof.megaProof,
239
257
  proveResult.proof.goblinProof.mergeProof,
240
- proveResult.proof.goblinProof.eccvmProof.preIpaProof,
241
- proveResult.proof.goblinProof.eccvmProof.ipaProof,
258
+ proveResult.proof.goblinProof.eccvmProof,
259
+ proveResult.proof.goblinProof.ipaProof,
242
260
  proveResult.proof.goblinProof.translatorProof,
243
261
  ].flat();
244
- // Note: Verification may not work correctly until we properly serialize the proof
245
- if (!(await this.verify(proof, vkResult.bytes))) {
262
+ // Verify using native proof directly to avoid redundant encode/decode cycle
263
+ if (!(await this.verifyNative(proveResult.proof, vkResult.bytes))) {
246
264
  throw new AztecClientBackendError('Failed to verify the private (Chonk) transaction proof!');
247
265
  }
248
266
  return [proofFields, proof, vkResult.bytes];
249
267
  }
250
268
  async verify(proof, vk) {
251
- await this.instantiate();
252
269
  const result = await this.api.chonkVerify({
253
270
  proof: toChonkProof(new Decoder({ useRecords: false }).decode(proof)),
254
- vk: Buffer.from(vk),
271
+ vk,
272
+ });
273
+ return result.valid;
274
+ }
275
+ /**
276
+ * Internal verification using native ChonkProof type.
277
+ * Avoids encode/decode cycle when called from prove().
278
+ */
279
+ async verifyNative(proof, vk) {
280
+ const result = await this.api.chonkVerify({
281
+ proof,
282
+ vk,
255
283
  });
256
284
  return result.valid;
257
285
  }
258
286
  async gates() {
259
- await this.instantiate();
260
287
  const circuitSizes = [];
261
288
  for (const buf of this.acirBuf) {
262
289
  const gates = await this.api.chonkStats({
@@ -270,32 +297,54 @@ export class AztecClientBackend {
270
297
  }
271
298
  return circuitSizes;
272
299
  }
273
- async destroy() {
274
- if (!this.api) {
275
- return;
276
- }
277
- await this.api.destroy();
278
- }
279
300
  }
280
301
  // Converts bytecode from a base64 string to a Uint8Array
281
302
  function acirToUint8Array(base64EncodedBytecode) {
282
303
  const compressedByteCode = base64Decode(base64EncodedBytecode);
283
304
  return ungzip(compressedByteCode);
284
305
  }
285
- // Since this is a simple function, we can use feature detection to
286
- // see if we are in the nodeJs environment or the browser environment.
306
+ // Base64 decode using atob (works in both browser and Node.js 18+)
287
307
  function base64Decode(input) {
288
- if (typeof Buffer !== 'undefined') {
289
- // Node.js environment
290
- const b = Buffer.from(input, 'base64');
291
- return new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
292
- }
293
- else if (typeof atob === 'function') {
294
- // Browser environment
308
+ if (typeof atob === 'function') {
295
309
  return Uint8Array.from(atob(input), c => c.charCodeAt(0));
296
310
  }
297
311
  else {
298
- throw new Error('No implementation found for base64 decoding.');
312
+ throw new Error('atob is not available. Node.js 18+ or browser required.');
299
313
  }
300
314
  }
301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXJyZXRlbmJlcmcvYmFja2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFlBQVksRUFBa0IsTUFBTSxZQUFZLENBQUM7QUFDMUUsT0FBTyxFQUFhLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU1QyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsS0FBSztJQUNoRCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQTRCRCxTQUFTLDJCQUEyQixDQUFDLE9BQWlDO0lBTXBFLE9BQU87UUFDTCxlQUFlLEVBQUUsS0FBSztRQUN0QixjQUFjLEVBQ1osT0FBTyxFQUFFLE1BQU0sSUFBSSxPQUFPLEVBQUUsUUFBUTtZQUNsQyxDQUFDLENBQUMsUUFBUTtZQUNWLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxJQUFJLE9BQU8sRUFBRSxVQUFVO2dCQUN4QyxDQUFDLENBQUMsVUFBVTtnQkFDWixDQUFDLENBQUMsV0FBVztRQUNuQixzREFBc0Q7UUFDdEQsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLElBQUksT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLO1FBQzlELHlCQUF5QixFQUFFLEtBQUs7S0FDakMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLE9BQU8sd0JBQXdCO0lBR25D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
315
+ /**
316
+ * Convert a field element (32-byte Uint8Array) to a string.
317
+ *
318
+ * @param field - A 32-byte field element
319
+ * @param radix - The radix for string conversion (2-36), defaults to 10 (decimal)
320
+ * @returns The field value as a string in the specified radix
321
+ *
322
+ * @example
323
+ * const decimal = fieldToString(field); // "12345678"
324
+ * const hex = fieldToString(field, 16); // "bc614e"
325
+ */
326
+ export function fieldToString(field, radix = 10) {
327
+ let result = 0n;
328
+ for (const byte of field) {
329
+ result <<= 8n;
330
+ result += BigInt(byte);
331
+ }
332
+ return result.toString(radix);
333
+ }
334
+ /**
335
+ * Convert an array of field elements to an array of strings.
336
+ * Useful for passing VK fields to Noir circuits.
337
+ *
338
+ * @param fields - Array of 32-byte field elements
339
+ * @param radix - The radix for string conversion (2-36), defaults to 10 (decimal)
340
+ * @returns Array of strings in the specified radix
341
+ *
342
+ * @example
343
+ * const vkAsFields = await barretenbergAPI.vkAsFields({ verificationKey: vk });
344
+ * const vkDecimalStrings = fieldsToStrings(vkAsFields.fields); // ["12345678", "87654321", ...]
345
+ * const vkHexStrings = fieldsToStrings(vkAsFields.fields, 16); // ["bc614e", "5397fb1", ...]
346
+ */
347
+ export function fieldsToStrings(fields, radix = 10) {
348
+ return fields.map(field => fieldToString(field, radix));
349
+ }
350
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXJyZXRlbmJlcmcvYmFja2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWEsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFjLE1BQU0saUNBQWlDLENBQUM7QUFDM0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU1QyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsS0FBSztJQUNoRCxZQUFZLE9BQWUsRUFBRTtRQUMzQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFBQSxDQUNoQjtDQUNGO0FBNkNELFNBQVMsMkJBQTJCLENBQUMsT0FBaUMsRUFLcEU7SUFDQSw0RkFBNEY7SUFDNUYsSUFBSSxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDNUIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9HLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUNiLDBGQUEwRjtnQkFDeEYsMkJBQTJCLENBQzlCLENBQUM7UUFDSixDQUFDO1FBRUQsUUFBUSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDL0IsS0FBSyxLQUFLO2dCQUNSLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxLQUFLLEVB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