@aztec/bb.js 3.0.0-canary.a9708bd → 3.0.0-manual.20251030

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 (410) hide show
  1. package/README.md +13 -79
  2. package/dest/browser/barretenberg/backend.d.ts +2 -2
  3. package/dest/browser/barretenberg/backend.d.ts.map +1 -1
  4. package/dest/browser/barretenberg/backend.js +40 -25
  5. package/dest/browser/barretenberg/index.d.ts +45 -44
  6. package/dest/browser/barretenberg/index.d.ts.map +1 -1
  7. package/dest/browser/barretenberg/index.js +131 -80
  8. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  9. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  10. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
  11. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
  12. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  13. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
  14. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
  15. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  16. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.js +55 -14
  17. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
  18. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
  19. package/dest/browser/bb_backends/browser/index.d.ts +11 -0
  20. package/dest/browser/bb_backends/browser/index.d.ts.map +1 -0
  21. package/dest/browser/bb_backends/browser/index.js +39 -0
  22. package/dest/browser/bb_backends/index.d.ts +45 -0
  23. package/dest/browser/bb_backends/index.d.ts.map +1 -0
  24. package/dest/browser/bb_backends/index.js +15 -0
  25. package/dest/browser/bb_backends/interface.d.ts +33 -0
  26. package/dest/browser/bb_backends/interface.d.ts.map +1 -0
  27. package/dest/browser/bb_backends/interface.js +2 -0
  28. package/dest/browser/bb_backends/sync_to_async_adapter.d.ts +15 -0
  29. package/dest/browser/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
  30. package/dest/browser/bb_backends/sync_to_async_adapter.js +20 -0
  31. package/dest/browser/bb_backends/wasm.d.ts +49 -0
  32. package/dest/browser/bb_backends/wasm.d.ts.map +1 -0
  33. package/dest/browser/bb_backends/wasm.js +83 -0
  34. package/dest/browser/bbapi_exception.d.ts +7 -0
  35. package/dest/browser/bbapi_exception.d.ts.map +1 -0
  36. package/dest/browser/bbapi_exception.js +14 -0
  37. package/dest/browser/cbind/generate.js +94 -7
  38. package/dest/browser/cbind/generated/api_types.d.ts +1640 -227
  39. package/dest/browser/cbind/generated/api_types.d.ts.map +1 -1
  40. package/dest/browser/cbind/generated/api_types.js +2366 -478
  41. package/dest/browser/cbind/generated/async.d.ts +52 -13
  42. package/dest/browser/cbind/generated/async.d.ts.map +1 -1
  43. package/dest/browser/cbind/generated/async.js +586 -72
  44. package/dest/browser/cbind/generated/curve_constants.d.ts +45 -0
  45. package/dest/browser/cbind/generated/curve_constants.d.ts.map +1 -0
  46. package/dest/browser/cbind/generated/curve_constants.js +45 -0
  47. package/dest/browser/cbind/generated/sync.d.ts +53 -14
  48. package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
  49. package/dest/browser/cbind/generated/sync.js +548 -72
  50. package/dest/browser/cbind/schema_compiler.d.ts +2 -4
  51. package/dest/browser/cbind/schema_compiler.d.ts.map +1 -1
  52. package/dest/browser/cbind/schema_compiler.js +97 -181
  53. package/dest/browser/index.d.ts +4 -2
  54. package/dest/browser/index.d.ts.map +1 -1
  55. package/dest/browser/index.js +5 -3
  56. package/dest/browser/serialize/index.d.ts +0 -2
  57. package/dest/browser/serialize/index.d.ts.map +1 -1
  58. package/dest/browser/serialize/index.js +1 -3
  59. package/dest/browser/serialize/serialize.d.ts +0 -35
  60. package/dest/browser/serialize/serialize.d.ts.map +1 -1
  61. package/dest/browser/serialize/serialize.js +1 -68
  62. package/dest/browser/types/fields.d.ts +6 -26
  63. package/dest/browser/types/fields.d.ts.map +1 -1
  64. package/dest/browser/types/fields.js +16 -57
  65. package/dest/browser/types/index.d.ts +0 -3
  66. package/dest/browser/types/index.d.ts.map +1 -1
  67. package/dest/browser/types/index.js +1 -4
  68. package/dest/browser/types/point.d.ts +8 -6
  69. package/dest/browser/types/point.d.ts.map +1 -1
  70. package/dest/browser/types/point.js +12 -15
  71. package/dest/node/barretenberg/__snapshots__/pedersen.test.js.snap +2 -2
  72. package/dest/node/barretenberg/__snapshots__/poseidon.test.js.snap +3 -3
  73. package/dest/node/barretenberg/backend.d.ts +2 -2
  74. package/dest/node/barretenberg/backend.d.ts.map +1 -1
  75. package/dest/node/barretenberg/backend.js +40 -25
  76. package/dest/node/barretenberg/blake2s.test.js +21 -18
  77. package/dest/node/barretenberg/index.d.ts +45 -44
  78. package/dest/node/barretenberg/index.d.ts.map +1 -1
  79. package/dest/node/barretenberg/index.js +131 -80
  80. package/dest/node/barretenberg/pedersen.test.js +24 -17
  81. package/dest/node/barretenberg/poseidon.bench.test.d.ts +2 -0
  82. package/dest/node/barretenberg/poseidon.bench.test.d.ts.map +1 -0
  83. package/dest/node/barretenberg/poseidon.bench.test.js +217 -0
  84. package/dest/node/barretenberg/poseidon.test.js +15 -15
  85. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  86. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  87. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  88. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
  89. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
  90. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  91. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
  92. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
  93. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  94. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +55 -14
  95. package/dest/node/barretenberg_wasm/index.test.js +11 -10
  96. package/dest/node/bb_backends/browser/index.d.ts +11 -0
  97. package/dest/node/bb_backends/browser/index.d.ts.map +1 -0
  98. package/dest/node/bb_backends/browser/index.js +39 -0
  99. package/dest/node/bb_backends/index.d.ts +45 -0
  100. package/dest/node/bb_backends/index.d.ts.map +1 -0
  101. package/dest/node/bb_backends/index.js +15 -0
  102. package/dest/node/bb_backends/interface.d.ts +33 -0
  103. package/dest/node/bb_backends/interface.d.ts.map +1 -0
  104. package/dest/node/bb_backends/interface.js +2 -0
  105. package/dest/node/bb_backends/node/index.d.ts +11 -0
  106. package/dest/node/bb_backends/node/index.d.ts.map +1 -0
  107. package/dest/node/bb_backends/node/index.js +80 -0
  108. package/dest/node/bb_backends/node/native_pipe.d.ts +25 -0
  109. package/dest/node/bb_backends/node/native_pipe.d.ts.map +1 -0
  110. package/dest/node/bb_backends/node/native_pipe.js +113 -0
  111. package/dest/node/bb_backends/node/native_shm.d.ts +28 -0
  112. package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -0
  113. package/dest/node/bb_backends/node/native_shm.js +150 -0
  114. package/dest/node/bb_backends/node/native_socket.d.ts +34 -0
  115. package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -0
  116. package/dest/node/bb_backends/node/native_socket.js +269 -0
  117. package/dest/node/bb_backends/node/platform.d.ts +27 -0
  118. package/dest/node/bb_backends/node/platform.d.ts.map +1 -0
  119. package/dest/node/bb_backends/node/platform.js +124 -0
  120. package/dest/node/bb_backends/sync_to_async_adapter.d.ts +15 -0
  121. package/dest/node/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
  122. package/dest/node/bb_backends/sync_to_async_adapter.js +20 -0
  123. package/dest/node/bb_backends/wasm.d.ts +49 -0
  124. package/dest/node/bb_backends/wasm.d.ts.map +1 -0
  125. package/dest/node/bb_backends/wasm.js +83 -0
  126. package/dest/node/bbapi_exception.d.ts +7 -0
  127. package/dest/node/bbapi_exception.d.ts.map +1 -0
  128. package/dest/node/bbapi_exception.js +14 -0
  129. package/dest/node/cbind/generate.js +94 -7
  130. package/dest/node/cbind/generated/api_types.d.ts +1640 -227
  131. package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
  132. package/dest/node/cbind/generated/api_types.js +2366 -478
  133. package/dest/node/cbind/generated/async.d.ts +52 -13
  134. package/dest/node/cbind/generated/async.d.ts.map +1 -1
  135. package/dest/node/cbind/generated/async.js +586 -72
  136. package/dest/node/cbind/generated/curve_constants.d.ts +45 -0
  137. package/dest/node/cbind/generated/curve_constants.d.ts.map +1 -0
  138. package/dest/node/cbind/generated/curve_constants.js +45 -0
  139. package/dest/node/cbind/generated/sync.d.ts +53 -14
  140. package/dest/node/cbind/generated/sync.d.ts.map +1 -1
  141. package/dest/node/cbind/generated/sync.js +548 -72
  142. package/dest/node/cbind/schema_compiler.d.ts +2 -4
  143. package/dest/node/cbind/schema_compiler.d.ts.map +1 -1
  144. package/dest/node/cbind/schema_compiler.js +97 -181
  145. package/dest/node/index.d.ts +4 -2
  146. package/dest/node/index.d.ts.map +1 -1
  147. package/dest/node/index.js +5 -3
  148. package/dest/node/serialize/index.d.ts +0 -2
  149. package/dest/node/serialize/index.d.ts.map +1 -1
  150. package/dest/node/serialize/index.js +1 -3
  151. package/dest/node/serialize/serialize.d.ts +0 -35
  152. package/dest/node/serialize/serialize.d.ts.map +1 -1
  153. package/dest/node/serialize/serialize.js +1 -68
  154. package/dest/node/types/fields.d.ts +6 -26
  155. package/dest/node/types/fields.d.ts.map +1 -1
  156. package/dest/node/types/fields.js +16 -57
  157. package/dest/node/types/index.d.ts +0 -3
  158. package/dest/node/types/index.d.ts.map +1 -1
  159. package/dest/node/types/index.js +1 -4
  160. package/dest/node/types/point.d.ts +8 -6
  161. package/dest/node/types/point.d.ts.map +1 -1
  162. package/dest/node/types/point.js +12 -15
  163. package/dest/node-cjs/barretenberg/backend.d.ts +2 -2
  164. package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
  165. package/dest/node-cjs/barretenberg/backend.js +38 -23
  166. package/dest/node-cjs/barretenberg/blake2s.test.js +19 -16
  167. package/dest/node-cjs/barretenberg/index.d.ts +45 -44
  168. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
  169. package/dest/node-cjs/barretenberg/index.js +137 -85
  170. package/dest/node-cjs/barretenberg/pedersen.test.js +24 -17
  171. package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts +2 -0
  172. package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts.map +1 -0
  173. package/dest/node-cjs/barretenberg/poseidon.bench.test.js +219 -0
  174. package/dest/node-cjs/barretenberg/poseidon.test.js +15 -15
  175. package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  176. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  177. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  178. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +2 -2
  179. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +4 -4
  180. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  181. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +18 -10
  182. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +3 -0
  183. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  184. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +55 -14
  185. package/dest/node-cjs/barretenberg_wasm/index.test.js +11 -10
  186. package/dest/node-cjs/bb_backends/browser/index.d.ts +11 -0
  187. package/dest/node-cjs/bb_backends/browser/index.d.ts.map +1 -0
  188. package/dest/node-cjs/bb_backends/browser/index.js +43 -0
  189. package/dest/node-cjs/bb_backends/index.d.ts +45 -0
  190. package/dest/node-cjs/bb_backends/index.d.ts.map +1 -0
  191. package/dest/node-cjs/bb_backends/index.js +18 -0
  192. package/dest/node-cjs/bb_backends/interface.d.ts +33 -0
  193. package/dest/node-cjs/bb_backends/interface.d.ts.map +1 -0
  194. package/dest/node-cjs/bb_backends/interface.js +3 -0
  195. package/dest/node-cjs/bb_backends/node/index.d.ts +11 -0
  196. package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -0
  197. package/dest/node-cjs/bb_backends/node/index.js +84 -0
  198. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts +25 -0
  199. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts.map +1 -0
  200. package/dest/node-cjs/bb_backends/node/native_pipe.js +117 -0
  201. package/dest/node-cjs/bb_backends/node/native_shm.d.ts +28 -0
  202. package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -0
  203. package/dest/node-cjs/bb_backends/node/native_shm.js +154 -0
  204. package/dest/node-cjs/bb_backends/node/native_socket.d.ts +34 -0
  205. package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -0
  206. package/dest/node-cjs/bb_backends/node/native_socket.js +274 -0
  207. package/dest/node-cjs/bb_backends/node/platform.d.ts +27 -0
  208. package/dest/node-cjs/bb_backends/node/platform.d.ts.map +1 -0
  209. package/dest/node-cjs/bb_backends/node/platform.js +131 -0
  210. package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts +15 -0
  211. package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts.map +1 -0
  212. package/dest/node-cjs/bb_backends/sync_to_async_adapter.js +24 -0
  213. package/dest/node-cjs/bb_backends/wasm.d.ts +49 -0
  214. package/dest/node-cjs/bb_backends/wasm.d.ts.map +1 -0
  215. package/dest/node-cjs/bb_backends/wasm.js +88 -0
  216. package/dest/node-cjs/bbapi_exception.d.ts +7 -0
  217. package/dest/node-cjs/bbapi_exception.d.ts.map +1 -0
  218. package/dest/node-cjs/bbapi_exception.js +18 -0
  219. package/dest/node-cjs/cbind/generate.js +93 -6
  220. package/dest/node-cjs/cbind/generated/api_types.d.ts +1640 -227
  221. package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
  222. package/dest/node-cjs/cbind/generated/api_types.js +2572 -516
  223. package/dest/node-cjs/cbind/generated/async.d.ts +52 -13
  224. package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
  225. package/dest/node-cjs/cbind/generated/async.js +585 -71
  226. package/dest/node-cjs/cbind/generated/curve_constants.d.ts +45 -0
  227. package/dest/node-cjs/cbind/generated/curve_constants.d.ts.map +1 -0
  228. package/dest/node-cjs/cbind/generated/curve_constants.js +48 -0
  229. package/dest/node-cjs/cbind/generated/sync.d.ts +53 -14
  230. package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
  231. package/dest/node-cjs/cbind/generated/sync.js +547 -71
  232. package/dest/node-cjs/cbind/schema_compiler.d.ts +2 -4
  233. package/dest/node-cjs/cbind/schema_compiler.d.ts.map +1 -1
  234. package/dest/node-cjs/cbind/schema_compiler.js +97 -182
  235. package/dest/node-cjs/index.d.ts +4 -2
  236. package/dest/node-cjs/index.d.ts.map +1 -1
  237. package/dest/node-cjs/index.js +24 -9
  238. package/dest/node-cjs/serialize/index.d.ts +0 -2
  239. package/dest/node-cjs/serialize/index.d.ts.map +1 -1
  240. package/dest/node-cjs/serialize/index.js +1 -3
  241. package/dest/node-cjs/serialize/serialize.d.ts +0 -35
  242. package/dest/node-cjs/serialize/serialize.d.ts.map +1 -1
  243. package/dest/node-cjs/serialize/serialize.js +1 -79
  244. package/dest/node-cjs/types/fields.d.ts +6 -26
  245. package/dest/node-cjs/types/fields.d.ts.map +1 -1
  246. package/dest/node-cjs/types/fields.js +16 -58
  247. package/dest/node-cjs/types/index.d.ts +0 -3
  248. package/dest/node-cjs/types/index.d.ts.map +1 -1
  249. package/dest/node-cjs/types/index.js +1 -4
  250. package/dest/node-cjs/types/point.d.ts +8 -6
  251. package/dest/node-cjs/types/point.d.ts.map +1 -1
  252. package/dest/node-cjs/types/point.js +13 -16
  253. package/package.json +6 -6
  254. package/src/barretenberg/__snapshots__/pedersen.test.ts.snap +2 -2
  255. package/src/barretenberg/__snapshots__/poseidon.test.ts.snap +3 -3
  256. package/src/barretenberg/backend.ts +54 -42
  257. package/src/barretenberg/blake2s.test.ts +20 -21
  258. package/src/barretenberg/index.ts +137 -118
  259. package/src/barretenberg/pedersen.test.ts +23 -16
  260. package/src/barretenberg/poseidon.bench.test.ts +268 -0
  261. package/src/barretenberg/poseidon.test.ts +14 -14
  262. package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +3 -3
  263. package/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts +17 -9
  264. package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +67 -16
  265. package/src/barretenberg_wasm/index.test.ts +12 -11
  266. package/src/bb_backends/browser/index.ts +50 -0
  267. package/src/bb_backends/index.ts +49 -0
  268. package/src/bb_backends/interface.ts +35 -0
  269. package/src/bb_backends/node/index.ts +94 -0
  270. package/src/bb_backends/node/native_pipe.ts +127 -0
  271. package/src/bb_backends/node/native_shm.ts +171 -0
  272. package/src/bb_backends/node/native_socket.ts +312 -0
  273. package/src/bb_backends/node/platform.ts +151 -0
  274. package/src/bb_backends/sync_to_async_adapter.ts +21 -0
  275. package/src/bb_backends/wasm.ts +103 -0
  276. package/src/bbapi_exception.ts +13 -0
  277. package/src/cbind/README.md +1 -1
  278. package/src/cbind/generate.ts +99 -6
  279. package/src/cbind/schema_compiler.ts +156 -244
  280. package/src/index.ts +29 -1
  281. package/src/serialize/index.ts +0 -2
  282. package/src/serialize/serialize.ts +0 -82
  283. package/src/types/fields.ts +15 -64
  284. package/src/types/index.ts +0 -3
  285. package/src/types/point.ts +13 -19
  286. package/dest/browser/barretenberg_api/index.d.ts +0 -109
  287. package/dest/browser/barretenberg_api/index.d.ts.map +0 -1
  288. package/dest/browser/barretenberg_api/index.js +0 -699
  289. package/dest/browser/cbind/generated/native.d.ts +0 -31
  290. package/dest/browser/cbind/generated/native.d.ts.map +0 -1
  291. package/dest/browser/cbind/generated/native.js +0 -234
  292. package/dest/browser/serialize/buffer_reader.d.ts +0 -28
  293. package/dest/browser/serialize/buffer_reader.d.ts.map +0 -1
  294. package/dest/browser/serialize/buffer_reader.js +0 -66
  295. package/dest/browser/serialize/output_type.d.ts +0 -11
  296. package/dest/browser/serialize/output_type.d.ts.map +0 -1
  297. package/dest/browser/serialize/output_type.js +0 -44
  298. package/dest/browser/types/fixed_size_buffer.d.ts +0 -26
  299. package/dest/browser/types/fixed_size_buffer.d.ts.map +0 -1
  300. package/dest/browser/types/fixed_size_buffer.js +0 -51
  301. package/dest/browser/types/ptr.d.ts +0 -13
  302. package/dest/browser/types/ptr.d.ts.map +0 -1
  303. package/dest/browser/types/ptr.js +0 -19
  304. package/dest/browser/types/raw_buffer.d.ts +0 -3
  305. package/dest/browser/types/raw_buffer.d.ts.map +0 -1
  306. package/dest/browser/types/raw_buffer.js +0 -5
  307. package/dest/node/barretenberg/common.test.d.ts +0 -2
  308. package/dest/node/barretenberg/common.test.d.ts.map +0 -1
  309. package/dest/node/barretenberg/common.test.js +0 -20
  310. package/dest/node/barretenberg_api/index.d.ts +0 -109
  311. package/dest/node/barretenberg_api/index.d.ts.map +0 -1
  312. package/dest/node/barretenberg_api/index.js +0 -699
  313. package/dest/node/bindgen/function_declaration.d.ts +0 -11
  314. package/dest/node/bindgen/function_declaration.d.ts.map +0 -1
  315. package/dest/node/bindgen/function_declaration.js +0 -2
  316. package/dest/node/bindgen/index.d.ts +0 -2
  317. package/dest/node/bindgen/index.d.ts.map +0 -1
  318. package/dest/node/bindgen/index.js +0 -15
  319. package/dest/node/bindgen/mappings.d.ts +0 -4
  320. package/dest/node/bindgen/mappings.d.ts.map +0 -1
  321. package/dest/node/bindgen/mappings.js +0 -64
  322. package/dest/node/bindgen/rust.d.ts +0 -2
  323. package/dest/node/bindgen/rust.d.ts.map +0 -1
  324. package/dest/node/bindgen/rust.js +0 -43
  325. package/dest/node/bindgen/to_camel_case.d.ts +0 -2
  326. package/dest/node/bindgen/to_camel_case.d.ts.map +0 -1
  327. package/dest/node/bindgen/to_camel_case.js +0 -11
  328. package/dest/node/bindgen/typescript.d.ts +0 -2
  329. package/dest/node/bindgen/typescript.d.ts.map +0 -1
  330. package/dest/node/bindgen/typescript.js +0 -100
  331. package/dest/node/cbind/generated/native.d.ts +0 -31
  332. package/dest/node/cbind/generated/native.d.ts.map +0 -1
  333. package/dest/node/cbind/generated/native.js +0 -234
  334. package/dest/node/main.d.ts +0 -13
  335. package/dest/node/main.d.ts.map +0 -1
  336. package/dest/node/main.js +0 -459
  337. package/dest/node/serialize/buffer_reader.d.ts +0 -28
  338. package/dest/node/serialize/buffer_reader.d.ts.map +0 -1
  339. package/dest/node/serialize/buffer_reader.js +0 -66
  340. package/dest/node/serialize/output_type.d.ts +0 -11
  341. package/dest/node/serialize/output_type.d.ts.map +0 -1
  342. package/dest/node/serialize/output_type.js +0 -44
  343. package/dest/node/types/fixed_size_buffer.d.ts +0 -26
  344. package/dest/node/types/fixed_size_buffer.d.ts.map +0 -1
  345. package/dest/node/types/fixed_size_buffer.js +0 -51
  346. package/dest/node/types/ptr.d.ts +0 -13
  347. package/dest/node/types/ptr.d.ts.map +0 -1
  348. package/dest/node/types/ptr.js +0 -19
  349. package/dest/node/types/raw_buffer.d.ts +0 -3
  350. package/dest/node/types/raw_buffer.d.ts.map +0 -1
  351. package/dest/node/types/raw_buffer.js +0 -5
  352. package/dest/node-cjs/barretenberg/common.test.d.ts +0 -2
  353. package/dest/node-cjs/barretenberg/common.test.d.ts.map +0 -1
  354. package/dest/node-cjs/barretenberg/common.test.js +0 -22
  355. package/dest/node-cjs/barretenberg_api/index.d.ts +0 -109
  356. package/dest/node-cjs/barretenberg_api/index.d.ts.map +0 -1
  357. package/dest/node-cjs/barretenberg_api/index.js +0 -704
  358. package/dest/node-cjs/bindgen/function_declaration.d.ts +0 -11
  359. package/dest/node-cjs/bindgen/function_declaration.d.ts.map +0 -1
  360. package/dest/node-cjs/bindgen/function_declaration.js +0 -3
  361. package/dest/node-cjs/bindgen/index.d.ts +0 -2
  362. package/dest/node-cjs/bindgen/index.d.ts.map +0 -1
  363. package/dest/node-cjs/bindgen/index.js +0 -17
  364. package/dest/node-cjs/bindgen/mappings.d.ts +0 -4
  365. package/dest/node-cjs/bindgen/mappings.d.ts.map +0 -1
  366. package/dest/node-cjs/bindgen/mappings.js +0 -69
  367. package/dest/node-cjs/bindgen/rust.d.ts +0 -2
  368. package/dest/node-cjs/bindgen/rust.d.ts.map +0 -1
  369. package/dest/node-cjs/bindgen/rust.js +0 -47
  370. package/dest/node-cjs/bindgen/to_camel_case.d.ts +0 -2
  371. package/dest/node-cjs/bindgen/to_camel_case.d.ts.map +0 -1
  372. package/dest/node-cjs/bindgen/to_camel_case.js +0 -14
  373. package/dest/node-cjs/bindgen/typescript.d.ts +0 -2
  374. package/dest/node-cjs/bindgen/typescript.d.ts.map +0 -1
  375. package/dest/node-cjs/bindgen/typescript.js +0 -104
  376. package/dest/node-cjs/cbind/generated/native.d.ts +0 -31
  377. package/dest/node-cjs/cbind/generated/native.d.ts.map +0 -1
  378. package/dest/node-cjs/cbind/generated/native.js +0 -238
  379. package/dest/node-cjs/main.d.ts +0 -13
  380. package/dest/node-cjs/main.d.ts.map +0 -1
  381. package/dest/node-cjs/main.js +0 -470
  382. package/dest/node-cjs/serialize/buffer_reader.d.ts +0 -28
  383. package/dest/node-cjs/serialize/buffer_reader.d.ts.map +0 -1
  384. package/dest/node-cjs/serialize/buffer_reader.js +0 -70
  385. package/dest/node-cjs/serialize/output_type.d.ts +0 -11
  386. package/dest/node-cjs/serialize/output_type.d.ts.map +0 -1
  387. package/dest/node-cjs/serialize/output_type.js +0 -51
  388. package/dest/node-cjs/types/fixed_size_buffer.d.ts +0 -26
  389. package/dest/node-cjs/types/fixed_size_buffer.d.ts.map +0 -1
  390. package/dest/node-cjs/types/fixed_size_buffer.js +0 -57
  391. package/dest/node-cjs/types/ptr.d.ts +0 -13
  392. package/dest/node-cjs/types/ptr.d.ts.map +0 -1
  393. package/dest/node-cjs/types/ptr.js +0 -23
  394. package/dest/node-cjs/types/raw_buffer.d.ts +0 -3
  395. package/dest/node-cjs/types/raw_buffer.d.ts.map +0 -1
  396. package/dest/node-cjs/types/raw_buffer.js +0 -9
  397. package/src/barretenberg/common.test.ts +0 -23
  398. package/src/barretenberg_api/index.ts +0 -1216
  399. package/src/bindgen/function_declaration.ts +0 -11
  400. package/src/bindgen/index.ts +0 -17
  401. package/src/bindgen/mappings.ts +0 -67
  402. package/src/bindgen/rust.ts +0 -52
  403. package/src/bindgen/to_camel_case.ts +0 -10
  404. package/src/bindgen/typescript.ts +0 -116
  405. package/src/main.ts +0 -534
  406. package/src/serialize/buffer_reader.ts +0 -85
  407. package/src/serialize/output_type.ts +0 -53
  408. package/src/types/fixed_size_buffer.ts +0 -59
  409. package/src/types/ptr.ts +0 -20
  410. package/src/types/raw_buffer.ts +0 -3
@@ -1,823 +1,2711 @@
1
1
  // AUTOGENERATED FILE - DO NOT EDIT
2
2
  // Conversion functions (exported)
3
- export function toCircuitComputeVk(o) {
4
- if (o.circuit === undefined) {
5
- throw new Error("Expected circuit in CircuitComputeVk deserialization");
3
+ export function toAesDecrypt(o) {
4
+ if (o.ciphertext === undefined) {
5
+ throw new Error("Expected ciphertext in AesDecrypt deserialization");
6
6
  }
7
- if (o.settings === undefined) {
8
- throw new Error("Expected settings in CircuitComputeVk deserialization");
7
+ if (o.iv === undefined) {
8
+ throw new Error("Expected iv in AesDecrypt deserialization");
9
+ }
10
+ if (o.key === undefined) {
11
+ throw new Error("Expected key in AesDecrypt deserialization");
12
+ }
13
+ if (o.length === undefined) {
14
+ throw new Error("Expected length in AesDecrypt deserialization");
9
15
  }
10
16
  ;
11
17
  return {
12
- circuit: toCircuitInputNoVK(o.circuit),
13
- settings: toProofSystemSettings(o.settings),
18
+ ciphertext: o.ciphertext,
19
+ iv: o.iv,
20
+ key: o.key,
21
+ length: o.length,
14
22
  };
15
23
  }
16
- export function fromCircuitComputeVk(o) {
17
- if (o.circuit === undefined) {
18
- throw new Error("Expected circuit in CircuitComputeVk serialization");
24
+ export function fromAesDecrypt(o) {
25
+ if (o.ciphertext === undefined) {
26
+ throw new Error("Expected ciphertext in AesDecrypt serialization");
19
27
  }
20
- if (o.settings === undefined) {
21
- throw new Error("Expected settings in CircuitComputeVk serialization");
28
+ if (o.iv === undefined) {
29
+ throw new Error("Expected iv in AesDecrypt serialization");
30
+ }
31
+ if (o.key === undefined) {
32
+ throw new Error("Expected key in AesDecrypt serialization");
33
+ }
34
+ if (o.length === undefined) {
35
+ throw new Error("Expected length in AesDecrypt serialization");
22
36
  }
23
37
  ;
24
38
  return {
25
- circuit: fromCircuitInputNoVK(o.circuit),
26
- settings: fromProofSystemSettings(o.settings),
39
+ ciphertext: o.ciphertext,
40
+ iv: o.iv,
41
+ key: o.key,
42
+ length: o.length,
27
43
  };
28
44
  }
29
- export function toCircuitComputeVkResponse(o) {
30
- if (o.bytes === undefined) {
31
- throw new Error("Expected bytes in CircuitComputeVkResponse deserialization");
32
- }
33
- if (o.fields === undefined) {
34
- throw new Error("Expected fields in CircuitComputeVkResponse deserialization");
35
- }
36
- if (o.hash === undefined) {
37
- throw new Error("Expected hash in CircuitComputeVkResponse deserialization");
45
+ export function toAesDecryptResponse(o) {
46
+ if (o.plaintext === undefined) {
47
+ throw new Error("Expected plaintext in AesDecryptResponse deserialization");
38
48
  }
39
49
  ;
40
50
  return {
41
- bytes: o.bytes,
42
- fields: o.fields.map((v) => v),
43
- hash: o.hash,
51
+ plaintext: o.plaintext,
44
52
  };
45
53
  }
46
- export function fromCircuitComputeVkResponse(o) {
47
- if (o.bytes === undefined) {
48
- throw new Error("Expected bytes in CircuitComputeVkResponse serialization");
49
- }
50
- if (o.fields === undefined) {
51
- throw new Error("Expected fields in CircuitComputeVkResponse serialization");
52
- }
53
- if (o.hash === undefined) {
54
- throw new Error("Expected hash in CircuitComputeVkResponse serialization");
54
+ export function fromAesDecryptResponse(o) {
55
+ if (o.plaintext === undefined) {
56
+ throw new Error("Expected plaintext in AesDecryptResponse serialization");
55
57
  }
56
58
  ;
57
59
  return {
58
- bytes: o.bytes,
59
- fields: o.fields.map((v) => v),
60
- hash: o.hash,
60
+ plaintext: o.plaintext,
61
61
  };
62
62
  }
63
- export function toCircuitInfoResponse(o) {
64
- if (o.num_gates === undefined) {
65
- throw new Error("Expected num_gates in CircuitInfoResponse deserialization");
63
+ export function toAesEncrypt(o) {
64
+ if (o.plaintext === undefined) {
65
+ throw new Error("Expected plaintext in AesEncrypt deserialization");
66
66
  }
67
- if (o.num_gates_dyadic === undefined) {
68
- throw new Error("Expected num_gates_dyadic in CircuitInfoResponse deserialization");
67
+ if (o.iv === undefined) {
68
+ throw new Error("Expected iv in AesEncrypt deserialization");
69
69
  }
70
- if (o.num_acir_opcodes === undefined) {
71
- throw new Error("Expected num_acir_opcodes in CircuitInfoResponse deserialization");
70
+ if (o.key === undefined) {
71
+ throw new Error("Expected key in AesEncrypt deserialization");
72
72
  }
73
- if (o.gates_per_opcode === undefined) {
74
- throw new Error("Expected gates_per_opcode in CircuitInfoResponse deserialization");
73
+ if (o.length === undefined) {
74
+ throw new Error("Expected length in AesEncrypt deserialization");
75
75
  }
76
76
  ;
77
77
  return {
78
- numGates: o.num_gates,
79
- numGatesDyadic: o.num_gates_dyadic,
80
- numAcirOpcodes: o.num_acir_opcodes,
81
- gatesPerOpcode: o.gates_per_opcode.map((v) => v),
78
+ plaintext: o.plaintext,
79
+ iv: o.iv,
80
+ key: o.key,
81
+ length: o.length,
82
82
  };
83
83
  }
84
- export function fromCircuitInfoResponse(o) {
85
- if (o.numGates === undefined) {
86
- throw new Error("Expected numGates in CircuitInfoResponse serialization");
84
+ export function fromAesEncrypt(o) {
85
+ if (o.plaintext === undefined) {
86
+ throw new Error("Expected plaintext in AesEncrypt serialization");
87
87
  }
88
- if (o.numGatesDyadic === undefined) {
89
- throw new Error("Expected numGatesDyadic in CircuitInfoResponse serialization");
88
+ if (o.iv === undefined) {
89
+ throw new Error("Expected iv in AesEncrypt serialization");
90
90
  }
91
- if (o.numAcirOpcodes === undefined) {
92
- throw new Error("Expected numAcirOpcodes in CircuitInfoResponse serialization");
91
+ if (o.key === undefined) {
92
+ throw new Error("Expected key in AesEncrypt serialization");
93
93
  }
94
- if (o.gatesPerOpcode === undefined) {
95
- throw new Error("Expected gatesPerOpcode in CircuitInfoResponse serialization");
94
+ if (o.length === undefined) {
95
+ throw new Error("Expected length in AesEncrypt serialization");
96
96
  }
97
97
  ;
98
98
  return {
99
- num_gates: o.numGates,
100
- num_gates_dyadic: o.numGatesDyadic,
101
- num_acir_opcodes: o.numAcirOpcodes,
102
- gates_per_opcode: o.gatesPerOpcode.map((v) => v),
99
+ plaintext: o.plaintext,
100
+ iv: o.iv,
101
+ key: o.key,
102
+ length: o.length,
103
103
  };
104
104
  }
105
- export function toCircuitInput(o) {
106
- if (o.name === undefined) {
107
- throw new Error("Expected name in CircuitInput deserialization");
108
- }
109
- if (o.bytecode === undefined) {
110
- throw new Error("Expected bytecode in CircuitInput deserialization");
111
- }
112
- if (o.verification_key === undefined) {
113
- throw new Error("Expected verification_key in CircuitInput deserialization");
105
+ export function toAesEncryptResponse(o) {
106
+ if (o.ciphertext === undefined) {
107
+ throw new Error("Expected ciphertext in AesEncryptResponse deserialization");
114
108
  }
115
109
  ;
116
110
  return {
117
- name: o.name,
118
- bytecode: o.bytecode,
119
- verificationKey: o.verification_key,
111
+ ciphertext: o.ciphertext,
120
112
  };
121
113
  }
122
- export function fromCircuitInput(o) {
123
- if (o.name === undefined) {
124
- throw new Error("Expected name in CircuitInput serialization");
125
- }
126
- if (o.bytecode === undefined) {
127
- throw new Error("Expected bytecode in CircuitInput serialization");
128
- }
129
- if (o.verificationKey === undefined) {
130
- throw new Error("Expected verificationKey in CircuitInput serialization");
114
+ export function fromAesEncryptResponse(o) {
115
+ if (o.ciphertext === undefined) {
116
+ throw new Error("Expected ciphertext in AesEncryptResponse serialization");
131
117
  }
132
118
  ;
133
119
  return {
134
- name: o.name,
135
- bytecode: o.bytecode,
136
- verification_key: o.verificationKey,
120
+ ciphertext: o.ciphertext,
137
121
  };
138
122
  }
139
- export function toCircuitInputNoVK(o) {
140
- if (o.name === undefined) {
141
- throw new Error("Expected name in CircuitInputNoVK deserialization");
142
- }
143
- if (o.bytecode === undefined) {
144
- throw new Error("Expected bytecode in CircuitInputNoVK deserialization");
123
+ export function toBlake2s(o) {
124
+ if (o.data === undefined) {
125
+ throw new Error("Expected data in Blake2s deserialization");
145
126
  }
146
127
  ;
147
128
  return {
148
- name: o.name,
149
- bytecode: o.bytecode,
129
+ data: o.data,
150
130
  };
151
131
  }
152
- export function fromCircuitInputNoVK(o) {
153
- if (o.name === undefined) {
154
- throw new Error("Expected name in CircuitInputNoVK serialization");
155
- }
156
- if (o.bytecode === undefined) {
157
- throw new Error("Expected bytecode in CircuitInputNoVK serialization");
132
+ export function fromBlake2s(o) {
133
+ if (o.data === undefined) {
134
+ throw new Error("Expected data in Blake2s serialization");
158
135
  }
159
136
  ;
160
137
  return {
161
- name: o.name,
162
- bytecode: o.bytecode,
138
+ data: o.data,
163
139
  };
164
140
  }
165
- export function toCircuitProve(o) {
166
- if (o.circuit === undefined) {
167
- throw new Error("Expected circuit in CircuitProve deserialization");
168
- }
169
- if (o.witness === undefined) {
170
- throw new Error("Expected witness in CircuitProve deserialization");
171
- }
172
- if (o.settings === undefined) {
173
- throw new Error("Expected settings in CircuitProve deserialization");
141
+ export function toBlake2sResponse(o) {
142
+ if (o.hash === undefined) {
143
+ throw new Error("Expected hash in Blake2sResponse deserialization");
174
144
  }
175
145
  ;
176
146
  return {
177
- circuit: toCircuitInput(o.circuit),
178
- witness: o.witness,
179
- settings: toProofSystemSettings(o.settings),
147
+ hash: o.hash,
180
148
  };
181
149
  }
182
- export function fromCircuitProve(o) {
183
- if (o.circuit === undefined) {
184
- throw new Error("Expected circuit in CircuitProve serialization");
185
- }
186
- if (o.witness === undefined) {
187
- throw new Error("Expected witness in CircuitProve serialization");
188
- }
189
- if (o.settings === undefined) {
190
- throw new Error("Expected settings in CircuitProve serialization");
150
+ export function fromBlake2sResponse(o) {
151
+ if (o.hash === undefined) {
152
+ throw new Error("Expected hash in Blake2sResponse serialization");
191
153
  }
192
154
  ;
193
155
  return {
194
- circuit: fromCircuitInput(o.circuit),
195
- witness: o.witness,
196
- settings: fromProofSystemSettings(o.settings),
156
+ hash: o.hash,
197
157
  };
198
158
  }
199
- export function toCircuitProveResponse(o) {
200
- if (o.public_inputs === undefined) {
201
- throw new Error("Expected public_inputs in CircuitProveResponse deserialization");
202
- }
203
- if (o.proof === undefined) {
204
- throw new Error("Expected proof in CircuitProveResponse deserialization");
159
+ export function toBlake2sToField(o) {
160
+ if (o.data === undefined) {
161
+ throw new Error("Expected data in Blake2sToField deserialization");
205
162
  }
206
- if (o.vk === undefined) {
207
- throw new Error("Expected vk in CircuitProveResponse deserialization");
163
+ ;
164
+ return {
165
+ data: o.data,
166
+ };
167
+ }
168
+ export function fromBlake2sToField(o) {
169
+ if (o.data === undefined) {
170
+ throw new Error("Expected data in Blake2sToField serialization");
208
171
  }
209
172
  ;
210
173
  return {
211
- publicInputs: o.public_inputs.map((v) => v),
212
- proof: o.proof.map((v) => v),
213
- vk: toCircuitComputeVkResponse(o.vk),
174
+ data: o.data,
214
175
  };
215
176
  }
216
- export function fromCircuitProveResponse(o) {
217
- if (o.publicInputs === undefined) {
218
- throw new Error("Expected publicInputs in CircuitProveResponse serialization");
177
+ export function toBlake2sToFieldResponse(o) {
178
+ if (o.field === undefined) {
179
+ throw new Error("Expected field in Blake2sToFieldResponse deserialization");
219
180
  }
220
- if (o.proof === undefined) {
221
- throw new Error("Expected proof in CircuitProveResponse serialization");
181
+ ;
182
+ return {
183
+ field: o.field,
184
+ };
185
+ }
186
+ export function fromBlake2sToFieldResponse(o) {
187
+ if (o.field === undefined) {
188
+ throw new Error("Expected field in Blake2sToFieldResponse serialization");
222
189
  }
223
- if (o.vk === undefined) {
224
- throw new Error("Expected vk in CircuitProveResponse serialization");
190
+ ;
191
+ return {
192
+ field: o.field,
193
+ };
194
+ }
195
+ export function toBn254FqSqrt(o) {
196
+ if (o.input === undefined) {
197
+ throw new Error("Expected input in Bn254FqSqrt deserialization");
225
198
  }
226
199
  ;
227
200
  return {
228
- public_inputs: o.publicInputs.map((v) => v),
229
- proof: o.proof.map((v) => v),
230
- vk: fromCircuitComputeVkResponse(o.vk),
201
+ input: o.input,
231
202
  };
232
203
  }
233
- export function toCircuitStats(o) {
234
- if (o.circuit === undefined) {
235
- throw new Error("Expected circuit in CircuitStats deserialization");
204
+ export function fromBn254FqSqrt(o) {
205
+ if (o.input === undefined) {
206
+ throw new Error("Expected input in Bn254FqSqrt serialization");
236
207
  }
237
- if (o.include_gates_per_opcode === undefined) {
238
- throw new Error("Expected include_gates_per_opcode in CircuitStats deserialization");
208
+ ;
209
+ return {
210
+ input: o.input,
211
+ };
212
+ }
213
+ export function toBn254FqSqrtResponse(o) {
214
+ if (o.is_square_root === undefined) {
215
+ throw new Error("Expected is_square_root in Bn254FqSqrtResponse deserialization");
239
216
  }
240
- if (o.settings === undefined) {
241
- throw new Error("Expected settings in CircuitStats deserialization");
217
+ if (o.value === undefined) {
218
+ throw new Error("Expected value in Bn254FqSqrtResponse deserialization");
242
219
  }
243
220
  ;
244
221
  return {
245
- circuit: toCircuitInput(o.circuit),
246
- includeGatesPerOpcode: o.include_gates_per_opcode,
247
- settings: toProofSystemSettings(o.settings),
222
+ isSquareRoot: o.is_square_root,
223
+ value: o.value,
248
224
  };
249
225
  }
250
- export function fromCircuitStats(o) {
251
- if (o.circuit === undefined) {
252
- throw new Error("Expected circuit in CircuitStats serialization");
253
- }
254
- if (o.includeGatesPerOpcode === undefined) {
255
- throw new Error("Expected includeGatesPerOpcode in CircuitStats serialization");
226
+ export function fromBn254FqSqrtResponse(o) {
227
+ if (o.isSquareRoot === undefined) {
228
+ throw new Error("Expected isSquareRoot in Bn254FqSqrtResponse serialization");
256
229
  }
257
- if (o.settings === undefined) {
258
- throw new Error("Expected settings in CircuitStats serialization");
230
+ if (o.value === undefined) {
231
+ throw new Error("Expected value in Bn254FqSqrtResponse serialization");
259
232
  }
260
233
  ;
261
234
  return {
262
- circuit: fromCircuitInput(o.circuit),
263
- include_gates_per_opcode: o.includeGatesPerOpcode,
264
- settings: fromProofSystemSettings(o.settings),
235
+ is_square_root: o.isSquareRoot,
236
+ value: o.value,
265
237
  };
266
238
  }
267
- export function toCircuitVerify(o) {
268
- if (o.verification_key === undefined) {
269
- throw new Error("Expected verification_key in CircuitVerify deserialization");
239
+ export function toBn254FrSqrt(o) {
240
+ if (o.input === undefined) {
241
+ throw new Error("Expected input in Bn254FrSqrt deserialization");
270
242
  }
271
- if (o.public_inputs === undefined) {
272
- throw new Error("Expected public_inputs in CircuitVerify deserialization");
243
+ ;
244
+ return {
245
+ input: o.input,
246
+ };
247
+ }
248
+ export function fromBn254FrSqrt(o) {
249
+ if (o.input === undefined) {
250
+ throw new Error("Expected input in Bn254FrSqrt serialization");
273
251
  }
274
- if (o.proof === undefined) {
275
- throw new Error("Expected proof in CircuitVerify deserialization");
252
+ ;
253
+ return {
254
+ input: o.input,
255
+ };
256
+ }
257
+ export function toBn254FrSqrtResponse(o) {
258
+ if (o.is_square_root === undefined) {
259
+ throw new Error("Expected is_square_root in Bn254FrSqrtResponse deserialization");
276
260
  }
277
- if (o.settings === undefined) {
278
- throw new Error("Expected settings in CircuitVerify deserialization");
261
+ if (o.value === undefined) {
262
+ throw new Error("Expected value in Bn254FrSqrtResponse deserialization");
279
263
  }
280
264
  ;
281
265
  return {
282
- verificationKey: o.verification_key,
283
- publicInputs: o.public_inputs.map((v) => v),
284
- proof: o.proof.map((v) => v),
285
- settings: toProofSystemSettings(o.settings),
266
+ isSquareRoot: o.is_square_root,
267
+ value: o.value,
286
268
  };
287
269
  }
288
- export function fromCircuitVerify(o) {
289
- if (o.verificationKey === undefined) {
290
- throw new Error("Expected verificationKey in CircuitVerify serialization");
291
- }
292
- if (o.publicInputs === undefined) {
293
- throw new Error("Expected publicInputs in CircuitVerify serialization");
270
+ export function fromBn254FrSqrtResponse(o) {
271
+ if (o.isSquareRoot === undefined) {
272
+ throw new Error("Expected isSquareRoot in Bn254FrSqrtResponse serialization");
294
273
  }
295
- if (o.proof === undefined) {
296
- throw new Error("Expected proof in CircuitVerify serialization");
274
+ if (o.value === undefined) {
275
+ throw new Error("Expected value in Bn254FrSqrtResponse serialization");
297
276
  }
298
- if (o.settings === undefined) {
299
- throw new Error("Expected settings in CircuitVerify serialization");
277
+ ;
278
+ return {
279
+ is_square_root: o.isSquareRoot,
280
+ value: o.value,
281
+ };
282
+ }
283
+ export function toBn254G1FromCompressed(o) {
284
+ if (o.compressed === undefined) {
285
+ throw new Error("Expected compressed in Bn254G1FromCompressed deserialization");
300
286
  }
301
287
  ;
302
288
  return {
303
- verification_key: o.verificationKey,
304
- public_inputs: o.publicInputs.map((v) => v),
305
- proof: o.proof.map((v) => v),
306
- settings: fromProofSystemSettings(o.settings),
289
+ compressed: o.compressed,
307
290
  };
308
291
  }
309
- export function toCircuitVerifyResponse(o) {
310
- if (o.verified === undefined) {
311
- throw new Error("Expected verified in CircuitVerifyResponse deserialization");
292
+ export function fromBn254G1FromCompressed(o) {
293
+ if (o.compressed === undefined) {
294
+ throw new Error("Expected compressed in Bn254G1FromCompressed serialization");
312
295
  }
313
296
  ;
314
297
  return {
315
- verified: o.verified,
298
+ compressed: o.compressed,
316
299
  };
317
300
  }
318
- export function fromCircuitVerifyResponse(o) {
319
- if (o.verified === undefined) {
320
- throw new Error("Expected verified in CircuitVerifyResponse serialization");
301
+ export function toBn254G1FromCompressedResponse(o) {
302
+ if (o.point === undefined) {
303
+ throw new Error("Expected point in Bn254G1FromCompressedResponse deserialization");
321
304
  }
322
305
  ;
323
306
  return {
324
- verified: o.verified,
307
+ point: toBn254G1Point(o.point),
325
308
  };
326
309
  }
327
- export function toCircuitWriteSolidityVerifier(o) {
328
- if (o.verification_key === undefined) {
329
- throw new Error("Expected verification_key in CircuitWriteSolidityVerifier deserialization");
310
+ export function fromBn254G1FromCompressedResponse(o) {
311
+ if (o.point === undefined) {
312
+ throw new Error("Expected point in Bn254G1FromCompressedResponse serialization");
330
313
  }
331
- if (o.settings === undefined) {
332
- throw new Error("Expected settings in CircuitWriteSolidityVerifier deserialization");
314
+ ;
315
+ return {
316
+ point: fromBn254G1Point(o.point),
317
+ };
318
+ }
319
+ export function toBn254G1IsOnCurve(o) {
320
+ if (o.point === undefined) {
321
+ throw new Error("Expected point in Bn254G1IsOnCurve deserialization");
333
322
  }
334
323
  ;
335
324
  return {
336
- verificationKey: o.verification_key,
337
- settings: toProofSystemSettings(o.settings),
325
+ point: toBn254G1Point(o.point),
338
326
  };
339
327
  }
340
- export function fromCircuitWriteSolidityVerifier(o) {
341
- if (o.verificationKey === undefined) {
342
- throw new Error("Expected verificationKey in CircuitWriteSolidityVerifier serialization");
328
+ export function fromBn254G1IsOnCurve(o) {
329
+ if (o.point === undefined) {
330
+ throw new Error("Expected point in Bn254G1IsOnCurve serialization");
343
331
  }
344
- if (o.settings === undefined) {
332
+ ;
333
+ return {
334
+ point: fromBn254G1Point(o.point),
335
+ };
336
+ }
337
+ export function toBn254G1IsOnCurveResponse(o) {
338
+ if (o.is_on_curve === undefined) {
339
+ throw new Error("Expected is_on_curve in Bn254G1IsOnCurveResponse deserialization");
340
+ }
341
+ ;
342
+ return {
343
+ isOnCurve: o.is_on_curve,
344
+ };
345
+ }
346
+ export function fromBn254G1IsOnCurveResponse(o) {
347
+ if (o.isOnCurve === undefined) {
348
+ throw new Error("Expected isOnCurve in Bn254G1IsOnCurveResponse serialization");
349
+ }
350
+ ;
351
+ return {
352
+ is_on_curve: o.isOnCurve,
353
+ };
354
+ }
355
+ export function toBn254G1Mul(o) {
356
+ if (o.point === undefined) {
357
+ throw new Error("Expected point in Bn254G1Mul deserialization");
358
+ }
359
+ if (o.scalar === undefined) {
360
+ throw new Error("Expected scalar in Bn254G1Mul deserialization");
361
+ }
362
+ ;
363
+ return {
364
+ point: toBn254G1Point(o.point),
365
+ scalar: o.scalar,
366
+ };
367
+ }
368
+ export function fromBn254G1Mul(o) {
369
+ if (o.point === undefined) {
370
+ throw new Error("Expected point in Bn254G1Mul serialization");
371
+ }
372
+ if (o.scalar === undefined) {
373
+ throw new Error("Expected scalar in Bn254G1Mul serialization");
374
+ }
375
+ ;
376
+ return {
377
+ point: fromBn254G1Point(o.point),
378
+ scalar: o.scalar,
379
+ };
380
+ }
381
+ export function toBn254G1MulResponse(o) {
382
+ if (o.point === undefined) {
383
+ throw new Error("Expected point in Bn254G1MulResponse deserialization");
384
+ }
385
+ ;
386
+ return {
387
+ point: toBn254G1Point(o.point),
388
+ };
389
+ }
390
+ export function fromBn254G1MulResponse(o) {
391
+ if (o.point === undefined) {
392
+ throw new Error("Expected point in Bn254G1MulResponse serialization");
393
+ }
394
+ ;
395
+ return {
396
+ point: fromBn254G1Point(o.point),
397
+ };
398
+ }
399
+ export function toBn254G1Point(o) {
400
+ if (o.x === undefined) {
401
+ throw new Error("Expected x in Bn254G1Point deserialization");
402
+ }
403
+ if (o.y === undefined) {
404
+ throw new Error("Expected y in Bn254G1Point deserialization");
405
+ }
406
+ ;
407
+ return {
408
+ x: o.x,
409
+ y: o.y,
410
+ };
411
+ }
412
+ export function fromBn254G1Point(o) {
413
+ if (o.x === undefined) {
414
+ throw new Error("Expected x in Bn254G1Point serialization");
415
+ }
416
+ if (o.y === undefined) {
417
+ throw new Error("Expected y in Bn254G1Point serialization");
418
+ }
419
+ ;
420
+ return {
421
+ x: o.x,
422
+ y: o.y,
423
+ };
424
+ }
425
+ export function toBn254G2Mul(o) {
426
+ if (o.point === undefined) {
427
+ throw new Error("Expected point in Bn254G2Mul deserialization");
428
+ }
429
+ if (o.scalar === undefined) {
430
+ throw new Error("Expected scalar in Bn254G2Mul deserialization");
431
+ }
432
+ ;
433
+ return {
434
+ point: toBn254G2Point(o.point),
435
+ scalar: o.scalar,
436
+ };
437
+ }
438
+ export function fromBn254G2Mul(o) {
439
+ if (o.point === undefined) {
440
+ throw new Error("Expected point in Bn254G2Mul serialization");
441
+ }
442
+ if (o.scalar === undefined) {
443
+ throw new Error("Expected scalar in Bn254G2Mul serialization");
444
+ }
445
+ ;
446
+ return {
447
+ point: fromBn254G2Point(o.point),
448
+ scalar: o.scalar,
449
+ };
450
+ }
451
+ export function toBn254G2MulResponse(o) {
452
+ if (o.point === undefined) {
453
+ throw new Error("Expected point in Bn254G2MulResponse deserialization");
454
+ }
455
+ ;
456
+ return {
457
+ point: toBn254G2Point(o.point),
458
+ };
459
+ }
460
+ export function fromBn254G2MulResponse(o) {
461
+ if (o.point === undefined) {
462
+ throw new Error("Expected point in Bn254G2MulResponse serialization");
463
+ }
464
+ ;
465
+ return {
466
+ point: fromBn254G2Point(o.point),
467
+ };
468
+ }
469
+ export function toBn254G2Point(o) {
470
+ if (o.x === undefined) {
471
+ throw new Error("Expected x in Bn254G2Point deserialization");
472
+ }
473
+ if (o.y === undefined) {
474
+ throw new Error("Expected y in Bn254G2Point deserialization");
475
+ }
476
+ ;
477
+ return {
478
+ x: o.x,
479
+ y: o.y,
480
+ };
481
+ }
482
+ export function fromBn254G2Point(o) {
483
+ if (o.x === undefined) {
484
+ throw new Error("Expected x in Bn254G2Point serialization");
485
+ }
486
+ if (o.y === undefined) {
487
+ throw new Error("Expected y in Bn254G2Point serialization");
488
+ }
489
+ ;
490
+ return {
491
+ x: o.x,
492
+ y: o.y,
493
+ };
494
+ }
495
+ export function toChonkAccumulate(o) {
496
+ if (o.witness === undefined) {
497
+ throw new Error("Expected witness in ChonkAccumulate deserialization");
498
+ }
499
+ ;
500
+ return {
501
+ witness: o.witness,
502
+ };
503
+ }
504
+ export function fromChonkAccumulate(o) {
505
+ if (o.witness === undefined) {
506
+ throw new Error("Expected witness in ChonkAccumulate serialization");
507
+ }
508
+ ;
509
+ return {
510
+ witness: o.witness,
511
+ };
512
+ }
513
+ export function toChonkAccumulateResponse(o) {
514
+ return {};
515
+ }
516
+ export function fromChonkAccumulateResponse(o) {
517
+ return {};
518
+ }
519
+ export function toChonkCheckPrecomputedVk(o) {
520
+ if (o.circuit === undefined) {
521
+ throw new Error("Expected circuit in ChonkCheckPrecomputedVk deserialization");
522
+ }
523
+ ;
524
+ return {
525
+ circuit: toCircuitInput(o.circuit),
526
+ };
527
+ }
528
+ export function fromChonkCheckPrecomputedVk(o) {
529
+ if (o.circuit === undefined) {
530
+ throw new Error("Expected circuit in ChonkCheckPrecomputedVk serialization");
531
+ }
532
+ ;
533
+ return {
534
+ circuit: fromCircuitInput(o.circuit),
535
+ };
536
+ }
537
+ export function toChonkCheckPrecomputedVkResponse(o) {
538
+ if (o.valid === undefined) {
539
+ throw new Error("Expected valid in ChonkCheckPrecomputedVkResponse deserialization");
540
+ }
541
+ if (o.actual_vk === undefined) {
542
+ throw new Error("Expected actual_vk in ChonkCheckPrecomputedVkResponse deserialization");
543
+ }
544
+ ;
545
+ return {
546
+ valid: o.valid,
547
+ actualVk: o.actual_vk,
548
+ };
549
+ }
550
+ export function fromChonkCheckPrecomputedVkResponse(o) {
551
+ if (o.valid === undefined) {
552
+ throw new Error("Expected valid in ChonkCheckPrecomputedVkResponse serialization");
553
+ }
554
+ if (o.actualVk === undefined) {
555
+ throw new Error("Expected actualVk in ChonkCheckPrecomputedVkResponse serialization");
556
+ }
557
+ ;
558
+ return {
559
+ valid: o.valid,
560
+ actual_vk: o.actualVk,
561
+ };
562
+ }
563
+ export function toChonkComputeIvcVk(o) {
564
+ if (o.circuit === undefined) {
565
+ throw new Error("Expected circuit in ChonkComputeIvcVk deserialization");
566
+ }
567
+ ;
568
+ return {
569
+ circuit: toCircuitInputNoVK(o.circuit),
570
+ };
571
+ }
572
+ export function fromChonkComputeIvcVk(o) {
573
+ if (o.circuit === undefined) {
574
+ throw new Error("Expected circuit in ChonkComputeIvcVk serialization");
575
+ }
576
+ ;
577
+ return {
578
+ circuit: fromCircuitInputNoVK(o.circuit),
579
+ };
580
+ }
581
+ export function toChonkComputeIvcVkResponse(o) {
582
+ if (o.bytes === undefined) {
583
+ throw new Error("Expected bytes in ChonkComputeIvcVkResponse deserialization");
584
+ }
585
+ ;
586
+ return {
587
+ bytes: o.bytes,
588
+ };
589
+ }
590
+ export function fromChonkComputeIvcVkResponse(o) {
591
+ if (o.bytes === undefined) {
592
+ throw new Error("Expected bytes in ChonkComputeIvcVkResponse serialization");
593
+ }
594
+ ;
595
+ return {
596
+ bytes: o.bytes,
597
+ };
598
+ }
599
+ export function toChonkComputeStandaloneVk(o) {
600
+ if (o.circuit === undefined) {
601
+ throw new Error("Expected circuit in ChonkComputeStandaloneVk deserialization");
602
+ }
603
+ ;
604
+ return {
605
+ circuit: toCircuitInputNoVK(o.circuit),
606
+ };
607
+ }
608
+ export function fromChonkComputeStandaloneVk(o) {
609
+ if (o.circuit === undefined) {
610
+ throw new Error("Expected circuit in ChonkComputeStandaloneVk serialization");
611
+ }
612
+ ;
613
+ return {
614
+ circuit: fromCircuitInputNoVK(o.circuit),
615
+ };
616
+ }
617
+ export function toChonkComputeStandaloneVkResponse(o) {
618
+ if (o.bytes === undefined) {
619
+ throw new Error("Expected bytes in ChonkComputeStandaloneVkResponse deserialization");
620
+ }
621
+ if (o.fields === undefined) {
622
+ throw new Error("Expected fields in ChonkComputeStandaloneVkResponse deserialization");
623
+ }
624
+ ;
625
+ return {
626
+ bytes: o.bytes,
627
+ fields: o.fields.map((v) => v),
628
+ };
629
+ }
630
+ export function fromChonkComputeStandaloneVkResponse(o) {
631
+ if (o.bytes === undefined) {
632
+ throw new Error("Expected bytes in ChonkComputeStandaloneVkResponse serialization");
633
+ }
634
+ if (o.fields === undefined) {
635
+ throw new Error("Expected fields in ChonkComputeStandaloneVkResponse serialization");
636
+ }
637
+ ;
638
+ return {
639
+ bytes: o.bytes,
640
+ fields: o.fields.map((v) => v),
641
+ };
642
+ }
643
+ export function toChonkLoad(o) {
644
+ if (o.circuit === undefined) {
645
+ throw new Error("Expected circuit in ChonkLoad deserialization");
646
+ }
647
+ ;
648
+ return {
649
+ circuit: toCircuitInput(o.circuit),
650
+ };
651
+ }
652
+ export function fromChonkLoad(o) {
653
+ if (o.circuit === undefined) {
654
+ throw new Error("Expected circuit in ChonkLoad serialization");
655
+ }
656
+ ;
657
+ return {
658
+ circuit: fromCircuitInput(o.circuit),
659
+ };
660
+ }
661
+ export function toChonkLoadResponse(o) {
662
+ return {};
663
+ }
664
+ export function fromChonkLoadResponse(o) {
665
+ return {};
666
+ }
667
+ export function toChonkProof(o) {
668
+ if (o.mega_proof === undefined) {
669
+ throw new Error("Expected mega_proof in ChonkProof deserialization");
670
+ }
671
+ if (o.goblin_proof === undefined) {
672
+ throw new Error("Expected goblin_proof in ChonkProof deserialization");
673
+ }
674
+ ;
675
+ return {
676
+ megaProof: o.mega_proof.map((v) => v),
677
+ goblinProof: toGoblinProof(o.goblin_proof),
678
+ };
679
+ }
680
+ export function fromChonkProof(o) {
681
+ if (o.megaProof === undefined) {
682
+ throw new Error("Expected megaProof in ChonkProof serialization");
683
+ }
684
+ if (o.goblinProof === undefined) {
685
+ throw new Error("Expected goblinProof in ChonkProof serialization");
686
+ }
687
+ ;
688
+ return {
689
+ mega_proof: o.megaProof.map((v) => v),
690
+ goblin_proof: fromGoblinProof(o.goblinProof),
691
+ };
692
+ }
693
+ export function toChonkProve(o) {
694
+ return {};
695
+ }
696
+ export function fromChonkProve(o) {
697
+ return {};
698
+ }
699
+ export function toChonkProveResponse(o) {
700
+ if (o.proof === undefined) {
701
+ throw new Error("Expected proof in ChonkProveResponse deserialization");
702
+ }
703
+ ;
704
+ return {
705
+ proof: toChonkProof(o.proof),
706
+ };
707
+ }
708
+ export function fromChonkProveResponse(o) {
709
+ if (o.proof === undefined) {
710
+ throw new Error("Expected proof in ChonkProveResponse serialization");
711
+ }
712
+ ;
713
+ return {
714
+ proof: fromChonkProof(o.proof),
715
+ };
716
+ }
717
+ export function toChonkStart(o) {
718
+ if (o.num_circuits === undefined) {
719
+ throw new Error("Expected num_circuits in ChonkStart deserialization");
720
+ }
721
+ ;
722
+ return {
723
+ numCircuits: o.num_circuits,
724
+ };
725
+ }
726
+ export function fromChonkStart(o) {
727
+ if (o.numCircuits === undefined) {
728
+ throw new Error("Expected numCircuits in ChonkStart serialization");
729
+ }
730
+ ;
731
+ return {
732
+ num_circuits: o.numCircuits,
733
+ };
734
+ }
735
+ export function toChonkStartResponse(o) {
736
+ return {};
737
+ }
738
+ export function fromChonkStartResponse(o) {
739
+ return {};
740
+ }
741
+ export function toChonkStats(o) {
742
+ if (o.circuit === undefined) {
743
+ throw new Error("Expected circuit in ChonkStats deserialization");
744
+ }
745
+ if (o.include_gates_per_opcode === undefined) {
746
+ throw new Error("Expected include_gates_per_opcode in ChonkStats deserialization");
747
+ }
748
+ ;
749
+ return {
750
+ circuit: toCircuitInputNoVK(o.circuit),
751
+ includeGatesPerOpcode: o.include_gates_per_opcode,
752
+ };
753
+ }
754
+ export function fromChonkStats(o) {
755
+ if (o.circuit === undefined) {
756
+ throw new Error("Expected circuit in ChonkStats serialization");
757
+ }
758
+ if (o.includeGatesPerOpcode === undefined) {
759
+ throw new Error("Expected includeGatesPerOpcode in ChonkStats serialization");
760
+ }
761
+ ;
762
+ return {
763
+ circuit: fromCircuitInputNoVK(o.circuit),
764
+ include_gates_per_opcode: o.includeGatesPerOpcode,
765
+ };
766
+ }
767
+ export function toChonkStatsResponse(o) {
768
+ if (o.acir_opcodes === undefined) {
769
+ throw new Error("Expected acir_opcodes in ChonkStatsResponse deserialization");
770
+ }
771
+ if (o.circuit_size === undefined) {
772
+ throw new Error("Expected circuit_size in ChonkStatsResponse deserialization");
773
+ }
774
+ if (o.gates_per_opcode === undefined) {
775
+ throw new Error("Expected gates_per_opcode in ChonkStatsResponse deserialization");
776
+ }
777
+ ;
778
+ return {
779
+ acirOpcodes: o.acir_opcodes,
780
+ circuitSize: o.circuit_size,
781
+ gatesPerOpcode: o.gates_per_opcode.map((v) => v),
782
+ };
783
+ }
784
+ export function fromChonkStatsResponse(o) {
785
+ if (o.acirOpcodes === undefined) {
786
+ throw new Error("Expected acirOpcodes in ChonkStatsResponse serialization");
787
+ }
788
+ if (o.circuitSize === undefined) {
789
+ throw new Error("Expected circuitSize in ChonkStatsResponse serialization");
790
+ }
791
+ if (o.gatesPerOpcode === undefined) {
792
+ throw new Error("Expected gatesPerOpcode in ChonkStatsResponse serialization");
793
+ }
794
+ ;
795
+ return {
796
+ acir_opcodes: o.acirOpcodes,
797
+ circuit_size: o.circuitSize,
798
+ gates_per_opcode: o.gatesPerOpcode.map((v) => v),
799
+ };
800
+ }
801
+ export function toChonkVerify(o) {
802
+ if (o.proof === undefined) {
803
+ throw new Error("Expected proof in ChonkVerify deserialization");
804
+ }
805
+ if (o.vk === undefined) {
806
+ throw new Error("Expected vk in ChonkVerify deserialization");
807
+ }
808
+ ;
809
+ return {
810
+ proof: toChonkProof(o.proof),
811
+ vk: o.vk,
812
+ };
813
+ }
814
+ export function fromChonkVerify(o) {
815
+ if (o.proof === undefined) {
816
+ throw new Error("Expected proof in ChonkVerify serialization");
817
+ }
818
+ if (o.vk === undefined) {
819
+ throw new Error("Expected vk in ChonkVerify serialization");
820
+ }
821
+ ;
822
+ return {
823
+ proof: fromChonkProof(o.proof),
824
+ vk: o.vk,
825
+ };
826
+ }
827
+ export function toChonkVerifyResponse(o) {
828
+ if (o.valid === undefined) {
829
+ throw new Error("Expected valid in ChonkVerifyResponse deserialization");
830
+ }
831
+ ;
832
+ return {
833
+ valid: o.valid,
834
+ };
835
+ }
836
+ export function fromChonkVerifyResponse(o) {
837
+ if (o.valid === undefined) {
838
+ throw new Error("Expected valid in ChonkVerifyResponse serialization");
839
+ }
840
+ ;
841
+ return {
842
+ valid: o.valid,
843
+ };
844
+ }
845
+ export function toCircuitComputeVk(o) {
846
+ if (o.circuit === undefined) {
847
+ throw new Error("Expected circuit in CircuitComputeVk deserialization");
848
+ }
849
+ if (o.settings === undefined) {
850
+ throw new Error("Expected settings in CircuitComputeVk deserialization");
851
+ }
852
+ ;
853
+ return {
854
+ circuit: toCircuitInputNoVK(o.circuit),
855
+ settings: toProofSystemSettings(o.settings),
856
+ };
857
+ }
858
+ export function fromCircuitComputeVk(o) {
859
+ if (o.circuit === undefined) {
860
+ throw new Error("Expected circuit in CircuitComputeVk serialization");
861
+ }
862
+ if (o.settings === undefined) {
863
+ throw new Error("Expected settings in CircuitComputeVk serialization");
864
+ }
865
+ ;
866
+ return {
867
+ circuit: fromCircuitInputNoVK(o.circuit),
868
+ settings: fromProofSystemSettings(o.settings),
869
+ };
870
+ }
871
+ export function toCircuitComputeVkResponse(o) {
872
+ if (o.bytes === undefined) {
873
+ throw new Error("Expected bytes in CircuitComputeVkResponse deserialization");
874
+ }
875
+ if (o.fields === undefined) {
876
+ throw new Error("Expected fields in CircuitComputeVkResponse deserialization");
877
+ }
878
+ if (o.hash === undefined) {
879
+ throw new Error("Expected hash in CircuitComputeVkResponse deserialization");
880
+ }
881
+ ;
882
+ return {
883
+ bytes: o.bytes,
884
+ fields: o.fields.map((v) => v),
885
+ hash: o.hash,
886
+ };
887
+ }
888
+ export function fromCircuitComputeVkResponse(o) {
889
+ if (o.bytes === undefined) {
890
+ throw new Error("Expected bytes in CircuitComputeVkResponse serialization");
891
+ }
892
+ if (o.fields === undefined) {
893
+ throw new Error("Expected fields in CircuitComputeVkResponse serialization");
894
+ }
895
+ if (o.hash === undefined) {
896
+ throw new Error("Expected hash in CircuitComputeVkResponse serialization");
897
+ }
898
+ ;
899
+ return {
900
+ bytes: o.bytes,
901
+ fields: o.fields.map((v) => v),
902
+ hash: o.hash,
903
+ };
904
+ }
905
+ export function toCircuitInfoResponse(o) {
906
+ if (o.num_gates === undefined) {
907
+ throw new Error("Expected num_gates in CircuitInfoResponse deserialization");
908
+ }
909
+ if (o.num_gates_dyadic === undefined) {
910
+ throw new Error("Expected num_gates_dyadic in CircuitInfoResponse deserialization");
911
+ }
912
+ if (o.num_acir_opcodes === undefined) {
913
+ throw new Error("Expected num_acir_opcodes in CircuitInfoResponse deserialization");
914
+ }
915
+ if (o.gates_per_opcode === undefined) {
916
+ throw new Error("Expected gates_per_opcode in CircuitInfoResponse deserialization");
917
+ }
918
+ ;
919
+ return {
920
+ numGates: o.num_gates,
921
+ numGatesDyadic: o.num_gates_dyadic,
922
+ numAcirOpcodes: o.num_acir_opcodes,
923
+ gatesPerOpcode: o.gates_per_opcode.map((v) => v),
924
+ };
925
+ }
926
+ export function fromCircuitInfoResponse(o) {
927
+ if (o.numGates === undefined) {
928
+ throw new Error("Expected numGates in CircuitInfoResponse serialization");
929
+ }
930
+ if (o.numGatesDyadic === undefined) {
931
+ throw new Error("Expected numGatesDyadic in CircuitInfoResponse serialization");
932
+ }
933
+ if (o.numAcirOpcodes === undefined) {
934
+ throw new Error("Expected numAcirOpcodes in CircuitInfoResponse serialization");
935
+ }
936
+ if (o.gatesPerOpcode === undefined) {
937
+ throw new Error("Expected gatesPerOpcode in CircuitInfoResponse serialization");
938
+ }
939
+ ;
940
+ return {
941
+ num_gates: o.numGates,
942
+ num_gates_dyadic: o.numGatesDyadic,
943
+ num_acir_opcodes: o.numAcirOpcodes,
944
+ gates_per_opcode: o.gatesPerOpcode.map((v) => v),
945
+ };
946
+ }
947
+ export function toCircuitInput(o) {
948
+ if (o.name === undefined) {
949
+ throw new Error("Expected name in CircuitInput deserialization");
950
+ }
951
+ if (o.bytecode === undefined) {
952
+ throw new Error("Expected bytecode in CircuitInput deserialization");
953
+ }
954
+ if (o.verification_key === undefined) {
955
+ throw new Error("Expected verification_key in CircuitInput deserialization");
956
+ }
957
+ ;
958
+ return {
959
+ name: o.name,
960
+ bytecode: o.bytecode,
961
+ verificationKey: o.verification_key,
962
+ };
963
+ }
964
+ export function fromCircuitInput(o) {
965
+ if (o.name === undefined) {
966
+ throw new Error("Expected name in CircuitInput serialization");
967
+ }
968
+ if (o.bytecode === undefined) {
969
+ throw new Error("Expected bytecode in CircuitInput serialization");
970
+ }
971
+ if (o.verificationKey === undefined) {
972
+ throw new Error("Expected verificationKey in CircuitInput serialization");
973
+ }
974
+ ;
975
+ return {
976
+ name: o.name,
977
+ bytecode: o.bytecode,
978
+ verification_key: o.verificationKey,
979
+ };
980
+ }
981
+ export function toCircuitInputNoVK(o) {
982
+ if (o.name === undefined) {
983
+ throw new Error("Expected name in CircuitInputNoVK deserialization");
984
+ }
985
+ if (o.bytecode === undefined) {
986
+ throw new Error("Expected bytecode in CircuitInputNoVK deserialization");
987
+ }
988
+ ;
989
+ return {
990
+ name: o.name,
991
+ bytecode: o.bytecode,
992
+ };
993
+ }
994
+ export function fromCircuitInputNoVK(o) {
995
+ if (o.name === undefined) {
996
+ throw new Error("Expected name in CircuitInputNoVK serialization");
997
+ }
998
+ if (o.bytecode === undefined) {
999
+ throw new Error("Expected bytecode in CircuitInputNoVK serialization");
1000
+ }
1001
+ ;
1002
+ return {
1003
+ name: o.name,
1004
+ bytecode: o.bytecode,
1005
+ };
1006
+ }
1007
+ export function toCircuitProve(o) {
1008
+ if (o.circuit === undefined) {
1009
+ throw new Error("Expected circuit in CircuitProve deserialization");
1010
+ }
1011
+ if (o.witness === undefined) {
1012
+ throw new Error("Expected witness in CircuitProve deserialization");
1013
+ }
1014
+ if (o.settings === undefined) {
1015
+ throw new Error("Expected settings in CircuitProve deserialization");
1016
+ }
1017
+ ;
1018
+ return {
1019
+ circuit: toCircuitInput(o.circuit),
1020
+ witness: o.witness,
1021
+ settings: toProofSystemSettings(o.settings),
1022
+ };
1023
+ }
1024
+ export function fromCircuitProve(o) {
1025
+ if (o.circuit === undefined) {
1026
+ throw new Error("Expected circuit in CircuitProve serialization");
1027
+ }
1028
+ if (o.witness === undefined) {
1029
+ throw new Error("Expected witness in CircuitProve serialization");
1030
+ }
1031
+ if (o.settings === undefined) {
1032
+ throw new Error("Expected settings in CircuitProve serialization");
1033
+ }
1034
+ ;
1035
+ return {
1036
+ circuit: fromCircuitInput(o.circuit),
1037
+ witness: o.witness,
1038
+ settings: fromProofSystemSettings(o.settings),
1039
+ };
1040
+ }
1041
+ export function toCircuitProveResponse(o) {
1042
+ if (o.public_inputs === undefined) {
1043
+ throw new Error("Expected public_inputs in CircuitProveResponse deserialization");
1044
+ }
1045
+ if (o.proof === undefined) {
1046
+ throw new Error("Expected proof in CircuitProveResponse deserialization");
1047
+ }
1048
+ if (o.vk === undefined) {
1049
+ throw new Error("Expected vk in CircuitProveResponse deserialization");
1050
+ }
1051
+ ;
1052
+ return {
1053
+ publicInputs: o.public_inputs.map((v) => v),
1054
+ proof: o.proof.map((v) => v),
1055
+ vk: toCircuitComputeVkResponse(o.vk),
1056
+ };
1057
+ }
1058
+ export function fromCircuitProveResponse(o) {
1059
+ if (o.publicInputs === undefined) {
1060
+ throw new Error("Expected publicInputs in CircuitProveResponse serialization");
1061
+ }
1062
+ if (o.proof === undefined) {
1063
+ throw new Error("Expected proof in CircuitProveResponse serialization");
1064
+ }
1065
+ if (o.vk === undefined) {
1066
+ throw new Error("Expected vk in CircuitProveResponse serialization");
1067
+ }
1068
+ ;
1069
+ return {
1070
+ public_inputs: o.publicInputs.map((v) => v),
1071
+ proof: o.proof.map((v) => v),
1072
+ vk: fromCircuitComputeVkResponse(o.vk),
1073
+ };
1074
+ }
1075
+ export function toCircuitStats(o) {
1076
+ if (o.circuit === undefined) {
1077
+ throw new Error("Expected circuit in CircuitStats deserialization");
1078
+ }
1079
+ if (o.include_gates_per_opcode === undefined) {
1080
+ throw new Error("Expected include_gates_per_opcode in CircuitStats deserialization");
1081
+ }
1082
+ if (o.settings === undefined) {
1083
+ throw new Error("Expected settings in CircuitStats deserialization");
1084
+ }
1085
+ ;
1086
+ return {
1087
+ circuit: toCircuitInput(o.circuit),
1088
+ includeGatesPerOpcode: o.include_gates_per_opcode,
1089
+ settings: toProofSystemSettings(o.settings),
1090
+ };
1091
+ }
1092
+ export function fromCircuitStats(o) {
1093
+ if (o.circuit === undefined) {
1094
+ throw new Error("Expected circuit in CircuitStats serialization");
1095
+ }
1096
+ if (o.includeGatesPerOpcode === undefined) {
1097
+ throw new Error("Expected includeGatesPerOpcode in CircuitStats serialization");
1098
+ }
1099
+ if (o.settings === undefined) {
1100
+ throw new Error("Expected settings in CircuitStats serialization");
1101
+ }
1102
+ ;
1103
+ return {
1104
+ circuit: fromCircuitInput(o.circuit),
1105
+ include_gates_per_opcode: o.includeGatesPerOpcode,
1106
+ settings: fromProofSystemSettings(o.settings),
1107
+ };
1108
+ }
1109
+ export function toCircuitVerify(o) {
1110
+ if (o.verification_key === undefined) {
1111
+ throw new Error("Expected verification_key in CircuitVerify deserialization");
1112
+ }
1113
+ if (o.public_inputs === undefined) {
1114
+ throw new Error("Expected public_inputs in CircuitVerify deserialization");
1115
+ }
1116
+ if (o.proof === undefined) {
1117
+ throw new Error("Expected proof in CircuitVerify deserialization");
1118
+ }
1119
+ if (o.settings === undefined) {
1120
+ throw new Error("Expected settings in CircuitVerify deserialization");
1121
+ }
1122
+ ;
1123
+ return {
1124
+ verificationKey: o.verification_key,
1125
+ publicInputs: o.public_inputs.map((v) => v),
1126
+ proof: o.proof.map((v) => v),
1127
+ settings: toProofSystemSettings(o.settings),
1128
+ };
1129
+ }
1130
+ export function fromCircuitVerify(o) {
1131
+ if (o.verificationKey === undefined) {
1132
+ throw new Error("Expected verificationKey in CircuitVerify serialization");
1133
+ }
1134
+ if (o.publicInputs === undefined) {
1135
+ throw new Error("Expected publicInputs in CircuitVerify serialization");
1136
+ }
1137
+ if (o.proof === undefined) {
1138
+ throw new Error("Expected proof in CircuitVerify serialization");
1139
+ }
1140
+ if (o.settings === undefined) {
1141
+ throw new Error("Expected settings in CircuitVerify serialization");
1142
+ }
1143
+ ;
1144
+ return {
1145
+ verification_key: o.verificationKey,
1146
+ public_inputs: o.publicInputs.map((v) => v),
1147
+ proof: o.proof.map((v) => v),
1148
+ settings: fromProofSystemSettings(o.settings),
1149
+ };
1150
+ }
1151
+ export function toCircuitVerifyResponse(o) {
1152
+ if (o.verified === undefined) {
1153
+ throw new Error("Expected verified in CircuitVerifyResponse deserialization");
1154
+ }
1155
+ ;
1156
+ return {
1157
+ verified: o.verified,
1158
+ };
1159
+ }
1160
+ export function fromCircuitVerifyResponse(o) {
1161
+ if (o.verified === undefined) {
1162
+ throw new Error("Expected verified in CircuitVerifyResponse serialization");
1163
+ }
1164
+ ;
1165
+ return {
1166
+ verified: o.verified,
1167
+ };
1168
+ }
1169
+ export function toCircuitWriteSolidityVerifier(o) {
1170
+ if (o.verification_key === undefined) {
1171
+ throw new Error("Expected verification_key in CircuitWriteSolidityVerifier deserialization");
1172
+ }
1173
+ if (o.settings === undefined) {
1174
+ throw new Error("Expected settings in CircuitWriteSolidityVerifier deserialization");
1175
+ }
1176
+ ;
1177
+ return {
1178
+ verificationKey: o.verification_key,
1179
+ settings: toProofSystemSettings(o.settings),
1180
+ };
1181
+ }
1182
+ export function fromCircuitWriteSolidityVerifier(o) {
1183
+ if (o.verificationKey === undefined) {
1184
+ throw new Error("Expected verificationKey in CircuitWriteSolidityVerifier serialization");
1185
+ }
1186
+ if (o.settings === undefined) {
345
1187
  throw new Error("Expected settings in CircuitWriteSolidityVerifier serialization");
346
1188
  }
347
1189
  ;
348
1190
  return {
349
- verification_key: o.verificationKey,
350
- settings: fromProofSystemSettings(o.settings),
1191
+ verification_key: o.verificationKey,
1192
+ settings: fromProofSystemSettings(o.settings),
1193
+ };
1194
+ }
1195
+ export function toCircuitWriteSolidityVerifierResponse(o) {
1196
+ if (o.solidity_code === undefined) {
1197
+ throw new Error("Expected solidity_code in CircuitWriteSolidityVerifierResponse deserialization");
1198
+ }
1199
+ ;
1200
+ return {
1201
+ solidityCode: o.solidity_code,
1202
+ };
1203
+ }
1204
+ export function fromCircuitWriteSolidityVerifierResponse(o) {
1205
+ if (o.solidityCode === undefined) {
1206
+ throw new Error("Expected solidityCode in CircuitWriteSolidityVerifierResponse serialization");
1207
+ }
1208
+ ;
1209
+ return {
1210
+ solidity_code: o.solidityCode,
1211
+ };
1212
+ }
1213
+ export function toECCVMProof(o) {
1214
+ if (o.pre_ipa_proof === undefined) {
1215
+ throw new Error("Expected pre_ipa_proof in ECCVMProof deserialization");
1216
+ }
1217
+ if (o.ipa_proof === undefined) {
1218
+ throw new Error("Expected ipa_proof in ECCVMProof deserialization");
1219
+ }
1220
+ ;
1221
+ return {
1222
+ preIpaProof: o.pre_ipa_proof.map((v) => v),
1223
+ ipaProof: o.ipa_proof.map((v) => v),
1224
+ };
1225
+ }
1226
+ export function fromECCVMProof(o) {
1227
+ if (o.preIpaProof === undefined) {
1228
+ throw new Error("Expected preIpaProof in ECCVMProof serialization");
1229
+ }
1230
+ if (o.ipaProof === undefined) {
1231
+ throw new Error("Expected ipaProof in ECCVMProof serialization");
1232
+ }
1233
+ ;
1234
+ return {
1235
+ pre_ipa_proof: o.preIpaProof.map((v) => v),
1236
+ ipa_proof: o.ipaProof.map((v) => v),
1237
+ };
1238
+ }
1239
+ export function toEcdsaSecp256k1ComputePublicKey(o) {
1240
+ if (o.private_key === undefined) {
1241
+ throw new Error("Expected private_key in EcdsaSecp256k1ComputePublicKey deserialization");
1242
+ }
1243
+ ;
1244
+ return {
1245
+ privateKey: o.private_key,
1246
+ };
1247
+ }
1248
+ export function fromEcdsaSecp256k1ComputePublicKey(o) {
1249
+ if (o.privateKey === undefined) {
1250
+ throw new Error("Expected privateKey in EcdsaSecp256k1ComputePublicKey serialization");
1251
+ }
1252
+ ;
1253
+ return {
1254
+ private_key: o.privateKey,
1255
+ };
1256
+ }
1257
+ export function toEcdsaSecp256k1ComputePublicKeyResponse(o) {
1258
+ if (o.public_key === undefined) {
1259
+ throw new Error("Expected public_key in EcdsaSecp256k1ComputePublicKeyResponse deserialization");
1260
+ }
1261
+ ;
1262
+ return {
1263
+ publicKey: toSecp256k1Point(o.public_key),
1264
+ };
1265
+ }
1266
+ export function fromEcdsaSecp256k1ComputePublicKeyResponse(o) {
1267
+ if (o.publicKey === undefined) {
1268
+ throw new Error("Expected publicKey in EcdsaSecp256k1ComputePublicKeyResponse serialization");
1269
+ }
1270
+ ;
1271
+ return {
1272
+ public_key: fromSecp256k1Point(o.publicKey),
1273
+ };
1274
+ }
1275
+ export function toEcdsaSecp256k1ConstructSignature(o) {
1276
+ if (o.message === undefined) {
1277
+ throw new Error("Expected message in EcdsaSecp256k1ConstructSignature deserialization");
1278
+ }
1279
+ if (o.private_key === undefined) {
1280
+ throw new Error("Expected private_key in EcdsaSecp256k1ConstructSignature deserialization");
1281
+ }
1282
+ ;
1283
+ return {
1284
+ message: o.message,
1285
+ privateKey: o.private_key,
1286
+ };
1287
+ }
1288
+ export function fromEcdsaSecp256k1ConstructSignature(o) {
1289
+ if (o.message === undefined) {
1290
+ throw new Error("Expected message in EcdsaSecp256k1ConstructSignature serialization");
1291
+ }
1292
+ if (o.privateKey === undefined) {
1293
+ throw new Error("Expected privateKey in EcdsaSecp256k1ConstructSignature serialization");
1294
+ }
1295
+ ;
1296
+ return {
1297
+ message: o.message,
1298
+ private_key: o.privateKey,
1299
+ };
1300
+ }
1301
+ export function toEcdsaSecp256k1ConstructSignatureResponse(o) {
1302
+ if (o.r === undefined) {
1303
+ throw new Error("Expected r in EcdsaSecp256k1ConstructSignatureResponse deserialization");
1304
+ }
1305
+ if (o.s === undefined) {
1306
+ throw new Error("Expected s in EcdsaSecp256k1ConstructSignatureResponse deserialization");
1307
+ }
1308
+ if (o.v === undefined) {
1309
+ throw new Error("Expected v in EcdsaSecp256k1ConstructSignatureResponse deserialization");
1310
+ }
1311
+ ;
1312
+ return {
1313
+ r: o.r,
1314
+ s: o.s,
1315
+ v: o.v,
1316
+ };
1317
+ }
1318
+ export function fromEcdsaSecp256k1ConstructSignatureResponse(o) {
1319
+ if (o.r === undefined) {
1320
+ throw new Error("Expected r in EcdsaSecp256k1ConstructSignatureResponse serialization");
1321
+ }
1322
+ if (o.s === undefined) {
1323
+ throw new Error("Expected s in EcdsaSecp256k1ConstructSignatureResponse serialization");
1324
+ }
1325
+ if (o.v === undefined) {
1326
+ throw new Error("Expected v in EcdsaSecp256k1ConstructSignatureResponse serialization");
1327
+ }
1328
+ ;
1329
+ return {
1330
+ r: o.r,
1331
+ s: o.s,
1332
+ v: o.v,
1333
+ };
1334
+ }
1335
+ export function toEcdsaSecp256k1RecoverPublicKey(o) {
1336
+ if (o.message === undefined) {
1337
+ throw new Error("Expected message in EcdsaSecp256k1RecoverPublicKey deserialization");
1338
+ }
1339
+ if (o.r === undefined) {
1340
+ throw new Error("Expected r in EcdsaSecp256k1RecoverPublicKey deserialization");
1341
+ }
1342
+ if (o.s === undefined) {
1343
+ throw new Error("Expected s in EcdsaSecp256k1RecoverPublicKey deserialization");
1344
+ }
1345
+ if (o.v === undefined) {
1346
+ throw new Error("Expected v in EcdsaSecp256k1RecoverPublicKey deserialization");
1347
+ }
1348
+ ;
1349
+ return {
1350
+ message: o.message,
1351
+ r: o.r,
1352
+ s: o.s,
1353
+ v: o.v,
1354
+ };
1355
+ }
1356
+ export function fromEcdsaSecp256k1RecoverPublicKey(o) {
1357
+ if (o.message === undefined) {
1358
+ throw new Error("Expected message in EcdsaSecp256k1RecoverPublicKey serialization");
1359
+ }
1360
+ if (o.r === undefined) {
1361
+ throw new Error("Expected r in EcdsaSecp256k1RecoverPublicKey serialization");
1362
+ }
1363
+ if (o.s === undefined) {
1364
+ throw new Error("Expected s in EcdsaSecp256k1RecoverPublicKey serialization");
1365
+ }
1366
+ if (o.v === undefined) {
1367
+ throw new Error("Expected v in EcdsaSecp256k1RecoverPublicKey serialization");
1368
+ }
1369
+ ;
1370
+ return {
1371
+ message: o.message,
1372
+ r: o.r,
1373
+ s: o.s,
1374
+ v: o.v,
1375
+ };
1376
+ }
1377
+ export function toEcdsaSecp256k1RecoverPublicKeyResponse(o) {
1378
+ if (o.public_key === undefined) {
1379
+ throw new Error("Expected public_key in EcdsaSecp256k1RecoverPublicKeyResponse deserialization");
1380
+ }
1381
+ ;
1382
+ return {
1383
+ publicKey: toSecp256k1Point(o.public_key),
1384
+ };
1385
+ }
1386
+ export function fromEcdsaSecp256k1RecoverPublicKeyResponse(o) {
1387
+ if (o.publicKey === undefined) {
1388
+ throw new Error("Expected publicKey in EcdsaSecp256k1RecoverPublicKeyResponse serialization");
1389
+ }
1390
+ ;
1391
+ return {
1392
+ public_key: fromSecp256k1Point(o.publicKey),
1393
+ };
1394
+ }
1395
+ export function toEcdsaSecp256k1VerifySignature(o) {
1396
+ if (o.message === undefined) {
1397
+ throw new Error("Expected message in EcdsaSecp256k1VerifySignature deserialization");
1398
+ }
1399
+ if (o.public_key === undefined) {
1400
+ throw new Error("Expected public_key in EcdsaSecp256k1VerifySignature deserialization");
1401
+ }
1402
+ if (o.r === undefined) {
1403
+ throw new Error("Expected r in EcdsaSecp256k1VerifySignature deserialization");
1404
+ }
1405
+ if (o.s === undefined) {
1406
+ throw new Error("Expected s in EcdsaSecp256k1VerifySignature deserialization");
1407
+ }
1408
+ if (o.v === undefined) {
1409
+ throw new Error("Expected v in EcdsaSecp256k1VerifySignature deserialization");
1410
+ }
1411
+ ;
1412
+ return {
1413
+ message: o.message,
1414
+ publicKey: toSecp256k1Point(o.public_key),
1415
+ r: o.r,
1416
+ s: o.s,
1417
+ v: o.v,
1418
+ };
1419
+ }
1420
+ export function fromEcdsaSecp256k1VerifySignature(o) {
1421
+ if (o.message === undefined) {
1422
+ throw new Error("Expected message in EcdsaSecp256k1VerifySignature serialization");
1423
+ }
1424
+ if (o.publicKey === undefined) {
1425
+ throw new Error("Expected publicKey in EcdsaSecp256k1VerifySignature serialization");
1426
+ }
1427
+ if (o.r === undefined) {
1428
+ throw new Error("Expected r in EcdsaSecp256k1VerifySignature serialization");
1429
+ }
1430
+ if (o.s === undefined) {
1431
+ throw new Error("Expected s in EcdsaSecp256k1VerifySignature serialization");
1432
+ }
1433
+ if (o.v === undefined) {
1434
+ throw new Error("Expected v in EcdsaSecp256k1VerifySignature serialization");
1435
+ }
1436
+ ;
1437
+ return {
1438
+ message: o.message,
1439
+ public_key: fromSecp256k1Point(o.publicKey),
1440
+ r: o.r,
1441
+ s: o.s,
1442
+ v: o.v,
1443
+ };
1444
+ }
1445
+ export function toEcdsaSecp256k1VerifySignatureResponse(o) {
1446
+ if (o.verified === undefined) {
1447
+ throw new Error("Expected verified in EcdsaSecp256k1VerifySignatureResponse deserialization");
1448
+ }
1449
+ ;
1450
+ return {
1451
+ verified: o.verified,
1452
+ };
1453
+ }
1454
+ export function fromEcdsaSecp256k1VerifySignatureResponse(o) {
1455
+ if (o.verified === undefined) {
1456
+ throw new Error("Expected verified in EcdsaSecp256k1VerifySignatureResponse serialization");
1457
+ }
1458
+ ;
1459
+ return {
1460
+ verified: o.verified,
1461
+ };
1462
+ }
1463
+ export function toEcdsaSecp256r1ComputePublicKey(o) {
1464
+ if (o.private_key === undefined) {
1465
+ throw new Error("Expected private_key in EcdsaSecp256r1ComputePublicKey deserialization");
1466
+ }
1467
+ ;
1468
+ return {
1469
+ privateKey: o.private_key,
1470
+ };
1471
+ }
1472
+ export function fromEcdsaSecp256r1ComputePublicKey(o) {
1473
+ if (o.privateKey === undefined) {
1474
+ throw new Error("Expected privateKey in EcdsaSecp256r1ComputePublicKey serialization");
1475
+ }
1476
+ ;
1477
+ return {
1478
+ private_key: o.privateKey,
1479
+ };
1480
+ }
1481
+ export function toEcdsaSecp256r1ComputePublicKeyResponse(o) {
1482
+ if (o.public_key === undefined) {
1483
+ throw new Error("Expected public_key in EcdsaSecp256r1ComputePublicKeyResponse deserialization");
1484
+ }
1485
+ ;
1486
+ return {
1487
+ publicKey: toSecp256r1Point(o.public_key),
1488
+ };
1489
+ }
1490
+ export function fromEcdsaSecp256r1ComputePublicKeyResponse(o) {
1491
+ if (o.publicKey === undefined) {
1492
+ throw new Error("Expected publicKey in EcdsaSecp256r1ComputePublicKeyResponse serialization");
1493
+ }
1494
+ ;
1495
+ return {
1496
+ public_key: fromSecp256r1Point(o.publicKey),
1497
+ };
1498
+ }
1499
+ export function toEcdsaSecp256r1ConstructSignature(o) {
1500
+ if (o.message === undefined) {
1501
+ throw new Error("Expected message in EcdsaSecp256r1ConstructSignature deserialization");
1502
+ }
1503
+ if (o.private_key === undefined) {
1504
+ throw new Error("Expected private_key in EcdsaSecp256r1ConstructSignature deserialization");
1505
+ }
1506
+ ;
1507
+ return {
1508
+ message: o.message,
1509
+ privateKey: o.private_key,
1510
+ };
1511
+ }
1512
+ export function fromEcdsaSecp256r1ConstructSignature(o) {
1513
+ if (o.message === undefined) {
1514
+ throw new Error("Expected message in EcdsaSecp256r1ConstructSignature serialization");
1515
+ }
1516
+ if (o.privateKey === undefined) {
1517
+ throw new Error("Expected privateKey in EcdsaSecp256r1ConstructSignature serialization");
1518
+ }
1519
+ ;
1520
+ return {
1521
+ message: o.message,
1522
+ private_key: o.privateKey,
1523
+ };
1524
+ }
1525
+ export function toEcdsaSecp256r1ConstructSignatureResponse(o) {
1526
+ if (o.r === undefined) {
1527
+ throw new Error("Expected r in EcdsaSecp256r1ConstructSignatureResponse deserialization");
1528
+ }
1529
+ if (o.s === undefined) {
1530
+ throw new Error("Expected s in EcdsaSecp256r1ConstructSignatureResponse deserialization");
1531
+ }
1532
+ if (o.v === undefined) {
1533
+ throw new Error("Expected v in EcdsaSecp256r1ConstructSignatureResponse deserialization");
1534
+ }
1535
+ ;
1536
+ return {
1537
+ r: o.r,
1538
+ s: o.s,
1539
+ v: o.v,
1540
+ };
1541
+ }
1542
+ export function fromEcdsaSecp256r1ConstructSignatureResponse(o) {
1543
+ if (o.r === undefined) {
1544
+ throw new Error("Expected r in EcdsaSecp256r1ConstructSignatureResponse serialization");
1545
+ }
1546
+ if (o.s === undefined) {
1547
+ throw new Error("Expected s in EcdsaSecp256r1ConstructSignatureResponse serialization");
1548
+ }
1549
+ if (o.v === undefined) {
1550
+ throw new Error("Expected v in EcdsaSecp256r1ConstructSignatureResponse serialization");
1551
+ }
1552
+ ;
1553
+ return {
1554
+ r: o.r,
1555
+ s: o.s,
1556
+ v: o.v,
1557
+ };
1558
+ }
1559
+ export function toEcdsaSecp256r1RecoverPublicKey(o) {
1560
+ if (o.message === undefined) {
1561
+ throw new Error("Expected message in EcdsaSecp256r1RecoverPublicKey deserialization");
1562
+ }
1563
+ if (o.r === undefined) {
1564
+ throw new Error("Expected r in EcdsaSecp256r1RecoverPublicKey deserialization");
1565
+ }
1566
+ if (o.s === undefined) {
1567
+ throw new Error("Expected s in EcdsaSecp256r1RecoverPublicKey deserialization");
1568
+ }
1569
+ if (o.v === undefined) {
1570
+ throw new Error("Expected v in EcdsaSecp256r1RecoverPublicKey deserialization");
1571
+ }
1572
+ ;
1573
+ return {
1574
+ message: o.message,
1575
+ r: o.r,
1576
+ s: o.s,
1577
+ v: o.v,
1578
+ };
1579
+ }
1580
+ export function fromEcdsaSecp256r1RecoverPublicKey(o) {
1581
+ if (o.message === undefined) {
1582
+ throw new Error("Expected message in EcdsaSecp256r1RecoverPublicKey serialization");
1583
+ }
1584
+ if (o.r === undefined) {
1585
+ throw new Error("Expected r in EcdsaSecp256r1RecoverPublicKey serialization");
1586
+ }
1587
+ if (o.s === undefined) {
1588
+ throw new Error("Expected s in EcdsaSecp256r1RecoverPublicKey serialization");
1589
+ }
1590
+ if (o.v === undefined) {
1591
+ throw new Error("Expected v in EcdsaSecp256r1RecoverPublicKey serialization");
1592
+ }
1593
+ ;
1594
+ return {
1595
+ message: o.message,
1596
+ r: o.r,
1597
+ s: o.s,
1598
+ v: o.v,
1599
+ };
1600
+ }
1601
+ export function toEcdsaSecp256r1RecoverPublicKeyResponse(o) {
1602
+ if (o.public_key === undefined) {
1603
+ throw new Error("Expected public_key in EcdsaSecp256r1RecoverPublicKeyResponse deserialization");
1604
+ }
1605
+ ;
1606
+ return {
1607
+ publicKey: toSecp256r1Point(o.public_key),
1608
+ };
1609
+ }
1610
+ export function fromEcdsaSecp256r1RecoverPublicKeyResponse(o) {
1611
+ if (o.publicKey === undefined) {
1612
+ throw new Error("Expected publicKey in EcdsaSecp256r1RecoverPublicKeyResponse serialization");
1613
+ }
1614
+ ;
1615
+ return {
1616
+ public_key: fromSecp256r1Point(o.publicKey),
1617
+ };
1618
+ }
1619
+ export function toEcdsaSecp256r1VerifySignature(o) {
1620
+ if (o.message === undefined) {
1621
+ throw new Error("Expected message in EcdsaSecp256r1VerifySignature deserialization");
1622
+ }
1623
+ if (o.public_key === undefined) {
1624
+ throw new Error("Expected public_key in EcdsaSecp256r1VerifySignature deserialization");
1625
+ }
1626
+ if (o.r === undefined) {
1627
+ throw new Error("Expected r in EcdsaSecp256r1VerifySignature deserialization");
1628
+ }
1629
+ if (o.s === undefined) {
1630
+ throw new Error("Expected s in EcdsaSecp256r1VerifySignature deserialization");
1631
+ }
1632
+ if (o.v === undefined) {
1633
+ throw new Error("Expected v in EcdsaSecp256r1VerifySignature deserialization");
1634
+ }
1635
+ ;
1636
+ return {
1637
+ message: o.message,
1638
+ publicKey: toSecp256r1Point(o.public_key),
1639
+ r: o.r,
1640
+ s: o.s,
1641
+ v: o.v,
1642
+ };
1643
+ }
1644
+ export function fromEcdsaSecp256r1VerifySignature(o) {
1645
+ if (o.message === undefined) {
1646
+ throw new Error("Expected message in EcdsaSecp256r1VerifySignature serialization");
1647
+ }
1648
+ if (o.publicKey === undefined) {
1649
+ throw new Error("Expected publicKey in EcdsaSecp256r1VerifySignature serialization");
1650
+ }
1651
+ if (o.r === undefined) {
1652
+ throw new Error("Expected r in EcdsaSecp256r1VerifySignature serialization");
1653
+ }
1654
+ if (o.s === undefined) {
1655
+ throw new Error("Expected s in EcdsaSecp256r1VerifySignature serialization");
1656
+ }
1657
+ if (o.v === undefined) {
1658
+ throw new Error("Expected v in EcdsaSecp256r1VerifySignature serialization");
1659
+ }
1660
+ ;
1661
+ return {
1662
+ message: o.message,
1663
+ public_key: fromSecp256r1Point(o.publicKey),
1664
+ r: o.r,
1665
+ s: o.s,
1666
+ v: o.v,
1667
+ };
1668
+ }
1669
+ export function toEcdsaSecp256r1VerifySignatureResponse(o) {
1670
+ if (o.verified === undefined) {
1671
+ throw new Error("Expected verified in EcdsaSecp256r1VerifySignatureResponse deserialization");
1672
+ }
1673
+ ;
1674
+ return {
1675
+ verified: o.verified,
1676
+ };
1677
+ }
1678
+ export function fromEcdsaSecp256r1VerifySignatureResponse(o) {
1679
+ if (o.verified === undefined) {
1680
+ throw new Error("Expected verified in EcdsaSecp256r1VerifySignatureResponse serialization");
1681
+ }
1682
+ ;
1683
+ return {
1684
+ verified: o.verified,
1685
+ };
1686
+ }
1687
+ export function toErrorResponse(o) {
1688
+ if (o.message === undefined) {
1689
+ throw new Error("Expected message in ErrorResponse deserialization");
1690
+ }
1691
+ ;
1692
+ return {
1693
+ message: o.message,
1694
+ };
1695
+ }
1696
+ export function fromErrorResponse(o) {
1697
+ if (o.message === undefined) {
1698
+ throw new Error("Expected message in ErrorResponse serialization");
1699
+ }
1700
+ ;
1701
+ return {
1702
+ message: o.message,
1703
+ };
1704
+ }
1705
+ export function toGoblinProof(o) {
1706
+ if (o.merge_proof === undefined) {
1707
+ throw new Error("Expected merge_proof in GoblinProof deserialization");
1708
+ }
1709
+ if (o.eccvm_proof === undefined) {
1710
+ throw new Error("Expected eccvm_proof in GoblinProof deserialization");
1711
+ }
1712
+ if (o.translator_proof === undefined) {
1713
+ throw new Error("Expected translator_proof in GoblinProof deserialization");
1714
+ }
1715
+ ;
1716
+ return {
1717
+ mergeProof: o.merge_proof.map((v) => v),
1718
+ eccvmProof: toECCVMProof(o.eccvm_proof),
1719
+ translatorProof: o.translator_proof.map((v) => v),
1720
+ };
1721
+ }
1722
+ export function fromGoblinProof(o) {
1723
+ if (o.mergeProof === undefined) {
1724
+ throw new Error("Expected mergeProof in GoblinProof serialization");
1725
+ }
1726
+ if (o.eccvmProof === undefined) {
1727
+ throw new Error("Expected eccvmProof in GoblinProof serialization");
1728
+ }
1729
+ if (o.translatorProof === undefined) {
1730
+ throw new Error("Expected translatorProof in GoblinProof serialization");
1731
+ }
1732
+ ;
1733
+ return {
1734
+ merge_proof: o.mergeProof.map((v) => v),
1735
+ eccvm_proof: fromECCVMProof(o.eccvmProof),
1736
+ translator_proof: o.translatorProof.map((v) => v),
1737
+ };
1738
+ }
1739
+ export function toGrumpkinAdd(o) {
1740
+ if (o.point_a === undefined) {
1741
+ throw new Error("Expected point_a in GrumpkinAdd deserialization");
1742
+ }
1743
+ if (o.point_b === undefined) {
1744
+ throw new Error("Expected point_b in GrumpkinAdd deserialization");
1745
+ }
1746
+ ;
1747
+ return {
1748
+ pointA: toGrumpkinPoint(o.point_a),
1749
+ pointB: toGrumpkinPoint(o.point_b),
1750
+ };
1751
+ }
1752
+ export function fromGrumpkinAdd(o) {
1753
+ if (o.pointA === undefined) {
1754
+ throw new Error("Expected pointA in GrumpkinAdd serialization");
1755
+ }
1756
+ if (o.pointB === undefined) {
1757
+ throw new Error("Expected pointB in GrumpkinAdd serialization");
1758
+ }
1759
+ ;
1760
+ return {
1761
+ point_a: fromGrumpkinPoint(o.pointA),
1762
+ point_b: fromGrumpkinPoint(o.pointB),
1763
+ };
1764
+ }
1765
+ export function toGrumpkinAddResponse(o) {
1766
+ if (o.point === undefined) {
1767
+ throw new Error("Expected point in GrumpkinAddResponse deserialization");
1768
+ }
1769
+ ;
1770
+ return {
1771
+ point: toGrumpkinPoint(o.point),
1772
+ };
1773
+ }
1774
+ export function fromGrumpkinAddResponse(o) {
1775
+ if (o.point === undefined) {
1776
+ throw new Error("Expected point in GrumpkinAddResponse serialization");
1777
+ }
1778
+ ;
1779
+ return {
1780
+ point: fromGrumpkinPoint(o.point),
1781
+ };
1782
+ }
1783
+ export function toGrumpkinBatchMul(o) {
1784
+ if (o.points === undefined) {
1785
+ throw new Error("Expected points in GrumpkinBatchMul deserialization");
1786
+ }
1787
+ if (o.scalar === undefined) {
1788
+ throw new Error("Expected scalar in GrumpkinBatchMul deserialization");
1789
+ }
1790
+ ;
1791
+ return {
1792
+ points: o.points.map((v) => v),
1793
+ scalar: o.scalar,
1794
+ };
1795
+ }
1796
+ export function fromGrumpkinBatchMul(o) {
1797
+ if (o.points === undefined) {
1798
+ throw new Error("Expected points in GrumpkinBatchMul serialization");
1799
+ }
1800
+ if (o.scalar === undefined) {
1801
+ throw new Error("Expected scalar in GrumpkinBatchMul serialization");
1802
+ }
1803
+ ;
1804
+ return {
1805
+ points: o.points.map((v) => v),
1806
+ scalar: o.scalar,
1807
+ };
1808
+ }
1809
+ export function toGrumpkinBatchMulResponse(o) {
1810
+ if (o.points === undefined) {
1811
+ throw new Error("Expected points in GrumpkinBatchMulResponse deserialization");
1812
+ }
1813
+ ;
1814
+ return {
1815
+ points: o.points.map((v) => v),
1816
+ };
1817
+ }
1818
+ export function fromGrumpkinBatchMulResponse(o) {
1819
+ if (o.points === undefined) {
1820
+ throw new Error("Expected points in GrumpkinBatchMulResponse serialization");
1821
+ }
1822
+ ;
1823
+ return {
1824
+ points: o.points.map((v) => v),
1825
+ };
1826
+ }
1827
+ export function toGrumpkinGetRandomFr(o) {
1828
+ if (o.dummy === undefined) {
1829
+ throw new Error("Expected dummy in GrumpkinGetRandomFr deserialization");
1830
+ }
1831
+ ;
1832
+ return {
1833
+ dummy: o.dummy,
1834
+ };
1835
+ }
1836
+ export function fromGrumpkinGetRandomFr(o) {
1837
+ if (o.dummy === undefined) {
1838
+ throw new Error("Expected dummy in GrumpkinGetRandomFr serialization");
1839
+ }
1840
+ ;
1841
+ return {
1842
+ dummy: o.dummy,
1843
+ };
1844
+ }
1845
+ export function toGrumpkinGetRandomFrResponse(o) {
1846
+ if (o.value === undefined) {
1847
+ throw new Error("Expected value in GrumpkinGetRandomFrResponse deserialization");
1848
+ }
1849
+ ;
1850
+ return {
1851
+ value: o.value,
1852
+ };
1853
+ }
1854
+ export function fromGrumpkinGetRandomFrResponse(o) {
1855
+ if (o.value === undefined) {
1856
+ throw new Error("Expected value in GrumpkinGetRandomFrResponse serialization");
1857
+ }
1858
+ ;
1859
+ return {
1860
+ value: o.value,
1861
+ };
1862
+ }
1863
+ export function toGrumpkinMul(o) {
1864
+ if (o.point === undefined) {
1865
+ throw new Error("Expected point in GrumpkinMul deserialization");
1866
+ }
1867
+ if (o.scalar === undefined) {
1868
+ throw new Error("Expected scalar in GrumpkinMul deserialization");
1869
+ }
1870
+ ;
1871
+ return {
1872
+ point: toGrumpkinPoint(o.point),
1873
+ scalar: o.scalar,
1874
+ };
1875
+ }
1876
+ export function fromGrumpkinMul(o) {
1877
+ if (o.point === undefined) {
1878
+ throw new Error("Expected point in GrumpkinMul serialization");
1879
+ }
1880
+ if (o.scalar === undefined) {
1881
+ throw new Error("Expected scalar in GrumpkinMul serialization");
1882
+ }
1883
+ ;
1884
+ return {
1885
+ point: fromGrumpkinPoint(o.point),
1886
+ scalar: o.scalar,
1887
+ };
1888
+ }
1889
+ export function toGrumpkinMulResponse(o) {
1890
+ if (o.point === undefined) {
1891
+ throw new Error("Expected point in GrumpkinMulResponse deserialization");
1892
+ }
1893
+ ;
1894
+ return {
1895
+ point: toGrumpkinPoint(o.point),
1896
+ };
1897
+ }
1898
+ export function fromGrumpkinMulResponse(o) {
1899
+ if (o.point === undefined) {
1900
+ throw new Error("Expected point in GrumpkinMulResponse serialization");
1901
+ }
1902
+ ;
1903
+ return {
1904
+ point: fromGrumpkinPoint(o.point),
1905
+ };
1906
+ }
1907
+ export function toGrumpkinPoint(o) {
1908
+ if (o.x === undefined) {
1909
+ throw new Error("Expected x in GrumpkinPoint deserialization");
1910
+ }
1911
+ if (o.y === undefined) {
1912
+ throw new Error("Expected y in GrumpkinPoint deserialization");
1913
+ }
1914
+ ;
1915
+ return {
1916
+ x: o.x,
1917
+ y: o.y,
1918
+ };
1919
+ }
1920
+ export function fromGrumpkinPoint(o) {
1921
+ if (o.x === undefined) {
1922
+ throw new Error("Expected x in GrumpkinPoint serialization");
1923
+ }
1924
+ if (o.y === undefined) {
1925
+ throw new Error("Expected y in GrumpkinPoint serialization");
1926
+ }
1927
+ ;
1928
+ return {
1929
+ x: o.x,
1930
+ y: o.y,
1931
+ };
1932
+ }
1933
+ export function toGrumpkinReduce512(o) {
1934
+ if (o.input === undefined) {
1935
+ throw new Error("Expected input in GrumpkinReduce512 deserialization");
1936
+ }
1937
+ ;
1938
+ return {
1939
+ input: o.input,
1940
+ };
1941
+ }
1942
+ export function fromGrumpkinReduce512(o) {
1943
+ if (o.input === undefined) {
1944
+ throw new Error("Expected input in GrumpkinReduce512 serialization");
1945
+ }
1946
+ ;
1947
+ return {
1948
+ input: o.input,
1949
+ };
1950
+ }
1951
+ export function toGrumpkinReduce512Response(o) {
1952
+ if (o.value === undefined) {
1953
+ throw new Error("Expected value in GrumpkinReduce512Response deserialization");
1954
+ }
1955
+ ;
1956
+ return {
1957
+ value: o.value,
1958
+ };
1959
+ }
1960
+ export function fromGrumpkinReduce512Response(o) {
1961
+ if (o.value === undefined) {
1962
+ throw new Error("Expected value in GrumpkinReduce512Response serialization");
1963
+ }
1964
+ ;
1965
+ return {
1966
+ value: o.value,
1967
+ };
1968
+ }
1969
+ export function toMegaVkAsFields(o) {
1970
+ if (o.verification_key === undefined) {
1971
+ throw new Error("Expected verification_key in MegaVkAsFields deserialization");
1972
+ }
1973
+ ;
1974
+ return {
1975
+ verificationKey: o.verification_key,
1976
+ };
1977
+ }
1978
+ export function fromMegaVkAsFields(o) {
1979
+ if (o.verificationKey === undefined) {
1980
+ throw new Error("Expected verificationKey in MegaVkAsFields serialization");
1981
+ }
1982
+ ;
1983
+ return {
1984
+ verification_key: o.verificationKey,
1985
+ };
1986
+ }
1987
+ export function toMegaVkAsFieldsResponse(o) {
1988
+ if (o.fields === undefined) {
1989
+ throw new Error("Expected fields in MegaVkAsFieldsResponse deserialization");
1990
+ }
1991
+ ;
1992
+ return {
1993
+ fields: o.fields.map((v) => v),
1994
+ };
1995
+ }
1996
+ export function fromMegaVkAsFieldsResponse(o) {
1997
+ if (o.fields === undefined) {
1998
+ throw new Error("Expected fields in MegaVkAsFieldsResponse serialization");
1999
+ }
2000
+ ;
2001
+ return {
2002
+ fields: o.fields.map((v) => v),
2003
+ };
2004
+ }
2005
+ export function toPedersenCommit(o) {
2006
+ if (o.inputs === undefined) {
2007
+ throw new Error("Expected inputs in PedersenCommit deserialization");
2008
+ }
2009
+ if (o.hash_index === undefined) {
2010
+ throw new Error("Expected hash_index in PedersenCommit deserialization");
2011
+ }
2012
+ ;
2013
+ return {
2014
+ inputs: o.inputs.map((v) => v),
2015
+ hashIndex: o.hash_index,
2016
+ };
2017
+ }
2018
+ export function fromPedersenCommit(o) {
2019
+ if (o.inputs === undefined) {
2020
+ throw new Error("Expected inputs in PedersenCommit serialization");
2021
+ }
2022
+ if (o.hashIndex === undefined) {
2023
+ throw new Error("Expected hashIndex in PedersenCommit serialization");
2024
+ }
2025
+ ;
2026
+ return {
2027
+ inputs: o.inputs.map((v) => v),
2028
+ hash_index: o.hashIndex,
2029
+ };
2030
+ }
2031
+ export function toPedersenCommitResponse(o) {
2032
+ if (o.point === undefined) {
2033
+ throw new Error("Expected point in PedersenCommitResponse deserialization");
2034
+ }
2035
+ ;
2036
+ return {
2037
+ point: toGrumpkinPoint(o.point),
2038
+ };
2039
+ }
2040
+ export function fromPedersenCommitResponse(o) {
2041
+ if (o.point === undefined) {
2042
+ throw new Error("Expected point in PedersenCommitResponse serialization");
2043
+ }
2044
+ ;
2045
+ return {
2046
+ point: fromGrumpkinPoint(o.point),
2047
+ };
2048
+ }
2049
+ export function toPedersenHash(o) {
2050
+ if (o.inputs === undefined) {
2051
+ throw new Error("Expected inputs in PedersenHash deserialization");
2052
+ }
2053
+ if (o.hash_index === undefined) {
2054
+ throw new Error("Expected hash_index in PedersenHash deserialization");
2055
+ }
2056
+ ;
2057
+ return {
2058
+ inputs: o.inputs.map((v) => v),
2059
+ hashIndex: o.hash_index,
2060
+ };
2061
+ }
2062
+ export function fromPedersenHash(o) {
2063
+ if (o.inputs === undefined) {
2064
+ throw new Error("Expected inputs in PedersenHash serialization");
2065
+ }
2066
+ if (o.hashIndex === undefined) {
2067
+ throw new Error("Expected hashIndex in PedersenHash serialization");
2068
+ }
2069
+ ;
2070
+ return {
2071
+ inputs: o.inputs.map((v) => v),
2072
+ hash_index: o.hashIndex,
2073
+ };
2074
+ }
2075
+ export function toPedersenHashBuffer(o) {
2076
+ if (o.input === undefined) {
2077
+ throw new Error("Expected input in PedersenHashBuffer deserialization");
2078
+ }
2079
+ if (o.hash_index === undefined) {
2080
+ throw new Error("Expected hash_index in PedersenHashBuffer deserialization");
2081
+ }
2082
+ ;
2083
+ return {
2084
+ input: o.input,
2085
+ hashIndex: o.hash_index,
2086
+ };
2087
+ }
2088
+ export function fromPedersenHashBuffer(o) {
2089
+ if (o.input === undefined) {
2090
+ throw new Error("Expected input in PedersenHashBuffer serialization");
2091
+ }
2092
+ if (o.hashIndex === undefined) {
2093
+ throw new Error("Expected hashIndex in PedersenHashBuffer serialization");
2094
+ }
2095
+ ;
2096
+ return {
2097
+ input: o.input,
2098
+ hash_index: o.hashIndex,
2099
+ };
2100
+ }
2101
+ export function toPedersenHashBufferResponse(o) {
2102
+ if (o.hash === undefined) {
2103
+ throw new Error("Expected hash in PedersenHashBufferResponse deserialization");
2104
+ }
2105
+ ;
2106
+ return {
2107
+ hash: o.hash,
2108
+ };
2109
+ }
2110
+ export function fromPedersenHashBufferResponse(o) {
2111
+ if (o.hash === undefined) {
2112
+ throw new Error("Expected hash in PedersenHashBufferResponse serialization");
2113
+ }
2114
+ ;
2115
+ return {
2116
+ hash: o.hash,
2117
+ };
2118
+ }
2119
+ export function toPedersenHashResponse(o) {
2120
+ if (o.hash === undefined) {
2121
+ throw new Error("Expected hash in PedersenHashResponse deserialization");
2122
+ }
2123
+ ;
2124
+ return {
2125
+ hash: o.hash,
2126
+ };
2127
+ }
2128
+ export function fromPedersenHashResponse(o) {
2129
+ if (o.hash === undefined) {
2130
+ throw new Error("Expected hash in PedersenHashResponse serialization");
2131
+ }
2132
+ ;
2133
+ return {
2134
+ hash: o.hash,
2135
+ };
2136
+ }
2137
+ export function toPoseidon2Hash(o) {
2138
+ if (o.inputs === undefined) {
2139
+ throw new Error("Expected inputs in Poseidon2Hash deserialization");
2140
+ }
2141
+ ;
2142
+ return {
2143
+ inputs: o.inputs.map((v) => v),
2144
+ };
2145
+ }
2146
+ export function fromPoseidon2Hash(o) {
2147
+ if (o.inputs === undefined) {
2148
+ throw new Error("Expected inputs in Poseidon2Hash serialization");
2149
+ }
2150
+ ;
2151
+ return {
2152
+ inputs: o.inputs.map((v) => v),
2153
+ };
2154
+ }
2155
+ export function toPoseidon2HashAccumulate(o) {
2156
+ if (o.inputs === undefined) {
2157
+ throw new Error("Expected inputs in Poseidon2HashAccumulate deserialization");
2158
+ }
2159
+ ;
2160
+ return {
2161
+ inputs: o.inputs.map((v) => v),
2162
+ };
2163
+ }
2164
+ export function fromPoseidon2HashAccumulate(o) {
2165
+ if (o.inputs === undefined) {
2166
+ throw new Error("Expected inputs in Poseidon2HashAccumulate serialization");
2167
+ }
2168
+ ;
2169
+ return {
2170
+ inputs: o.inputs.map((v) => v),
2171
+ };
2172
+ }
2173
+ export function toPoseidon2HashAccumulateResponse(o) {
2174
+ if (o.hash === undefined) {
2175
+ throw new Error("Expected hash in Poseidon2HashAccumulateResponse deserialization");
2176
+ }
2177
+ ;
2178
+ return {
2179
+ hash: o.hash,
2180
+ };
2181
+ }
2182
+ export function fromPoseidon2HashAccumulateResponse(o) {
2183
+ if (o.hash === undefined) {
2184
+ throw new Error("Expected hash in Poseidon2HashAccumulateResponse serialization");
2185
+ }
2186
+ ;
2187
+ return {
2188
+ hash: o.hash,
351
2189
  };
352
2190
  }
353
- export function toCircuitWriteSolidityVerifierResponse(o) {
354
- if (o.solidity_code === undefined) {
355
- throw new Error("Expected solidity_code in CircuitWriteSolidityVerifierResponse deserialization");
2191
+ export function toPoseidon2HashResponse(o) {
2192
+ if (o.hash === undefined) {
2193
+ throw new Error("Expected hash in Poseidon2HashResponse deserialization");
356
2194
  }
357
2195
  ;
358
2196
  return {
359
- solidityCode: o.solidity_code,
2197
+ hash: o.hash,
360
2198
  };
361
2199
  }
362
- export function fromCircuitWriteSolidityVerifierResponse(o) {
363
- if (o.solidityCode === undefined) {
364
- throw new Error("Expected solidityCode in CircuitWriteSolidityVerifierResponse serialization");
2200
+ export function fromPoseidon2HashResponse(o) {
2201
+ if (o.hash === undefined) {
2202
+ throw new Error("Expected hash in Poseidon2HashResponse serialization");
365
2203
  }
366
2204
  ;
367
2205
  return {
368
- solidity_code: o.solidityCode,
2206
+ hash: o.hash,
369
2207
  };
370
2208
  }
371
- export function toClientIvcAccumulate(o) {
372
- if (o.witness === undefined) {
373
- throw new Error("Expected witness in ClientIvcAccumulate deserialization");
2209
+ export function toPoseidon2Permutation(o) {
2210
+ if (o.inputs === undefined) {
2211
+ throw new Error("Expected inputs in Poseidon2Permutation deserialization");
374
2212
  }
375
2213
  ;
376
2214
  return {
377
- witness: o.witness,
2215
+ inputs: o.inputs.map((v) => v),
378
2216
  };
379
2217
  }
380
- export function fromClientIvcAccumulate(o) {
381
- if (o.witness === undefined) {
382
- throw new Error("Expected witness in ClientIvcAccumulate serialization");
2218
+ export function fromPoseidon2Permutation(o) {
2219
+ if (o.inputs === undefined) {
2220
+ throw new Error("Expected inputs in Poseidon2Permutation serialization");
383
2221
  }
384
2222
  ;
385
2223
  return {
386
- witness: o.witness,
2224
+ inputs: o.inputs.map((v) => v),
387
2225
  };
388
2226
  }
389
- export function toClientIvcAccumulateResponse(o) {
390
- return {};
391
- }
392
- export function fromClientIvcAccumulateResponse(o) {
393
- return {};
394
- }
395
- export function toClientIvcCheckPrecomputedVk(o) {
396
- if (o.circuit === undefined) {
397
- throw new Error("Expected circuit in ClientIvcCheckPrecomputedVk deserialization");
2227
+ export function toPoseidon2PermutationResponse(o) {
2228
+ if (o.outputs === undefined) {
2229
+ throw new Error("Expected outputs in Poseidon2PermutationResponse deserialization");
398
2230
  }
399
2231
  ;
400
2232
  return {
401
- circuit: toCircuitInput(o.circuit),
2233
+ outputs: o.outputs.map((v) => v),
402
2234
  };
403
2235
  }
404
- export function fromClientIvcCheckPrecomputedVk(o) {
405
- if (o.circuit === undefined) {
406
- throw new Error("Expected circuit in ClientIvcCheckPrecomputedVk serialization");
2236
+ export function fromPoseidon2PermutationResponse(o) {
2237
+ if (o.outputs === undefined) {
2238
+ throw new Error("Expected outputs in Poseidon2PermutationResponse serialization");
407
2239
  }
408
2240
  ;
409
2241
  return {
410
- circuit: fromCircuitInput(o.circuit),
2242
+ outputs: o.outputs.map((v) => v),
411
2243
  };
412
2244
  }
413
- export function toClientIvcCheckPrecomputedVkResponse(o) {
414
- if (o.valid === undefined) {
415
- throw new Error("Expected valid in ClientIvcCheckPrecomputedVkResponse deserialization");
2245
+ export function toProofSystemSettings(o) {
2246
+ if (o.ipa_accumulation === undefined) {
2247
+ throw new Error("Expected ipa_accumulation in ProofSystemSettings deserialization");
416
2248
  }
417
- if (o.actual_vk === undefined) {
418
- throw new Error("Expected actual_vk in ClientIvcCheckPrecomputedVkResponse deserialization");
2249
+ if (o.oracle_hash_type === undefined) {
2250
+ throw new Error("Expected oracle_hash_type in ProofSystemSettings deserialization");
2251
+ }
2252
+ if (o.disable_zk === undefined) {
2253
+ throw new Error("Expected disable_zk in ProofSystemSettings deserialization");
2254
+ }
2255
+ if (o.optimized_solidity_verifier === undefined) {
2256
+ throw new Error("Expected optimized_solidity_verifier in ProofSystemSettings deserialization");
419
2257
  }
420
2258
  ;
421
2259
  return {
422
- valid: o.valid,
423
- actualVk: o.actual_vk,
2260
+ ipaAccumulation: o.ipa_accumulation,
2261
+ oracleHashType: o.oracle_hash_type,
2262
+ disableZk: o.disable_zk,
2263
+ optimizedSolidityVerifier: o.optimized_solidity_verifier,
424
2264
  };
425
2265
  }
426
- export function fromClientIvcCheckPrecomputedVkResponse(o) {
427
- if (o.valid === undefined) {
428
- throw new Error("Expected valid in ClientIvcCheckPrecomputedVkResponse serialization");
2266
+ export function fromProofSystemSettings(o) {
2267
+ if (o.ipaAccumulation === undefined) {
2268
+ throw new Error("Expected ipaAccumulation in ProofSystemSettings serialization");
429
2269
  }
430
- if (o.actualVk === undefined) {
431
- throw new Error("Expected actualVk in ClientIvcCheckPrecomputedVkResponse serialization");
2270
+ if (o.oracleHashType === undefined) {
2271
+ throw new Error("Expected oracleHashType in ProofSystemSettings serialization");
2272
+ }
2273
+ if (o.disableZk === undefined) {
2274
+ throw new Error("Expected disableZk in ProofSystemSettings serialization");
2275
+ }
2276
+ if (o.optimizedSolidityVerifier === undefined) {
2277
+ throw new Error("Expected optimizedSolidityVerifier in ProofSystemSettings serialization");
432
2278
  }
433
2279
  ;
434
2280
  return {
435
- valid: o.valid,
436
- actual_vk: o.actualVk,
2281
+ ipa_accumulation: o.ipaAccumulation,
2282
+ oracle_hash_type: o.oracleHashType,
2283
+ disable_zk: o.disableZk,
2284
+ optimized_solidity_verifier: o.optimizedSolidityVerifier,
437
2285
  };
438
2286
  }
439
- export function toClientIvcComputeIvcVk(o) {
440
- if (o.circuit === undefined) {
441
- throw new Error("Expected circuit in ClientIvcComputeIvcVk deserialization");
2287
+ export function toSchnorrComputePublicKey(o) {
2288
+ if (o.private_key === undefined) {
2289
+ throw new Error("Expected private_key in SchnorrComputePublicKey deserialization");
442
2290
  }
443
2291
  ;
444
2292
  return {
445
- circuit: toCircuitInputNoVK(o.circuit),
2293
+ privateKey: o.private_key,
446
2294
  };
447
2295
  }
448
- export function fromClientIvcComputeIvcVk(o) {
449
- if (o.circuit === undefined) {
450
- throw new Error("Expected circuit in ClientIvcComputeIvcVk serialization");
2296
+ export function fromSchnorrComputePublicKey(o) {
2297
+ if (o.privateKey === undefined) {
2298
+ throw new Error("Expected privateKey in SchnorrComputePublicKey serialization");
451
2299
  }
452
2300
  ;
453
2301
  return {
454
- circuit: fromCircuitInputNoVK(o.circuit),
2302
+ private_key: o.privateKey,
455
2303
  };
456
2304
  }
457
- export function toClientIvcComputeIvcVkResponse(o) {
458
- if (o.bytes === undefined) {
459
- throw new Error("Expected bytes in ClientIvcComputeIvcVkResponse deserialization");
2305
+ export function toSchnorrComputePublicKeyResponse(o) {
2306
+ if (o.public_key === undefined) {
2307
+ throw new Error("Expected public_key in SchnorrComputePublicKeyResponse deserialization");
460
2308
  }
461
2309
  ;
462
2310
  return {
463
- bytes: o.bytes,
2311
+ publicKey: toGrumpkinPoint(o.public_key),
464
2312
  };
465
2313
  }
466
- export function fromClientIvcComputeIvcVkResponse(o) {
467
- if (o.bytes === undefined) {
468
- throw new Error("Expected bytes in ClientIvcComputeIvcVkResponse serialization");
2314
+ export function fromSchnorrComputePublicKeyResponse(o) {
2315
+ if (o.publicKey === undefined) {
2316
+ throw new Error("Expected publicKey in SchnorrComputePublicKeyResponse serialization");
469
2317
  }
470
2318
  ;
471
2319
  return {
472
- bytes: o.bytes,
2320
+ public_key: fromGrumpkinPoint(o.publicKey),
473
2321
  };
474
2322
  }
475
- export function toClientIvcComputeStandaloneVk(o) {
476
- if (o.circuit === undefined) {
477
- throw new Error("Expected circuit in ClientIvcComputeStandaloneVk deserialization");
2323
+ export function toSchnorrConstructSignature(o) {
2324
+ if (o.message === undefined) {
2325
+ throw new Error("Expected message in SchnorrConstructSignature deserialization");
2326
+ }
2327
+ if (o.private_key === undefined) {
2328
+ throw new Error("Expected private_key in SchnorrConstructSignature deserialization");
478
2329
  }
479
2330
  ;
480
2331
  return {
481
- circuit: toCircuitInputNoVK(o.circuit),
2332
+ message: o.message,
2333
+ privateKey: o.private_key,
482
2334
  };
483
2335
  }
484
- export function fromClientIvcComputeStandaloneVk(o) {
485
- if (o.circuit === undefined) {
486
- throw new Error("Expected circuit in ClientIvcComputeStandaloneVk serialization");
2336
+ export function fromSchnorrConstructSignature(o) {
2337
+ if (o.message === undefined) {
2338
+ throw new Error("Expected message in SchnorrConstructSignature serialization");
2339
+ }
2340
+ if (o.privateKey === undefined) {
2341
+ throw new Error("Expected privateKey in SchnorrConstructSignature serialization");
487
2342
  }
488
2343
  ;
489
2344
  return {
490
- circuit: fromCircuitInputNoVK(o.circuit),
2345
+ message: o.message,
2346
+ private_key: o.privateKey,
491
2347
  };
492
2348
  }
493
- export function toClientIvcComputeStandaloneVkResponse(o) {
494
- if (o.bytes === undefined) {
495
- throw new Error("Expected bytes in ClientIvcComputeStandaloneVkResponse deserialization");
2349
+ export function toSchnorrConstructSignatureResponse(o) {
2350
+ if (o.s === undefined) {
2351
+ throw new Error("Expected s in SchnorrConstructSignatureResponse deserialization");
496
2352
  }
497
- if (o.fields === undefined) {
498
- throw new Error("Expected fields in ClientIvcComputeStandaloneVkResponse deserialization");
2353
+ if (o.e === undefined) {
2354
+ throw new Error("Expected e in SchnorrConstructSignatureResponse deserialization");
499
2355
  }
500
2356
  ;
501
2357
  return {
502
- bytes: o.bytes,
503
- fields: o.fields.map((v) => v),
2358
+ s: o.s,
2359
+ e: o.e,
504
2360
  };
505
2361
  }
506
- export function fromClientIvcComputeStandaloneVkResponse(o) {
507
- if (o.bytes === undefined) {
508
- throw new Error("Expected bytes in ClientIvcComputeStandaloneVkResponse serialization");
2362
+ export function fromSchnorrConstructSignatureResponse(o) {
2363
+ if (o.s === undefined) {
2364
+ throw new Error("Expected s in SchnorrConstructSignatureResponse serialization");
509
2365
  }
510
- if (o.fields === undefined) {
511
- throw new Error("Expected fields in ClientIvcComputeStandaloneVkResponse serialization");
2366
+ if (o.e === undefined) {
2367
+ throw new Error("Expected e in SchnorrConstructSignatureResponse serialization");
512
2368
  }
513
2369
  ;
514
2370
  return {
515
- bytes: o.bytes,
516
- fields: o.fields.map((v) => v),
2371
+ s: o.s,
2372
+ e: o.e,
517
2373
  };
518
2374
  }
519
- export function toClientIvcLoad(o) {
520
- if (o.circuit === undefined) {
521
- throw new Error("Expected circuit in ClientIvcLoad deserialization");
2375
+ export function toSchnorrVerifySignature(o) {
2376
+ if (o.message === undefined) {
2377
+ throw new Error("Expected message in SchnorrVerifySignature deserialization");
2378
+ }
2379
+ if (o.public_key === undefined) {
2380
+ throw new Error("Expected public_key in SchnorrVerifySignature deserialization");
2381
+ }
2382
+ if (o.s === undefined) {
2383
+ throw new Error("Expected s in SchnorrVerifySignature deserialization");
2384
+ }
2385
+ if (o.e === undefined) {
2386
+ throw new Error("Expected e in SchnorrVerifySignature deserialization");
522
2387
  }
523
2388
  ;
524
2389
  return {
525
- circuit: toCircuitInput(o.circuit),
2390
+ message: o.message,
2391
+ publicKey: toGrumpkinPoint(o.public_key),
2392
+ s: o.s,
2393
+ e: o.e,
526
2394
  };
527
2395
  }
528
- export function fromClientIvcLoad(o) {
529
- if (o.circuit === undefined) {
530
- throw new Error("Expected circuit in ClientIvcLoad serialization");
2396
+ export function fromSchnorrVerifySignature(o) {
2397
+ if (o.message === undefined) {
2398
+ throw new Error("Expected message in SchnorrVerifySignature serialization");
2399
+ }
2400
+ if (o.publicKey === undefined) {
2401
+ throw new Error("Expected publicKey in SchnorrVerifySignature serialization");
2402
+ }
2403
+ if (o.s === undefined) {
2404
+ throw new Error("Expected s in SchnorrVerifySignature serialization");
2405
+ }
2406
+ if (o.e === undefined) {
2407
+ throw new Error("Expected e in SchnorrVerifySignature serialization");
531
2408
  }
532
2409
  ;
533
2410
  return {
534
- circuit: fromCircuitInput(o.circuit),
2411
+ message: o.message,
2412
+ public_key: fromGrumpkinPoint(o.publicKey),
2413
+ s: o.s,
2414
+ e: o.e,
535
2415
  };
536
2416
  }
537
- export function toClientIvcLoadResponse(o) {
538
- return {};
539
- }
540
- export function fromClientIvcLoadResponse(o) {
541
- return {};
542
- }
543
- export function toClientIVCProof(o) {
544
- if (o.mega_proof === undefined) {
545
- throw new Error("Expected mega_proof in ClientIVCProof deserialization");
546
- }
547
- if (o.goblin_proof === undefined) {
548
- throw new Error("Expected goblin_proof in ClientIVCProof deserialization");
2417
+ export function toSchnorrVerifySignatureResponse(o) {
2418
+ if (o.verified === undefined) {
2419
+ throw new Error("Expected verified in SchnorrVerifySignatureResponse deserialization");
549
2420
  }
550
2421
  ;
551
2422
  return {
552
- megaProof: o.mega_proof.map((v) => v),
553
- goblinProof: toGoblinProof(o.goblin_proof),
2423
+ verified: o.verified,
554
2424
  };
555
2425
  }
556
- export function fromClientIVCProof(o) {
557
- if (o.megaProof === undefined) {
558
- throw new Error("Expected megaProof in ClientIVCProof serialization");
559
- }
560
- if (o.goblinProof === undefined) {
561
- throw new Error("Expected goblinProof in ClientIVCProof serialization");
2426
+ export function fromSchnorrVerifySignatureResponse(o) {
2427
+ if (o.verified === undefined) {
2428
+ throw new Error("Expected verified in SchnorrVerifySignatureResponse serialization");
562
2429
  }
563
2430
  ;
564
2431
  return {
565
- mega_proof: o.megaProof.map((v) => v),
566
- goblin_proof: fromGoblinProof(o.goblinProof),
2432
+ verified: o.verified,
567
2433
  };
568
2434
  }
569
- export function toClientIvcProve(o) {
570
- return {};
571
- }
572
- export function fromClientIvcProve(o) {
573
- return {};
574
- }
575
- export function toClientIvcProveResponse(o) {
576
- if (o.proof === undefined) {
577
- throw new Error("Expected proof in ClientIvcProveResponse deserialization");
2435
+ export function toSecp256k1GetRandomFr(o) {
2436
+ if (o.dummy === undefined) {
2437
+ throw new Error("Expected dummy in Secp256k1GetRandomFr deserialization");
578
2438
  }
579
2439
  ;
580
2440
  return {
581
- proof: toClientIVCProof(o.proof),
2441
+ dummy: o.dummy,
582
2442
  };
583
2443
  }
584
- export function fromClientIvcProveResponse(o) {
585
- if (o.proof === undefined) {
586
- throw new Error("Expected proof in ClientIvcProveResponse serialization");
2444
+ export function fromSecp256k1GetRandomFr(o) {
2445
+ if (o.dummy === undefined) {
2446
+ throw new Error("Expected dummy in Secp256k1GetRandomFr serialization");
587
2447
  }
588
2448
  ;
589
2449
  return {
590
- proof: fromClientIVCProof(o.proof),
2450
+ dummy: o.dummy,
591
2451
  };
592
2452
  }
593
- export function toClientIvcStart(o) {
594
- if (o.num_circuits === undefined) {
595
- throw new Error("Expected num_circuits in ClientIvcStart deserialization");
2453
+ export function toSecp256k1GetRandomFrResponse(o) {
2454
+ if (o.value === undefined) {
2455
+ throw new Error("Expected value in Secp256k1GetRandomFrResponse deserialization");
596
2456
  }
597
2457
  ;
598
2458
  return {
599
- numCircuits: o.num_circuits,
2459
+ value: o.value,
600
2460
  };
601
2461
  }
602
- export function fromClientIvcStart(o) {
603
- if (o.numCircuits === undefined) {
604
- throw new Error("Expected numCircuits in ClientIvcStart serialization");
2462
+ export function fromSecp256k1GetRandomFrResponse(o) {
2463
+ if (o.value === undefined) {
2464
+ throw new Error("Expected value in Secp256k1GetRandomFrResponse serialization");
605
2465
  }
606
2466
  ;
607
2467
  return {
608
- num_circuits: o.numCircuits,
2468
+ value: o.value,
609
2469
  };
610
2470
  }
611
- export function toClientIvcStartResponse(o) {
612
- return {};
613
- }
614
- export function fromClientIvcStartResponse(o) {
615
- return {};
616
- }
617
- export function toClientIvcStats(o) {
618
- if (o.circuit === undefined) {
619
- throw new Error("Expected circuit in ClientIvcStats deserialization");
2471
+ export function toSecp256k1Mul(o) {
2472
+ if (o.point === undefined) {
2473
+ throw new Error("Expected point in Secp256k1Mul deserialization");
620
2474
  }
621
- if (o.include_gates_per_opcode === undefined) {
622
- throw new Error("Expected include_gates_per_opcode in ClientIvcStats deserialization");
2475
+ if (o.scalar === undefined) {
2476
+ throw new Error("Expected scalar in Secp256k1Mul deserialization");
623
2477
  }
624
2478
  ;
625
2479
  return {
626
- circuit: toCircuitInputNoVK(o.circuit),
627
- includeGatesPerOpcode: o.include_gates_per_opcode,
2480
+ point: toSecp256k1Point(o.point),
2481
+ scalar: o.scalar,
628
2482
  };
629
2483
  }
630
- export function fromClientIvcStats(o) {
631
- if (o.circuit === undefined) {
632
- throw new Error("Expected circuit in ClientIvcStats serialization");
2484
+ export function fromSecp256k1Mul(o) {
2485
+ if (o.point === undefined) {
2486
+ throw new Error("Expected point in Secp256k1Mul serialization");
633
2487
  }
634
- if (o.includeGatesPerOpcode === undefined) {
635
- throw new Error("Expected includeGatesPerOpcode in ClientIvcStats serialization");
2488
+ if (o.scalar === undefined) {
2489
+ throw new Error("Expected scalar in Secp256k1Mul serialization");
636
2490
  }
637
2491
  ;
638
2492
  return {
639
- circuit: fromCircuitInputNoVK(o.circuit),
640
- include_gates_per_opcode: o.includeGatesPerOpcode,
2493
+ point: fromSecp256k1Point(o.point),
2494
+ scalar: o.scalar,
641
2495
  };
642
2496
  }
643
- export function toClientIvcStatsResponse(o) {
644
- if (o.acir_opcodes === undefined) {
645
- throw new Error("Expected acir_opcodes in ClientIvcStatsResponse deserialization");
646
- }
647
- if (o.circuit_size === undefined) {
648
- throw new Error("Expected circuit_size in ClientIvcStatsResponse deserialization");
649
- }
650
- if (o.gates_per_opcode === undefined) {
651
- throw new Error("Expected gates_per_opcode in ClientIvcStatsResponse deserialization");
2497
+ export function toSecp256k1MulResponse(o) {
2498
+ if (o.point === undefined) {
2499
+ throw new Error("Expected point in Secp256k1MulResponse deserialization");
652
2500
  }
653
2501
  ;
654
2502
  return {
655
- acirOpcodes: o.acir_opcodes,
656
- circuitSize: o.circuit_size,
657
- gatesPerOpcode: o.gates_per_opcode.map((v) => v),
2503
+ point: toSecp256k1Point(o.point),
658
2504
  };
659
2505
  }
660
- export function fromClientIvcStatsResponse(o) {
661
- if (o.acirOpcodes === undefined) {
662
- throw new Error("Expected acirOpcodes in ClientIvcStatsResponse serialization");
2506
+ export function fromSecp256k1MulResponse(o) {
2507
+ if (o.point === undefined) {
2508
+ throw new Error("Expected point in Secp256k1MulResponse serialization");
663
2509
  }
664
- if (o.circuitSize === undefined) {
665
- throw new Error("Expected circuitSize in ClientIvcStatsResponse serialization");
2510
+ ;
2511
+ return {
2512
+ point: fromSecp256k1Point(o.point),
2513
+ };
2514
+ }
2515
+ export function toSecp256k1Point(o) {
2516
+ if (o.x === undefined) {
2517
+ throw new Error("Expected x in Secp256k1Point deserialization");
666
2518
  }
667
- if (o.gatesPerOpcode === undefined) {
668
- throw new Error("Expected gatesPerOpcode in ClientIvcStatsResponse serialization");
2519
+ if (o.y === undefined) {
2520
+ throw new Error("Expected y in Secp256k1Point deserialization");
669
2521
  }
670
2522
  ;
671
2523
  return {
672
- acir_opcodes: o.acirOpcodes,
673
- circuit_size: o.circuitSize,
674
- gates_per_opcode: o.gatesPerOpcode.map((v) => v),
2524
+ x: o.x,
2525
+ y: o.y,
675
2526
  };
676
2527
  }
677
- export function toClientIvcVerify(o) {
678
- if (o.proof === undefined) {
679
- throw new Error("Expected proof in ClientIvcVerify deserialization");
2528
+ export function fromSecp256k1Point(o) {
2529
+ if (o.x === undefined) {
2530
+ throw new Error("Expected x in Secp256k1Point serialization");
680
2531
  }
681
- if (o.vk === undefined) {
682
- throw new Error("Expected vk in ClientIvcVerify deserialization");
2532
+ if (o.y === undefined) {
2533
+ throw new Error("Expected y in Secp256k1Point serialization");
683
2534
  }
684
2535
  ;
685
2536
  return {
686
- proof: toClientIVCProof(o.proof),
687
- vk: o.vk,
2537
+ x: o.x,
2538
+ y: o.y,
688
2539
  };
689
2540
  }
690
- export function fromClientIvcVerify(o) {
691
- if (o.proof === undefined) {
692
- throw new Error("Expected proof in ClientIvcVerify serialization");
2541
+ export function toSecp256k1Reduce512(o) {
2542
+ if (o.input === undefined) {
2543
+ throw new Error("Expected input in Secp256k1Reduce512 deserialization");
693
2544
  }
694
- if (o.vk === undefined) {
695
- throw new Error("Expected vk in ClientIvcVerify serialization");
2545
+ ;
2546
+ return {
2547
+ input: o.input,
2548
+ };
2549
+ }
2550
+ export function fromSecp256k1Reduce512(o) {
2551
+ if (o.input === undefined) {
2552
+ throw new Error("Expected input in Secp256k1Reduce512 serialization");
696
2553
  }
697
2554
  ;
698
2555
  return {
699
- proof: fromClientIVCProof(o.proof),
700
- vk: o.vk,
2556
+ input: o.input,
701
2557
  };
702
2558
  }
703
- export function toClientIvcVerifyResponse(o) {
704
- if (o.valid === undefined) {
705
- throw new Error("Expected valid in ClientIvcVerifyResponse deserialization");
2559
+ export function toSecp256k1Reduce512Response(o) {
2560
+ if (o.value === undefined) {
2561
+ throw new Error("Expected value in Secp256k1Reduce512Response deserialization");
706
2562
  }
707
2563
  ;
708
2564
  return {
709
- valid: o.valid,
2565
+ value: o.value,
710
2566
  };
711
2567
  }
712
- export function fromClientIvcVerifyResponse(o) {
713
- if (o.valid === undefined) {
714
- throw new Error("Expected valid in ClientIvcVerifyResponse serialization");
2568
+ export function fromSecp256k1Reduce512Response(o) {
2569
+ if (o.value === undefined) {
2570
+ throw new Error("Expected value in Secp256k1Reduce512Response serialization");
715
2571
  }
716
2572
  ;
717
2573
  return {
718
- valid: o.valid,
2574
+ value: o.value,
719
2575
  };
720
2576
  }
721
- export function toECCVMProof(o) {
722
- if (o.pre_ipa_proof === undefined) {
723
- throw new Error("Expected pre_ipa_proof in ECCVMProof deserialization");
2577
+ export function toSecp256r1Point(o) {
2578
+ if (o.x === undefined) {
2579
+ throw new Error("Expected x in Secp256r1Point deserialization");
724
2580
  }
725
- if (o.ipa_proof === undefined) {
726
- throw new Error("Expected ipa_proof in ECCVMProof deserialization");
2581
+ if (o.y === undefined) {
2582
+ throw new Error("Expected y in Secp256r1Point deserialization");
727
2583
  }
728
2584
  ;
729
2585
  return {
730
- preIpaProof: o.pre_ipa_proof.map((v) => v),
731
- ipaProof: o.ipa_proof.map((v) => v),
2586
+ x: o.x,
2587
+ y: o.y,
732
2588
  };
733
2589
  }
734
- export function fromECCVMProof(o) {
735
- if (o.preIpaProof === undefined) {
736
- throw new Error("Expected preIpaProof in ECCVMProof serialization");
2590
+ export function fromSecp256r1Point(o) {
2591
+ if (o.x === undefined) {
2592
+ throw new Error("Expected x in Secp256r1Point serialization");
737
2593
  }
738
- if (o.ipaProof === undefined) {
739
- throw new Error("Expected ipaProof in ECCVMProof serialization");
2594
+ if (o.y === undefined) {
2595
+ throw new Error("Expected y in Secp256r1Point serialization");
740
2596
  }
741
2597
  ;
742
2598
  return {
743
- pre_ipa_proof: o.preIpaProof.map((v) => v),
744
- ipa_proof: o.ipaProof.map((v) => v),
2599
+ x: o.x,
2600
+ y: o.y,
745
2601
  };
746
2602
  }
747
- export function toGoblinProof(o) {
748
- if (o.merge_proof === undefined) {
749
- throw new Error("Expected merge_proof in GoblinProof deserialization");
750
- }
751
- if (o.eccvm_proof === undefined) {
752
- throw new Error("Expected eccvm_proof in GoblinProof deserialization");
2603
+ export function toShutdown(o) {
2604
+ return {};
2605
+ }
2606
+ export function fromShutdown(o) {
2607
+ return {};
2608
+ }
2609
+ export function toShutdownResponse(o) {
2610
+ return {};
2611
+ }
2612
+ export function fromShutdownResponse(o) {
2613
+ return {};
2614
+ }
2615
+ export function toSrsInitGrumpkinSrs(o) {
2616
+ if (o.points_buf === undefined) {
2617
+ throw new Error("Expected points_buf in SrsInitGrumpkinSrs deserialization");
753
2618
  }
754
- if (o.translator_proof === undefined) {
755
- throw new Error("Expected translator_proof in GoblinProof deserialization");
2619
+ if (o.num_points === undefined) {
2620
+ throw new Error("Expected num_points in SrsInitGrumpkinSrs deserialization");
756
2621
  }
757
2622
  ;
758
2623
  return {
759
- mergeProof: o.merge_proof.map((v) => v),
760
- eccvmProof: toECCVMProof(o.eccvm_proof),
761
- translatorProof: o.translator_proof.map((v) => v),
2624
+ pointsBuf: o.points_buf,
2625
+ numPoints: o.num_points,
762
2626
  };
763
2627
  }
764
- export function fromGoblinProof(o) {
765
- if (o.mergeProof === undefined) {
766
- throw new Error("Expected mergeProof in GoblinProof serialization");
2628
+ export function fromSrsInitGrumpkinSrs(o) {
2629
+ if (o.pointsBuf === undefined) {
2630
+ throw new Error("Expected pointsBuf in SrsInitGrumpkinSrs serialization");
767
2631
  }
768
- if (o.eccvmProof === undefined) {
769
- throw new Error("Expected eccvmProof in GoblinProof serialization");
2632
+ if (o.numPoints === undefined) {
2633
+ throw new Error("Expected numPoints in SrsInitGrumpkinSrs serialization");
770
2634
  }
771
- if (o.translatorProof === undefined) {
772
- throw new Error("Expected translatorProof in GoblinProof serialization");
2635
+ ;
2636
+ return {
2637
+ points_buf: o.pointsBuf,
2638
+ num_points: o.numPoints,
2639
+ };
2640
+ }
2641
+ export function toSrsInitGrumpkinSrsResponse(o) {
2642
+ if (o.dummy === undefined) {
2643
+ throw new Error("Expected dummy in SrsInitGrumpkinSrsResponse deserialization");
773
2644
  }
774
2645
  ;
775
2646
  return {
776
- merge_proof: o.mergeProof.map((v) => v),
777
- eccvm_proof: fromECCVMProof(o.eccvmProof),
778
- translator_proof: o.translatorProof.map((v) => v),
2647
+ dummy: o.dummy,
779
2648
  };
780
2649
  }
781
- export function toProofSystemSettings(o) {
782
- if (o.ipa_accumulation === undefined) {
783
- throw new Error("Expected ipa_accumulation in ProofSystemSettings deserialization");
2650
+ export function fromSrsInitGrumpkinSrsResponse(o) {
2651
+ if (o.dummy === undefined) {
2652
+ throw new Error("Expected dummy in SrsInitGrumpkinSrsResponse serialization");
784
2653
  }
785
- if (o.oracle_hash_type === undefined) {
786
- throw new Error("Expected oracle_hash_type in ProofSystemSettings deserialization");
2654
+ ;
2655
+ return {
2656
+ dummy: o.dummy,
2657
+ };
2658
+ }
2659
+ export function toSrsInitSrs(o) {
2660
+ if (o.points_buf === undefined) {
2661
+ throw new Error("Expected points_buf in SrsInitSrs deserialization");
787
2662
  }
788
- if (o.disable_zk === undefined) {
789
- throw new Error("Expected disable_zk in ProofSystemSettings deserialization");
2663
+ if (o.num_points === undefined) {
2664
+ throw new Error("Expected num_points in SrsInitSrs deserialization");
790
2665
  }
791
- if (o.optimized_solidity_verifier === undefined) {
792
- throw new Error("Expected optimized_solidity_verifier in ProofSystemSettings deserialization");
2666
+ if (o.g2_point === undefined) {
2667
+ throw new Error("Expected g2_point in SrsInitSrs deserialization");
793
2668
  }
794
2669
  ;
795
2670
  return {
796
- ipaAccumulation: o.ipa_accumulation,
797
- oracleHashType: o.oracle_hash_type,
798
- disableZk: o.disable_zk,
799
- optimizedSolidityVerifier: o.optimized_solidity_verifier,
2671
+ pointsBuf: o.points_buf,
2672
+ numPoints: o.num_points,
2673
+ g2Point: o.g2_point,
800
2674
  };
801
2675
  }
802
- export function fromProofSystemSettings(o) {
803
- if (o.ipaAccumulation === undefined) {
804
- throw new Error("Expected ipaAccumulation in ProofSystemSettings serialization");
2676
+ export function fromSrsInitSrs(o) {
2677
+ if (o.pointsBuf === undefined) {
2678
+ throw new Error("Expected pointsBuf in SrsInitSrs serialization");
805
2679
  }
806
- if (o.oracleHashType === undefined) {
807
- throw new Error("Expected oracleHashType in ProofSystemSettings serialization");
2680
+ if (o.numPoints === undefined) {
2681
+ throw new Error("Expected numPoints in SrsInitSrs serialization");
808
2682
  }
809
- if (o.disableZk === undefined) {
810
- throw new Error("Expected disableZk in ProofSystemSettings serialization");
2683
+ if (o.g2Point === undefined) {
2684
+ throw new Error("Expected g2Point in SrsInitSrs serialization");
811
2685
  }
812
- if (o.optimizedSolidityVerifier === undefined) {
813
- throw new Error("Expected optimizedSolidityVerifier in ProofSystemSettings serialization");
2686
+ ;
2687
+ return {
2688
+ points_buf: o.pointsBuf,
2689
+ num_points: o.numPoints,
2690
+ g2_point: o.g2Point,
2691
+ };
2692
+ }
2693
+ export function toSrsInitSrsResponse(o) {
2694
+ if (o.dummy === undefined) {
2695
+ throw new Error("Expected dummy in SrsInitSrsResponse deserialization");
814
2696
  }
815
2697
  ;
816
2698
  return {
817
- ipa_accumulation: o.ipaAccumulation,
818
- oracle_hash_type: o.oracleHashType,
819
- disable_zk: o.disableZk,
820
- optimized_solidity_verifier: o.optimizedSolidityVerifier,
2699
+ dummy: o.dummy,
2700
+ };
2701
+ }
2702
+ export function fromSrsInitSrsResponse(o) {
2703
+ if (o.dummy === undefined) {
2704
+ throw new Error("Expected dummy in SrsInitSrsResponse serialization");
2705
+ }
2706
+ ;
2707
+ return {
2708
+ dummy: o.dummy,
821
2709
  };
822
2710
  }
823
2711
  export function toVkAsFields(o) {
@@ -856,4 +2744,4 @@ export function fromVkAsFieldsResponse(o) {
856
2744
  fields: o.fields.map((v) => v),
857
2745
  };
858
2746
  }
859
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpX3R5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NiaW5kL2dlbmVyYXRlZC9hcGlfdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUNBQW1DO0FBeXJCbkMsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxDQUEwQjtJQUMzRCxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQ3pHLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUFDLENBQUM7SUFBQSxDQUFDO0lBQzVHLE9BQU87UUFDTCxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUN0QyxRQUFRLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztLQUM1QyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxDQUFtQjtJQUN0RCxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQ3ZHLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztJQUFDLENBQUM7SUFBQSxDQUFDO0lBQzFHLE9BQU87UUFDUCxPQUFPLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUN4QyxRQUFRLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztLQUM1QyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxDQUFrQztJQUMzRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQzdHLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztJQUFDLENBQUM7SUFDL0csSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUFBLENBQUM7SUFDNUcsT0FBTztRQUNMLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztRQUNkLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtLQUNiLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDRCQUE0QixDQUFDLENBQTJCO0lBQ3RFLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztJQUFDLENBQUM7SUFDM0csSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUM3RyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQUEsQ0FBQztJQUMxRyxPQUFPO1FBQ1AsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO1FBQ2QsTUFBTSxFQUFFLENBQUMs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
2747
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpX3R5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NiaW5kL2dlbmVyYXRlZC9hcGlfdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUNBQW1DO0FBK3JFbkMsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBb0I7SUFDL0MsSUFBSSxDQUFDLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN6RyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQ3pGLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUFDLENBQUM7SUFDM0YsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUFBLENBQUM7SUFDbEcsT0FBTztRQUNMLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTtRQUN4QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7UUFDUixHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUc7UUFDVixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU07S0FDakIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLENBQWE7SUFDMUMsSUFBSSxDQUFDLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN2RyxJQUFJLENBQUMsQ0FBQyxFQUFF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