@veilo/sdk-core 0.4.0 → 0.6.0

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 (481) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +449 -1243
  3. package/accounts.d.ts +2 -0
  4. package/accounts.js +3 -0
  5. package/cloak.d.ts +2 -0
  6. package/cloak.js +3 -0
  7. package/config.d.ts +2 -2
  8. package/config.js +2 -3
  9. package/dist/cjs/accounts/admin.d.ts +84 -0
  10. package/dist/cjs/accounts/admin.js +208 -0
  11. package/dist/cjs/accounts/errors.d.ts +6 -0
  12. package/dist/cjs/accounts/errors.js +98 -0
  13. package/dist/cjs/accounts/index.d.ts +4 -0
  14. package/dist/cjs/accounts/index.js +20 -0
  15. package/dist/cjs/accounts/pdas.d.ts +23 -0
  16. package/dist/cjs/accounts/pdas.js +44 -0
  17. package/dist/cjs/accounts/queries.d.ts +41 -0
  18. package/dist/cjs/accounts/queries.js +95 -0
  19. package/dist/cjs/client.d.ts +2 -407
  20. package/dist/cjs/client.js +6 -938
  21. package/dist/cjs/cloak/client.d.ts +28 -0
  22. package/dist/cjs/cloak/client.js +68 -0
  23. package/dist/cjs/cloak/errors.d.ts +13 -0
  24. package/dist/cjs/cloak/errors.js +25 -0
  25. package/dist/cjs/cloak/helpers.d.ts +6 -0
  26. package/dist/cjs/cloak/helpers.js +35 -0
  27. package/dist/cjs/cloak/index.d.ts +6 -0
  28. package/dist/cjs/cloak/index.js +24 -0
  29. package/dist/cjs/cloak/polling.d.ts +7 -0
  30. package/dist/cjs/cloak/polling.js +66 -0
  31. package/dist/cjs/cloak/transport.d.ts +15 -0
  32. package/dist/cjs/cloak/transport.js +119 -0
  33. package/dist/cjs/cloak/types.d.ts +188 -0
  34. package/dist/cjs/cloak/types.js +5 -0
  35. package/dist/cjs/cloak.d.ts +1 -0
  36. package/dist/cjs/cloak.js +18 -0
  37. package/dist/cjs/compactNote.d.ts +21 -0
  38. package/dist/cjs/compactNote.js +31 -7
  39. package/dist/cjs/events/index.d.ts +6 -0
  40. package/dist/cjs/events/index.js +22 -0
  41. package/dist/cjs/events/parsing.d.ts +25 -0
  42. package/dist/cjs/events/parsing.js +158 -0
  43. package/dist/cjs/events/position.d.ts +26 -0
  44. package/dist/cjs/events/position.js +53 -0
  45. package/dist/cjs/events/recovery.d.ts +87 -0
  46. package/dist/cjs/events/recovery.js +281 -0
  47. package/dist/cjs/events/scanning.d.ts +35 -0
  48. package/dist/cjs/events/scanning.js +98 -0
  49. package/dist/cjs/events/tree.d.ts +27 -0
  50. package/dist/cjs/events/tree.js +63 -0
  51. package/dist/cjs/events/types.d.ts +39 -0
  52. package/dist/cjs/events.d.ts +1 -77
  53. package/dist/cjs/events.js +6 -154
  54. package/dist/cjs/identity/encoding.d.ts +9 -0
  55. package/dist/cjs/identity/encoding.js +85 -0
  56. package/dist/cjs/identity/index.d.ts +4 -0
  57. package/dist/cjs/identity/index.js +20 -0
  58. package/dist/cjs/identity/noteKey.d.ts +33 -0
  59. package/dist/cjs/identity/noteKey.js +97 -0
  60. package/dist/cjs/identity/spending.d.ts +18 -0
  61. package/dist/cjs/identity/spending.js +46 -0
  62. package/dist/cjs/identity/viewKey.d.ts +38 -0
  63. package/dist/cjs/identity/viewKey.js +105 -0
  64. package/dist/cjs/idl/index.d.ts +18 -0
  65. package/dist/cjs/idl/index.js +24 -0
  66. package/dist/cjs/idl/privacy_pool.json +9907 -9907
  67. package/dist/cjs/idl/privacy_pool_legacy.js +3307 -0
  68. package/dist/cjs/idl/privacy_pool_legacy.json +2302 -0
  69. package/dist/cjs/idl/privacy_pool_legacy2.d.ts +5 -0
  70. package/dist/cjs/idl/privacy_pool_legacy2.js +3397 -0
  71. package/dist/cjs/idl/privacy_pool_legacy2.json +2376 -0
  72. package/dist/cjs/index.d.ts +9 -3
  73. package/dist/cjs/index.js +15 -2
  74. package/dist/cjs/notes/amount.d.ts +2 -0
  75. package/dist/cjs/notes/amount.js +21 -0
  76. package/dist/cjs/notes/encryption.d.ts +41 -0
  77. package/dist/cjs/notes/encryption.js +75 -0
  78. package/dist/cjs/notes/index.d.ts +8 -0
  79. package/dist/cjs/notes/index.js +24 -0
  80. package/dist/cjs/notes/mailbox.d.ts +70 -0
  81. package/dist/cjs/notes/mailbox.js +164 -0
  82. package/dist/cjs/notes/model.d.ts +91 -0
  83. package/dist/cjs/notes/model.js +109 -0
  84. package/dist/cjs/notes/nullifier.d.ts +27 -0
  85. package/dist/cjs/notes/nullifier.js +45 -0
  86. package/dist/cjs/notes/recovery.d.ts +20 -0
  87. package/dist/cjs/notes/recovery.js +48 -0
  88. package/dist/cjs/notes/selection.d.ts +77 -0
  89. package/dist/cjs/notes/selection.js +193 -0
  90. package/dist/cjs/notes/spent.d.ts +60 -0
  91. package/dist/cjs/notes/spent.js +101 -0
  92. package/dist/cjs/perps/constants.d.ts +16 -0
  93. package/dist/cjs/perps/constants.js +52 -0
  94. package/dist/cjs/perps/index.d.ts +5 -0
  95. package/dist/cjs/perps/index.js +21 -0
  96. package/dist/cjs/perps/keys.d.ts +16 -0
  97. package/dist/cjs/perps/keys.js +43 -0
  98. package/dist/cjs/perps/pdas.d.ts +29 -0
  99. package/dist/cjs/perps/pdas.js +55 -0
  100. package/dist/cjs/perps/relayer.d.ts +9 -0
  101. package/dist/cjs/perps/relayer.js +35 -0
  102. package/dist/cjs/perps/types.d.ts +126 -0
  103. package/dist/cjs/perps/types.js +2 -0
  104. package/dist/cjs/positions/index.d.ts +4 -0
  105. package/dist/cjs/positions/index.js +20 -0
  106. package/dist/cjs/positions/keys.d.ts +29 -0
  107. package/dist/cjs/positions/keys.js +71 -0
  108. package/dist/cjs/positions/pdas.d.ts +15 -0
  109. package/dist/cjs/positions/pdas.js +54 -0
  110. package/dist/cjs/positions/relayer.d.ts +4 -0
  111. package/dist/cjs/positions/relayer.js +15 -0
  112. package/dist/cjs/positions/types.d.ts +97 -0
  113. package/dist/cjs/positions/types.js +2 -0
  114. package/dist/cjs/predictions/client.d.ts +41 -0
  115. package/dist/cjs/predictions/client.js +147 -0
  116. package/dist/cjs/predictions/index.d.ts +5 -0
  117. package/dist/cjs/predictions/index.js +21 -0
  118. package/dist/cjs/predictions/keys.d.ts +14 -0
  119. package/dist/cjs/predictions/keys.js +40 -0
  120. package/dist/cjs/predictions/pdas.d.ts +6 -0
  121. package/dist/cjs/predictions/pdas.js +13 -0
  122. package/dist/cjs/predictions/relayer.d.ts +3 -0
  123. package/dist/cjs/predictions/relayer.js +11 -0
  124. package/dist/cjs/predictions/types.d.ts +178 -0
  125. package/dist/cjs/predictions/types.js +2 -0
  126. package/dist/cjs/program.d.ts +2 -0
  127. package/dist/cjs/program.js +8 -7
  128. package/dist/cjs/proof.d.ts +1 -183
  129. package/dist/cjs/proof.js +16 -290
  130. package/dist/cjs/proofs/encoding.d.ts +17 -0
  131. package/dist/cjs/proofs/encoding.js +72 -0
  132. package/dist/cjs/proofs/formatting.d.ts +6 -0
  133. package/dist/cjs/proofs/formatting.js +34 -0
  134. package/dist/cjs/proofs/index.d.ts +5 -0
  135. package/dist/cjs/proofs/index.js +21 -0
  136. package/dist/cjs/proofs/swap.d.ts +87 -0
  137. package/dist/cjs/proofs/swap.js +144 -0
  138. package/dist/cjs/proofs/transaction.d.ts +28 -0
  139. package/dist/cjs/proofs/transaction.js +110 -0
  140. package/dist/cjs/proofs/types.d.ts +70 -0
  141. package/dist/cjs/proofs/types.js +2 -0
  142. package/dist/cjs/prover.d.ts +30 -4
  143. package/dist/cjs/prover.js +118 -49
  144. package/dist/cjs/relayer/api.d.ts +31 -0
  145. package/dist/cjs/relayer/api.js +86 -0
  146. package/dist/cjs/relayer/client.d.ts +73 -0
  147. package/dist/cjs/relayer/client.js +206 -0
  148. package/dist/cjs/relayer/crypto.d.ts +5 -0
  149. package/dist/cjs/relayer/crypto.js +26 -0
  150. package/dist/cjs/relayer/encoding.d.ts +2 -0
  151. package/dist/cjs/relayer/encoding.js +23 -0
  152. package/dist/cjs/relayer/errors.d.ts +7 -0
  153. package/dist/cjs/relayer/errors.js +17 -0
  154. package/dist/cjs/relayer/index.d.ts +6 -0
  155. package/dist/cjs/relayer/index.js +19 -0
  156. package/dist/cjs/relayer/internal-config.d.ts +36 -0
  157. package/dist/cjs/relayer/internal-config.js +9 -0
  158. package/dist/cjs/relayer/internal.d.ts +6 -0
  159. package/dist/cjs/relayer/internal.js +14 -0
  160. package/dist/cjs/relayer/transport.d.ts +19 -0
  161. package/dist/cjs/relayer/transport.js +68 -0
  162. package/dist/{src/relayer.d.ts → cjs/relayer/types.d.ts} +53 -96
  163. package/dist/cjs/relayer/types.js +5 -0
  164. package/dist/cjs/relayer.d.ts +1 -318
  165. package/dist/cjs/relayer.js +15 -254
  166. package/dist/cjs/shield/alt.js +8 -8
  167. package/dist/cjs/shield/errors.js +2 -2
  168. package/dist/cjs/shield/finalize.js +2 -2
  169. package/dist/cjs/shield/ix.d.ts +1 -1
  170. package/dist/cjs/shield/owner.js +9 -11
  171. package/dist/cjs/shield/ports.js +3 -3
  172. package/dist/cjs/shield/preflight.js +3 -3
  173. package/dist/cjs/shield/shield.js +20 -19
  174. package/dist/cjs/shield/types.d.ts +1 -1
  175. package/dist/cjs/transactions/deposit.d.ts +94 -0
  176. package/dist/cjs/transactions/deposit.js +234 -0
  177. package/dist/cjs/transactions/index.d.ts +7 -0
  178. package/dist/cjs/transactions/index.js +26 -0
  179. package/dist/cjs/transactions/swap.d.ts +71 -0
  180. package/dist/cjs/transactions/swap.js +184 -0
  181. package/dist/cjs/transactions/transact.d.ts +34 -0
  182. package/dist/cjs/transactions/transact.js +146 -0
  183. package/dist/cjs/transactions/transfer.d.ts +51 -0
  184. package/dist/cjs/transactions/transfer.js +106 -0
  185. package/dist/cjs/transactions/withdraw.d.ts +52 -0
  186. package/dist/cjs/transactions/withdraw.js +104 -0
  187. package/dist/cjs/utxo.d.ts +1 -235
  188. package/dist/cjs/utxo.js +15 -404
  189. package/dist/esm/accounts/admin.d.ts +84 -0
  190. package/dist/esm/accounts/admin.js +165 -0
  191. package/dist/esm/accounts/errors.d.ts +6 -0
  192. package/dist/esm/accounts/errors.js +95 -0
  193. package/dist/esm/accounts/index.d.ts +4 -0
  194. package/dist/esm/accounts/index.js +4 -0
  195. package/dist/esm/accounts/pdas.d.ts +23 -0
  196. package/dist/esm/accounts/pdas.js +38 -0
  197. package/dist/esm/accounts/queries.d.ts +41 -0
  198. package/dist/esm/accounts/queries.js +88 -0
  199. package/dist/esm/client.d.ts +2 -407
  200. package/dist/esm/client.js +3 -891
  201. package/dist/esm/cloak/client.d.ts +28 -0
  202. package/dist/esm/cloak/client.js +64 -0
  203. package/dist/esm/cloak/errors.d.ts +13 -0
  204. package/dist/esm/cloak/errors.js +21 -0
  205. package/dist/esm/cloak/helpers.d.ts +6 -0
  206. package/dist/esm/cloak/helpers.js +31 -0
  207. package/dist/esm/cloak/index.d.ts +6 -0
  208. package/dist/esm/cloak/index.js +6 -0
  209. package/dist/esm/cloak/polling.d.ts +7 -0
  210. package/dist/esm/cloak/polling.js +63 -0
  211. package/dist/esm/cloak/transport.d.ts +15 -0
  212. package/dist/esm/cloak/transport.js +115 -0
  213. package/dist/esm/cloak/types.d.ts +188 -0
  214. package/dist/esm/cloak/types.js +4 -0
  215. package/dist/esm/cloak.d.ts +1 -0
  216. package/dist/esm/cloak.js +2 -0
  217. package/dist/esm/compactNote.d.ts +21 -0
  218. package/dist/esm/compactNote.js +24 -1
  219. package/dist/esm/events/index.d.ts +6 -0
  220. package/dist/esm/events/index.js +6 -0
  221. package/dist/esm/events/parsing.d.ts +25 -0
  222. package/dist/esm/events/parsing.js +120 -0
  223. package/dist/esm/events/position.d.ts +26 -0
  224. package/dist/esm/events/position.js +48 -0
  225. package/dist/esm/events/recovery.d.ts +87 -0
  226. package/dist/esm/events/recovery.js +237 -0
  227. package/dist/esm/events/scanning.d.ts +35 -0
  228. package/dist/esm/events/scanning.js +92 -0
  229. package/dist/esm/events/tree.d.ts +27 -0
  230. package/dist/esm/events/tree.js +58 -0
  231. package/dist/esm/events/types.d.ts +39 -0
  232. package/dist/esm/events/types.js +1 -0
  233. package/dist/esm/events.d.ts +1 -77
  234. package/dist/esm/events.js +3 -129
  235. package/dist/esm/identity/encoding.d.ts +9 -0
  236. package/dist/esm/identity/encoding.js +75 -0
  237. package/dist/esm/identity/index.d.ts +4 -0
  238. package/dist/esm/identity/index.js +4 -0
  239. package/dist/esm/identity/noteKey.d.ts +33 -0
  240. package/dist/esm/identity/noteKey.js +91 -0
  241. package/dist/esm/identity/spending.d.ts +18 -0
  242. package/dist/esm/identity/spending.js +35 -0
  243. package/dist/esm/identity/viewKey.d.ts +38 -0
  244. package/dist/esm/identity/viewKey.js +96 -0
  245. package/dist/esm/idl/index.d.ts +18 -0
  246. package/dist/esm/idl/index.js +18 -0
  247. package/dist/esm/idl/privacy_pool.json +9907 -9907
  248. package/dist/esm/idl/privacy_pool_legacy.d.ts +5 -0
  249. package/dist/esm/idl/privacy_pool_legacy.js +3305 -0
  250. package/dist/esm/idl/privacy_pool_legacy.json +2302 -0
  251. package/dist/esm/idl/privacy_pool_legacy2.d.ts +5 -0
  252. package/dist/esm/idl/privacy_pool_legacy2.js +3395 -0
  253. package/dist/esm/idl/privacy_pool_legacy2.json +2376 -0
  254. package/dist/esm/index.d.ts +9 -3
  255. package/dist/esm/index.js +10 -3
  256. package/dist/esm/notes/amount.d.ts +2 -0
  257. package/dist/esm/notes/amount.js +18 -0
  258. package/dist/esm/notes/encryption.d.ts +41 -0
  259. package/dist/esm/notes/encryption.js +67 -0
  260. package/dist/esm/notes/index.d.ts +8 -0
  261. package/dist/esm/notes/index.js +8 -0
  262. package/dist/esm/notes/mailbox.d.ts +70 -0
  263. package/dist/esm/notes/mailbox.js +154 -0
  264. package/dist/esm/notes/model.d.ts +91 -0
  265. package/dist/esm/notes/model.js +99 -0
  266. package/dist/esm/notes/nullifier.d.ts +27 -0
  267. package/dist/esm/notes/nullifier.js +40 -0
  268. package/dist/esm/notes/recovery.d.ts +20 -0
  269. package/dist/esm/notes/recovery.js +45 -0
  270. package/dist/esm/notes/selection.d.ts +77 -0
  271. package/dist/esm/notes/selection.js +188 -0
  272. package/dist/esm/notes/spent.d.ts +60 -0
  273. package/dist/esm/notes/spent.js +96 -0
  274. package/dist/esm/perps/constants.d.ts +16 -0
  275. package/dist/esm/perps/constants.js +48 -0
  276. package/dist/esm/perps/index.d.ts +5 -0
  277. package/dist/esm/perps/index.js +5 -0
  278. package/dist/esm/perps/keys.d.ts +16 -0
  279. package/dist/esm/perps/keys.js +35 -0
  280. package/dist/esm/perps/pdas.d.ts +29 -0
  281. package/dist/esm/perps/pdas.js +47 -0
  282. package/dist/esm/perps/relayer.d.ts +9 -0
  283. package/dist/esm/perps/relayer.js +25 -0
  284. package/dist/esm/perps/types.d.ts +126 -0
  285. package/dist/esm/perps/types.js +1 -0
  286. package/dist/esm/positions/index.d.ts +4 -0
  287. package/dist/esm/positions/index.js +4 -0
  288. package/dist/esm/positions/keys.d.ts +29 -0
  289. package/dist/esm/positions/keys.js +65 -0
  290. package/dist/esm/positions/pdas.d.ts +15 -0
  291. package/dist/esm/positions/pdas.js +44 -0
  292. package/dist/esm/positions/relayer.d.ts +4 -0
  293. package/dist/esm/positions/relayer.js +10 -0
  294. package/dist/esm/positions/types.d.ts +97 -0
  295. package/dist/esm/positions/types.js +1 -0
  296. package/dist/esm/predictions/client.d.ts +41 -0
  297. package/dist/esm/predictions/client.js +141 -0
  298. package/dist/esm/predictions/index.d.ts +5 -0
  299. package/dist/esm/predictions/index.js +5 -0
  300. package/dist/esm/predictions/keys.d.ts +14 -0
  301. package/dist/esm/predictions/keys.js +33 -0
  302. package/dist/esm/predictions/pdas.d.ts +6 -0
  303. package/dist/esm/predictions/pdas.js +10 -0
  304. package/dist/esm/predictions/relayer.d.ts +3 -0
  305. package/dist/esm/predictions/relayer.js +7 -0
  306. package/dist/esm/predictions/types.d.ts +178 -0
  307. package/dist/esm/predictions/types.js +1 -0
  308. package/dist/esm/program.d.ts +2 -0
  309. package/dist/esm/program.js +4 -3
  310. package/dist/esm/proof.d.ts +1 -183
  311. package/dist/esm/proof.js +2 -281
  312. package/dist/esm/proofs/encoding.d.ts +17 -0
  313. package/dist/esm/proofs/encoding.js +68 -0
  314. package/dist/esm/proofs/formatting.d.ts +6 -0
  315. package/dist/esm/proofs/formatting.js +31 -0
  316. package/dist/esm/proofs/index.d.ts +5 -0
  317. package/dist/esm/proofs/index.js +5 -0
  318. package/dist/esm/proofs/swap.d.ts +87 -0
  319. package/dist/esm/proofs/swap.js +138 -0
  320. package/dist/esm/proofs/transaction.d.ts +28 -0
  321. package/dist/esm/proofs/transaction.js +105 -0
  322. package/dist/esm/proofs/types.d.ts +70 -0
  323. package/dist/esm/proofs/types.js +1 -0
  324. package/dist/esm/prover.d.ts +30 -4
  325. package/dist/esm/prover.js +115 -15
  326. package/dist/esm/relayer/api.d.ts +31 -0
  327. package/dist/esm/relayer/api.js +55 -0
  328. package/dist/esm/relayer/client.d.ts +73 -0
  329. package/dist/esm/relayer/client.js +199 -0
  330. package/dist/esm/relayer/crypto.d.ts +5 -0
  331. package/dist/esm/relayer/crypto.js +20 -0
  332. package/dist/esm/relayer/encoding.d.ts +2 -0
  333. package/dist/esm/relayer/encoding.js +19 -0
  334. package/dist/esm/relayer/errors.d.ts +7 -0
  335. package/dist/esm/relayer/errors.js +13 -0
  336. package/dist/esm/relayer/index.d.ts +6 -0
  337. package/dist/esm/relayer/index.js +3 -0
  338. package/dist/esm/relayer/internal-config.d.ts +36 -0
  339. package/dist/esm/relayer/internal-config.js +6 -0
  340. package/dist/esm/relayer/internal.d.ts +6 -0
  341. package/dist/esm/relayer/internal.js +10 -0
  342. package/dist/esm/relayer/transport.d.ts +19 -0
  343. package/dist/esm/relayer/transport.js +64 -0
  344. package/dist/esm/relayer/types.d.ts +275 -0
  345. package/dist/esm/relayer/types.js +4 -0
  346. package/dist/esm/relayer.d.ts +1 -318
  347. package/dist/esm/relayer.js +2 -249
  348. package/dist/esm/shield/alt.js +1 -1
  349. package/dist/esm/shield/errors.js +1 -1
  350. package/dist/esm/shield/finalize.js +1 -1
  351. package/dist/esm/shield/ix.d.ts +1 -1
  352. package/dist/esm/shield/owner.js +3 -5
  353. package/dist/esm/shield/ports.js +1 -1
  354. package/dist/esm/shield/preflight.js +1 -1
  355. package/dist/esm/shield/shield.js +4 -3
  356. package/dist/esm/shield/types.d.ts +1 -1
  357. package/dist/esm/transactions/deposit.d.ts +94 -0
  358. package/dist/esm/transactions/deposit.js +198 -0
  359. package/dist/esm/transactions/index.d.ts +7 -0
  360. package/dist/esm/transactions/index.js +7 -0
  361. package/dist/esm/transactions/swap.d.ts +71 -0
  362. package/dist/esm/transactions/swap.js +144 -0
  363. package/dist/esm/transactions/transact.d.ts +34 -0
  364. package/dist/esm/transactions/transact.js +110 -0
  365. package/dist/esm/transactions/transfer.d.ts +51 -0
  366. package/dist/esm/transactions/transfer.js +103 -0
  367. package/dist/esm/transactions/withdraw.d.ts +52 -0
  368. package/dist/esm/transactions/withdraw.js +101 -0
  369. package/dist/esm/utxo.d.ts +1 -235
  370. package/dist/esm/utxo.js +2 -382
  371. package/identity.d.ts +2 -0
  372. package/identity.js +3 -0
  373. package/idl.d.ts +2 -0
  374. package/idl.js +3 -0
  375. package/notes.d.ts +2 -0
  376. package/notes.js +3 -0
  377. package/package.json +131 -11
  378. package/perps.d.ts +2 -0
  379. package/perps.js +3 -0
  380. package/poseidon.d.ts +2 -2
  381. package/poseidon.js +2 -3
  382. package/positions.d.ts +2 -0
  383. package/positions.js +3 -0
  384. package/predictions.d.ts +2 -0
  385. package/predictions.js +3 -0
  386. package/proof.d.ts +2 -2
  387. package/proof.js +2 -3
  388. package/prover.d.ts +2 -2
  389. package/prover.js +2 -3
  390. package/relayer.d.ts +2 -0
  391. package/relayer.js +3 -0
  392. package/shield.d.ts +2 -2
  393. package/shield.js +2 -3
  394. package/transactions.d.ts +2 -0
  395. package/transactions.js +3 -0
  396. package/SHIELD_INTEGRATION.md +0 -143
  397. package/dist/src/client.d.ts +0 -407
  398. package/dist/src/client.js +0 -951
  399. package/dist/src/compactNote.d.ts +0 -107
  400. package/dist/src/compactNote.js +0 -167
  401. package/dist/src/config.d.ts +0 -82
  402. package/dist/src/config.js +0 -57
  403. package/dist/src/events.d.ts +0 -77
  404. package/dist/src/events.js +0 -167
  405. package/dist/src/idl/privacy_pool.js +0 -15218
  406. package/dist/src/index.d.ts +0 -16
  407. package/dist/src/index.js +0 -67
  408. package/dist/src/merkle.d.ts +0 -77
  409. package/dist/src/merkle.js +0 -156
  410. package/dist/src/poseidon.d.ts +0 -29
  411. package/dist/src/poseidon.js +0 -100
  412. package/dist/src/program.d.ts +0 -37
  413. package/dist/src/program.js +0 -61
  414. package/dist/src/proof.d.ts +0 -183
  415. package/dist/src/proof.js +0 -292
  416. package/dist/src/prover.d.ts +0 -54
  417. package/dist/src/prover.js +0 -112
  418. package/dist/src/random.d.ts +0 -16
  419. package/dist/src/random.js +0 -28
  420. package/dist/src/relayer.js +0 -257
  421. package/dist/src/retry.d.ts +0 -32
  422. package/dist/src/retry.js +0 -75
  423. package/dist/src/shield/alt.d.ts +0 -87
  424. package/dist/src/shield/alt.js +0 -194
  425. package/dist/src/shield/computeBudget.d.ts +0 -61
  426. package/dist/src/shield/computeBudget.js +0 -64
  427. package/dist/src/shield/errors.d.ts +0 -58
  428. package/dist/src/shield/errors.js +0 -121
  429. package/dist/src/shield/finalize.d.ts +0 -45
  430. package/dist/src/shield/finalize.js +0 -119
  431. package/dist/src/shield/index.d.ts +0 -35
  432. package/dist/src/shield/index.js +0 -68
  433. package/dist/src/shield/ix.d.ts +0 -54
  434. package/dist/src/shield/ix.js +0 -119
  435. package/dist/src/shield/owner.d.ts +0 -36
  436. package/dist/src/shield/owner.js +0 -126
  437. package/dist/src/shield/ports.d.ts +0 -43
  438. package/dist/src/shield/ports.js +0 -153
  439. package/dist/src/shield/preflight.d.ts +0 -30
  440. package/dist/src/shield/preflight.js +0 -154
  441. package/dist/src/shield/shield.d.ts +0 -68
  442. package/dist/src/shield/shield.js +0 -499
  443. package/dist/src/shield/types.d.ts +0 -202
  444. package/dist/src/utxo.d.ts +0 -235
  445. package/dist/src/utxo.js +0 -407
  446. package/dist/tests/compact-note.test.d.ts +0 -1
  447. package/dist/tests/compact-note.test.js +0 -173
  448. package/dist/tests/config.test.d.ts +0 -1
  449. package/dist/tests/config.test.js +0 -102
  450. package/dist/tests/edge-cases.test.d.ts +0 -1
  451. package/dist/tests/edge-cases.test.js +0 -220
  452. package/dist/tests/encryption.test.d.ts +0 -1
  453. package/dist/tests/encryption.test.js +0 -215
  454. package/dist/tests/events.test.d.ts +0 -1
  455. package/dist/tests/events.test.js +0 -78
  456. package/dist/tests/multi-tree.test.d.ts +0 -1
  457. package/dist/tests/multi-tree.test.js +0 -405
  458. package/dist/tests/pda.test.d.ts +0 -1
  459. package/dist/tests/pda.test.js +0 -229
  460. package/dist/tests/poseidon-builder-parity.test.d.ts +0 -1
  461. package/dist/tests/poseidon-builder-parity.test.js +0 -72
  462. package/dist/tests/poseidon.test.d.ts +0 -1
  463. package/dist/tests/poseidon.test.js +0 -142
  464. package/dist/tests/proof.test.d.ts +0 -1
  465. package/dist/tests/proof.test.js +0 -296
  466. package/dist/tests/relayer.test.d.ts +0 -1
  467. package/dist/tests/relayer.test.js +0 -271
  468. package/dist/tests/sdk.integration.test.d.ts +0 -1
  469. package/dist/tests/sdk.integration.test.js +0 -330
  470. package/dist/tests/shield-owner.test.d.ts +0 -1
  471. package/dist/tests/shield-owner.test.js +0 -89
  472. package/dist/tests/shield-preflight.test.d.ts +0 -1
  473. package/dist/tests/shield-preflight.test.js +0 -87
  474. package/dist/tests/shield-realproof.test.d.ts +0 -1
  475. package/dist/tests/shield-realproof.test.js +0 -272
  476. package/dist/tests/shield.test.d.ts +0 -1
  477. package/dist/tests/shield.test.js +0 -403
  478. package/dist/tests/utxo.test.d.ts +0 -1
  479. package/dist/tests/utxo.test.js +0 -140
  480. /package/dist/{src/shield → cjs/events}/types.js +0 -0
  481. /package/dist/{src/idl/privacy_pool.d.ts → cjs/idl/privacy_pool_legacy.d.ts} +0 -0
@@ -1,271 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- require("mocha");
7
- const assert_1 = require("assert");
8
- const http_1 = __importDefault(require("http"));
9
- const src_1 = require("../src");
10
- const tweetnacl_1 = __importDefault(require("tweetnacl"));
11
- /**
12
- * Relayer client tests using a local HTTP mock server.
13
- */
14
- // Generate a real NaCl keypair for the "relayer"
15
- const relayerKeyPair = tweetnacl_1.default.box.keyPair();
16
- const relayerPublicKeyB64 = typeof Buffer !== "undefined"
17
- ? Buffer.from(relayerKeyPair.publicKey).toString("base64")
18
- : btoa(String.fromCharCode(...relayerKeyPair.publicKey));
19
- let server;
20
- let baseUrl;
21
- let lastRequest;
22
- function createMockServer(handler) {
23
- return new Promise((resolve) => {
24
- server = http_1.default.createServer((req, res) => {
25
- let body = "";
26
- req.on("data", (c) => (body += c));
27
- req.on("end", () => {
28
- lastRequest = {
29
- method: req.method,
30
- url: req.url,
31
- body: body ? JSON.parse(body) : null,
32
- headers: req.headers,
33
- };
34
- if (handler) {
35
- handler(req, res);
36
- }
37
- else {
38
- res.writeHead(200, { "Content-Type": "application/json" });
39
- res.end(JSON.stringify({ success: true }));
40
- }
41
- });
42
- });
43
- server.listen(0, () => {
44
- const addr = server.address();
45
- resolve(`http://127.0.0.1:${addr.port}`);
46
- });
47
- });
48
- }
49
- function makeConfig(url) {
50
- return {
51
- relayerUrl: url,
52
- apiKey: "test-api-key",
53
- relayerPublicKey: relayerPublicKeyB64,
54
- authToken: "test-token",
55
- };
56
- }
57
- describe("VeiloRelayerClient", function () {
58
- this.timeout(15000);
59
- afterEach((done) => {
60
- if (server)
61
- server.close(done);
62
- else
63
- done();
64
- });
65
- // ---------------------------------------------------------------------------
66
- // Basic request mechanics
67
- // ---------------------------------------------------------------------------
68
- it("sends x-api-key header on all requests", async () => {
69
- baseUrl = await createMockServer((req, res) => {
70
- res.writeHead(200, { "Content-Type": "application/json" });
71
- res.end(JSON.stringify({ success: true, available: true }));
72
- });
73
- const client = new src_1.VeiloRelayerClient(makeConfig(baseUrl));
74
- await client.checkUsername("alice");
75
- assert_1.strict.equal(lastRequest.headers["x-api-key"], "test-api-key");
76
- });
77
- it("sends Authorization header for authenticated endpoints", async () => {
78
- baseUrl = await createMockServer((req, res) => {
79
- res.writeHead(200, { "Content-Type": "application/json" });
80
- res.end(JSON.stringify({ success: true, notes: [], total: 0, limit: 50, offset: 0 }));
81
- });
82
- const client = new src_1.VeiloRelayerClient(makeConfig(baseUrl));
83
- await client.queryEncryptedNotes();
84
- assert_1.strict.equal(lastRequest.headers["authorization"], "Bearer test-token");
85
- });
86
- it("does not send Authorization when no authToken", async () => {
87
- baseUrl = await createMockServer((req, res) => {
88
- res.writeHead(200, { "Content-Type": "application/json" });
89
- res.end(JSON.stringify({ success: true, notes: [], total: 0, limit: 50, offset: 0 }));
90
- });
91
- const cfg = makeConfig(baseUrl);
92
- delete cfg.authToken;
93
- const client = new src_1.VeiloRelayerClient(cfg);
94
- await client.queryEncryptedNotes();
95
- assert_1.strict.equal(lastRequest.headers["authorization"], undefined);
96
- });
97
- // ---------------------------------------------------------------------------
98
- // Error handling
99
- // ---------------------------------------------------------------------------
100
- it("throws VeiloApiError on non-2xx responses", async () => {
101
- baseUrl = await createMockServer((req, res) => {
102
- res.writeHead(400, { "Content-Type": "application/json" });
103
- res.end(JSON.stringify({ success: false, error: "BAD_REQUEST", message: "Invalid input" }));
104
- });
105
- const client = new src_1.VeiloRelayerClient(makeConfig(baseUrl));
106
- try {
107
- await client.checkUsername("");
108
- assert_1.strict.fail("should have thrown");
109
- }
110
- catch (err) {
111
- assert_1.strict.ok(err instanceof src_1.VeiloApiError);
112
- assert_1.strict.equal(err.code, "BAD_REQUEST");
113
- assert_1.strict.equal(err.status, 400);
114
- assert_1.strict.equal(err.message, "Invalid input");
115
- }
116
- });
117
- it("throws VeiloApiError when success=false on 200", async () => {
118
- baseUrl = await createMockServer((req, res) => {
119
- res.writeHead(200, { "Content-Type": "application/json" });
120
- res.end(JSON.stringify({ success: false, error: "DUPLICATE_COMMITMENT" }));
121
- });
122
- const client = new src_1.VeiloRelayerClient(makeConfig(baseUrl));
123
- try {
124
- await client.saveEncryptedNote({
125
- commitment: "abc",
126
- ephemeralPublicKey: "def",
127
- encryptedBlob: "ghi",
128
- timestamp: Date.now(),
129
- });
130
- assert_1.strict.fail("should have thrown");
131
- }
132
- catch (err) {
133
- assert_1.strict.ok(err instanceof src_1.VeiloApiError);
134
- assert_1.strict.equal(err.code, "DUPLICATE_COMMITMENT");
135
- }
136
- });
137
- // ---------------------------------------------------------------------------
138
- // Retry behavior
139
- // ---------------------------------------------------------------------------
140
- it("retries on 503 and succeeds", async () => {
141
- let callCount = 0;
142
- baseUrl = await createMockServer((req, res) => {
143
- callCount++;
144
- if (callCount < 3) {
145
- res.writeHead(503, { "Content-Type": "application/json" });
146
- res.end(JSON.stringify({ success: false, error: "SERVICE_UNAVAILABLE" }));
147
- }
148
- else {
149
- res.writeHead(200, { "Content-Type": "application/json" });
150
- res.end(JSON.stringify({ success: true, available: true }));
151
- }
152
- });
153
- const client = new src_1.VeiloRelayerClient(makeConfig(baseUrl), {
154
- maxRetries: 3,
155
- baseDelayMs: 50,
156
- });
157
- const result = await client.checkUsername("bob");
158
- assert_1.strict.equal(result.success, true);
159
- assert_1.strict.equal(callCount, 3);
160
- });
161
- it("does not retry on 400", async () => {
162
- let callCount = 0;
163
- baseUrl = await createMockServer((req, res) => {
164
- callCount++;
165
- res.writeHead(400, { "Content-Type": "application/json" });
166
- res.end(JSON.stringify({ success: false, error: "INVALID" }));
167
- });
168
- const client = new src_1.VeiloRelayerClient(makeConfig(baseUrl), {
169
- maxRetries: 3,
170
- baseDelayMs: 50,
171
- });
172
- try {
173
- await client.checkUsername("bad");
174
- assert_1.strict.fail("should have thrown");
175
- }
176
- catch {
177
- assert_1.strict.equal(callCount, 1, "should not retry on 400");
178
- }
179
- });
180
- it("does not retry transact endpoints", async () => {
181
- let callCount = 0;
182
- baseUrl = await createMockServer((req, res) => {
183
- callCount++;
184
- res.writeHead(503, { "Content-Type": "application/json" });
185
- res.end(JSON.stringify({ success: false, error: "SERVICE_UNAVAILABLE" }));
186
- });
187
- const client = new src_1.VeiloRelayerClient(makeConfig(baseUrl), {
188
- maxRetries: 3,
189
- baseDelayMs: 50,
190
- });
191
- try {
192
- await client.submitWithdraw({
193
- notes: [],
194
- recipient: "11111111111111111111111111111111",
195
- amount: "1000000",
196
- userPublicKey: "11111111111111111111111111111111",
197
- mintAddress: "11111111111111111111111111111111",
198
- });
199
- assert_1.strict.fail("should have thrown");
200
- }
201
- catch {
202
- assert_1.strict.equal(callCount, 1, "transact endpoints should not retry");
203
- }
204
- });
205
- // ---------------------------------------------------------------------------
206
- // Encryption
207
- // ---------------------------------------------------------------------------
208
- it("encrypts withdraw payload (body contains encryptedPayload)", async () => {
209
- baseUrl = await createMockServer((req, res) => {
210
- res.writeHead(200, { "Content-Type": "application/json" });
211
- res.end(JSON.stringify({ success: true, message: "ok" }));
212
- });
213
- const client = new src_1.VeiloRelayerClient(makeConfig(baseUrl));
214
- await client.submitWithdraw({
215
- notes: [],
216
- recipient: "11111111111111111111111111111111",
217
- amount: "1000000",
218
- userPublicKey: "11111111111111111111111111111111",
219
- mintAddress: "11111111111111111111111111111111",
220
- });
221
- assert_1.strict.ok(lastRequest.body.encryptedPayload, "body should contain encryptedPayload");
222
- assert_1.strict.equal(typeof lastRequest.body.encryptedPayload, "string");
223
- // Decrypt and verify the payload structure
224
- const raw = Buffer.from(lastRequest.body.encryptedPayload, "base64");
225
- const ephPub = raw.subarray(0, 32);
226
- const nonce = raw.subarray(32, 56);
227
- const ciphertext = raw.subarray(56);
228
- const decrypted = tweetnacl_1.default.box.open(new Uint8Array(ciphertext), new Uint8Array(nonce), new Uint8Array(ephPub), relayerKeyPair.secretKey);
229
- assert_1.strict.ok(decrypted, "relayer should be able to decrypt the payload");
230
- const payload = JSON.parse(new TextDecoder().decode(decrypted));
231
- assert_1.strict.equal(payload.recipient, "11111111111111111111111111111111");
232
- assert_1.strict.equal(payload.amount, "1000000");
233
- assert_1.strict.ok(payload.timestamp, "should include timestamp");
234
- assert_1.strict.ok(payload.nonce, "should include nonce");
235
- });
236
- // ---------------------------------------------------------------------------
237
- // Auth endpoints
238
- // ---------------------------------------------------------------------------
239
- it("setAuthToken updates subsequent requests", async () => {
240
- baseUrl = await createMockServer((req, res) => {
241
- res.writeHead(200, { "Content-Type": "application/json" });
242
- res.end(JSON.stringify({ success: true, notes: [], total: 0, limit: 50, offset: 0 }));
243
- });
244
- const cfg = makeConfig(baseUrl);
245
- cfg.authToken = undefined;
246
- const client = new src_1.VeiloRelayerClient(cfg);
247
- // First call — no auth
248
- await client.queryEncryptedNotes();
249
- assert_1.strict.equal(lastRequest.headers["authorization"], undefined);
250
- // Set token and call again
251
- client.setAuthToken("new-token");
252
- await client.queryEncryptedNotes();
253
- assert_1.strict.equal(lastRequest.headers["authorization"], "Bearer new-token");
254
- });
255
- // ---------------------------------------------------------------------------
256
- // Merkle endpoints
257
- // ---------------------------------------------------------------------------
258
- it("getMerkleRoot passes query params", async () => {
259
- baseUrl = await createMockServer((req, res) => {
260
- res.writeHead(200, { "Content-Type": "application/json" });
261
- res.end(JSON.stringify({
262
- success: true,
263
- data: { root: "abc", nextIndex: 5, treeId: 0, onChainTreeId: 0, mintAddress: "So11111111111111111111111111111111111111112" },
264
- }));
265
- });
266
- const client = new src_1.VeiloRelayerClient(makeConfig(baseUrl));
267
- await client.getMerkleRoot("So11111111111111111111111111111111111111112", 0);
268
- assert_1.strict.ok(lastRequest.url.includes("mintAddress=So11111111111111111111111111111111111111112"));
269
- assert_1.strict.ok(lastRequest.url.includes("treeId=0"));
270
- });
271
- });
@@ -1 +0,0 @@
1
- import "mocha";
@@ -1,330 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- require("mocha");
40
- const assert_1 = require("assert");
41
- const anchor = __importStar(require("@coral-xyz/anchor"));
42
- const web3_js_1 = require("@solana/web3.js");
43
- const fs_1 = __importDefault(require("fs"));
44
- const os_1 = __importDefault(require("os"));
45
- const path_1 = __importDefault(require("path"));
46
- const src_1 = require("../src");
47
- // ---- IDL + Provider helpers ----
48
- function loadIdl() {
49
- // NOTE: this path is relative to dist/tests at runtime
50
- const idlPath = path_1.default.join(__dirname, "../../idl/idl/privacy_pool.json");
51
- if (!fs_1.default.existsSync(idlPath))
52
- return null;
53
- const raw = fs_1.default.readFileSync(idlPath, "utf8");
54
- return JSON.parse(raw);
55
- }
56
- function makeProvider() {
57
- try {
58
- const url = process.env.ANCHOR_PROVIDER_URL ?? "http://127.0.0.1:8899";
59
- const connection = new anchor.web3.Connection(url, "confirmed");
60
- const keypairPath = process.env.ANCHOR_WALLET ??
61
- path_1.default.join(os_1.default.homedir(), ".config", "solana", "id.json");
62
- if (!fs_1.default.existsSync(keypairPath))
63
- return null;
64
- const secret = JSON.parse(fs_1.default.readFileSync(keypairPath, "utf8"));
65
- const kp = web3_js_1.Keypair.fromSecretKey(Uint8Array.from(secret));
66
- const wallet = new anchor.Wallet(kp);
67
- return new anchor.AnchorProvider(connection, wallet, {
68
- commitment: "confirmed",
69
- preflightCommitment: "confirmed",
70
- });
71
- }
72
- catch {
73
- return null;
74
- }
75
- }
76
- describe("privacy-pool SDK integration (UTXO model)", function () {
77
- this.timeout(60000);
78
- const provider = makeProvider();
79
- const idl = loadIdl();
80
- // Skip on-chain tests when no provider or IDL is available, or program not deployed
81
- before(async function () {
82
- if (!provider || !idl) {
83
- console.log("Skipping on-chain integration tests: no provider or IDL available");
84
- this.skip();
85
- return;
86
- }
87
- try {
88
- const programId = new web3_js_1.PublicKey(idl.address);
89
- const info = await provider.connection.getAccountInfo(programId);
90
- if (!info) {
91
- console.log(`Skipping on-chain integration tests: program ${programId.toBase58()} not deployed on this cluster`);
92
- this.skip();
93
- }
94
- }
95
- catch {
96
- console.log("Skipping on-chain integration tests: could not reach cluster");
97
- this.skip();
98
- }
99
- });
100
- // These bindings are populated only when the suite runs
101
- let program;
102
- let wallet;
103
- let connection;
104
- before(async function () {
105
- if (!provider || !idl)
106
- return;
107
- await (0, src_1.initPoseidon)();
108
- anchor.setProvider(provider);
109
- program = new anchor.Program(idl, provider);
110
- wallet = provider.wallet;
111
- connection = provider.connection;
112
- });
113
- const FEE_BPS = 50; // 0.5%
114
- const MIN_DEPOSIT = (0, src_1.sol)(0.1);
115
- const MAX_DEPOSIT = (0, src_1.sol)(100);
116
- const MIN_WITHDRAW = (0, src_1.sol)(0.1);
117
- const MAX_WITHDRAW = (0, src_1.sol)(100);
118
- async function airdropAndConfirm(pubkey, lamports) {
119
- const sig = await connection.requestAirdrop(pubkey, lamports);
120
- await connection.confirmTransaction(sig, "confirmed");
121
- }
122
- it("initializes global config", async () => {
123
- const globalConfig = (0, src_1.getGlobalConfigPda)(program.programId);
124
- // Check if already initialized
125
- const existingConfig = await connection.getAccountInfo(globalConfig);
126
- if (!existingConfig) {
127
- await airdropAndConfirm(wallet.publicKey, 2 * web3_js_1.LAMPORTS_PER_SOL);
128
- await (0, src_1.initializeGlobalConfig)({
129
- program,
130
- admin: wallet,
131
- payer: wallet.payer,
132
- });
133
- console.log("Global config initialized");
134
- }
135
- else {
136
- console.log("Global config already exists, skipping initialization");
137
- }
138
- });
139
- it("initializes pool with new parameters", async () => {
140
- const { config } = (0, src_1.getPoolPdas)(program.programId, src_1.NATIVE_SOL_MINT);
141
- // Check if already initialized
142
- const existingConfig = await connection.getAccountInfo(config);
143
- if (!existingConfig) {
144
- await airdropAndConfirm(wallet.publicKey, 5 * web3_js_1.LAMPORTS_PER_SOL);
145
- await (0, src_1.initializePool)({
146
- program,
147
- admin: wallet,
148
- payer: wallet.payer,
149
- feeBps: FEE_BPS,
150
- mintAddress: src_1.NATIVE_SOL_MINT,
151
- minDepositAmount: MIN_DEPOSIT,
152
- maxDepositAmount: MAX_DEPOSIT,
153
- minWithdrawAmount: MIN_WITHDRAW,
154
- maxWithdrawAmount: MAX_WITHDRAW,
155
- });
156
- console.log("Pool initialized for native SOL");
157
- }
158
- else {
159
- console.log("Pool already exists, skipping initialization");
160
- }
161
- // Verify the PDAs exist
162
- const configAcc = await connection.getAccountInfo(config);
163
- (0, assert_1.strict)(configAcc !== null, "Config account should exist");
164
- });
165
- it("adds a relayer to the pool", async () => {
166
- const relayer = web3_js_1.Keypair.generate();
167
- await airdropAndConfirm(relayer.publicKey, 1 * web3_js_1.LAMPORTS_PER_SOL);
168
- await (0, src_1.addRelayer)({
169
- program,
170
- admin: wallet,
171
- mintAddress: src_1.NATIVE_SOL_MINT,
172
- newRelayer: relayer.publicKey,
173
- });
174
- console.log(`Relayer added: ${relayer.publicKey.toBase58()}`);
175
- });
176
- it("creates UTXOs with correct structure", () => {
177
- const keypair = (0, src_1.generateKeypair)();
178
- const amount = (0, src_1.sol)(1);
179
- const utxo = (0, src_1.createUTXO)({
180
- amount,
181
- pubkey: keypair.publicKey,
182
- mintAddress: src_1.NATIVE_SOL_MINT,
183
- });
184
- assert_1.strict.equal(utxo.amount, amount);
185
- assert_1.strict.equal(utxo.pubkey, keypair.publicKey);
186
- assert_1.strict.equal(utxo.commitment.length, 32);
187
- assert_1.strict.ok(utxo.blinding > 0n);
188
- });
189
- it("derives nullifiers correctly", () => {
190
- const privateKey = 12345n;
191
- const utxo = (0, src_1.createOwnedUTXO)({
192
- amount: (0, src_1.sol)(1),
193
- privateKey,
194
- mintAddress: src_1.NATIVE_SOL_MINT,
195
- });
196
- const pathIndex = 0;
197
- const nullifier = (0, src_1.deriveNullifier)(utxo, pathIndex, privateKey);
198
- assert_1.strict.equal(nullifier.length, 32);
199
- // Verify determinism
200
- const nullifier2 = (0, src_1.deriveNullifier)(utxo, pathIndex, privateKey);
201
- assert_1.strict.equal(Buffer.compare(Buffer.from(nullifier), Buffer.from(nullifier2)), 0);
202
- });
203
- it("computes extDataHash correctly", () => {
204
- const extData = {
205
- recipient: web3_js_1.Keypair.generate().publicKey,
206
- relayer: web3_js_1.Keypair.generate().publicKey,
207
- fee: (0, src_1.sol)(0.01),
208
- refund: 0n,
209
- claimant: web3_js_1.PublicKey.default,
210
- };
211
- const hash = (0, src_1.computeExtDataHash)(extData);
212
- assert_1.strict.equal(hash.length, 32);
213
- // Verify determinism
214
- const hash2 = (0, src_1.computeExtDataHash)(extData);
215
- assert_1.strict.equal(Buffer.compare(Buffer.from(hash), Buffer.from(hash2)), 0);
216
- });
217
- it("builds Merkle tree with correct depth", () => {
218
- const tree = new src_1.MerkleTree(16);
219
- assert_1.strict.equal(tree.depth, 16);
220
- assert_1.strict.equal(tree.capacity, 65536);
221
- assert_1.strict.equal(tree.root.length, 32);
222
- assert_1.strict.equal(tree.nextIndex, 0);
223
- });
224
- it("inserts commitments and generates paths", () => {
225
- const tree = new src_1.MerkleTree(16);
226
- const keypair = (0, src_1.generateKeypair)();
227
- // Create and insert a UTXO
228
- const utxo = (0, src_1.createUTXO)({
229
- amount: (0, src_1.sol)(1),
230
- pubkey: keypair.publicKey,
231
- mintAddress: src_1.NATIVE_SOL_MINT,
232
- });
233
- const { index, root } = tree.insert(utxo.commitment);
234
- assert_1.strict.equal(index, 0);
235
- assert_1.strict.equal(root.length, 32);
236
- // Get the path
237
- const path = tree.getPath(index);
238
- assert_1.strict.equal(path.leafIndex, 0);
239
- assert_1.strict.equal(path.path.length, 16);
240
- assert_1.strict.equal(path.indices.length, 16);
241
- // All path elements should be 32 bytes
242
- for (const element of path.path) {
243
- assert_1.strict.equal(element.length, 32);
244
- }
245
- });
246
- it("generates circuit-compatible paths", () => {
247
- const tree = new src_1.MerkleTree(16);
248
- const keypair = (0, src_1.generateKeypair)();
249
- const utxo = (0, src_1.createUTXO)({
250
- amount: (0, src_1.sol)(1),
251
- pubkey: keypair.publicKey,
252
- mintAddress: src_1.NATIVE_SOL_MINT,
253
- });
254
- const { index } = tree.insert(utxo.commitment);
255
- const circuitPath = tree.getCircuitPath(index);
256
- assert_1.strict.equal(circuitPath.pathIndex, 0);
257
- assert_1.strict.equal(circuitPath.pathElements.length, 16);
258
- // All elements should be bigints
259
- for (const element of circuitPath.pathElements) {
260
- assert_1.strict.equal(typeof element, "bigint");
261
- }
262
- });
263
- // Note: The actual transact instruction test requires a valid ZK proof
264
- // which would need the full circuit setup. This is a placeholder for
265
- // when proof generation is available.
266
- it.skip("executes a deposit transaction", async () => {
267
- // This test would require:
268
- // 1. A valid snarkjs proof
269
- // 2. The circuit WASM and zkey files
270
- // 3. A running local validator with the contract deployed
271
- const relayer = web3_js_1.Keypair.generate();
272
- const recipient = web3_js_1.Keypair.generate();
273
- await airdropAndConfirm(relayer.publicKey, 2 * web3_js_1.LAMPORTS_PER_SOL);
274
- const keypair = (0, src_1.generateKeypair)();
275
- const tree = new src_1.MerkleTree(16);
276
- // Create zero inputs for deposit
277
- const zeroInput0 = (0, src_1.createOwnedZeroUTXO)(keypair.privateKey, src_1.NATIVE_SOL_MINT);
278
- const zeroInput1 = (0, src_1.createOwnedZeroUTXO)(keypair.privateKey, src_1.NATIVE_SOL_MINT);
279
- tree.insert(zeroInput0.commitment);
280
- const { root } = tree.insert(zeroInput1.commitment);
281
- // Create output UTXOs
282
- const outputUTXO0 = (0, src_1.createUTXO)({
283
- amount: (0, src_1.sol)(1),
284
- pubkey: keypair.publicKey,
285
- mintAddress: src_1.NATIVE_SOL_MINT,
286
- });
287
- const outputUTXO1 = (0, src_1.createUTXO)({
288
- amount: 0n,
289
- pubkey: keypair.publicKey,
290
- mintAddress: src_1.NATIVE_SOL_MINT,
291
- });
292
- const extData = {
293
- recipient: recipient.publicKey,
294
- relayer: relayer.publicKey,
295
- fee: 0n,
296
- refund: 0n,
297
- claimant: web3_js_1.PublicKey.default,
298
- };
299
- // Mock proof (would need real proof in production)
300
- const mockProof = {
301
- proofA: new Array(64).fill(0),
302
- proofB: new Array(128).fill(0),
303
- proofC: new Array(64).fill(0),
304
- };
305
- // This would fail without a valid proof, but tests the API
306
- try {
307
- await (0, src_1.transact)({
308
- program,
309
- relayer,
310
- recipient: recipient.publicKey,
311
- mintAddress: src_1.NATIVE_SOL_MINT,
312
- root,
313
- inputTreeId: 0,
314
- outputTreeId: 0,
315
- publicAmount: (0, src_1.sol)(1),
316
- inputNullifiers: [
317
- (0, src_1.deriveNullifier)(zeroInput0, 0, keypair.privateKey),
318
- (0, src_1.deriveNullifier)(zeroInput1, 1, keypair.privateKey),
319
- ],
320
- outputCommitments: [outputUTXO0.commitment, outputUTXO1.commitment],
321
- extData,
322
- proof: mockProof,
323
- });
324
- }
325
- catch (e) {
326
- // Expected to fail with VerifyFailed since we're using a mock proof
327
- console.log("Transaction failed as expected with mock proof:", e.message);
328
- }
329
- });
330
- });
@@ -1 +0,0 @@
1
- import "mocha";