zerc20-client-sdk 0.1.13 → 0.1.14

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 (404) hide show
  1. package/README.md +261 -0
  2. package/dist/constants.d.ts +15 -0
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +15 -0
  5. package/dist/constants.js.map +1 -1
  6. package/dist/decider/__tests__/prover.test.d.ts +2 -0
  7. package/dist/decider/__tests__/prover.test.d.ts.map +1 -0
  8. package/dist/decider/__tests__/prover.test.js +246 -0
  9. package/dist/decider/__tests__/prover.test.js.map +1 -0
  10. package/dist/decider/prover.d.ts +36 -4
  11. package/dist/decider/prover.d.ts.map +1 -1
  12. package/dist/decider/prover.js +48 -38
  13. package/dist/decider/prover.js.map +1 -1
  14. package/dist/ic/__tests__/candid.test.d.ts +2 -0
  15. package/dist/ic/__tests__/candid.test.d.ts.map +1 -0
  16. package/dist/ic/__tests__/candid.test.js +44 -0
  17. package/dist/ic/__tests__/candid.test.js.map +1 -0
  18. package/dist/ic/__tests__/client.test.d.ts +2 -0
  19. package/dist/ic/__tests__/client.test.d.ts.map +1 -0
  20. package/dist/ic/__tests__/client.test.js +522 -0
  21. package/dist/ic/__tests__/client.test.js.map +1 -0
  22. package/dist/ic/__tests__/config.test.d.ts +2 -0
  23. package/dist/ic/__tests__/config.test.d.ts.map +1 -0
  24. package/dist/ic/__tests__/config.test.js +72 -0
  25. package/dist/ic/__tests__/config.test.js.map +1 -0
  26. package/dist/ic/__tests__/connections.test.d.ts +2 -0
  27. package/dist/ic/__tests__/connections.test.d.ts.map +1 -0
  28. package/dist/ic/__tests__/connections.test.js +385 -0
  29. package/dist/ic/__tests__/connections.test.js.map +1 -0
  30. package/dist/ic/__tests__/invoice.test.d.ts +2 -0
  31. package/dist/ic/__tests__/invoice.test.d.ts.map +1 -0
  32. package/dist/ic/__tests__/invoice.test.js +95 -0
  33. package/dist/ic/__tests__/invoice.test.js.map +1 -0
  34. package/dist/ic/authorization.d.ts +28 -0
  35. package/dist/ic/authorization.d.ts.map +1 -1
  36. package/dist/ic/authorization.js +24 -0
  37. package/dist/ic/authorization.js.map +1 -1
  38. package/dist/ic/candid.d.ts +72 -0
  39. package/dist/ic/candid.d.ts.map +1 -0
  40. package/dist/ic/candid.js +35 -0
  41. package/dist/ic/candid.js.map +1 -0
  42. package/dist/ic/client.d.ts +57 -59
  43. package/dist/ic/client.d.ts.map +1 -1
  44. package/dist/ic/client.js +59 -81
  45. package/dist/ic/client.js.map +1 -1
  46. package/dist/ic/config.d.ts +27 -0
  47. package/dist/ic/config.d.ts.map +1 -1
  48. package/dist/ic/config.js +27 -0
  49. package/dist/ic/config.js.map +1 -1
  50. package/dist/ic/connections.d.ts +99 -4
  51. package/dist/ic/connections.d.ts.map +1 -1
  52. package/dist/ic/connections.js +222 -30
  53. package/dist/ic/connections.js.map +1 -1
  54. package/dist/ic/encryption.d.ts +33 -0
  55. package/dist/ic/encryption.d.ts.map +1 -1
  56. package/dist/ic/encryption.js +21 -0
  57. package/dist/ic/encryption.js.map +1 -1
  58. package/dist/ic/errors.d.ts +15 -0
  59. package/dist/ic/errors.d.ts.map +1 -1
  60. package/dist/ic/errors.js +15 -0
  61. package/dist/ic/errors.js.map +1 -1
  62. package/dist/ic/idl.d.ts +26 -0
  63. package/dist/ic/idl.d.ts.map +1 -0
  64. package/dist/ic/idl.js +84 -0
  65. package/dist/ic/idl.js.map +1 -0
  66. package/dist/ic/index.d.ts +1 -1
  67. package/dist/ic/index.d.ts.map +1 -1
  68. package/dist/ic/index.js +1 -1
  69. package/dist/ic/index.js.map +1 -1
  70. package/dist/ic/invoice.d.ts.map +1 -1
  71. package/dist/ic/invoice.js.map +1 -1
  72. package/dist/ic/types.d.ts +42 -0
  73. package/dist/ic/types.d.ts.map +1 -1
  74. package/dist/index.d.ts +1 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +1 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/onchain/__tests__/contracts.test.d.ts +2 -0
  79. package/dist/onchain/__tests__/contracts.test.d.ts.map +1 -0
  80. package/dist/onchain/__tests__/contracts.test.js +42 -0
  81. package/dist/onchain/__tests__/contracts.test.js.map +1 -0
  82. package/dist/onchain/contracts.d.ts +22 -0
  83. package/dist/onchain/contracts.d.ts.map +1 -1
  84. package/dist/onchain/contracts.js +22 -0
  85. package/dist/onchain/contracts.js.map +1 -1
  86. package/dist/operations/__tests__/invoice.test.d.ts +2 -0
  87. package/dist/operations/__tests__/invoice.test.d.ts.map +1 -0
  88. package/dist/operations/__tests__/invoice.test.js +261 -0
  89. package/dist/operations/__tests__/invoice.test.js.map +1 -0
  90. package/dist/operations/__tests__/privateSend.test.d.ts +2 -0
  91. package/dist/operations/__tests__/privateSend.test.d.ts.map +1 -0
  92. package/dist/operations/__tests__/privateSend.test.js +135 -0
  93. package/dist/operations/__tests__/privateSend.test.js.map +1 -0
  94. package/dist/operations/__tests__/reexports.test.d.ts +2 -0
  95. package/dist/operations/__tests__/reexports.test.d.ts.map +1 -0
  96. package/dist/operations/__tests__/reexports.test.js +22 -0
  97. package/dist/operations/__tests__/reexports.test.js.map +1 -0
  98. package/dist/operations/__tests__/scanner.test.d.ts +2 -0
  99. package/dist/operations/__tests__/scanner.test.d.ts.map +1 -0
  100. package/dist/operations/__tests__/scanner.test.js +201 -0
  101. package/dist/operations/__tests__/scanner.test.js.map +1 -0
  102. package/dist/operations/__tests__/teleport.test.d.ts +2 -0
  103. package/dist/operations/__tests__/teleport.test.d.ts.map +1 -0
  104. package/dist/operations/__tests__/teleport.test.js +35 -0
  105. package/dist/operations/__tests__/teleport.test.js.map +1 -0
  106. package/dist/operations/__tests__/teleportProof.test.d.ts +2 -0
  107. package/dist/operations/__tests__/teleportProof.test.d.ts.map +1 -0
  108. package/dist/operations/__tests__/teleportProof.test.js +126 -0
  109. package/dist/operations/__tests__/teleportProof.test.js.map +1 -0
  110. package/dist/operations/invoice.d.ts +44 -0
  111. package/dist/operations/invoice.d.ts.map +1 -1
  112. package/dist/operations/invoice.js +30 -0
  113. package/dist/operations/invoice.js.map +1 -1
  114. package/dist/operations/liquidityManager/__tests__/balance.test.d.ts +2 -0
  115. package/dist/operations/liquidityManager/__tests__/balance.test.d.ts.map +1 -0
  116. package/dist/operations/liquidityManager/__tests__/balance.test.js +104 -0
  117. package/dist/operations/liquidityManager/__tests__/balance.test.js.map +1 -0
  118. package/dist/operations/liquidityManager/__tests__/crossUnwrap.test.d.ts +2 -0
  119. package/dist/operations/liquidityManager/__tests__/crossUnwrap.test.d.ts.map +1 -0
  120. package/dist/operations/liquidityManager/__tests__/crossUnwrap.test.js +198 -0
  121. package/dist/operations/liquidityManager/__tests__/crossUnwrap.test.js.map +1 -0
  122. package/dist/operations/liquidityManager/__tests__/helpers.test.d.ts +2 -0
  123. package/dist/operations/liquidityManager/__tests__/helpers.test.d.ts.map +1 -0
  124. package/dist/operations/liquidityManager/__tests__/helpers.test.js +126 -0
  125. package/dist/operations/liquidityManager/__tests__/helpers.test.js.map +1 -0
  126. package/dist/operations/liquidityManager/__tests__/unwrap.test.d.ts +2 -0
  127. package/dist/operations/liquidityManager/__tests__/unwrap.test.d.ts.map +1 -0
  128. package/dist/operations/liquidityManager/__tests__/unwrap.test.js +224 -0
  129. package/dist/operations/liquidityManager/__tests__/unwrap.test.js.map +1 -0
  130. package/dist/operations/liquidityManager/__tests__/wrap.test.d.ts +2 -0
  131. package/dist/operations/liquidityManager/__tests__/wrap.test.d.ts.map +1 -0
  132. package/dist/operations/liquidityManager/__tests__/wrap.test.js +144 -0
  133. package/dist/operations/liquidityManager/__tests__/wrap.test.js.map +1 -0
  134. package/dist/operations/liquidityManager/balance.d.ts +19 -0
  135. package/dist/operations/liquidityManager/balance.d.ts.map +1 -0
  136. package/dist/operations/liquidityManager/balance.js +62 -0
  137. package/dist/operations/liquidityManager/balance.js.map +1 -0
  138. package/dist/operations/liquidityManager/crossUnwrap.d.ts +73 -0
  139. package/dist/operations/liquidityManager/crossUnwrap.d.ts.map +1 -0
  140. package/dist/operations/liquidityManager/crossUnwrap.js +189 -0
  141. package/dist/operations/liquidityManager/crossUnwrap.js.map +1 -0
  142. package/dist/operations/liquidityManager/helpers.d.ts +15521 -0
  143. package/dist/operations/liquidityManager/helpers.d.ts.map +1 -0
  144. package/dist/operations/liquidityManager/helpers.js +81 -0
  145. package/dist/operations/liquidityManager/helpers.js.map +1 -0
  146. package/dist/operations/liquidityManager/index.d.ts +12 -0
  147. package/dist/operations/liquidityManager/index.d.ts.map +1 -0
  148. package/dist/operations/liquidityManager/index.js +9 -0
  149. package/dist/operations/liquidityManager/index.js.map +1 -0
  150. package/dist/operations/liquidityManager/types.d.ts +90 -0
  151. package/dist/operations/liquidityManager/types.d.ts.map +1 -0
  152. package/dist/operations/liquidityManager/types.js +5 -0
  153. package/dist/operations/liquidityManager/types.js.map +1 -0
  154. package/dist/operations/liquidityManager/unwrap.d.ts +54 -0
  155. package/dist/operations/liquidityManager/unwrap.d.ts.map +1 -0
  156. package/dist/operations/liquidityManager/unwrap.js +80 -0
  157. package/dist/operations/liquidityManager/unwrap.js.map +1 -0
  158. package/dist/operations/liquidityManager/wrap.d.ts +38 -0
  159. package/dist/operations/liquidityManager/wrap.d.ts.map +1 -0
  160. package/dist/operations/liquidityManager/wrap.js +53 -0
  161. package/dist/operations/liquidityManager/wrap.js.map +1 -0
  162. package/dist/operations/liquidityManager.d.ts +3 -104
  163. package/dist/operations/liquidityManager.d.ts.map +1 -1
  164. package/dist/operations/liquidityManager.js +3 -343
  165. package/dist/operations/liquidityManager.js.map +1 -1
  166. package/dist/operations/privateSend.d.ts +26 -0
  167. package/dist/operations/privateSend.d.ts.map +1 -1
  168. package/dist/operations/privateSend.js +11 -0
  169. package/dist/operations/privateSend.js.map +1 -1
  170. package/dist/operations/receive/__tests__/announcementStatus.test.d.ts +2 -0
  171. package/dist/operations/receive/__tests__/announcementStatus.test.d.ts.map +1 -0
  172. package/dist/operations/receive/__tests__/announcementStatus.test.js +223 -0
  173. package/dist/operations/receive/__tests__/announcementStatus.test.js.map +1 -0
  174. package/dist/operations/receive/__tests__/cache.test.d.ts +2 -0
  175. package/dist/operations/receive/__tests__/cache.test.d.ts.map +1 -0
  176. package/dist/operations/receive/__tests__/cache.test.js +339 -0
  177. package/dist/operations/receive/__tests__/cache.test.js.map +1 -0
  178. package/dist/operations/receive/__tests__/helpers.test.d.ts +2 -0
  179. package/dist/operations/receive/__tests__/helpers.test.d.ts.map +1 -0
  180. package/dist/operations/receive/__tests__/helpers.test.js +80 -0
  181. package/dist/operations/receive/__tests__/helpers.test.js.map +1 -0
  182. package/dist/operations/receive/__tests__/redeemContext.test.d.ts +2 -0
  183. package/dist/operations/receive/__tests__/redeemContext.test.d.ts.map +1 -0
  184. package/dist/operations/receive/__tests__/redeemContext.test.js +230 -0
  185. package/dist/operations/receive/__tests__/redeemContext.test.js.map +1 -0
  186. package/dist/operations/receive/announcementStatus.d.ts +12 -0
  187. package/dist/operations/receive/announcementStatus.d.ts.map +1 -0
  188. package/dist/operations/receive/announcementStatus.js +56 -0
  189. package/dist/operations/receive/announcementStatus.js.map +1 -0
  190. package/dist/operations/receive/cache.d.ts +69 -0
  191. package/dist/operations/receive/cache.d.ts.map +1 -0
  192. package/dist/operations/receive/cache.js +105 -0
  193. package/dist/operations/receive/cache.js.map +1 -0
  194. package/dist/operations/receive/helpers.d.ts +16 -0
  195. package/dist/operations/receive/helpers.d.ts.map +1 -0
  196. package/dist/operations/receive/helpers.js +33 -0
  197. package/dist/operations/receive/helpers.js.map +1 -0
  198. package/dist/operations/receive/index.d.ts +9 -0
  199. package/dist/operations/receive/index.d.ts.map +1 -0
  200. package/dist/operations/receive/index.js +9 -0
  201. package/dist/operations/receive/index.js.map +1 -0
  202. package/dist/operations/receive/redeemContext.d.ts +16 -0
  203. package/dist/operations/receive/redeemContext.d.ts.map +1 -0
  204. package/dist/operations/receive/redeemContext.js +107 -0
  205. package/dist/operations/receive/redeemContext.js.map +1 -0
  206. package/dist/operations/receive/types.d.ts +141 -0
  207. package/dist/operations/receive/types.d.ts.map +1 -0
  208. package/dist/operations/receive/types.js +5 -0
  209. package/dist/operations/receive/types.js.map +1 -0
  210. package/dist/operations/receive.d.ts +5 -66
  211. package/dist/operations/receive.d.ts.map +1 -1
  212. package/dist/operations/receive.js +5 -173
  213. package/dist/operations/receive.js.map +1 -1
  214. package/dist/operations/scanner.d.ts +37 -0
  215. package/dist/operations/scanner.d.ts.map +1 -1
  216. package/dist/operations/scanner.js +21 -0
  217. package/dist/operations/scanner.js.map +1 -1
  218. package/dist/operations/teleport.d.ts +5 -0
  219. package/dist/operations/teleport.d.ts.map +1 -1
  220. package/dist/operations/teleport.js +5 -0
  221. package/dist/operations/teleport.js.map +1 -1
  222. package/dist/operations/teleportProof.d.ts +34 -0
  223. package/dist/operations/teleportProof.d.ts.map +1 -1
  224. package/dist/operations/teleportProof.js +16 -0
  225. package/dist/operations/teleportProof.js.map +1 -1
  226. package/dist/registry/__tests__/helpers.test.d.ts +2 -0
  227. package/dist/registry/__tests__/helpers.test.d.ts.map +1 -0
  228. package/dist/registry/__tests__/helpers.test.js +98 -0
  229. package/dist/registry/__tests__/helpers.test.js.map +1 -0
  230. package/dist/registry/__tests__/loader.test.d.ts +2 -0
  231. package/dist/registry/__tests__/loader.test.d.ts.map +1 -0
  232. package/dist/registry/__tests__/loader.test.js +300 -0
  233. package/dist/registry/__tests__/loader.test.js.map +1 -0
  234. package/dist/registry/__tests__/normalize.test.d.ts +2 -0
  235. package/dist/registry/__tests__/normalize.test.d.ts.map +1 -0
  236. package/dist/registry/__tests__/normalize.test.js +180 -0
  237. package/dist/registry/__tests__/normalize.test.js.map +1 -0
  238. package/dist/registry/__tests__/parsing.test.d.ts +2 -0
  239. package/dist/registry/__tests__/parsing.test.d.ts.map +1 -0
  240. package/dist/registry/__tests__/parsing.test.js +188 -0
  241. package/dist/registry/__tests__/parsing.test.js.map +1 -0
  242. package/dist/registry/helpers.d.ts +14 -0
  243. package/dist/registry/helpers.d.ts.map +1 -0
  244. package/dist/registry/helpers.js +29 -0
  245. package/dist/registry/helpers.js.map +1 -0
  246. package/dist/registry/index.d.ts +13 -0
  247. package/dist/registry/index.d.ts.map +1 -0
  248. package/dist/registry/index.js +15 -0
  249. package/dist/registry/index.js.map +1 -0
  250. package/dist/registry/loader.d.ts +57 -0
  251. package/dist/registry/loader.d.ts.map +1 -0
  252. package/dist/registry/loader.js +188 -0
  253. package/dist/registry/loader.js.map +1 -0
  254. package/dist/registry/normalize.d.ts +29 -0
  255. package/dist/registry/normalize.d.ts.map +1 -0
  256. package/dist/registry/normalize.js +81 -0
  257. package/dist/registry/normalize.js.map +1 -0
  258. package/dist/registry/parsing.d.ts +55 -0
  259. package/dist/registry/parsing.d.ts.map +1 -0
  260. package/dist/registry/parsing.js +139 -0
  261. package/dist/registry/parsing.js.map +1 -0
  262. package/dist/registry/tokens.d.ts +6 -42
  263. package/dist/registry/tokens.d.ts.map +1 -1
  264. package/dist/registry/tokens.js +6 -231
  265. package/dist/registry/tokens.js.map +1 -1
  266. package/dist/registry/types.d.ts +81 -0
  267. package/dist/registry/types.d.ts.map +1 -0
  268. package/dist/registry/types.js +2 -0
  269. package/dist/registry/types.js.map +1 -0
  270. package/dist/sdk.d.ts +57 -0
  271. package/dist/sdk.d.ts.map +1 -1
  272. package/dist/sdk.js +21 -0
  273. package/dist/sdk.js.map +1 -1
  274. package/dist/sdk.publicApi.test.d.ts +2 -0
  275. package/dist/sdk.publicApi.test.d.ts.map +1 -0
  276. package/dist/sdk.publicApi.test.js +78 -0
  277. package/dist/sdk.publicApi.test.js.map +1 -0
  278. package/dist/types.d.ts +159 -0
  279. package/dist/types.d.ts.map +1 -1
  280. package/dist/utils/__tests__/branded.test.d.ts +2 -0
  281. package/dist/utils/__tests__/branded.test.d.ts.map +1 -0
  282. package/dist/utils/__tests__/branded.test.js +293 -0
  283. package/dist/utils/__tests__/branded.test.js.map +1 -0
  284. package/dist/utils/__tests__/fees.test.d.ts +2 -0
  285. package/dist/utils/__tests__/fees.test.d.ts.map +1 -0
  286. package/dist/utils/__tests__/fees.test.js +84 -0
  287. package/dist/utils/__tests__/fees.test.js.map +1 -0
  288. package/dist/utils/__tests__/hex.test.d.ts +2 -0
  289. package/dist/utils/__tests__/hex.test.d.ts.map +1 -0
  290. package/dist/utils/__tests__/hex.test.js +252 -0
  291. package/dist/utils/__tests__/hex.test.js.map +1 -0
  292. package/dist/utils/__tests__/http.test.d.ts +2 -0
  293. package/dist/utils/__tests__/http.test.d.ts.map +1 -0
  294. package/dist/utils/__tests__/http.test.js +295 -0
  295. package/dist/utils/__tests__/http.test.js.map +1 -0
  296. package/dist/utils/branded.d.ts +154 -0
  297. package/dist/utils/branded.d.ts.map +1 -0
  298. package/dist/utils/branded.js +177 -0
  299. package/dist/utils/branded.js.map +1 -0
  300. package/dist/utils/fees.d.ts +6 -0
  301. package/dist/utils/fees.d.ts.map +1 -1
  302. package/dist/utils/fees.js +4 -0
  303. package/dist/utils/fees.js.map +1 -1
  304. package/dist/utils/hex.d.ts +37 -0
  305. package/dist/utils/hex.d.ts.map +1 -1
  306. package/dist/utils/hex.js +30 -0
  307. package/dist/utils/hex.js.map +1 -1
  308. package/dist/utils/http.d.ts +100 -0
  309. package/dist/utils/http.d.ts.map +1 -1
  310. package/dist/utils/http.js +158 -0
  311. package/dist/utils/http.js.map +1 -1
  312. package/dist/utils/merkle.d.ts +26 -0
  313. package/dist/utils/merkle.d.ts.map +1 -1
  314. package/dist/utils/merkle.js +26 -0
  315. package/dist/utils/merkle.js.map +1 -1
  316. package/dist/wasm/__tests__/artifacts.test.d.ts +2 -0
  317. package/dist/wasm/__tests__/artifacts.test.d.ts.map +1 -0
  318. package/dist/wasm/__tests__/artifacts.test.js +437 -0
  319. package/dist/wasm/__tests__/artifacts.test.js.map +1 -0
  320. package/dist/wasm/__tests__/functions.test.d.ts +2 -0
  321. package/dist/wasm/__tests__/functions.test.d.ts.map +1 -0
  322. package/dist/wasm/__tests__/functions.test.js +34 -0
  323. package/dist/wasm/__tests__/functions.test.js.map +1 -0
  324. package/dist/wasm/__tests__/helpers.test.d.ts +2 -0
  325. package/dist/wasm/__tests__/helpers.test.d.ts.map +1 -0
  326. package/dist/wasm/__tests__/helpers.test.js +128 -0
  327. package/dist/wasm/__tests__/helpers.test.js.map +1 -0
  328. package/dist/wasm/__tests__/loader.test.d.ts +2 -0
  329. package/dist/wasm/__tests__/loader.test.d.ts.map +1 -0
  330. package/dist/wasm/__tests__/loader.test.js +201 -0
  331. package/dist/wasm/__tests__/loader.test.js.map +1 -0
  332. package/dist/wasm/__tests__/runtime.test.d.ts +2 -0
  333. package/dist/wasm/__tests__/runtime.test.d.ts.map +1 -0
  334. package/dist/wasm/__tests__/runtime.test.js +335 -0
  335. package/dist/wasm/__tests__/runtime.test.js.map +1 -0
  336. package/dist/wasm/__tests__/serialization.test.d.ts +2 -0
  337. package/dist/wasm/__tests__/serialization.test.d.ts.map +1 -0
  338. package/dist/wasm/__tests__/serialization.test.js +226 -0
  339. package/dist/wasm/__tests__/serialization.test.js.map +1 -0
  340. package/dist/wasm/__tests__/validation.test.js +15 -15
  341. package/dist/wasm/__tests__/validation.test.js.map +1 -1
  342. package/dist/wasm/artifacts.d.ts +121 -3
  343. package/dist/wasm/artifacts.d.ts.map +1 -1
  344. package/dist/wasm/artifacts.js +175 -50
  345. package/dist/wasm/artifacts.js.map +1 -1
  346. package/dist/wasm/functions.d.ts +77 -0
  347. package/dist/wasm/functions.d.ts.map +1 -0
  348. package/dist/wasm/functions.js +120 -0
  349. package/dist/wasm/functions.js.map +1 -0
  350. package/dist/wasm/helpers.d.ts +32 -0
  351. package/dist/wasm/helpers.d.ts.map +1 -0
  352. package/dist/wasm/helpers.js +79 -0
  353. package/dist/wasm/helpers.js.map +1 -0
  354. package/dist/wasm/index.d.ts +13 -68
  355. package/dist/wasm/index.d.ts.map +1 -1
  356. package/dist/wasm/index.js +14 -514
  357. package/dist/wasm/index.js.map +1 -1
  358. package/dist/wasm/loader.d.ts +76 -0
  359. package/dist/wasm/loader.d.ts.map +1 -0
  360. package/dist/wasm/loader.js +145 -0
  361. package/dist/wasm/loader.js.map +1 -0
  362. package/dist/wasm/runtime.d.ts +65 -0
  363. package/dist/wasm/runtime.d.ts.map +1 -0
  364. package/dist/wasm/runtime.js +227 -0
  365. package/dist/wasm/runtime.js.map +1 -0
  366. package/dist/wasm/serialization.d.ts +113 -0
  367. package/dist/wasm/serialization.d.ts.map +1 -0
  368. package/dist/wasm/serialization.js +188 -0
  369. package/dist/wasm/serialization.js.map +1 -0
  370. package/dist/wasm/types.d.ts +30 -0
  371. package/dist/wasm/types.d.ts.map +1 -0
  372. package/dist/wasm/types.js +2 -0
  373. package/dist/wasm/types.js.map +1 -0
  374. package/dist/zkp/__tests__/proofService.test.d.ts +2 -0
  375. package/dist/zkp/__tests__/proofService.test.d.ts.map +1 -0
  376. package/dist/zkp/__tests__/proofService.test.js +283 -0
  377. package/dist/zkp/__tests__/proofService.test.js.map +1 -0
  378. package/dist/zkp/__tests__/proofUtils.test.js +86 -0
  379. package/dist/zkp/__tests__/proofUtils.test.js.map +1 -1
  380. package/dist/zkp/__tests__/runNovaProver.test.js +13 -1
  381. package/dist/zkp/__tests__/runNovaProver.test.js.map +1 -1
  382. package/dist/zkp/__tests__/workerClient.test.d.ts +2 -0
  383. package/dist/zkp/__tests__/workerClient.test.d.ts.map +1 -0
  384. package/dist/zkp/__tests__/workerClient.test.js +415 -0
  385. package/dist/zkp/__tests__/workerClient.test.js.map +1 -0
  386. package/dist/zkp/index.d.ts +1 -1
  387. package/dist/zkp/index.d.ts.map +1 -1
  388. package/dist/zkp/index.js +1 -1
  389. package/dist/zkp/index.js.map +1 -1
  390. package/dist/zkp/proofService.d.ts +27 -0
  391. package/dist/zkp/proofService.d.ts.map +1 -1
  392. package/dist/zkp/proofService.js +29 -21
  393. package/dist/zkp/proofService.js.map +1 -1
  394. package/dist/zkp/proofUtils.d.ts +36 -0
  395. package/dist/zkp/proofUtils.d.ts.map +1 -1
  396. package/dist/zkp/proofUtils.js +50 -0
  397. package/dist/zkp/proofUtils.js.map +1 -1
  398. package/dist/zkp/workerClient.d.ts +65 -0
  399. package/dist/zkp/workerClient.d.ts.map +1 -1
  400. package/dist/zkp/workerClient.js +135 -61
  401. package/dist/zkp/workerClient.js.map +1 -1
  402. package/dist/zkp/workerTypes.d.ts +27 -0
  403. package/dist/zkp/workerTypes.d.ts.map +1 -1
  404. package/package.json +7 -3
package/README.md ADDED
@@ -0,0 +1,261 @@
1
+ # zerc20-client-sdk
2
+
3
+ Client SDK for interacting with zERC20 privacy-preserving token system from browser or Node.js environments.
4
+
5
+ ## Overview
6
+
7
+ zERC20 is a privacy-preserving, cross-chain ERC-20 token system that enables:
8
+
9
+ - Private transfers using zero-knowledge proofs (Nova and Groth16 circuits)
10
+ - Stealth transactions via a messaging layer on the Internet Computer (ICP)
11
+ - Cross-chain functionality using LayerZero as the interoperability protocol
12
+
13
+ This SDK provides TypeScript bindings for all client-side operations.
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ npm install zerc20-client-sdk
19
+ ```
20
+
21
+ ## Requirements
22
+
23
+ - Node.js >= 18
24
+ - Browser with WebAssembly support
25
+
26
+ ## Quick Start
27
+
28
+ ```typescript
29
+ import { createSdk, preparePrivateSend, scanReceivings } from "zerc20-client-sdk";
30
+
31
+ // Initialize SDK
32
+ const sdk = createSdk({
33
+ // configuration options
34
+ });
35
+
36
+ // Create a stealth client for ICP communication
37
+ const client = sdk.createStealthClient({
38
+ agent,
39
+ storageCanisterId,
40
+ keyManagerCanisterId,
41
+ });
42
+
43
+ // Prepare a private send
44
+ const prepared = await preparePrivateSend({
45
+ client,
46
+ seed,
47
+ recipientChainId,
48
+ recipientAddress,
49
+ // ...
50
+ });
51
+
52
+ // Scan for received payments
53
+ const announcements = await scanReceivings({
54
+ client,
55
+ vetKey,
56
+ // ...
57
+ });
58
+ ```
59
+
60
+ ## Architecture
61
+
62
+ ```
63
+ src/
64
+ ├── ic/ # Internet Computer (ICP) integration
65
+ │ ├── client.ts # StealthCanisterClient for canister communication
66
+ │ ├── idl.ts # Candid IDL factory definitions
67
+ │ ├── encryption.ts # IBE + AES-GCM encryption
68
+ │ ├── authorization.ts # EIP-191 signing & VetKD authorization
69
+ │ └── keys.ts # View key derivation
70
+ ├── operations/ # High-level protocol operations
71
+ │ ├── privateSend.ts # Private payment flow
72
+ │ ├── receive/ # Receive/scan announcements
73
+ │ ├── invoice.ts # Invoice creation
74
+ │ ├── teleport.ts # Single teleport proof
75
+ │ ├── teleportProof.ts # Batch teleport proof (Nova + Decider)
76
+ │ └── liquidityManager/ # Wrap/unwrap with slippage protection
77
+ ├── wasm/ # WASM runtime & bindings
78
+ │ ├── index.ts # WasmRuntime class
79
+ │ ├── loader.ts # WASM bindings loader (browser/Node.js)
80
+ │ └── serialization.ts # Type conversion utilities
81
+ ├── zkp/ # Zero-knowledge proof orchestration
82
+ ├── decider/ # Decider proof generation (HTTP client)
83
+ ├── registry/ # Token & hub configuration
84
+ ├── onchain/ # Viem contract bindings
85
+ └── utils/ # Shared utilities
86
+ ```
87
+
88
+ ## Key Modules
89
+
90
+ ### WasmRuntime
91
+
92
+ Manages WASM module loading with dual runtime support (Browser/Node.js):
93
+
94
+ ```typescript
95
+ import { WasmRuntime, getDefaultWasmRuntime } from "zerc20-client-sdk";
96
+
97
+ // Use default singleton
98
+ const runtime = getDefaultWasmRuntime();
99
+ await runtime.ready();
100
+
101
+ // Or create a custom instance
102
+ const customRuntime = new WasmRuntime({
103
+ url: "https://example.com/zerc20_wasm_bg.wasm",
104
+ });
105
+ ```
106
+
107
+ ### StealthCanisterClient
108
+
109
+ Communicates with ICP canisters for announcements and invoices:
110
+
111
+ ```typescript
112
+ import { StealthCanisterClient } from "zerc20-client-sdk";
113
+
114
+ const client = new StealthCanisterClient(agent, storageCanisterId, keyManagerCanisterId);
115
+
116
+ // Submit an announcement
117
+ await client.submitAnnouncement(announcementInput);
118
+
119
+ // List announcements
120
+ const page = await client.listAnnouncements(startAfter, limit);
121
+ ```
122
+
123
+ ### Liquidity Manager
124
+
125
+ Wrap and unwrap tokens with slippage protection:
126
+
127
+ ```typescript
128
+ import {
129
+ unwrapWithLiquidityManager,
130
+ buildCrossUnwrapQuote,
131
+ applySlippage,
132
+ } from "zerc20-client-sdk";
133
+
134
+ // Local unwrap with slippage protection
135
+ await unwrapWithLiquidityManager({
136
+ walletClient,
137
+ liquidityManagerAddress,
138
+ zerc20TokenAddress,
139
+ amount: 1000n,
140
+ minAmountOut: 950n, // Reject if output < 950
141
+ });
142
+
143
+ // Cross-chain unwrap with slippage tolerance (basis points)
144
+ const quote = await buildCrossUnwrapQuote({
145
+ sourceToken,
146
+ destinationToken,
147
+ amount: 1000n,
148
+ account,
149
+ slippageBps: 50, // 0.5% slippage tolerance
150
+ });
151
+ ```
152
+
153
+ ### Proof Generation
154
+
155
+ ```typescript
156
+ import {
157
+ HttpDeciderClient,
158
+ createTeleportProofClient,
159
+ getDefaultWasmRuntime,
160
+ } from "zerc20-client-sdk";
161
+
162
+ const runtime = getDefaultWasmRuntime();
163
+ await runtime.ready();
164
+
165
+ const proofClient = createTeleportProofClient({ wasm: runtime });
166
+
167
+ // Single teleport proof (Groth16)
168
+ const singleProof = await proofClient.createSingleTeleportProof(/* ... */);
169
+
170
+ // Batch teleport proof (Nova + Decider)
171
+ const decider = new HttpDeciderClient("https://decider.example.com");
172
+ const batchProof = await proofClient.createBatchTeleportProof({
173
+ decider,
174
+ // ... other inputs
175
+ });
176
+ ```
177
+
178
+ ## Development
179
+
180
+ ### Build
181
+
182
+ ```bash
183
+ npm run build
184
+ ```
185
+
186
+ ### Test
187
+
188
+ ```bash
189
+ npm test
190
+ ```
191
+
192
+ ### Type Check
193
+
194
+ ```bash
195
+ npm run typecheck
196
+ ```
197
+
198
+ ## Tests
199
+
200
+ ```bash
201
+ npm test
202
+ ```
203
+
204
+ **Current (as of 2026-02-06): 755 passed, 2 skipped**
205
+ Note: This number will drift over time; treat `npm test` output as the source of truth.
206
+
207
+ ### Skipped Tests
208
+
209
+ 1. **`src/zkp/__tests__/runNovaProver.test.ts`**
210
+ - Skipped when artifact files are missing
211
+ - Artifacts are expected under `public/artifacts/`:
212
+ - `withdraw_local_groth16_pk.bin`
213
+ - `withdraw_local_groth16_vk.bin`
214
+ - `withdraw_global_groth16_pk.bin`
215
+ - `withdraw_global_groth16_vk.bin`
216
+ - `withdraw_local_nova_pp.bin`
217
+ - `withdraw_local_nova_vp.bin`
218
+ - `withdraw_global_nova_pp.bin`
219
+ - `withdraw_global_nova_vp.bin`
220
+
221
+ 2. **`src/ic/__tests__/storage_localnet.test.ts`**
222
+ - Skipped by design
223
+ - Requires running local ICP replica (`dfx start`)
224
+
225
+ ## API Stability and Refactoring Policy
226
+
227
+ `zerc20-client-sdk` is published and used by downstream applications (e.g. `zerc20-frontend`). As a rule, prefer non-breaking refactors.
228
+
229
+ - Prefer importing from the package root (`import { ... } from "zerc20-client-sdk"`). Subpath imports are considered internal and may change.
230
+ - Avoid changing the public surface (notably `src/index.ts` exports and re-exports) unless necessary.
231
+ - Avoid breaking changes to the public surface (notably `src/index.ts` exports).
232
+ - When a rename/restructure is desired, keep the old entrypoint and mark it `@deprecated`, and introduce the new API in parallel.
233
+ - Deprecation guideline:
234
+ - Keep deprecated entrypoints for at least one minor release (or a clearly communicated timeframe) before removal.
235
+ - Removal (or behavioral changes) should only happen in a major version bump, with a migration note.
236
+ - If a breaking change is unavoidable:
237
+ - Provide a migration note (old → new) in the release/PR description.
238
+ - Bump the version appropriately (SemVer).
239
+ - Validate against downstream usage (at minimum run TypeScript typecheck/build in `zerc20-frontend`).
240
+
241
+ ### Downstream Verification (Recommended)
242
+
243
+ Before merging changes that touch public exports/types, validate against the downstream app:
244
+
245
+ ```bash
246
+ # In zerc20-frontend
247
+ npm run typecheck
248
+ npm run build
249
+ ```
250
+
251
+ ## Dependencies
252
+
253
+ - `@dfinity/*` - Internet Computer SDK
254
+ - `viem` - Ethereum library
255
+ - `@noble/curves` - Cryptographic primitives
256
+ - `poseidon-lite` - Poseidon hash function
257
+ - `pako` - Compression (gzip)
258
+
259
+ ## License
260
+
261
+ MIT
@@ -1,10 +1,25 @@
1
+ /**
2
+ * Global protocol and SDK defaults.
3
+ * @remarks
4
+ * These constants are part of the public API. Changing them may affect proof compatibility,
5
+ * indexer interactions, and IC storage routing.
6
+ */
7
+ /** Height of the aggregation tree (number of levels). */
1
8
  export declare const AGGREGATION_TREE_HEIGHT = 6;
9
+ /** Height of the per-chain transfer tree (number of levels). */
2
10
  export declare const TRANSFER_TREE_HEIGHT = 40;
11
+ /** Height of the global transfer tree (aggregation + transfer). */
3
12
  export declare const GLOBAL_TRANSFER_TREE_HEIGHT: number;
13
+ /** Number of burn addresses in a batch invoice. */
4
14
  export declare const NUM_BATCH_INVOICES = 10;
15
+ /** Default max number of events to fetch per indexer request. */
5
16
  export declare const DEFAULT_INDEXER_FETCH_LIMIT = 20;
17
+ /** Default block span used when querying aggregation state (in blocks). */
6
18
  export declare const DEFAULT_EVENT_BLOCK_SPAN = 5000n;
19
+ /** Default timeout for decider jobs (milliseconds). */
7
20
  export declare const DEFAULT_DECIDER_TIMEOUT_MS: number;
21
+ /** Default polling interval for decider job status checks (milliseconds). */
8
22
  export declare const DEFAULT_DECIDER_POLL_INTERVAL_MS = 1000;
23
+ /** Default IC storage tag used when no tag is provided. */
9
24
  export declare const DEFAULT_ZSTORAGE_TAG = "v1";
10
25
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,2BAA2B,QAAiD,CAAC;AAC1F,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,eAAO,MAAM,0BAA0B,QAAgB,CAAC;AACxD,eAAO,MAAM,gCAAgC,OAAQ,CAAC;AACtD,eAAO,MAAM,oBAAoB,OAAO,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,mEAAmE;AACnE,eAAO,MAAM,2BAA2B,QAAiD,CAAC;AAC1F,mDAAmD;AACnD,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,iEAAiE;AACjE,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,uDAAuD;AACvD,eAAO,MAAM,0BAA0B,QAAgB,CAAC;AACxD,6EAA6E;AAC7E,eAAO,MAAM,gCAAgC,OAAQ,CAAC;AACtD,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,OAAO,CAAC"}
package/dist/constants.js CHANGED
@@ -1,10 +1,25 @@
1
+ /**
2
+ * Global protocol and SDK defaults.
3
+ * @remarks
4
+ * These constants are part of the public API. Changing them may affect proof compatibility,
5
+ * indexer interactions, and IC storage routing.
6
+ */
7
+ /** Height of the aggregation tree (number of levels). */
1
8
  export const AGGREGATION_TREE_HEIGHT = 6;
9
+ /** Height of the per-chain transfer tree (number of levels). */
2
10
  export const TRANSFER_TREE_HEIGHT = 40;
11
+ /** Height of the global transfer tree (aggregation + transfer). */
3
12
  export const GLOBAL_TRANSFER_TREE_HEIGHT = TRANSFER_TREE_HEIGHT + AGGREGATION_TREE_HEIGHT;
13
+ /** Number of burn addresses in a batch invoice. */
4
14
  export const NUM_BATCH_INVOICES = 10;
15
+ /** Default max number of events to fetch per indexer request. */
5
16
  export const DEFAULT_INDEXER_FETCH_LIMIT = 20;
17
+ /** Default block span used when querying aggregation state (in blocks). */
6
18
  export const DEFAULT_EVENT_BLOCK_SPAN = 5000n;
19
+ /** Default timeout for decider jobs (milliseconds). */
7
20
  export const DEFAULT_DECIDER_TIMEOUT_MS = 5 * 60 * 1000;
21
+ /** Default polling interval for decider job status checks (milliseconds). */
8
22
  export const DEFAULT_DECIDER_POLL_INTERVAL_MS = 1_000;
23
+ /** Default IC storage tag used when no tag is provided. */
9
24
  export const DEFAULT_ZSTORAGE_TAG = "v1";
10
25
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,2BAA2B,GAAG,oBAAoB,GAAG,uBAAuB,CAAC;AAC1F,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAC9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAM,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,CAAC;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,yDAAyD;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,gEAAgE;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,mEAAmE;AACnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,oBAAoB,GAAG,uBAAuB,CAAC;AAC1F,mDAAmD;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,iEAAiE;AACjE,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAC9C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAM,CAAC;AAC/C,uDAAuD;AACvD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,CAAC;AACtD,2DAA2D;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=prover.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prover.test.d.ts","sourceRoot":"","sources":["../../../src/decider/__tests__/prover.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,246 @@
1
+ import { beforeEach, describe, expect, test, vi } from "vitest";
2
+ import { HttpDeciderClient } from "../prover.js";
3
+ function createMockFetch(responses) {
4
+ let callIndex = 0;
5
+ return vi.fn().mockImplementation(() => {
6
+ const response = responses[callIndex] ?? responses[responses.length - 1];
7
+ callIndex++;
8
+ return Promise.resolve({
9
+ ok: response.ok,
10
+ status: response.status ?? (response.ok ? 200 : 500),
11
+ json: response.json ?? (() => Promise.resolve({})),
12
+ });
13
+ });
14
+ }
15
+ function createCompletedResponse(result) {
16
+ return {
17
+ ok: true,
18
+ json: () => Promise.resolve({
19
+ job_id: "test-job",
20
+ circuit: "root",
21
+ status: "completed",
22
+ result,
23
+ }),
24
+ };
25
+ }
26
+ function createQueuedResponse() {
27
+ return {
28
+ ok: true,
29
+ json: () => Promise.resolve({
30
+ job_id: "test-job",
31
+ circuit: "root",
32
+ status: "queued",
33
+ }),
34
+ };
35
+ }
36
+ function createProcessingResponse() {
37
+ return {
38
+ ok: true,
39
+ json: () => Promise.resolve({
40
+ job_id: "test-job",
41
+ circuit: "root",
42
+ status: "processing",
43
+ }),
44
+ };
45
+ }
46
+ function createFailedResponse(error) {
47
+ return {
48
+ ok: true,
49
+ json: () => Promise.resolve({
50
+ job_id: "test-job",
51
+ circuit: "root",
52
+ status: "failed",
53
+ error,
54
+ }),
55
+ };
56
+ }
57
+ describe("HttpDeciderClient", () => {
58
+ describe("constructor", () => {
59
+ test("normalizes base URL without trailing slash", () => {
60
+ const mockFetch = createMockFetch([{ ok: true }, createCompletedResponse("AAAA")]);
61
+ const client = new HttpDeciderClient("https://example.com/api", {
62
+ fetchImpl: mockFetch,
63
+ pollIntervalMs: 1,
64
+ });
65
+ // Trigger a request to verify URL construction
66
+ client.produceDeciderProof("root", new Uint8Array([1, 2, 3]));
67
+ expect(mockFetch).toHaveBeenCalledWith("https://example.com/api/jobs", expect.any(Object));
68
+ });
69
+ test("handles base URL with trailing slash", () => {
70
+ const mockFetch = createMockFetch([{ ok: true }, createCompletedResponse("AAAA")]);
71
+ const client = new HttpDeciderClient("https://example.com/api/", {
72
+ fetchImpl: mockFetch,
73
+ pollIntervalMs: 1,
74
+ });
75
+ client.produceDeciderProof("root", new Uint8Array([1, 2, 3]));
76
+ expect(mockFetch).toHaveBeenCalledWith("https://example.com/api/jobs", expect.any(Object));
77
+ });
78
+ });
79
+ describe("produceDeciderProof", () => {
80
+ beforeEach(() => {
81
+ vi.clearAllMocks();
82
+ });
83
+ test("submits job and returns result on immediate completion", async () => {
84
+ // Base64 for [1, 2, 3]
85
+ const resultBase64 = "AQID";
86
+ const mockFetch = createMockFetch([
87
+ { ok: true }, // submit
88
+ createCompletedResponse(resultBase64), // status
89
+ ]);
90
+ const client = new HttpDeciderClient("https://example.com", {
91
+ fetchImpl: mockFetch,
92
+ pollIntervalMs: 1,
93
+ });
94
+ const result = await client.produceDeciderProof("root", new Uint8Array([1, 2, 3]));
95
+ expect(result).toEqual(new Uint8Array([1, 2, 3]));
96
+ expect(mockFetch).toHaveBeenCalledTimes(2);
97
+ });
98
+ test("polls until job completes", async () => {
99
+ const resultBase64 = "AQID";
100
+ const mockFetch = createMockFetch([
101
+ { ok: true }, // submit
102
+ createQueuedResponse(), // first poll
103
+ createProcessingResponse(), // second poll
104
+ createCompletedResponse(resultBase64), // third poll
105
+ ]);
106
+ const client = new HttpDeciderClient("https://example.com", {
107
+ fetchImpl: mockFetch,
108
+ pollIntervalMs: 1,
109
+ });
110
+ const result = await client.produceDeciderProof("root", new Uint8Array([1, 2, 3]));
111
+ expect(result).toEqual(new Uint8Array([1, 2, 3]));
112
+ expect(mockFetch).toHaveBeenCalledTimes(4);
113
+ });
114
+ test("accepts hex string as ivc proof", async () => {
115
+ const resultBase64 = "AQID";
116
+ const mockFetch = createMockFetch([{ ok: true }, createCompletedResponse(resultBase64)]);
117
+ const client = new HttpDeciderClient("https://example.com", {
118
+ fetchImpl: mockFetch,
119
+ pollIntervalMs: 1,
120
+ });
121
+ const result = await client.produceDeciderProof("root", "0x010203");
122
+ expect(result).toEqual(new Uint8Array([1, 2, 3]));
123
+ });
124
+ test("throws on job submission failure", async () => {
125
+ const mockFetch = createMockFetch([{ ok: false, status: 500 }]);
126
+ const client = new HttpDeciderClient("https://example.com", {
127
+ fetchImpl: mockFetch,
128
+ pollIntervalMs: 1,
129
+ });
130
+ await expect(client.produceDeciderProof("root", new Uint8Array([1, 2, 3]))).rejects.toThrow("decider job submission failed");
131
+ });
132
+ test("throws on job status check failure", async () => {
133
+ const mockFetch = createMockFetch([
134
+ { ok: true }, // submit
135
+ { ok: false, status: 404 }, // status check
136
+ ]);
137
+ const client = new HttpDeciderClient("https://example.com", {
138
+ fetchImpl: mockFetch,
139
+ pollIntervalMs: 1,
140
+ });
141
+ await expect(client.produceDeciderProof("root", new Uint8Array([1, 2, 3]))).rejects.toThrow("decider job status check failed");
142
+ });
143
+ test("throws on job failure", async () => {
144
+ const mockFetch = createMockFetch([
145
+ { ok: true },
146
+ createFailedResponse("proof generation error"),
147
+ ]);
148
+ const client = new HttpDeciderClient("https://example.com", {
149
+ fetchImpl: mockFetch,
150
+ pollIntervalMs: 1,
151
+ });
152
+ await expect(client.produceDeciderProof("root", new Uint8Array([1, 2, 3]))).rejects.toThrow("decider job");
153
+ await expect(client.produceDeciderProof("root", new Uint8Array([1, 2, 3]))).rejects.toThrow("proof generation error");
154
+ });
155
+ test("throws on job completion without result", async () => {
156
+ const mockFetch = createMockFetch([
157
+ { ok: true },
158
+ {
159
+ ok: true,
160
+ json: () => Promise.resolve({
161
+ job_id: "test-job",
162
+ circuit: "root",
163
+ status: "completed",
164
+ result: null,
165
+ }),
166
+ },
167
+ ]);
168
+ const client = new HttpDeciderClient("https://example.com", {
169
+ fetchImpl: mockFetch,
170
+ pollIntervalMs: 1,
171
+ });
172
+ await expect(client.produceDeciderProof("root", new Uint8Array([1, 2, 3]))).rejects.toThrow("completed without result");
173
+ });
174
+ test("throws on timeout", async () => {
175
+ const mockFetch = createMockFetch([
176
+ { ok: true },
177
+ createQueuedResponse(),
178
+ createQueuedResponse(),
179
+ createQueuedResponse(),
180
+ ]);
181
+ const client = new HttpDeciderClient("https://example.com", {
182
+ fetchImpl: mockFetch,
183
+ pollIntervalMs: 1,
184
+ timeoutMs: 10, // Very short timeout
185
+ });
186
+ await expect(client.produceDeciderProof("root", new Uint8Array([1, 2, 3]))).rejects.toThrow("timed out");
187
+ });
188
+ test("throws on fetch error", async () => {
189
+ const mockFetch = vi.fn().mockRejectedValue(new Error("Network error"));
190
+ const client = new HttpDeciderClient("https://example.com", {
191
+ fetchImpl: mockFetch,
192
+ pollIntervalMs: 1,
193
+ });
194
+ await expect(client.produceDeciderProof("root", new Uint8Array([1, 2, 3]))).rejects.toThrow("decider job submission failed");
195
+ await expect(client.produceDeciderProof("root", new Uint8Array([1, 2, 3]))).rejects.toThrow("Network error");
196
+ });
197
+ test("sends correct request body", async () => {
198
+ const mockFetch = createMockFetch([{ ok: true }, createCompletedResponse("AAAA")]);
199
+ const client = new HttpDeciderClient("https://example.com", {
200
+ fetchImpl: mockFetch,
201
+ pollIntervalMs: 1,
202
+ });
203
+ await client.produceDeciderProof("withdraw_local", new Uint8Array([1, 2, 3]));
204
+ expect(mockFetch).toHaveBeenCalledWith(expect.any(String), expect.objectContaining({
205
+ method: "POST",
206
+ headers: { "Content-Type": "application/json" },
207
+ body: expect.stringContaining('"circuit":"withdraw_local"'),
208
+ }));
209
+ });
210
+ test("handles different circuit kinds", async () => {
211
+ const circuits = [
212
+ "root",
213
+ "withdraw_local",
214
+ "withdraw_global",
215
+ ];
216
+ for (const circuit of circuits) {
217
+ const mockFetch = createMockFetch([{ ok: true }, createCompletedResponse("AAAA")]);
218
+ const client = new HttpDeciderClient("https://example.com", {
219
+ fetchImpl: mockFetch,
220
+ pollIntervalMs: 1,
221
+ });
222
+ await client.produceDeciderProof(circuit, new Uint8Array([1]));
223
+ expect(mockFetch).toHaveBeenCalledWith(expect.any(String), expect.objectContaining({
224
+ body: expect.stringContaining(`"circuit":"${circuit}"`),
225
+ }));
226
+ }
227
+ });
228
+ test("throws for invalid hex string", async () => {
229
+ const mockFetch = createMockFetch([]);
230
+ const client = new HttpDeciderClient("https://example.com", {
231
+ fetchImpl: mockFetch,
232
+ pollIntervalMs: 1,
233
+ });
234
+ await expect(client.produceDeciderProof("root", "0x123")).rejects.toThrow("hex input must have even length");
235
+ });
236
+ test("throws for non-hex non-Uint8Array input", async () => {
237
+ const mockFetch = createMockFetch([]);
238
+ const client = new HttpDeciderClient("https://example.com", {
239
+ fetchImpl: mockFetch,
240
+ pollIntervalMs: 1,
241
+ });
242
+ await expect(client.produceDeciderProof("root", "not hex")).rejects.toThrow("ivc proof must be Uint8Array or 0x-prefixed hex string");
243
+ });
244
+ });
245
+ });
246
+ //# sourceMappingURL=prover.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prover.test.js","sourceRoot":"","sources":["../../../src/decider/__tests__/prover.test.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,49 @@
1
+ /**
2
+ * Supported circuit kinds for the decider service.
3
+ */
1
4
  export type CircuitKind = "root" | "withdraw_local" | "withdraw_global";
5
+ /**
6
+ * Configuration options for {@link HttpDeciderClient}.
7
+ */
2
8
  export interface DeciderClientOptions {
9
+ /**
10
+ * Poll interval (milliseconds) used while waiting for job completion.
11
+ * @defaultValue `DEFAULT_DECIDER_POLL_INTERVAL_MS`
12
+ */
3
13
  pollIntervalMs?: number;
14
+ /**
15
+ * Max time (milliseconds) to wait for a job to complete before failing.
16
+ * @defaultValue `DEFAULT_DECIDER_TIMEOUT_MS`
17
+ */
4
18
  timeoutMs?: number;
19
+ /** Optional custom fetch implementation (useful for tests or environments without global fetch). */
5
20
  fetchImpl?: typeof fetch;
6
21
  }
7
22
  export declare class HttpDeciderClient {
8
- private readonly baseUrl;
23
+ private readonly http;
9
24
  private readonly pollInterval;
10
25
  private readonly timeout;
11
- private readonly fetchFn;
26
+ /**
27
+ * Create a decider client.
28
+ * @param baseUrl - Decider service base URL.
29
+ * @param options - Polling and fetch options.
30
+ */
12
31
  constructor(baseUrl: string, options?: DeciderClientOptions);
13
- private url;
14
- private performFetch;
32
+ /**
33
+ * Submit an IVC proof to the decider service and poll until the decider proof is produced.
34
+ * @remarks
35
+ * This method:
36
+ * - Submits a job via `POST /jobs`
37
+ * - Polls `GET /jobs/:id` until status is `completed` or `failed`
38
+ *
39
+ * There is no retry/backoff strategy beyond fixed-interval polling.
40
+ * Network and non-OK HTTP responses are surfaced as thrown errors.
41
+ *
42
+ * @param circuit - Circuit kind to run on the service.
43
+ * @param ivcProof - IVC proof bytes. Accepts `Uint8Array` or a `0x`-prefixed hex string.
44
+ * @returns Decider proof bytes (`Uint8Array`).
45
+ * @throws If job submission fails, status polling fails, job fails, or timeout is reached.
46
+ */
15
47
  produceDeciderProof(circuit: CircuitKind, ivcProof: Uint8Array | string): Promise<Uint8Array>;
16
48
  }
17
49
  //# sourceMappingURL=prover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prover.d.ts","sourceRoot":"","sources":["../../src/decider/prover.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAExE,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AA2CD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE3B,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB;IAW/D,OAAO,CAAC,GAAG;YAIG,YAAY;IASpB,mBAAmB,CACvB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAC5B,OAAO,CAAC,UAAU,CAAC;CAiDvB"}
1
+ {"version":3,"file":"prover.d.ts","sourceRoot":"","sources":["../../src/decider/prover.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oGAAoG;IACpG,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAuDD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC;;;;OAIG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB;IAS/D;;;;;;;;;;;;;;OAcG;IACG,mBAAmB,CACvB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAC5B,OAAO,CAAC,UAAU,CAAC;CAkDvB"}