@aztec/bb.js 0.7.10 → 0.8.1

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 (219) hide show
  1. package/README.md +1 -10
  2. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -1
  3. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -1
  4. package/dest/browser/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -1
  5. package/dest/browser/crs/node/ignition_files_crs.d.ts.map +1 -1
  6. package/dest/browser/index.js +1 -1
  7. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm +0 -0
  8. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -1
  9. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +12 -2
  10. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -1
  11. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +12 -2
  12. package/dest/node/barretenberg_wasm/fetch_code/browser/index.js +3 -3
  13. package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -1
  14. package/dest/node/barretenberg_wasm/fetch_code/node/index.js +12 -2
  15. package/dest/node/bindgen/index.js +3 -3
  16. package/dest/node/bindgen/typescript.js +1 -1
  17. package/dest/node/crs/node/ignition_files_crs.d.ts.map +1 -1
  18. package/dest/node/crs/node/ignition_files_crs.js +12 -2
  19. package/dest/node/info.d.ts +9 -0
  20. package/dest/node/info.d.ts.map +1 -0
  21. package/dest/node/info.js +24 -0
  22. package/dest/node/main.d.ts.map +1 -1
  23. package/dest/node/main.js +9 -3
  24. package/dest/node-cjs/async_map/index.d.ts +10 -0
  25. package/dest/node-cjs/async_map/index.d.ts.map +1 -0
  26. package/dest/node-cjs/async_map/index.js +20 -0
  27. package/dest/node-cjs/barretenberg/index.d.ts +20 -0
  28. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -0
  29. package/dest/node-cjs/barretenberg/index.js +43 -0
  30. package/dest/node-cjs/barretenberg_api/blake2s.test.d.ts +2 -0
  31. package/dest/node-cjs/barretenberg_api/blake2s.test.d.ts.map +1 -0
  32. package/dest/node-cjs/barretenberg_api/blake2s.test.js +32 -0
  33. package/dest/node-cjs/barretenberg_api/common.test.d.ts +2 -0
  34. package/dest/node-cjs/barretenberg_api/common.test.d.ts.map +1 -0
  35. package/dest/node-cjs/barretenberg_api/common.test.js +20 -0
  36. package/dest/node-cjs/barretenberg_api/index.d.ts +53 -0
  37. package/dest/node-cjs/barretenberg_api/index.d.ts.map +1 -0
  38. package/dest/node-cjs/barretenberg_api/index.js +195 -0
  39. package/dest/node-cjs/barretenberg_api/pedersen.test.d.ts +2 -0
  40. package/dest/node-cjs/barretenberg_api/pedersen.test.d.ts.map +1 -0
  41. package/dest/node-cjs/barretenberg_api/pedersen.test.js +71 -0
  42. package/dest/node-cjs/barretenberg_api/schnorr.test.d.ts +2 -0
  43. package/dest/node-cjs/barretenberg_api/schnorr.test.d.ts.map +1 -0
  44. package/dest/node-cjs/barretenberg_api/schnorr.test.js +116 -0
  45. package/dest/node-cjs/barretenberg_binder/heap_allocator.d.ts +22 -0
  46. package/dest/node-cjs/barretenberg_binder/heap_allocator.d.ts.map +1 -0
  47. package/dest/node-cjs/barretenberg_binder/heap_allocator.js +63 -0
  48. package/dest/node-cjs/barretenberg_binder/index.d.ts +26 -0
  49. package/dest/node-cjs/barretenberg_binder/index.d.ts.map +1 -0
  50. package/dest/node-cjs/barretenberg_binder/index.js +57 -0
  51. package/dest/{node → node-cjs/barretenberg_wasm}/barretenberg-threads.wasm +0 -0
  52. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +40 -0
  53. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -0
  54. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +128 -0
  55. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +2 -0
  56. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -0
  57. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +15 -0
  58. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +3 -0
  59. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts.map +1 -0
  60. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +15 -0
  61. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +4 -0
  62. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -0
  63. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +22 -0
  64. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +2 -0
  65. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts.map +1 -0
  66. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +11 -0
  67. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +37 -0
  68. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -0
  69. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +87 -0
  70. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +2 -0
  71. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -0
  72. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +15 -0
  73. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +3 -0
  74. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts.map +1 -0
  75. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +15 -0
  76. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +4 -0
  77. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -0
  78. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +22 -0
  79. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +2 -0
  80. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts.map +1 -0
  81. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +11 -0
  82. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +28 -0
  83. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -0
  84. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.js +44 -0
  85. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts +2 -0
  86. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -0
  87. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.js +14 -0
  88. package/dest/node-cjs/barretenberg_wasm/fetch_code/index.d.ts +2 -0
  89. package/dest/node-cjs/barretenberg_wasm/fetch_code/index.d.ts.map +1 -0
  90. package/dest/node-cjs/barretenberg_wasm/fetch_code/index.js +5 -0
  91. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts +3 -0
  92. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -0
  93. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.js +23 -0
  94. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts +6 -0
  95. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -0
  96. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.js +26 -0
  97. package/dest/node-cjs/barretenberg_wasm/helpers/index.d.ts +2 -0
  98. package/dest/node-cjs/barretenberg_wasm/helpers/index.d.ts.map +1 -0
  99. package/dest/node-cjs/barretenberg_wasm/helpers/index.js +5 -0
  100. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts +19 -0
  101. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts.map +1 -0
  102. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.js +45 -0
  103. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts +8 -0
  104. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -0
  105. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.js +32 -0
  106. package/dest/node-cjs/barretenberg_wasm/index.d.ts +14 -0
  107. package/dest/node-cjs/barretenberg_wasm/index.d.ts.map +1 -0
  108. package/dest/node-cjs/barretenberg_wasm/index.js +24 -0
  109. package/dest/node-cjs/barretenberg_wasm/index.test.d.ts +2 -0
  110. package/dest/node-cjs/barretenberg_wasm/index.test.d.ts.map +1 -0
  111. package/dest/node-cjs/barretenberg_wasm/index.test.js +40 -0
  112. package/dest/node-cjs/bigint-array/index.d.ts +3 -0
  113. package/dest/node-cjs/bigint-array/index.d.ts.map +1 -0
  114. package/dest/node-cjs/bigint-array/index.js +26 -0
  115. package/dest/node-cjs/bindgen/function_declaration.d.ts +11 -0
  116. package/dest/node-cjs/bindgen/function_declaration.d.ts.map +1 -0
  117. package/dest/node-cjs/bindgen/function_declaration.js +3 -0
  118. package/dest/node-cjs/bindgen/index.d.ts +2 -0
  119. package/dest/node-cjs/bindgen/index.d.ts.map +1 -0
  120. package/dest/node-cjs/bindgen/index.js +17 -0
  121. package/dest/node-cjs/bindgen/mappings.d.ts +4 -0
  122. package/dest/node-cjs/bindgen/mappings.d.ts.map +1 -0
  123. package/dest/node-cjs/bindgen/mappings.js +68 -0
  124. package/dest/node-cjs/bindgen/rust.d.ts +2 -0
  125. package/dest/node-cjs/bindgen/rust.d.ts.map +1 -0
  126. package/dest/node-cjs/bindgen/rust.js +48 -0
  127. package/dest/node-cjs/bindgen/to_camel_case.d.ts +2 -0
  128. package/dest/node-cjs/bindgen/to_camel_case.d.ts.map +1 -0
  129. package/dest/node-cjs/bindgen/to_camel_case.js +15 -0
  130. package/dest/node-cjs/bindgen/typescript.d.ts +2 -0
  131. package/dest/node-cjs/bindgen/typescript.d.ts.map +1 -0
  132. package/dest/node-cjs/bindgen/typescript.js +52 -0
  133. package/dest/node-cjs/crs/browser/cached_net_crs.d.ts +25 -0
  134. package/dest/node-cjs/crs/browser/cached_net_crs.d.ts.map +1 -0
  135. package/dest/node-cjs/crs/browser/cached_net_crs.js +58 -0
  136. package/dest/node-cjs/crs/browser/index.d.ts +2 -0
  137. package/dest/node-cjs/crs/browser/index.d.ts.map +1 -0
  138. package/dest/node-cjs/crs/browser/index.js +6 -0
  139. package/dest/node-cjs/crs/index.d.ts +2 -0
  140. package/dest/node-cjs/crs/index.d.ts.map +1 -0
  141. package/dest/node-cjs/crs/index.js +6 -0
  142. package/dest/node-cjs/crs/net_crs.d.ts +36 -0
  143. package/dest/node-cjs/crs/net_crs.d.ts.map +1 -0
  144. package/dest/node-cjs/crs/net_crs.js +63 -0
  145. package/dest/node-cjs/crs/node/ignition_files_crs.d.ts +37 -0
  146. package/dest/node-cjs/crs/node/ignition_files_crs.d.ts.map +1 -0
  147. package/dest/node-cjs/crs/node/ignition_files_crs.js +65 -0
  148. package/dest/node-cjs/crs/node/index.d.ts +21 -0
  149. package/dest/node-cjs/crs/node/index.d.ts.map +1 -0
  150. package/dest/node-cjs/crs/node/index.js +59 -0
  151. package/dest/node-cjs/examples/simple.rawtest.d.ts +2 -0
  152. package/dest/node-cjs/examples/simple.rawtest.d.ts.map +1 -0
  153. package/dest/node-cjs/examples/simple.rawtest.js +32 -0
  154. package/dest/node-cjs/examples/simple.test.d.ts +2 -0
  155. package/dest/node-cjs/examples/simple.test.d.ts.map +1 -0
  156. package/dest/node-cjs/examples/simple.test.js +24 -0
  157. package/dest/node-cjs/index.d.ts +4 -0
  158. package/dest/node-cjs/index.d.ts.map +1 -0
  159. package/dest/node-cjs/index.js +10 -0
  160. package/dest/node-cjs/info.d.ts +9 -0
  161. package/dest/node-cjs/info.d.ts.map +1 -0
  162. package/dest/node-cjs/info.js +27 -0
  163. package/dest/node-cjs/main.d.ts +11 -0
  164. package/dest/node-cjs/main.d.ts.map +1 -0
  165. package/dest/node-cjs/main.js +332 -0
  166. package/dest/node-cjs/package.json +3 -0
  167. package/dest/node-cjs/random/browser/index.d.ts +2 -0
  168. package/dest/node-cjs/random/browser/index.d.ts.map +1 -0
  169. package/dest/node-cjs/random/browser/index.js +35 -0
  170. package/dest/node-cjs/random/index.d.ts +2 -0
  171. package/dest/node-cjs/random/index.d.ts.map +1 -0
  172. package/dest/node-cjs/random/index.js +5 -0
  173. package/dest/node-cjs/random/node/index.d.ts +2 -0
  174. package/dest/node-cjs/random/node/index.d.ts.map +1 -0
  175. package/dest/node-cjs/random/node/index.js +9 -0
  176. package/dest/node-cjs/serialize/buffer_reader.d.ts +28 -0
  177. package/dest/node-cjs/serialize/buffer_reader.d.ts.map +1 -0
  178. package/dest/node-cjs/serialize/buffer_reader.js +70 -0
  179. package/dest/node-cjs/serialize/index.d.ts +4 -0
  180. package/dest/node-cjs/serialize/index.d.ts.map +1 -0
  181. package/dest/node-cjs/serialize/index.js +7 -0
  182. package/dest/node-cjs/serialize/output_type.d.ts +11 -0
  183. package/dest/node-cjs/serialize/output_type.d.ts.map +1 -0
  184. package/dest/node-cjs/serialize/output_type.js +52 -0
  185. package/dest/node-cjs/serialize/serialize.d.ts +53 -0
  186. package/dest/node-cjs/serialize/serialize.d.ts.map +1 -0
  187. package/dest/node-cjs/serialize/serialize.js +161 -0
  188. package/dest/node-cjs/types/fields.d.ts +33 -0
  189. package/dest/node-cjs/types/fields.d.ts.map +1 -0
  190. package/dest/node-cjs/types/fields.js +89 -0
  191. package/dest/node-cjs/types/fixed_size_buffer.d.ts +26 -0
  192. package/dest/node-cjs/types/fixed_size_buffer.d.ts.map +1 -0
  193. package/dest/node-cjs/types/fixed_size_buffer.js +57 -0
  194. package/dest/node-cjs/types/index.d.ts +6 -0
  195. package/dest/node-cjs/types/index.d.ts.map +1 -0
  196. package/dest/node-cjs/types/index.js +9 -0
  197. package/dest/node-cjs/types/point.d.ts +17 -0
  198. package/dest/node-cjs/types/point.d.ts.map +1 -0
  199. package/dest/node-cjs/types/point.js +35 -0
  200. package/dest/node-cjs/types/ptr.d.ts +13 -0
  201. package/dest/node-cjs/types/ptr.d.ts.map +1 -0
  202. package/dest/node-cjs/types/ptr.js +23 -0
  203. package/dest/node-cjs/types/raw_buffer.d.ts +3 -0
  204. package/dest/node-cjs/types/raw_buffer.d.ts.map +1 -0
  205. package/dest/node-cjs/types/raw_buffer.js +9 -0
  206. package/package.json +9 -8
  207. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts +11 -1
  208. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts +11 -1
  209. package/src/barretenberg_wasm/fetch_code/browser/index.ts +2 -2
  210. package/src/barretenberg_wasm/fetch_code/node/index.ts +11 -1
  211. package/src/bindgen/index.ts +2 -2
  212. package/src/bindgen/typescript.ts +1 -1
  213. package/src/crs/node/ignition_files_crs.ts +11 -1
  214. package/src/info.ts +23 -0
  215. package/src/main.ts +10 -2
  216. package/cjs-entry/index.cjs +0 -10
  217. package/cjs-entry/index.d.ts +0 -1
  218. package/dest/node/info.json +0 -22
  219. package/src/info.json +0 -22
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BarretenbergApi = void 0;
4
+ const index_js_1 = require("../serialize/index.js");
5
+ const index_js_2 = require("../types/index.js");
6
+ class BarretenbergApi {
7
+ constructor(binder) {
8
+ this.binder = binder;
9
+ }
10
+ async destroy() {
11
+ await this.binder.wasm.destroy();
12
+ }
13
+ async pedersenInit() {
14
+ const result = await this.binder.callWasmExport('pedersen___init', [], []);
15
+ return;
16
+ }
17
+ async pedersenCompressFields(left, right) {
18
+ const result = await this.binder.callWasmExport('pedersen___compress_fields', [left, right], [index_js_2.Fr]);
19
+ return result[0];
20
+ }
21
+ async pedersenPlookupCompressFields(left, right) {
22
+ const result = await this.binder.callWasmExport('pedersen___plookup_compress_fields', [left, right], [index_js_2.Fr]);
23
+ return result[0];
24
+ }
25
+ async pedersenCompress(inputsBuffer) {
26
+ const result = await this.binder.callWasmExport('pedersen___compress', [inputsBuffer], [index_js_2.Fr]);
27
+ return result[0];
28
+ }
29
+ async pedersenPlookupCompress(inputsBuffer) {
30
+ const result = await this.binder.callWasmExport('pedersen___plookup_compress', [inputsBuffer], [index_js_2.Fr]);
31
+ return result[0];
32
+ }
33
+ async pedersenCompressWithHashIndex(inputsBuffer, hashIndex) {
34
+ const result = await this.binder.callWasmExport('pedersen___compress_with_hash_index', [inputsBuffer, hashIndex], [index_js_2.Fr]);
35
+ return result[0];
36
+ }
37
+ async pedersenCommit(inputsBuffer) {
38
+ const result = await this.binder.callWasmExport('pedersen___commit', [inputsBuffer], [index_js_2.Fr]);
39
+ return result[0];
40
+ }
41
+ async pedersenPlookupCommit(inputsBuffer) {
42
+ const result = await this.binder.callWasmExport('pedersen___plookup_commit', [inputsBuffer], [index_js_2.Fr]);
43
+ return result[0];
44
+ }
45
+ async pedersenPlookupCommitWithHashIndex(inputsBuffer, hashIndex) {
46
+ const result = await this.binder.callWasmExport('pedersen___plookup_commit_with_hash_index', [inputsBuffer, hashIndex], [index_js_2.Fr]);
47
+ return result[0];
48
+ }
49
+ async pedersenBufferToField(data) {
50
+ const result = await this.binder.callWasmExport('pedersen___buffer_to_field', [data], [index_js_2.Fr]);
51
+ return result[0];
52
+ }
53
+ async pedersenHashInit() {
54
+ const result = await this.binder.callWasmExport('pedersen_hash_init', [], []);
55
+ return;
56
+ }
57
+ async pedersenHashPair(left, right) {
58
+ const result = await this.binder.callWasmExport('pedersen_hash_pair', [left, right], [index_js_2.Fr]);
59
+ return result[0];
60
+ }
61
+ async pedersenHashMultiple(inputsBuffer) {
62
+ const result = await this.binder.callWasmExport('pedersen_hash_multiple', [inputsBuffer], [index_js_2.Fr]);
63
+ return result[0];
64
+ }
65
+ async pedersenHashMultipleWithHashIndex(inputsBuffer, hashIndex) {
66
+ const result = await this.binder.callWasmExport('pedersen_hash_multiple_with_hash_index', [inputsBuffer, hashIndex], [index_js_2.Fr]);
67
+ return result[0];
68
+ }
69
+ async pedersenHashToTree(data) {
70
+ const result = await this.binder.callWasmExport('pedersen_hash_to_tree', [data], [(0, index_js_1.VectorDeserializer)(index_js_2.Fr)]);
71
+ return result[0];
72
+ }
73
+ async blake2s(data) {
74
+ const result = await this.binder.callWasmExport('blake2s', [data], [index_js_2.Buffer32]);
75
+ return result[0];
76
+ }
77
+ async blake2sToField(data) {
78
+ const result = await this.binder.callWasmExport('blake2s_to_field_', [data], [index_js_2.Fr]);
79
+ return result[0];
80
+ }
81
+ async schnorrComputePublicKey(privateKey) {
82
+ const result = await this.binder.callWasmExport('schnorr_compute_public_key', [privateKey], [index_js_2.Point]);
83
+ return result[0];
84
+ }
85
+ async schnorrNegatePublicKey(publicKeyBuffer) {
86
+ const result = await this.binder.callWasmExport('schnorr_negate_public_key', [publicKeyBuffer], [index_js_2.Point]);
87
+ return result[0];
88
+ }
89
+ async schnorrConstructSignature(message, privateKey) {
90
+ const result = await this.binder.callWasmExport('schnorr_construct_signature', [message, privateKey], [index_js_2.Buffer32, index_js_2.Buffer32]);
91
+ return result;
92
+ }
93
+ async schnorrVerifySignature(message, pubKey, sigS, sigE) {
94
+ const result = await this.binder.callWasmExport('schnorr_verify_signature', [message, pubKey, sigS, sigE], [(0, index_js_1.BoolDeserializer)()]);
95
+ return result[0];
96
+ }
97
+ async schnorrMultisigCreateMultisigPublicKey(privateKey) {
98
+ const result = await this.binder.callWasmExport('schnorr_multisig_create_multisig_public_key', [privateKey], [index_js_2.Buffer128]);
99
+ return result[0];
100
+ }
101
+ async schnorrMultisigValidateAndCombineSignerPubkeys(signerPubkeyBuf) {
102
+ const result = await this.binder.callWasmExport('schnorr_multisig_validate_and_combine_signer_pubkeys', [signerPubkeyBuf], [index_js_2.Point, (0, index_js_1.BoolDeserializer)()]);
103
+ return result;
104
+ }
105
+ async schnorrMultisigConstructSignatureRound1() {
106
+ const result = await this.binder.callWasmExport('schnorr_multisig_construct_signature_round_1', [], [index_js_2.Buffer128, index_js_2.Buffer128]);
107
+ return result;
108
+ }
109
+ async schnorrMultisigConstructSignatureRound2(message, privateKey, signerRoundOnePrivateBuf, signerPubkeysBuf, roundOnePublicBuf) {
110
+ const result = await this.binder.callWasmExport('schnorr_multisig_construct_signature_round_2', [message, privateKey, signerRoundOnePrivateBuf, signerPubkeysBuf, roundOnePublicBuf], [index_js_2.Fq, (0, index_js_1.BoolDeserializer)()]);
111
+ return result;
112
+ }
113
+ async schnorrMultisigCombineSignatures(message, signerPubkeysBuf, roundOneBuf, roundTwoBuf) {
114
+ const result = await this.binder.callWasmExport('schnorr_multisig_combine_signatures', [message, signerPubkeysBuf, roundOneBuf, roundTwoBuf], [index_js_2.Buffer32, index_js_2.Buffer32, (0, index_js_1.BoolDeserializer)()]);
115
+ return result;
116
+ }
117
+ async srsInitSrs(pointsBuf, numPoints, g2PointBuf) {
118
+ const result = await this.binder.callWasmExport('srs_init_srs', [pointsBuf, numPoints, g2PointBuf], []);
119
+ return;
120
+ }
121
+ async examplesSimpleCreateAndVerifyProof() {
122
+ const result = await this.binder.callWasmExport('examples_simple_create_and_verify_proof', [], [(0, index_js_1.BoolDeserializer)()]);
123
+ return result[0];
124
+ }
125
+ async testThreads(threads, iterations) {
126
+ const result = await this.binder.callWasmExport('test_threads', [threads, iterations], [(0, index_js_1.NumberDeserializer)()]);
127
+ return result[0];
128
+ }
129
+ async testThreadAbort() {
130
+ const result = await this.binder.callWasmExport('test_thread_abort', [], []);
131
+ return;
132
+ }
133
+ async testAbort() {
134
+ const result = await this.binder.callWasmExport('test_abort', [], []);
135
+ return;
136
+ }
137
+ async commonInitSlabAllocator(circuitSize) {
138
+ const result = await this.binder.callWasmExport('common_init_slab_allocator', [circuitSize], []);
139
+ return;
140
+ }
141
+ async acirGetCircuitSizes(constraintSystemBuf) {
142
+ const result = await this.binder.callWasmExport('acir_get_circuit_sizes', [constraintSystemBuf], [(0, index_js_1.NumberDeserializer)(), (0, index_js_1.NumberDeserializer)(), (0, index_js_1.NumberDeserializer)()]);
143
+ return result;
144
+ }
145
+ async acirNewAcirComposer(sizeHint) {
146
+ const result = await this.binder.callWasmExport('acir_new_acir_composer', [sizeHint], [index_js_2.Ptr]);
147
+ return result[0];
148
+ }
149
+ async acirDeleteAcirComposer(acirComposerPtr) {
150
+ const result = await this.binder.callWasmExport('acir_delete_acir_composer', [acirComposerPtr], []);
151
+ return;
152
+ }
153
+ async acirCreateCircuit(acirComposerPtr, constraintSystemBuf, sizeHint) {
154
+ const result = await this.binder.callWasmExport('acir_create_circuit', [acirComposerPtr, constraintSystemBuf, sizeHint], []);
155
+ return;
156
+ }
157
+ async acirInitProvingKey(acirComposerPtr, constraintSystemBuf) {
158
+ const result = await this.binder.callWasmExport('acir_init_proving_key', [acirComposerPtr, constraintSystemBuf], []);
159
+ return;
160
+ }
161
+ async acirCreateProof(acirComposerPtr, constraintSystemBuf, witnessBuf, isRecursive) {
162
+ const result = await this.binder.callWasmExport('acir_create_proof', [acirComposerPtr, constraintSystemBuf, witnessBuf, isRecursive], [(0, index_js_1.BufferDeserializer)()]);
163
+ return result[0];
164
+ }
165
+ async acirLoadVerificationKey(acirComposerPtr, vkBuf) {
166
+ const result = await this.binder.callWasmExport('acir_load_verification_key', [acirComposerPtr, vkBuf], []);
167
+ return;
168
+ }
169
+ async acirInitVerificationKey(acirComposerPtr) {
170
+ const result = await this.binder.callWasmExport('acir_init_verification_key', [acirComposerPtr], []);
171
+ return;
172
+ }
173
+ async acirGetVerificationKey(acirComposerPtr) {
174
+ const result = await this.binder.callWasmExport('acir_get_verification_key', [acirComposerPtr], [(0, index_js_1.BufferDeserializer)()]);
175
+ return result[0];
176
+ }
177
+ async acirVerifyProof(acirComposerPtr, proofBuf, isRecursive) {
178
+ const result = await this.binder.callWasmExport('acir_verify_proof', [acirComposerPtr, proofBuf, isRecursive], [(0, index_js_1.BoolDeserializer)()]);
179
+ return result[0];
180
+ }
181
+ async acirGetSolidityVerifier(acirComposerPtr) {
182
+ const result = await this.binder.callWasmExport('acir_get_solidity_verifier', [acirComposerPtr], [(0, index_js_1.StringDeserializer)()]);
183
+ return result[0];
184
+ }
185
+ async acirSerializeProofIntoFields(acirComposerPtr, proofBuf, numInnerPublicInputs) {
186
+ const result = await this.binder.callWasmExport('acir_serialize_proof_into_fields', [acirComposerPtr, proofBuf, numInnerPublicInputs], [(0, index_js_1.VectorDeserializer)(index_js_2.Fr)]);
187
+ return result[0];
188
+ }
189
+ async acirSerializeVerificationKeyIntoFields(acirComposerPtr) {
190
+ const result = await this.binder.callWasmExport('acir_serialize_verification_key_into_fields', [acirComposerPtr], [(0, index_js_1.VectorDeserializer)(index_js_2.Fr), index_js_2.Fr]);
191
+ return result;
192
+ }
193
+ }
194
+ exports.BarretenbergApi = BarretenbergApi;
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnX2FwaS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxvREFNK0I7QUFDL0IsZ0RBQTRFO0FBRTVFLE1BQWEsZUFBZTtJQUMxQixZQUFtQixNQUEwQjtRQUExQixXQUFNLEdBQU4sTUFBTSxDQUFvQjtJQUFHLENBQUM7SUFFakQsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWTtRQUNoQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRSxPQUFPO0lBQ1QsQ0FBQztJQUVELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxJQUFRLEVBQUUsS0FBUztRQUM5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLDRCQUE0QixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsYUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLDZCQUE2QixDQUFDLElBQVEsRUFBRSxLQUFTO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsb0NBQW9DLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxhQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNHLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsWUFBa0I7UUFDdkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsYUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFlBQWtCO1FBQzlDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGFBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckcsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxZQUFrQixFQUFFLFNBQWlCO1FBQ3ZFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQzdDLHFDQUFxQyxFQUNyQyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsRUFDekIsQ0FBQyxhQUFFLENBQUMsQ0FDTCxDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBa0I7UUFDckMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsYUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLHFCQUFxQixDQUFDLFlBQWtCO1FBQzVDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGFBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkcsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxZQUFrQixFQUFFLFNBQWlCO1FBQzVFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQzdDLDJDQUEyQyxFQUMzQyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsRUFDekIsQ0FBQyxhQUFFLENBQUMsQ0FDTCxDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFnQjtRQUMxQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLDRCQUE0QixFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVGLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLE9BQU87SUFDVCxDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQVEsRUFBRSxLQUFTO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxhQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNGLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsb0JBQW9CLENBQUMsWUFBa0I7UUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsYUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLFlBQWtCLEVBQUUsU0FBaUI7UUFDM0UsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDN0Msd0NBQXdDLEVBQ3hDLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxFQUN6QixDQUFDLGFBQUUsQ0FBQyxDQUNMLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQVU7UUFDakMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBQSw2QkFBa0IsRUFBQyxhQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0csT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBZ0I7UUFDNUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFRLENBQUMsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLElBQWdCO1FBQ25DLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkYsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxVQUFjO1FBQzFDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGdCQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsZUFBc0I7UUFDakQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsZ0JBQUssQ0FBQyxDQUFDLENBQUM7UUFDekcsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUFtQixFQUFFLFVBQWM7UUFDakUsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDN0MsNkJBQTZCLEVBQzdCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxFQUNyQixDQUFDLG1CQUFRLEVBQUUsbUJBQVEsQ0FBQyxDQUNyQixDQUFDO1FBQ0YsT0FBTyxNQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxPQUFtQixFQUFFLE1BQWEsRUFBRSxJQUFjLEVBQUUsSUFBYztRQUM3RixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUM3QywwQkFBMEIsRUFDMUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFDN0IsQ0FBQyxJQUFBLDJCQUFnQixHQUFFLENBQUMsQ0FDckIsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsc0NBQXNDLENBQUMsVUFBYztRQUN6RCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUM3Qyw2Q0FBNkMsRUFDN0MsQ0FBQyxVQUFVLENBQUMsRUFDWixDQUFDLG9CQUFTLENBQUMsQ0FDWixDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxlQUE0QjtRQUMvRSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUM3QyxzREFBc0QsRUFDdEQsQ0FBQyxlQUFlLENBQUMsRUFDakIsQ0FBQyxnQkFBSyxFQUFFLElBQUEsMkJBQWdCLEdBQUUsQ0FBQyxDQUM1QixDQUFDO1FBQ0YsT0FBTyxNQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyx1Q0FBdUM7UUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDN0MsOENBQThDLEVBQzlDLEVBQUUsRUFDRixDQUFDLG9CQUFTLEVBQUUsb0JBQVMsQ0FBQyxDQUN2QixDQUFDO1FBQ0YsT0FBTyxNQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyx1Q0FBdUMsQ0FDM0MsT0FBbUIsRUFDbkIsVUFBYyxFQUNkLHdCQUFtQyxFQUNuQyxnQkFBNkIsRUFDN0IsaUJBQThCO1FBRTlCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQzdDLDhDQUE4QyxFQUM5QyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsRUFDcEYsQ0FBQyxhQUFFLEVBQUUsSUFBQSwyQkFBZ0IsR0FBRSxDQUFDLENBQ3pCLENBQUM7UUFDRixPQUFPLE1BQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLGdDQUFnQyxDQUNwQyxPQUFtQixFQUNuQixnQkFBNkIsRUFDN0IsV0FBd0IsRUFDeEIsV0FBaUI7UUFFakIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDN0MscUNBQXFDLEVBQ3JDLENBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsRUFDckQsQ0FBQyxtQkFBUSxFQUFFLG1CQUFRLEVBQUUsSUFBQSwyQkFBZ0IsR0FBRSxDQUFDLENBQ3pDLENBQUM7UUFDRixPQUFPLE1BQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFxQixFQUFFLFNBQWlCLEVBQUUsVUFBc0I7UUFDL0UsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hHLE9BQU87SUFDVCxDQUFDO0lBRUQsS0FBSyxDQUFDLGtDQUFrQztRQUN0QyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUM3Qyx5Q0FBeUMsRUFDekMsRUFBRSxFQUNGLENBQUMsSUFBQSwyQkFBZ0IsR0FBRSxDQUFDLENBQ3JCLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFlLEVBQUUsVUFBa0I7UUFDbkQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFBLDZCQUFrQixHQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9HLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZTtRQUNuQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3RSxPQUFPO0lBQ1QsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTO1FBQ2IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLE9BQU87SUFDVCxDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFdBQW1CO1FBQy9DLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRyxPQUFPO0lBQ1QsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBK0I7UUFDdkQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDN0Msd0JBQXdCLEVBQ3hCLENBQUMsbUJBQW1CLENBQUMsRUFDckIsQ0FBQyxJQUFBLDZCQUFrQixHQUFFLEVBQUUsSUFBQSw2QkFBa0IsR0FBRSxFQUFFLElBQUEsNkJBQWtCLEdBQUUsQ0FBQyxDQUNuRSxDQUFDO1FBQ0YsT0FBTyxNQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFnQjtRQUN4QyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLHdCQUF3QixFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxjQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzdGLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsZUFBb0I7UUFDL0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BHLE9BQU87SUFDVCxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLGVBQW9CLEVBQUUsbUJBQStCLEVBQUUsUUFBZ0I7UUFDN0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDN0MscUJBQXFCLEVBQ3JCLENBQUMsZUFBZSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxFQUNoRCxFQUFFLENBQ0gsQ0FBQztRQUNGLE9BQU87SUFDVCxDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGVBQW9CLEVBQUUsbUJBQStCO1FBQzVFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQzdDLHVCQUF1QixFQUN2QixDQUFDLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxFQUN0QyxFQUFFLENBQ0gsQ0FBQztRQUNGLE9BQU87SUFDVCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FDbkIsZUFBb0IsRUFDcEIsbUJBQStCLEVBQy9CLFVBQXNCLEVBQ3RCLFdBQW9CO1FBRXBCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQzdDLG1CQUFtQixFQUNuQixDQUFDLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLEVBQy9ELENBQUMsSUFBQSw2QkFBa0IsR0FBRSxDQUFDLENBQ3ZCLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLGVBQW9CLEVBQUUsS0FBaUI7UUFDbkUsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1RyxPQUFPO0lBQ1QsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxlQUFvQjtRQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLDRCQUE0QixFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckcsT0FBTztJQUNULENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsZUFBb0I7UUFDL0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDN0MsMkJBQTJCLEVBQzNCLENBQUMsZUFBZSxDQUFDLEVBQ2pCLENBQUMsSUFBQSw2QkFBa0IsR0FBRSxDQUFDLENBQ3ZCLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxlQUFvQixFQUFFLFFBQW9CLEVBQUUsV0FBb0I7UUFDcEYsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDN0MsbUJBQW1CLEVBQ25CLENBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsRUFDeEMsQ0FBQyxJQUFBLDJCQUFnQixHQUFFLENBQUMsQ0FDckIsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsZUFBb0I7UUFDaEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDN0MsNEJBQTRCLEVBQzVCLENBQUMsZUFBZSxDQUFDLEVBQ2pCLENBQUMsSUFBQSw2QkFBa0IsR0FBRSxDQUFDLENBQ3ZCLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLDRCQUE0QixDQUNoQyxlQUFvQixFQUNwQixRQUFvQixFQUNwQixvQkFBNEI7UUFFNUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDN0Msa0NBQWtDLEVBQ2xDLENBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxFQUNqRCxDQUFDLElBQUEsNkJBQWtCLEVBQUMsYUFBRSxDQUFDLENBQUMsQ0FDekIsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsc0NBQXNDLENBQUMsZUFBb0I7UUFDL0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDN0MsNkNBQTZDLEVBQzdDLENBQUMsZUFBZSxDQUFDLEVBQ2pCLENBQUMsSUFBQSw2QkFBa0IsRUFBQyxhQUFFLENBQUMsRUFBRSxhQUFFLENBQUMsQ0FDN0IsQ0FBQztRQUNGLE9BQU8sTUFBYSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQTNVRCwwQ0EyVUMifQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pedersen.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pedersen.test.d.ts","sourceRoot":"","sources":["../../../src/barretenberg_api/pedersen.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_js_1 = require("../barretenberg/index.js");
4
+ const index_js_2 = require("../types/index.js");
5
+ describe('pedersen', () => {
6
+ let api;
7
+ beforeAll(async () => {
8
+ api = await index_js_1.Barretenberg.new(1);
9
+ await api.pedersenHashInit();
10
+ }, 30000);
11
+ afterAll(async () => {
12
+ await api.destroy();
13
+ });
14
+ it('pedersenCompressFields', async () => {
15
+ const result = await api.pedersenCompressFields(new index_js_2.Fr(4n), new index_js_2.Fr(8n));
16
+ expect(result).toEqual(new index_js_2.Fr(16672613430297770667465722499387909817686322516130512258122141976728892914370n));
17
+ });
18
+ it('pedersenPlookupCompressFields', async () => {
19
+ const result = await api.pedersenPlookupCompressFields(new index_js_2.Fr(4n), new index_js_2.Fr(8n));
20
+ expect(result).toEqual(new index_js_2.Fr(21568810706345846819294487214368613840251909831689369685420108292337497444070n));
21
+ });
22
+ it('pedersenCompress', async () => {
23
+ const result = await api.pedersenCompress([new index_js_2.Fr(4n), new index_js_2.Fr(8n), new index_js_2.Fr(12n)]);
24
+ expect(result).toEqual(new index_js_2.Fr(20749503715308760529311051818180468653739005441229560405092292242074298877245n));
25
+ });
26
+ it('pedersenPlookupCompress', async () => {
27
+ const result = await api.pedersenPlookupCompress([new index_js_2.Fr(4n), new index_js_2.Fr(8n), new index_js_2.Fr(12n)]);
28
+ expect(result).toEqual(new index_js_2.Fr(4213911891650716450883144878301329379460622830501147795631256054071351353887n));
29
+ });
30
+ it('pedersenCompressWithHashIndex', async () => {
31
+ const result = await api.pedersenCompressWithHashIndex([new index_js_2.Fr(4n), new index_js_2.Fr(8n)], 7);
32
+ expect(result).toEqual(new index_js_2.Fr(11068631634751286805527305272746775861010877976108429785597565355072506728435n));
33
+ });
34
+ it('pedersenCommit', async () => {
35
+ const result = await api.pedersenCommit([new index_js_2.Fr(4n), new index_js_2.Fr(8n), new index_js_2.Fr(12n)]);
36
+ expect(result).toEqual(new index_js_2.Fr(20749503715308760529311051818180468653739005441229560405092292242074298877245n));
37
+ });
38
+ it('pedersenPlookupCommit', async () => {
39
+ const result = await api.pedersenPlookupCommit([new index_js_2.Fr(4n), new index_js_2.Fr(8n)]);
40
+ expect(result).toEqual(new index_js_2.Fr(21568810706345846819294487214368613840251909831689369685420108292337497444070n));
41
+ });
42
+ it('pedersenBufferToField', async () => {
43
+ const result = await api.pedersenBufferToField(Buffer.from('Hello world! I am a buffer to be converted to a field!'));
44
+ expect(result).toEqual(new index_js_2.Fr(4923399520610513632896240312051201308554838580477778325691012985962614653619n));
45
+ });
46
+ it('pedersenHashPair', async () => {
47
+ const result = await api.pedersenHashPair(new index_js_2.Fr(4n), new index_js_2.Fr(8n));
48
+ expect(result).toEqual(new index_js_2.Fr(7508407170365331152493586290597472346478280823936748458450026785528968221772n));
49
+ });
50
+ it('pedersenHashMultiple', async () => {
51
+ const result = await api.pedersenHashMultiple([new index_js_2.Fr(4n), new index_js_2.Fr(8n), new index_js_2.Fr(12n)]);
52
+ expect(result).toEqual(new index_js_2.Fr(641613987782189905475142047603559162464012327378197326488471789040703504911n));
53
+ });
54
+ it('pedersenHashMultipleWithHashIndex', async () => {
55
+ const result = await api.pedersenHashMultipleWithHashIndex([new index_js_2.Fr(4n), new index_js_2.Fr(8n)], 7);
56
+ expect(result).toEqual(new index_js_2.Fr(14181105996307540196932058280391669339364159586581375348016341320932872505408n));
57
+ });
58
+ it('pedersenHashToTree', async () => {
59
+ const result = await api.pedersenHashToTree([new index_js_2.Fr(4n), new index_js_2.Fr(8n), new index_js_2.Fr(12n), new index_js_2.Fr(16n)]);
60
+ expect(result).toEqual([
61
+ new index_js_2.Fr(4n),
62
+ new index_js_2.Fr(8n),
63
+ new index_js_2.Fr(12n),
64
+ new index_js_2.Fr(16n),
65
+ new index_js_2.Fr(7508407170365331152493586290597472346478280823936748458450026785528968221772n),
66
+ new index_js_2.Fr(61370238324203854110612958249832030753990119715269709182131929073387209477n),
67
+ new index_js_2.Fr(7696240979753031171651958947943309270095593128155855154123615677953596407768n),
68
+ ]);
69
+ });
70
+ });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVkZXJzZW4udGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXJyZXRlbmJlcmdfYXBpL3BlZGVyc2VuLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1REFBd0Q7QUFDeEQsZ0RBQXVDO0FBRXZDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO0lBQ3hCLElBQUksR0FBaUIsQ0FBQztJQUV0QixTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDbkIsR0FBRyxHQUFHLE1BQU0sdUJBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsTUFBTSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMvQixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFVixRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDbEIsTUFBTSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLENBQUMsc0JBQXNCLENBQUMsSUFBSSxhQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksYUFBRSxDQUFDLDhFQUE4RSxDQUFDLENBQUMsQ0FBQztJQUNqSCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM3QyxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLGFBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLGFBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sQ0FBQyxNQUFNLENB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
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schnorr.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schnorr.test.d.ts","sourceRoot":"","sources":["../../../src/barretenberg_api/schnorr.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const util_1 = require("util");
4
+ const index_js_1 = require("../types/index.js");
5
+ const index_js_2 = require("../barretenberg/index.js");
6
+ const index_js_3 = require("../async_map/index.js");
7
+ describe('schnorr', () => {
8
+ const msg = Buffer.from(new util_1.TextEncoder().encode('The quick brown dog jumped over the lazy fox.'));
9
+ let api;
10
+ beforeAll(async () => {
11
+ api = await index_js_2.Barretenberg.new(1);
12
+ await api.pedersenInit();
13
+ }, 30000);
14
+ afterAll(async () => {
15
+ await api.destroy();
16
+ });
17
+ it('should verify signature', async () => {
18
+ const pk = index_js_1.Fr.fromBuffer(new Uint8Array([
19
+ 0x0b, 0x9b, 0x3a, 0xde, 0xe6, 0xb3, 0xd8, 0x1b, 0x28, 0xa0, 0x88, 0x6b, 0x2a, 0x84, 0x15, 0xc7, 0xda, 0x31,
20
+ 0x29, 0x1a, 0x5e, 0x96, 0xbb, 0x7a, 0x56, 0x63, 0x9e, 0x17, 0x7d, 0x30, 0x1b, 0xeb,
21
+ ]));
22
+ const pubKey = await api.schnorrComputePublicKey(pk);
23
+ const [s, e] = await api.schnorrConstructSignature(msg, pk);
24
+ const verified = await api.schnorrVerifySignature(msg, pubKey, s, e);
25
+ expect(verified).toBe(true);
26
+ });
27
+ it('public key negation should work', async () => {
28
+ const publicKeyStr = '0x164f01b1011a1b292217acf53eef4d74f625f6e9bd5edfdb74c56fd81aafeebb21912735f9266a3719f61c1eb747ddee0cac9917f5c807485d356709b529b62c';
29
+ const publicKey = index_js_1.Point.fromString(publicKeyStr);
30
+ // hardcoded expected negated public key
31
+ const expectedInvertedStr = '0x164f01b1011a1b292217acf53eef4d74f625f6e9bd5edfdb74c56fd81aafeebb0ed3273ce80b35f29e5a2997ca397a6f1b874f3083f16948e6ac8e8a3ad649d5';
32
+ const expectedInverted = index_js_1.Point.fromString(expectedInvertedStr);
33
+ // negate - should match expected negated key
34
+ const negatedPublicKey = await api.schnorrNegatePublicKey(publicKey);
35
+ expect(negatedPublicKey.equals(expectedInverted)).toEqual(true);
36
+ // negate again - should be original public key now
37
+ expect((await api.schnorrNegatePublicKey(negatedPublicKey)).equals(publicKey)).toEqual(true);
38
+ });
39
+ it('should create + verify multi signature', async () => {
40
+ // set up multisig accounts
41
+ const numSigners = 7;
42
+ const pks = [...Array(numSigners)].map(() => index_js_1.Fr.random());
43
+ const pubKeys = await (0, index_js_3.asyncMap)(pks, pk => api.schnorrMultisigCreateMultisigPublicKey(pk));
44
+ // round one
45
+ const roundOnePublicOutputs = [];
46
+ const roundOnePrivateOutputs = [];
47
+ for (let i = 0; i < numSigners; ++i) {
48
+ const [publicOutput, privateOutput] = await api.schnorrMultisigConstructSignatureRound1();
49
+ roundOnePublicOutputs.push(publicOutput);
50
+ roundOnePrivateOutputs.push(privateOutput);
51
+ }
52
+ // round two
53
+ const roundTwoOutputs = await (0, index_js_3.asyncMap)(pks, async (pk, i) => (await api.schnorrMultisigConstructSignatureRound2(msg, pk, roundOnePrivateOutputs[i], pubKeys, roundOnePublicOutputs))[0]);
54
+ // generate signature
55
+ const [s, e] = await api.schnorrMultisigCombineSignatures(msg, pubKeys, roundOnePublicOutputs, roundTwoOutputs);
56
+ const [combinedKey] = await api.schnorrMultisigValidateAndCombineSignerPubkeys(pubKeys);
57
+ expect(combinedKey).not.toEqual(Buffer.alloc(64));
58
+ const verified = await api.schnorrVerifySignature(msg, combinedKey, s, e);
59
+ expect(verified).toBe(true);
60
+ });
61
+ it('should identify invalid multi signature', async () => {
62
+ const pks = [...Array(3)].map(() => index_js_1.Fr.random());
63
+ const pubKeys = await (0, index_js_3.asyncMap)(pks, pk => api.schnorrMultisigCreateMultisigPublicKey(pk));
64
+ const [combinedKey] = await api.schnorrMultisigValidateAndCombineSignerPubkeys(pubKeys);
65
+ const verified = await api.schnorrVerifySignature(msg, combinedKey, index_js_1.Buffer32.random(), index_js_1.Buffer32.random());
66
+ expect(verified).toBe(false);
67
+ });
68
+ it('should not construct invalid multi signature', async () => {
69
+ // set up multisig accounts
70
+ const numSigners = 7;
71
+ const pks = [...Array(numSigners)].map(() => index_js_1.Fr.random());
72
+ const pubKeys = await (0, index_js_3.asyncMap)(pks, pk => api.schnorrMultisigCreateMultisigPublicKey(pk));
73
+ // round one
74
+ const roundOnePublicOutputs = [];
75
+ const roundOnePrivateOutputs = [];
76
+ for (let i = 0; i < numSigners; ++i) {
77
+ const [publicOutput, privateOutput] = await api.schnorrMultisigConstructSignatureRound1();
78
+ roundOnePublicOutputs.push(publicOutput);
79
+ roundOnePrivateOutputs.push(privateOutput);
80
+ }
81
+ // round two
82
+ const roundTwoOutputs = await (0, index_js_3.asyncMap)(pks, async (pk, i) => (await api.schnorrMultisigConstructSignatureRound2(msg, pk, roundOnePrivateOutputs[i], pubKeys, roundOnePublicOutputs))[0]);
83
+ // wrong number of data
84
+ {
85
+ expect((await api.schnorrMultisigCombineSignatures(msg, pubKeys.slice(0, -1), roundOnePublicOutputs.slice(0, -1), roundTwoOutputs.slice(0, -1)))[2]).toBe(false);
86
+ }
87
+ // invalid round two output
88
+ {
89
+ const invalidOutputs = [...roundTwoOutputs];
90
+ invalidOutputs[1] = (await api.schnorrMultisigConstructSignatureRound2(msg, pks[2], // <- Wrong private key.
91
+ roundOnePrivateOutputs[1], pubKeys, roundOnePublicOutputs))[0];
92
+ expect((await api.schnorrMultisigCombineSignatures(msg, pubKeys, roundOnePublicOutputs, invalidOutputs))[2]).toBe(false);
93
+ }
94
+ // contains duplicates
95
+ {
96
+ const invalidOutputs = [...roundTwoOutputs];
97
+ invalidOutputs[1] = roundTwoOutputs[2];
98
+ expect((await api.schnorrMultisigCombineSignatures(msg, pubKeys, roundOnePublicOutputs, invalidOutputs))[2]).toBe(false);
99
+ }
100
+ });
101
+ it('should not create combined key from public keys containing invalid key', async () => {
102
+ const pks = [...Array(5)].map(() => index_js_1.Fr.random());
103
+ const pubKeys = await (0, index_js_3.asyncMap)(pks, pk => api.schnorrMultisigCreateMultisigPublicKey(pk));
104
+ // not a valid point
105
+ {
106
+ pubKeys[1] = new index_js_1.Buffer128(Buffer.alloc(128));
107
+ expect((await api.schnorrMultisigValidateAndCombineSignerPubkeys(pubKeys))[1]).toBe(false);
108
+ }
109
+ // contains duplicates
110
+ {
111
+ pubKeys[1] = pubKeys[2];
112
+ expect((await api.schnorrMultisigValidateAndCombineSignerPubkeys(pubKeys))[1]).toBe(false);
113
+ }
114
+ });
115
+ });
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nobm9yci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhcnJldGVuYmVyZ19hcGkvc2Nobm9yci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQW1DO0FBQ25DLGdEQUFtRTtBQUNuRSx1REFBd0Q7QUFDeEQsb0RBQWlEO0FBRWpELFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQ3ZCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxrQkFBVyxFQUFFLENBQUMsTUFBTSxDQUFDLCtDQUErQyxDQUFDLENBQUMsQ0FBQztJQUNuRyxJQUFJLEdBQWlCLENBQUM7SUFFdEIsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ25CLEdBQUcsR0FBRyxNQUFNLHVCQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNCLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVWLFFBQVEsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNsQixNQUFNLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN0QixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN2QyxNQUFNLEVBQUUsR0FBRyxhQUFFLENBQUMsVUFBVSxDQUN0QixJQUFJLFVBQVUsQ0FBQztZQUNiLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUMxRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtTQUNuRixDQUFDLENBQ0gsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMseUJBQXlCLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDL0MsTUFBTSxZQUFZLEdBQ2hCLG9JQUFvSSxDQUFDO1FBQ3ZJLE1BQU0sU0FBUyxHQUFHLGdCQUFLLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pELHdDQUF3QztRQUN4QyxNQUFNLG1CQUFtQixHQUN2QixvSUFBb0ksQ0FBQztRQUN2SSxNQUFNLGdCQUFnQixHQUFHLGdCQUFLLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFL0QsNkNBQTZDO1FBQzdDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxHQUFHLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLG1EQUFtRDtRQUNuRCxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9GLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3RELDJCQUEyQjtRQUMzQixNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDckIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMxRCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEsbUJBQVEsRUFBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUxRixZQUFZO1FBQ1osTUFBTSxxQkFBcUIsR0FBZ0IsRUFBRSxDQUFDO1FBQzlDLE1BQU0sc0JBQXNCLEdBQWdCLEVBQUUsQ0FBQztRQUMvQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ25DLE1BQU0sQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsdUNBQXVDLEVBQUUsQ0FBQztZQUMxRixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDekMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsWUFBWTtRQUNaLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBQSxtQkFBUSxFQUNwQyxHQUFHLEVBQ0gsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNkLENBQ0UsTUFBTSxHQUFHLENBQUMsdUNBQXVDLENBQy9DLEdBQUcsRUFDSCxFQUFFLEVBQ0Ysc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEVBQ3pCLE9BQU8sRUFDUCxxQkFBcUIsQ0FDdEIsQ0FDRixDQUFDLENBQUMsQ0FBQyxDQUNQLENBQUM7UUFFRixxQkFBcUI7UUFDckIsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsQ0FBRSxDQUFDO1FBQ2pILE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyw4Q0FBOEMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHLENBQUMsc0JBQXNCLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN2RCxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSxtQkFBUSxFQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyw4Q0FBOEMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RixNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLG1CQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsbUJBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOENBQThDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDNUQsMkJBQTJCO1FBQzNCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNyQixNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSxtQkFBUSxFQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTFGLFlBQVk7UUFDWixNQUFNLHFCQUFxQixHQUFnQixFQUFFLENBQUM7UUFDOUMsTUFBTSxzQkFBc0IsR0FBZ0IsRUFBRSxDQUFDO1FBQy9DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDbkMsTUFBTSxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDO1lBQzFGLHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN6QyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDNUM7UUFFRCxZQUFZO1FBQ1osTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFBLG1CQUFRLEVBQ3BDLEdBQUcsRUFDSCxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ2QsQ0FDRSxNQUFNLEdBQUcsQ0FBQyx1Q0FBdUMsQ0FDL0MsR0FBRyxFQUNILEVBQUUsRUFDRixzQkFBc0IsQ0FBQyxDQUFDLENBQUMsRUFDekIsT0FBTyxFQUNQLHFCQUFxQixDQUN0QixDQUNGLENBQUMsQ0FBQyxDQUFDLENBQ1AsQ0FBQztRQUVGLHVCQUF1QjtRQUN2QjtZQUNFLE1BQU0sQ0FDSixDQUNFLE1BQU0sR0FBRyxDQUFDLGdDQUFnQyxDQUN4QyxHQUFHLEVBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDcEIscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNsQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUM3QixDQUNGLENBQUMsQ0FBQyxDQUFDLENBQ0wsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDZjtRQUVELDJCQUEyQjtRQUMzQjtZQUNFLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQztZQUM1QyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDbEIsTUFBTSxHQUFHLENBQUMsdUNBQXVDLENBQy9DLEdBQUcsRUFDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsd0JBQXdCO1lBQ2hDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUN6QixPQUFPLEVBQ1AscUJBQXFCLENBQ3RCLENBQ0YsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNMLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDL0csS0FBSyxDQUNOLENBQUM7U0FDSDtRQUVELHNCQUFzQjtRQUN0QjtZQUNFLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQztZQUM1QyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDL0csS0FBSyxDQUNOLENBQUM7U0FDSDtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdFQUF3RSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3RGLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDakQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLG1CQUFRLEVBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFMUYsb0JBQW9CO1FBQ3BCO1lBQ0UsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksb0JBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsOENBQThDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1RjtRQUVELHNCQUFzQjtRQUN0QjtZQUNFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsOENBQThDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1RjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==
@@ -0,0 +1,22 @@
1
+ import { Bufferable, OutputType } from '../serialize/index.js';
2
+ import { BarretenbergWasm, BarretenbergWasmWorker } from '../barretenberg_wasm/index.js';
3
+ /**
4
+ * Keeps track of heap allocations so they can be easily freed.
5
+ * The WASM memory layout has 1024 bytes of unused "scratch" space at the start (addresses 0-1023).
6
+ * We can leverage this for IO rather than making expensive bb_malloc bb_free calls.
7
+ * Heap allocations will be created for input/output args that don't fit into the scratch space.
8
+ * Input and output args can use the same scratch space as it's assume all input reads will be performed before any
9
+ * output writes are performed.
10
+ */
11
+ export declare class HeapAllocator {
12
+ private wasm;
13
+ private allocs;
14
+ private inScratchRemaining;
15
+ private outScratchRemaining;
16
+ constructor(wasm: BarretenbergWasm | BarretenbergWasmWorker);
17
+ copyToMemory(bufferable: Bufferable[]): Promise<number[]>;
18
+ getOutputPtrs(objs: OutputType[]): Promise<number[]>;
19
+ addOutputPtr(ptr: number): void;
20
+ freeAll(): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=heap_allocator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heap_allocator.d.ts","sourceRoot":"","sources":["../../../src/barretenberg_binder/heap_allocator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGzF;;;;;;;GAOG;AACH,qBAAa,aAAa;IAKZ,OAAO,CAAC,IAAI;IAJxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,mBAAmB,CAAQ;gBAEf,IAAI,EAAE,gBAAgB,GAAG,sBAAsB;IAE7D,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE;IAerC,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE;IAgBtC,YAAY,CAAC,GAAG,EAAE,MAAM;IAMlB,OAAO;CAKd"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HeapAllocator = void 0;
4
+ const index_js_1 = require("../serialize/index.js");
5
+ const index_js_2 = require("../async_map/index.js");
6
+ /**
7
+ * Keeps track of heap allocations so they can be easily freed.
8
+ * The WASM memory layout has 1024 bytes of unused "scratch" space at the start (addresses 0-1023).
9
+ * We can leverage this for IO rather than making expensive bb_malloc bb_free calls.
10
+ * Heap allocations will be created for input/output args that don't fit into the scratch space.
11
+ * Input and output args can use the same scratch space as it's assume all input reads will be performed before any
12
+ * output writes are performed.
13
+ */
14
+ class HeapAllocator {
15
+ constructor(wasm) {
16
+ this.wasm = wasm;
17
+ this.allocs = [];
18
+ this.inScratchRemaining = 1024;
19
+ this.outScratchRemaining = 1024;
20
+ }
21
+ async copyToMemory(bufferable) {
22
+ return await (0, index_js_2.asyncMap)(bufferable.map(index_js_1.serializeBufferable), async (buf) => {
23
+ if (buf.length <= this.inScratchRemaining) {
24
+ const ptr = (this.inScratchRemaining -= buf.length);
25
+ await this.wasm.writeMemory(ptr, buf);
26
+ return ptr;
27
+ }
28
+ else {
29
+ const ptr = await this.wasm.call('bbmalloc', buf.length);
30
+ await this.wasm.writeMemory(ptr, buf);
31
+ this.allocs.push(ptr);
32
+ return ptr;
33
+ }
34
+ });
35
+ }
36
+ async getOutputPtrs(objs) {
37
+ return await (0, index_js_2.asyncMap)(objs, async (obj) => {
38
+ // If the obj is variable length, we need a 4 byte ptr to write the serialized data address to.
39
+ // WARNING: 4 only works with WASM as it has 32 bit memory.
40
+ const size = obj.SIZE_IN_BYTES || 4;
41
+ if (size <= this.outScratchRemaining) {
42
+ return (this.outScratchRemaining -= size);
43
+ }
44
+ else {
45
+ const ptr = await this.wasm.call('bbmalloc', size);
46
+ this.allocs.push(ptr);
47
+ return ptr;
48
+ }
49
+ });
50
+ }
51
+ addOutputPtr(ptr) {
52
+ if (ptr >= 1024) {
53
+ this.allocs.push(ptr);
54
+ }
55
+ }
56
+ async freeAll() {
57
+ for (const ptr of this.allocs) {
58
+ await this.wasm.call('bbfree', ptr);
59
+ }
60
+ }
61
+ }
62
+ exports.HeapAllocator = HeapAllocator;
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhcF9hbGxvY2F0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnX2JpbmRlci9oZWFwX2FsbG9jYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFBb0Y7QUFFcEYsb0RBQWlEO0FBRWpEOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLGFBQWE7SUFLeEIsWUFBb0IsSUFBK0M7UUFBL0MsU0FBSSxHQUFKLElBQUksQ0FBMkM7UUFKM0QsV0FBTSxHQUFhLEVBQUUsQ0FBQztRQUN0Qix1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDMUIsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO0lBRW1DLENBQUM7SUFFdkUsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUF3QjtRQUN6QyxPQUFPLE1BQU0sSUFBQSxtQkFBUSxFQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsOEJBQW1CLENBQUMsRUFBRSxLQUFLLEVBQUMsR0FBRyxFQUFDLEVBQUU7WUFDckUsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtnQkFDekMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNwRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDdEMsT0FBTyxHQUFHLENBQUM7YUFDWjtpQkFBTTtnQkFDTCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3pELE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEIsT0FBTyxHQUFHLENBQUM7YUFDWjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBa0I7UUFDcEMsT0FBTyxNQUFNLElBQUEsbUJBQVEsRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFDLEdBQUcsRUFBQyxFQUFFO1lBQ3RDLCtGQUErRjtZQUMvRiwyREFBMkQ7WUFDM0QsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUM7WUFFcEMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO2dCQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxDQUFDO2FBQzNDO2lCQUFNO2dCQUNMLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEIsT0FBTyxHQUFHLENBQUM7YUFDWjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFXO1FBQ3RCLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzdCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztDQUNGO0FBakRELHNDQWlEQyJ9
@@ -0,0 +1,26 @@
1
+ import { BarretenbergWasm, BarretenbergWasmWorker } from '../barretenberg_wasm/index.js';
2
+ import { Bufferable, OutputType } from '../serialize/index.js';
3
+ /**
4
+ * Calls a WASM export function, handles allocating/freeing of memory, and serializing/deserializing to types.
5
+ *
6
+ * Notes on function binding ABI:
7
+ * All functions can have an arbitrary number of input and output args.
8
+ * All arguments must be pointers.
9
+ * Input args are determined by being const or pointer to const.
10
+ * Output args must come after input args.
11
+ * All input data is big-endian.
12
+ * All output data is big-endian, except output heap alloc pointers.
13
+ * As integer types are converted to/from big-endian form, we shouldn't have to worry about memory alignment. (SURE?)
14
+ * All functions should return void.
15
+ * This binding function is responsible for allocating argument memory (including output memory).
16
+ * Variable length output args are allocated on the heap, and the resulting pointer is written to the output arg ptr,
17
+ * hence the above statement remains true.
18
+ * Binding will free any variable length output args that were allocated on the heap.
19
+ */
20
+ export declare class BarretenbergBinder {
21
+ wasm: BarretenbergWasm | BarretenbergWasmWorker;
22
+ constructor(wasm: BarretenbergWasm | BarretenbergWasmWorker);
23
+ callWasmExport(funcName: string, inArgs: Bufferable[], outTypes: OutputType[]): Promise<any[]>;
24
+ private deserializeOutputArgs;
25
+ }
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/barretenberg_binder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEzF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAM/D;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,kBAAkB;IACV,IAAI,EAAE,gBAAgB,GAAG,sBAAsB;gBAA/C,IAAI,EAAE,gBAAgB,GAAG,sBAAsB;IAE5D,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;IAUnF,OAAO,CAAC,qBAAqB;CAoB9B"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BarretenbergBinder = void 0;
4
+ const heap_allocator_js_1 = require("./heap_allocator.js");
5
+ const index_js_1 = require("../async_map/index.js");
6
+ // import createDebug from 'debug';
7
+ // const debug = createDebug('bb.js:barretenberg_binder');
8
+ /**
9
+ * Calls a WASM export function, handles allocating/freeing of memory, and serializing/deserializing to types.
10
+ *
11
+ * Notes on function binding ABI:
12
+ * All functions can have an arbitrary number of input and output args.
13
+ * All arguments must be pointers.
14
+ * Input args are determined by being const or pointer to const.
15
+ * Output args must come after input args.
16
+ * All input data is big-endian.
17
+ * All output data is big-endian, except output heap alloc pointers.
18
+ * As integer types are converted to/from big-endian form, we shouldn't have to worry about memory alignment. (SURE?)
19
+ * All functions should return void.
20
+ * This binding function is responsible for allocating argument memory (including output memory).
21
+ * Variable length output args are allocated on the heap, and the resulting pointer is written to the output arg ptr,
22
+ * hence the above statement remains true.
23
+ * Binding will free any variable length output args that were allocated on the heap.
24
+ */
25
+ class BarretenbergBinder {
26
+ constructor(wasm) {
27
+ this.wasm = wasm;
28
+ }
29
+ async callWasmExport(funcName, inArgs, outTypes) {
30
+ const alloc = new heap_allocator_js_1.HeapAllocator(this.wasm);
31
+ const inPtrs = await alloc.copyToMemory(inArgs);
32
+ const outPtrs = await alloc.getOutputPtrs(outTypes);
33
+ await this.wasm.call(funcName, ...inPtrs, ...outPtrs);
34
+ const outArgs = await this.deserializeOutputArgs(outTypes, outPtrs, alloc);
35
+ await alloc.freeAll();
36
+ return outArgs;
37
+ }
38
+ deserializeOutputArgs(outTypes, outPtrs, alloc) {
39
+ return (0, index_js_1.asyncMap)(outTypes, async (t, i) => {
40
+ if (t.SIZE_IN_BYTES) {
41
+ const slice = await this.wasm.getMemorySlice(outPtrs[i], outPtrs[i] + t.SIZE_IN_BYTES);
42
+ return t.fromBuffer(slice);
43
+ }
44
+ const slice = await this.wasm.getMemorySlice(outPtrs[i], outPtrs[i] + 4);
45
+ const ptr = new DataView(slice.buffer, slice.byteOffset, slice.byteLength).getUint32(0, true);
46
+ // Add our heap buffer to the dealloc list.
47
+ alloc.addOutputPtr(ptr);
48
+ // The length will be found in the first 4 bytes of the buffer, big endian. See to_heap_buffer.
49
+ const lslice = await this.wasm.getMemorySlice(ptr, ptr + 4);
50
+ const length = new DataView(lslice.buffer, lslice.byteOffset, lslice.byteLength).getUint32(0, false);
51
+ const buf = await this.wasm.getMemorySlice(ptr + 4, ptr + 4 + length);
52
+ return t.fromBuffer(buf);
53
+ });
54
+ }
55
+ }
56
+ exports.BarretenbergBinder = BarretenbergBinder;
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnX2JpbmRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyREFBb0Q7QUFFcEQsb0RBQWlEO0FBQ2pELG1DQUFtQztBQUVuQywwREFBMEQ7QUFFMUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFhLGtCQUFrQjtJQUM3QixZQUFtQixJQUErQztRQUEvQyxTQUFJLEdBQUosSUFBSSxDQUEyQztJQUFHLENBQUM7SUFFdEUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFnQixFQUFFLE1BQW9CLEVBQUUsUUFBc0I7UUFDakYsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQ0FBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDdEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRSxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8scUJBQXFCLENBQUMsUUFBc0IsRUFBRSxPQUFpQixFQUFFLEtBQW9CO1FBQzNGLE9BQU8sSUFBQSxtQkFBUSxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRTtnQkFDbkIsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDdkYsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzVCO1lBQ0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sR0FBRyxHQUFHLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUU5RiwyQ0FBMkM7WUFDM0MsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUV4QiwrRkFBK0Y7WUFDL0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVELE1BQU0sTUFBTSxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVyRyxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztZQUN0RSxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFqQ0QsZ0RBaUNDIn0=