@unionlabs/payments 0.1.0 → 0.2.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 (393) hide show
  1. package/Abi/package.json +6 -0
  2. package/Attestor/package.json +6 -0
  3. package/Constants/package.json +6 -0
  4. package/Domain/package.json +6 -0
  5. package/Error/package.json +6 -0
  6. package/EvmPublicClient/package.json +6 -0
  7. package/EvmWalletClient/package.json +6 -0
  8. package/Payment/package.json +6 -0
  9. package/PaymentError/package.json +6 -0
  10. package/Prover/package.json +6 -0
  11. package/PublicClient/package.json +6 -0
  12. package/README.md +1 -0
  13. package/Schema/package.json +6 -0
  14. package/Utils/package.json +6 -0
  15. package/WalletClient/package.json +6 -0
  16. package/attestation/package.json +6 -0
  17. package/cli/commands/balance/package.json +6 -0
  18. package/cli/commands/deposit/package.json +6 -0
  19. package/cli/commands/export-verifier/package.json +6 -0
  20. package/cli/commands/generate/package.json +6 -0
  21. package/cli/commands/history/package.json +6 -0
  22. package/cli/commands/prove/package.json +6 -0
  23. package/cli/commands/redeem/package.json +6 -0
  24. package/cli/commands/update-client/package.json +6 -0
  25. package/cli/config/package.json +6 -0
  26. package/cli/package.json +6 -0
  27. package/cli/utils/package.json +6 -0
  28. package/constants/ibc-core-registry/package.json +6 -0
  29. package/constants/services/package.json +6 -0
  30. package/constants/z-asset-registry/package.json +6 -0
  31. package/dist/cjs/Abi.js +270 -0
  32. package/dist/cjs/Abi.js.map +1 -0
  33. package/dist/cjs/Attestor.js +76 -0
  34. package/dist/cjs/Attestor.js.map +1 -0
  35. package/dist/cjs/Constants.js +8 -0
  36. package/dist/cjs/Constants.js.map +1 -0
  37. package/dist/cjs/Domain.js +24 -0
  38. package/dist/cjs/Domain.js.map +1 -0
  39. package/dist/cjs/Error.js +100 -0
  40. package/dist/cjs/Error.js.map +1 -0
  41. package/dist/cjs/EvmPublicClient.js +301 -0
  42. package/dist/cjs/EvmPublicClient.js.map +1 -0
  43. package/dist/cjs/EvmWalletClient.js +670 -0
  44. package/dist/cjs/EvmWalletClient.js.map +1 -0
  45. package/dist/cjs/Payment.js +333 -0
  46. package/dist/cjs/Payment.js.map +1 -0
  47. package/dist/cjs/PaymentError.js +32 -0
  48. package/dist/cjs/PaymentError.js.map +1 -0
  49. package/dist/cjs/Prover.js +153 -0
  50. package/dist/cjs/Prover.js.map +1 -0
  51. package/dist/cjs/PublicClient.js +39 -0
  52. package/dist/cjs/PublicClient.js.map +1 -0
  53. package/dist/cjs/Schema.js +38 -0
  54. package/dist/cjs/Schema.js.map +1 -0
  55. package/dist/cjs/Utils.js +33 -0
  56. package/dist/cjs/Utils.js.map +1 -0
  57. package/dist/cjs/WalletClient.js +39 -0
  58. package/dist/cjs/WalletClient.js.map +1 -0
  59. package/dist/cjs/attestation.js +49 -0
  60. package/dist/cjs/attestation.js.map +1 -0
  61. package/dist/cjs/cli/commands/balance.js +60 -0
  62. package/dist/cjs/cli/commands/balance.js.map +1 -0
  63. package/dist/cjs/cli/commands/deposit.js +58 -0
  64. package/dist/cjs/cli/commands/deposit.js.map +1 -0
  65. package/dist/cjs/cli/commands/export-verifier.js +27 -0
  66. package/dist/cjs/cli/commands/export-verifier.js.map +1 -0
  67. package/dist/cjs/cli/commands/generate.js +41 -0
  68. package/dist/cjs/cli/commands/generate.js.map +1 -0
  69. package/dist/cjs/cli/commands/history.js +59 -0
  70. package/dist/cjs/cli/commands/history.js.map +1 -0
  71. package/dist/cjs/cli/commands/prove.js +82 -0
  72. package/dist/cjs/cli/commands/prove.js.map +1 -0
  73. package/dist/cjs/cli/commands/redeem.js +152 -0
  74. package/dist/cjs/cli/commands/redeem.js.map +1 -0
  75. package/dist/cjs/cli/commands/update-client.js +62 -0
  76. package/dist/cjs/cli/commands/update-client.js.map +1 -0
  77. package/dist/cjs/cli/config.js +32 -0
  78. package/dist/cjs/cli/config.js.map +1 -0
  79. package/dist/cjs/cli/utils.js +108 -0
  80. package/dist/cjs/cli/utils.js.map +1 -0
  81. package/dist/cjs/cli.js +24 -0
  82. package/dist/cjs/cli.js.map +1 -0
  83. package/dist/cjs/constants/ibc-core-registry.js +30 -0
  84. package/dist/cjs/constants/ibc-core-registry.js.map +1 -0
  85. package/dist/cjs/constants/services.js +9 -0
  86. package/dist/cjs/constants/services.js.map +1 -0
  87. package/dist/cjs/constants/z-asset-registry.js +32 -0
  88. package/dist/cjs/constants/z-asset-registry.js.map +1 -0
  89. package/dist/cjs/gen/prover_pb.js +81 -0
  90. package/dist/cjs/gen/prover_pb.js.map +1 -0
  91. package/dist/cjs/index.js +32 -0
  92. package/dist/cjs/index.js.map +1 -0
  93. package/dist/cjs/internal/evm.js +191 -0
  94. package/dist/cjs/internal/evm.js.map +1 -0
  95. package/dist/cjs/internal/evmWalletClient.js +6 -0
  96. package/dist/cjs/internal/evmWalletClient.js.map +1 -0
  97. package/dist/cjs/internal/publicClient.js +49 -0
  98. package/dist/cjs/internal/publicClient.js.map +1 -0
  99. package/dist/cjs/internal/walletClient.js +43 -0
  100. package/dist/cjs/internal/walletClient.js.map +1 -0
  101. package/dist/cjs/legacy/client.js +1222 -0
  102. package/dist/cjs/legacy/client.js.map +1 -0
  103. package/dist/cjs/legacy/prover.js +112 -0
  104. package/dist/cjs/legacy/prover.js.map +1 -0
  105. package/dist/cjs/poseidon2.js +226 -0
  106. package/dist/cjs/poseidon2.js.map +1 -0
  107. package/dist/cjs/promises/Attestor.js +23 -0
  108. package/dist/cjs/promises/Attestor.js.map +1 -0
  109. package/dist/cjs/promises/EvmPublicClient.js +34 -0
  110. package/dist/cjs/promises/EvmPublicClient.js.map +1 -0
  111. package/dist/cjs/promises/EvmWalletClient.js +51 -0
  112. package/dist/cjs/promises/EvmWalletClient.js.map +1 -0
  113. package/dist/cjs/promises/Payment.js +22 -0
  114. package/dist/cjs/promises/Payment.js.map +1 -0
  115. package/dist/cjs/promises/Prover.js +26 -0
  116. package/dist/cjs/promises/Prover.js.map +1 -0
  117. package/dist/cjs/promises/PublicClient.js +53 -0
  118. package/dist/cjs/promises/PublicClient.js.map +1 -0
  119. package/dist/cjs/promises/WalletClient.js +44 -0
  120. package/dist/cjs/promises/WalletClient.js.map +1 -0
  121. package/dist/cjs/promises/index.js +22 -0
  122. package/dist/cjs/promises/index.js.map +1 -0
  123. package/dist/cjs/rpc.js +867 -0
  124. package/dist/cjs/rpc.js.map +1 -0
  125. package/dist/cjs/types.js +6 -0
  126. package/dist/cjs/types.js.map +1 -0
  127. package/dist/dts/Abi.d.ts +220 -0
  128. package/dist/dts/Abi.d.ts.map +1 -0
  129. package/dist/dts/Attestor.d.ts +42 -0
  130. package/dist/dts/Attestor.d.ts.map +1 -0
  131. package/dist/dts/Constants.d.ts +3 -0
  132. package/dist/dts/Constants.d.ts.map +1 -0
  133. package/dist/dts/Domain.d.ts +141 -0
  134. package/dist/dts/Domain.d.ts.map +1 -0
  135. package/dist/dts/Error.d.ts +102 -0
  136. package/dist/dts/Error.d.ts.map +1 -0
  137. package/dist/dts/EvmPublicClient.d.ts +61 -0
  138. package/dist/dts/EvmPublicClient.d.ts.map +1 -0
  139. package/dist/dts/EvmWalletClient.d.ts +67 -0
  140. package/dist/dts/EvmWalletClient.d.ts.map +1 -0
  141. package/dist/dts/Payment.d.ts +128 -0
  142. package/dist/dts/Payment.d.ts.map +1 -0
  143. package/dist/dts/PaymentError.d.ts +21 -0
  144. package/dist/dts/PaymentError.d.ts.map +1 -0
  145. package/dist/dts/Prover.d.ts +87 -0
  146. package/dist/dts/Prover.d.ts.map +1 -0
  147. package/dist/dts/PublicClient.d.ts +146 -0
  148. package/dist/dts/PublicClient.d.ts.map +1 -0
  149. package/dist/dts/Schema.d.ts +16 -0
  150. package/dist/dts/Schema.d.ts.map +1 -0
  151. package/dist/dts/Utils.d.ts +11 -0
  152. package/dist/dts/Utils.d.ts.map +1 -0
  153. package/dist/dts/WalletClient.d.ts +123 -0
  154. package/dist/dts/WalletClient.d.ts.map +1 -0
  155. package/dist/dts/attestation.d.ts +13 -0
  156. package/dist/dts/attestation.d.ts.map +1 -0
  157. package/dist/dts/cli/commands/balance.d.ts +3 -0
  158. package/dist/dts/cli/commands/balance.d.ts.map +1 -0
  159. package/dist/dts/cli/commands/deposit.d.ts +3 -0
  160. package/dist/dts/cli/commands/deposit.d.ts.map +1 -0
  161. package/dist/dts/cli/commands/export-verifier.d.ts +3 -0
  162. package/dist/dts/cli/commands/export-verifier.d.ts.map +1 -0
  163. package/dist/dts/cli/commands/generate.d.ts +3 -0
  164. package/dist/dts/cli/commands/generate.d.ts.map +1 -0
  165. package/dist/dts/cli/commands/history.d.ts +3 -0
  166. package/dist/dts/cli/commands/history.d.ts.map +1 -0
  167. package/dist/dts/cli/commands/prove.d.ts +3 -0
  168. package/dist/dts/cli/commands/prove.d.ts.map +1 -0
  169. package/dist/dts/cli/commands/redeem.d.ts +3 -0
  170. package/dist/dts/cli/commands/redeem.d.ts.map +1 -0
  171. package/dist/dts/cli/commands/update-client.d.ts +3 -0
  172. package/dist/dts/cli/commands/update-client.d.ts.map +1 -0
  173. package/dist/dts/cli/config.d.ts +14 -0
  174. package/dist/dts/cli/config.d.ts.map +1 -0
  175. package/dist/dts/cli/utils.d.ts +11 -0
  176. package/dist/dts/cli/utils.d.ts.map +1 -0
  177. package/dist/dts/cli.d.ts +3 -0
  178. package/dist/dts/cli.d.ts.map +1 -0
  179. package/dist/dts/constants/ibc-core-registry.d.ts +11 -0
  180. package/dist/dts/constants/ibc-core-registry.d.ts.map +1 -0
  181. package/dist/dts/constants/services.d.ts +3 -0
  182. package/dist/dts/constants/services.d.ts.map +1 -0
  183. package/dist/dts/constants/z-asset-registry.d.ts +13 -0
  184. package/dist/dts/constants/z-asset-registry.d.ts.map +1 -0
  185. package/dist/dts/gen/prover_pb.d.ts +300 -0
  186. package/dist/dts/gen/prover_pb.d.ts.map +1 -0
  187. package/dist/dts/index.d.ts +21 -0
  188. package/dist/dts/index.d.ts.map +1 -0
  189. package/dist/dts/internal/evm.d.ts +250 -0
  190. package/dist/dts/internal/evm.d.ts.map +1 -0
  191. package/dist/dts/internal/evmWalletClient.d.ts +2 -0
  192. package/dist/dts/internal/evmWalletClient.d.ts.map +1 -0
  193. package/dist/dts/internal/publicClient.d.ts +2 -0
  194. package/dist/dts/internal/publicClient.d.ts.map +1 -0
  195. package/dist/dts/internal/walletClient.d.ts +2 -0
  196. package/dist/dts/internal/walletClient.d.ts.map +1 -0
  197. package/dist/dts/legacy/client.d.ts +313 -0
  198. package/dist/dts/legacy/client.d.ts.map +1 -0
  199. package/dist/dts/legacy/prover.d.ts +30 -0
  200. package/dist/dts/legacy/prover.d.ts.map +1 -0
  201. package/dist/dts/poseidon2.d.ts +18 -0
  202. package/dist/dts/poseidon2.d.ts.map +1 -0
  203. package/dist/dts/promises/Attestor.d.ts +17 -0
  204. package/dist/dts/promises/Attestor.d.ts.map +1 -0
  205. package/dist/dts/promises/EvmPublicClient.d.ts +3709 -0
  206. package/dist/dts/promises/EvmPublicClient.d.ts.map +1 -0
  207. package/dist/dts/promises/EvmWalletClient.d.ts +4502 -0
  208. package/dist/dts/promises/EvmWalletClient.d.ts.map +1 -0
  209. package/dist/dts/promises/Payment.d.ts +33 -0
  210. package/dist/dts/promises/Payment.d.ts.map +1 -0
  211. package/dist/dts/promises/Prover.d.ts +14 -0
  212. package/dist/dts/promises/Prover.d.ts.map +1 -0
  213. package/dist/dts/promises/PublicClient.d.ts +23 -0
  214. package/dist/dts/promises/PublicClient.d.ts.map +1 -0
  215. package/dist/dts/promises/WalletClient.d.ts +57 -0
  216. package/dist/dts/promises/WalletClient.d.ts.map +1 -0
  217. package/dist/dts/promises/index.d.ts +8 -0
  218. package/dist/dts/promises/index.d.ts.map +1 -0
  219. package/dist/dts/rpc.d.ts +148 -0
  220. package/dist/dts/rpc.d.ts.map +1 -0
  221. package/dist/dts/types.d.ts +263 -0
  222. package/dist/dts/types.d.ts.map +1 -0
  223. package/dist/esm/Abi.js +264 -0
  224. package/dist/esm/Abi.js.map +1 -0
  225. package/dist/esm/Attestor.js +68 -0
  226. package/dist/esm/Attestor.js.map +1 -0
  227. package/dist/esm/Constants.js +2 -0
  228. package/dist/esm/Constants.js.map +1 -0
  229. package/dist/esm/Domain.js +17 -0
  230. package/dist/esm/Domain.js.map +1 -0
  231. package/dist/esm/Error.js +89 -0
  232. package/dist/esm/Error.js.map +1 -0
  233. package/dist/esm/EvmPublicClient.js +292 -0
  234. package/dist/esm/EvmPublicClient.js.map +1 -0
  235. package/dist/esm/EvmWalletClient.js +659 -0
  236. package/dist/esm/EvmWalletClient.js.map +1 -0
  237. package/dist/esm/Payment.js +323 -0
  238. package/dist/esm/Payment.js.map +1 -0
  239. package/dist/esm/PaymentError.js +24 -0
  240. package/dist/esm/PaymentError.js.map +1 -0
  241. package/dist/esm/Prover.js +142 -0
  242. package/dist/esm/Prover.js.map +1 -0
  243. package/dist/esm/PublicClient.js +30 -0
  244. package/dist/esm/PublicClient.js.map +1 -0
  245. package/dist/esm/Schema.js +31 -0
  246. package/dist/esm/Schema.js.map +1 -0
  247. package/dist/esm/Utils.js +27 -0
  248. package/dist/esm/Utils.js.map +1 -0
  249. package/dist/esm/WalletClient.js +30 -0
  250. package/dist/esm/WalletClient.js.map +1 -0
  251. package/dist/esm/attestation.js +42 -0
  252. package/dist/esm/attestation.js.map +1 -0
  253. package/dist/esm/cli/commands/balance.js +54 -0
  254. package/dist/esm/cli/commands/balance.js.map +1 -0
  255. package/dist/esm/cli/commands/deposit.js +52 -0
  256. package/dist/esm/cli/commands/deposit.js.map +1 -0
  257. package/dist/esm/cli/commands/export-verifier.js +21 -0
  258. package/dist/esm/cli/commands/export-verifier.js.map +1 -0
  259. package/dist/esm/cli/commands/generate.js +35 -0
  260. package/dist/esm/cli/commands/generate.js.map +1 -0
  261. package/dist/esm/cli/commands/history.js +53 -0
  262. package/dist/esm/cli/commands/history.js.map +1 -0
  263. package/dist/esm/cli/commands/prove.js +76 -0
  264. package/dist/esm/cli/commands/prove.js.map +1 -0
  265. package/dist/esm/cli/commands/redeem.js +146 -0
  266. package/dist/esm/cli/commands/redeem.js.map +1 -0
  267. package/dist/esm/cli/commands/update-client.js +56 -0
  268. package/dist/esm/cli/commands/update-client.js.map +1 -0
  269. package/dist/esm/cli/config.js +26 -0
  270. package/dist/esm/cli/config.js.map +1 -0
  271. package/dist/esm/cli/utils.js +94 -0
  272. package/dist/esm/cli/utils.js.map +1 -0
  273. package/dist/esm/cli.js +22 -0
  274. package/dist/esm/cli.js.map +1 -0
  275. package/dist/esm/constants/ibc-core-registry.js +21 -0
  276. package/dist/esm/constants/ibc-core-registry.js.map +1 -0
  277. package/dist/esm/constants/services.js +3 -0
  278. package/dist/esm/constants/services.js.map +1 -0
  279. package/dist/esm/constants/z-asset-registry.js +23 -0
  280. package/dist/esm/constants/z-asset-registry.js.map +1 -0
  281. package/dist/esm/gen/prover_pb.js +74 -0
  282. package/dist/esm/gen/prover_pb.js.map +1 -0
  283. package/dist/esm/index.js +22 -0
  284. package/dist/esm/index.js.map +1 -0
  285. package/dist/esm/internal/evm.js +169 -0
  286. package/dist/esm/internal/evm.js.map +1 -0
  287. package/dist/esm/internal/evmWalletClient.js +2 -0
  288. package/dist/esm/internal/evmWalletClient.js.map +1 -0
  289. package/dist/esm/internal/publicClient.js +41 -0
  290. package/dist/esm/internal/publicClient.js.map +1 -0
  291. package/dist/esm/internal/walletClient.js +35 -0
  292. package/dist/esm/internal/walletClient.js.map +1 -0
  293. package/dist/esm/legacy/client.js +1212 -0
  294. package/dist/esm/legacy/client.js.map +1 -0
  295. package/dist/esm/legacy/prover.js +105 -0
  296. package/dist/esm/legacy/prover.js.map +1 -0
  297. package/dist/esm/package.json +4 -0
  298. package/dist/esm/poseidon2.js +218 -0
  299. package/dist/esm/poseidon2.js.map +1 -0
  300. package/dist/esm/promises/Attestor.js +14 -0
  301. package/dist/esm/promises/Attestor.js.map +1 -0
  302. package/dist/esm/promises/EvmPublicClient.js +26 -0
  303. package/dist/esm/promises/EvmPublicClient.js.map +1 -0
  304. package/dist/esm/promises/EvmWalletClient.js +43 -0
  305. package/dist/esm/promises/EvmWalletClient.js.map +1 -0
  306. package/dist/esm/promises/Payment.js +13 -0
  307. package/dist/esm/promises/Payment.js.map +1 -0
  308. package/dist/esm/promises/Prover.js +17 -0
  309. package/dist/esm/promises/Prover.js.map +1 -0
  310. package/dist/esm/promises/PublicClient.js +45 -0
  311. package/dist/esm/promises/PublicClient.js.map +1 -0
  312. package/dist/esm/promises/WalletClient.js +36 -0
  313. package/dist/esm/promises/WalletClient.js.map +1 -0
  314. package/dist/esm/promises/index.js +8 -0
  315. package/dist/esm/promises/index.js.map +1 -0
  316. package/dist/esm/rpc.js +850 -0
  317. package/dist/esm/rpc.js.map +1 -0
  318. package/dist/esm/types.js +2 -0
  319. package/dist/esm/types.js.map +1 -0
  320. package/gen/prover_pb/package.json +6 -0
  321. package/index/package.json +6 -0
  322. package/legacy/client/package.json +6 -0
  323. package/legacy/prover/package.json +6 -0
  324. package/package.json +397 -44
  325. package/poseidon2/package.json +6 -0
  326. package/promises/Attestor/package.json +6 -0
  327. package/promises/EvmPublicClient/package.json +6 -0
  328. package/promises/EvmWalletClient/package.json +6 -0
  329. package/promises/Payment/package.json +6 -0
  330. package/promises/Prover/package.json +6 -0
  331. package/promises/PublicClient/package.json +6 -0
  332. package/promises/WalletClient/package.json +6 -0
  333. package/promises/index/package.json +6 -0
  334. package/promises/package.json +6 -0
  335. package/rpc/package.json +6 -0
  336. package/src/Abi.ts +195 -0
  337. package/src/Attestor.ts +113 -0
  338. package/src/Constants.ts +4 -0
  339. package/src/Domain.ts +52 -0
  340. package/src/Error.ts +163 -0
  341. package/src/EvmPublicClient.ts +549 -0
  342. package/src/EvmWalletClient.ts +1034 -0
  343. package/src/Payment.ts +523 -0
  344. package/src/PaymentError.ts +39 -0
  345. package/src/Prover.ts +240 -0
  346. package/src/PublicClient.ts +196 -0
  347. package/src/Schema.ts +36 -0
  348. package/src/Utils.ts +43 -0
  349. package/src/WalletClient.ts +172 -0
  350. package/src/attestation.ts +69 -0
  351. package/src/cli/commands/balance.ts +88 -0
  352. package/src/cli/commands/deposit.ts +104 -0
  353. package/src/cli/commands/export-verifier.ts +28 -0
  354. package/src/cli/commands/generate.ts +86 -0
  355. package/src/cli/commands/history.ts +91 -0
  356. package/src/cli/commands/prove.ts +133 -0
  357. package/src/cli/commands/redeem.ts +277 -0
  358. package/src/cli/commands/update-client.ts +96 -0
  359. package/src/cli/config.ts +55 -0
  360. package/src/cli/utils.ts +136 -0
  361. package/src/cli.ts +31 -0
  362. package/src/constants/ibc-core-registry.ts +44 -0
  363. package/src/constants/services.ts +4 -0
  364. package/src/constants/z-asset-registry.ts +47 -0
  365. package/src/gen/prover_pb.ts +375 -0
  366. package/src/index.ts +23 -0
  367. package/src/internal/evm.ts +361 -0
  368. package/src/internal/evmWalletClient.ts +0 -0
  369. package/src/internal/publicClient.ts +57 -0
  370. package/src/internal/walletClient.ts +50 -0
  371. package/src/legacy/client.ts +1652 -0
  372. package/src/legacy/prover.ts +135 -0
  373. package/src/poseidon2.ts +246 -0
  374. package/src/promises/Attestor.ts +25 -0
  375. package/src/promises/EvmPublicClient.ts +39 -0
  376. package/src/promises/EvmWalletClient.ts +63 -0
  377. package/src/promises/Payment.ts +86 -0
  378. package/src/promises/Prover.ts +26 -0
  379. package/src/promises/PublicClient.ts +47 -0
  380. package/src/promises/WalletClient.ts +38 -0
  381. package/src/promises/index.ts +7 -0
  382. package/src/rpc.ts +994 -0
  383. package/src/types.ts +281 -0
  384. package/types/package.json +6 -0
  385. package/dist/LICENSE +0 -1
  386. package/dist/chunk-37PNLRA6.js +0 -2418
  387. package/dist/cli.cjs +0 -3031
  388. package/dist/cli.js +0 -675
  389. package/dist/index.cjs +0 -2451
  390. package/dist/index.js +0 -1
  391. package/dist/package.json +0 -18
  392. package/dist/payments.d.ts +0 -835
  393. /package/{dist → src}/tsdoc-metadata.json +0 -0
@@ -0,0 +1,69 @@
1
+ import type { Address, Hex } from "viem";
2
+ import type { AttestationRequest, AttestationResponse } from "./types.js";
3
+
4
+ interface AttestationServiceResponse {
5
+ id: string;
6
+ hash: Hex;
7
+ signature: {
8
+ r: Hex;
9
+ s: Hex;
10
+ v: number;
11
+ };
12
+ signerAddress: Address;
13
+ }
14
+
15
+ /**
16
+ * Client for attestation service that signs poseidon(unspendable_address, beneficiary)
17
+ * @public
18
+ */
19
+ export class AttestationClient {
20
+ private baseUrl: string;
21
+ private apiKey: string;
22
+
23
+ constructor(baseUrl: string, apiKey: string) {
24
+ this.baseUrl = baseUrl.replace(/\/$/, ""); // Remove trailing slash
25
+ this.apiKey = apiKey;
26
+ }
27
+
28
+ async getAttestation(
29
+ unspendableAddress: Address,
30
+ beneficiary: Address,
31
+ ): Promise<AttestationResponse> {
32
+ const request: AttestationRequest = {
33
+ unspendableAddress,
34
+ beneficiary,
35
+ };
36
+
37
+ const headers: Record<string, string> = {
38
+ "Content-Type": "application/json",
39
+ };
40
+
41
+ headers["x-api-key"] = this.apiKey;
42
+
43
+ const response = await fetch(this.baseUrl, {
44
+ method: "POST",
45
+ headers,
46
+ body: JSON.stringify(request),
47
+ });
48
+
49
+ if (!response.ok) {
50
+ const errorText = await response.text();
51
+ throw new Error(
52
+ `Attestation service error: ${response.status} ${errorText}`,
53
+ );
54
+ }
55
+
56
+ const data = (await response.json()) as AttestationServiceResponse;
57
+
58
+ // Combine r, s, v into 65-byte signature
59
+ const r = data.signature.r.slice(2);
60
+ const s = data.signature.s.slice(2);
61
+ const v = data.signature.v.toString(16).padStart(2, "0");
62
+ const signature = `0x${r}${s}${v}` as Hex;
63
+
64
+ return {
65
+ attestedMessage: data.hash,
66
+ signature,
67
+ };
68
+ }
69
+ }
@@ -0,0 +1,88 @@
1
+ import { Command } from "commander";
2
+ import { UnionPrivatePayments } from "../../legacy/client.js";
3
+ import { loadConfig } from "../config.js";
4
+ import { formatAmount, parseBeneficiaries, validateSecret } from "../utils.js";
5
+
6
+ export const balanceCommand = new Command("balance")
7
+ .description("Query balance via light client")
8
+ .requiredOption("--secret <hex>", "32-byte secret (0x-prefixed hex)")
9
+ .option(
10
+ "--beneficiaries <addresses>",
11
+ "Comma-separated beneficiary addresses",
12
+ )
13
+ .requiredOption("--client-id <id>", "Light client ID to use")
14
+ .option(
15
+ "--config <path>",
16
+ "Path to config file",
17
+ "./private-payments.config.json",
18
+ )
19
+ .action(async (options) => {
20
+ try {
21
+ const config = loadConfig(options.config);
22
+ const secret = validateSecret(options.secret);
23
+ const beneficiaries = parseBeneficiaries(options.beneficiaries);
24
+ const clientId = parseInt(options.clientId, 10);
25
+
26
+ if (isNaN(clientId) || clientId < 0) {
27
+ throw new Error("Invalid light client ID");
28
+ }
29
+
30
+ const client = new UnionPrivatePayments({
31
+ proverUrl: config.proverUrl,
32
+ sourceRpcUrl: config.sourceRpcUrl,
33
+ destinationRpcUrl: config.destinationRpcUrl,
34
+ srcZAssetAddress: config.srcZAssetAddress,
35
+ dstZAssetAddress: config.dstZAssetAddress,
36
+ sourceChainId: BigInt(config.sourceChainId),
37
+ destinationChainId: BigInt(config.destinationChainId),
38
+ });
39
+
40
+ const depositAddress = client.getDepositAddress(secret, beneficiaries);
41
+ const nullifier = client.getNullifier(secret);
42
+
43
+ console.log("Querying balance...");
44
+ console.log("Deposit Address:", depositAddress);
45
+ console.log("Light Client ID:", clientId);
46
+
47
+ const balance = await client.getBalance({
48
+ depositAddress,
49
+ nullifier,
50
+ clientId,
51
+ });
52
+ const tokenInfo = await client.getSrcZAssetInfo();
53
+
54
+ console.log("");
55
+
56
+ console.log(`Latest height: ${balance.latestHeight}`);
57
+ console.log(`Light client height: ${balance.lightClientHeight}`);
58
+ console.log(
59
+ `Light client lag: ${balance.latestHeight - balance.lightClientHeight}`,
60
+ );
61
+ console.log(`Balance:`);
62
+ console.log(
63
+ " Pending:",
64
+ formatAmount(balance.pending, tokenInfo.decimals, tokenInfo.symbol),
65
+ );
66
+ console.log(
67
+ " Confirmed:",
68
+ formatAmount(balance.confirmed, tokenInfo.decimals, tokenInfo.symbol),
69
+ );
70
+ console.log(
71
+ " Redeemed:",
72
+ formatAmount(balance.redeemed, tokenInfo.decimals, tokenInfo.symbol),
73
+ );
74
+ console.log(
75
+ " Available:",
76
+ formatAmount(balance.available, tokenInfo.decimals, tokenInfo.symbol),
77
+ );
78
+ console.log("");
79
+ console.log("Raw balance:");
80
+ console.log(" Pending:", balance.pending.toString());
81
+ console.log(" Confirmed:", balance.confirmed.toString());
82
+ console.log(" Redeemed:", balance.redeemed.toString());
83
+ console.log(" Available:", balance.available.toString());
84
+ } catch (e) {
85
+ console.error("Error:", (e as Error).message);
86
+ process.exit(1);
87
+ }
88
+ });
@@ -0,0 +1,104 @@
1
+ import { Command } from "commander";
2
+ import { type Chain, createWalletClient, http } from "viem";
3
+ import { privateKeyToAccount } from "viem/accounts";
4
+ import { computeUnspendableAddress } from "../../poseidon2.js";
5
+ import { depositToZAsset } from "../../rpc.js";
6
+ import { loadConfig } from "../config.js";
7
+ import {
8
+ getExplorerUrl,
9
+ padBeneficiaries,
10
+ parseBeneficiaries,
11
+ validateSecret,
12
+ } from "../utils.js";
13
+
14
+ export const depositCommand = new Command("deposit")
15
+ .description("Wrap underlying tokens and deposit to ZAsset")
16
+ .requiredOption(
17
+ "--amount <amount>",
18
+ 'Amount to deposit in smallest units (e.g., "50000000" for 50 USDC)',
19
+ )
20
+ .requiredOption(
21
+ "--secret <hex>",
22
+ "32-byte secret to derive deposit address (0x-prefixed hex)",
23
+ )
24
+ .option(
25
+ "--beneficiaries <addresses>",
26
+ "Comma-separated beneficiary addresses (max 4, empty = unbounded)",
27
+ )
28
+ .option(
29
+ "--private-key <key>",
30
+ "Private key to sign transaction (or env SENDER_PRIVATE_KEY)",
31
+ )
32
+ .option(
33
+ "--config <path>",
34
+ "Path to config file",
35
+ "./private-payments.config.json",
36
+ )
37
+ .action(async (options) => {
38
+ try {
39
+ const privateKey = options.privateKey ?? process.env.SENDER_PRIVATE_KEY;
40
+
41
+ if (!privateKey) {
42
+ throw new Error(
43
+ "Private key required. Use --private-key or set SENDER_PRIVATE_KEY env var",
44
+ );
45
+ }
46
+
47
+ if (!privateKey.startsWith("0x")) {
48
+ throw new Error("Private key must start with 0x");
49
+ }
50
+
51
+ const config = loadConfig(options.config);
52
+ const secret = validateSecret(options.secret);
53
+
54
+ const beneficiaries = parseBeneficiaries(options.beneficiaries);
55
+ const paddedBeneficiaries = padBeneficiaries(beneficiaries);
56
+
57
+ // Use source chain RPC and ZAsset from config
58
+ const rpcUrl = config.sourceRpcUrl;
59
+ const zAssetAddress = config.srcZAssetAddress;
60
+
61
+ // Parse amount as bigint (smallest units)
62
+ const amount = BigInt(options.amount);
63
+
64
+ // Derive deposit address from secret
65
+ const depositAddress = computeUnspendableAddress(
66
+ secret,
67
+ BigInt(config.destinationChainId),
68
+ paddedBeneficiaries,
69
+ );
70
+
71
+ // Create wallet client from private key
72
+ const account = privateKeyToAccount(privateKey as `0x${string}`);
73
+ const walletClient = createWalletClient({
74
+ account,
75
+ chain: { id: config.sourceChainId } as Chain,
76
+ transport: http(rpcUrl),
77
+ });
78
+
79
+ console.log("Depositing to ZAsset...");
80
+ console.log(" ZAsset:", zAssetAddress);
81
+ console.log(" Amount:", amount.toString());
82
+ console.log(" Deposit Address:", depositAddress);
83
+ console.log("");
84
+
85
+ const result = await depositToZAsset(
86
+ rpcUrl,
87
+ zAssetAddress,
88
+ depositAddress,
89
+ amount,
90
+ walletClient,
91
+ );
92
+
93
+ console.log("");
94
+ console.log("Deposit complete!");
95
+ console.log(" Tx Hash:", result.txHash);
96
+ console.log(
97
+ " Explorer:",
98
+ getExplorerUrl(Number(result.chainId), result.txHash),
99
+ );
100
+ } catch (e) {
101
+ console.error("Error:", (e as Error).message);
102
+ process.exit(1);
103
+ }
104
+ });
@@ -0,0 +1,28 @@
1
+ import { writeFileSync } from "node:fs";
2
+ import { Command } from "commander";
3
+ import { ProverClient } from "../../legacy/prover.js";
4
+
5
+ export const exportVerifierCommand = new Command("export-verifier")
6
+ .description("Export the Solidity verifier contract from the prover server")
7
+ .option("--prover-url <url>", "Prover gRPC-web URL", "http://localhost:8080")
8
+ .option("--output <file>", "Save verifier to file (default: stdout)")
9
+ .action(async (options) => {
10
+ try {
11
+ const proverClient = new ProverClient(options.proverUrl);
12
+
13
+ console.error("Exporting verifier contract...");
14
+ console.error(" Prover URL:", options.proverUrl);
15
+
16
+ const verifierContract = await proverClient.exportVerifier();
17
+
18
+ if (options.output) {
19
+ writeFileSync(options.output, verifierContract);
20
+ console.error(`Verifier saved to: ${options.output}`);
21
+ } else {
22
+ console.log(verifierContract);
23
+ }
24
+ } catch (e) {
25
+ console.error("Error:", (e as Error).message);
26
+ process.exit(1);
27
+ }
28
+ });
@@ -0,0 +1,86 @@
1
+ import { Command } from "commander";
2
+ import {
3
+ computeNullifier,
4
+ computeUnspendableAddress,
5
+ generatePaymentKey,
6
+ } from "../../poseidon2.js";
7
+ import { loadConfig } from "../config.js";
8
+ import {
9
+ padBeneficiaries,
10
+ parseBeneficiaries,
11
+ validateSecret,
12
+ } from "../utils.js";
13
+
14
+ export const generateCommand = new Command("generate")
15
+ .description(
16
+ "Generate a new unspendable address (generates random secret by default)",
17
+ )
18
+ .option(
19
+ "--secret <hex>",
20
+ "Use existing 32-byte secret (0x-prefixed hex) instead of generating",
21
+ )
22
+ .option(
23
+ "--beneficiaries <addresses>",
24
+ "Comma-separated beneficiary addresses (max 4, empty = unbounded)",
25
+ )
26
+ .option(
27
+ "--config <path>",
28
+ "Path to config file",
29
+ "./private-payments.config.json",
30
+ )
31
+ .action(async (options) => {
32
+ try {
33
+ const config = loadConfig(options.config);
34
+ const secret = options.secret
35
+ ? validateSecret(options.secret)
36
+ : generatePaymentKey();
37
+ const isNewSecret = !options.secret;
38
+
39
+ const beneficiaries = parseBeneficiaries(options.beneficiaries);
40
+ const paddedBeneficiaries = padBeneficiaries(beneficiaries);
41
+
42
+ const depositAddress = computeUnspendableAddress(
43
+ secret,
44
+ BigInt(config.destinationChainId),
45
+ paddedBeneficiaries,
46
+ );
47
+
48
+ const nullifier = computeNullifier(
49
+ secret,
50
+ BigInt(config.destinationChainId),
51
+ );
52
+
53
+ const isUnbounded = beneficiaries.length === 0;
54
+
55
+ if (isNewSecret) {
56
+ console.log("Secret:", secret);
57
+ console.log("");
58
+ console.log(
59
+ "WARNING: Save this secret! It is required to redeem funds.",
60
+ );
61
+ console.log("");
62
+ }
63
+
64
+ console.log("Deposit Address:", depositAddress);
65
+ console.log(
66
+ "Nullifier:",
67
+ "0x" + nullifier.toString(16).padStart(64, "0"),
68
+ );
69
+ console.log(
70
+ "Mode:",
71
+ isUnbounded
72
+ ? "Unbounded (any beneficiary allowed)"
73
+ : `Bounded (${beneficiaries.length} beneficiaries)`,
74
+ );
75
+
76
+ if (!isUnbounded) {
77
+ console.log("Beneficiaries:");
78
+ for (const addr of beneficiaries) {
79
+ console.log(` - ${addr}`);
80
+ }
81
+ }
82
+ } catch (e) {
83
+ console.error("Error:", (e as Error).message);
84
+ process.exit(1);
85
+ }
86
+ });
@@ -0,0 +1,91 @@
1
+ import { Command } from "commander";
2
+ import { UnionPrivatePayments } from "../../legacy/client.js";
3
+ import { RpcClient } from "../../rpc.js";
4
+ import { loadConfig } from "../config.js";
5
+ import { formatAmount, getExplorerUrl, validateSecret } from "../utils.js";
6
+
7
+ export const historyCommand = new Command("history")
8
+ .description("List redemption transactions for a secret")
9
+ .requiredOption("--secret <hex>", "32-byte secret (0x-prefixed hex)")
10
+ .option("--from-block <number>", "Start block number (default: earliest)")
11
+ .option("--to-block <number>", "End block number (default: latest)")
12
+ .option(
13
+ "--config <path>",
14
+ "Path to config file",
15
+ "./private-payments.config.json",
16
+ )
17
+ .action(async (options) => {
18
+ try {
19
+ const config = loadConfig(options.config);
20
+ const secret = validateSecret(options.secret);
21
+
22
+ const client = new UnionPrivatePayments({
23
+ proverUrl: config.proverUrl,
24
+ sourceRpcUrl: config.sourceRpcUrl,
25
+ destinationRpcUrl: config.destinationRpcUrl,
26
+ srcZAssetAddress: config.srcZAssetAddress,
27
+ dstZAssetAddress: config.dstZAssetAddress,
28
+ sourceChainId: BigInt(config.sourceChainId),
29
+ destinationChainId: BigInt(config.destinationChainId),
30
+ });
31
+
32
+ const nullifier = client.getNullifier(secret);
33
+ const nullifierHex = "0x" + nullifier.toString(16).padStart(64, "0");
34
+
35
+ console.log("Querying redemption history...");
36
+ console.log("Nullifier:", nullifierHex);
37
+ console.log("");
38
+
39
+ const fromBlock = options.fromBlock
40
+ ? BigInt(options.fromBlock)
41
+ : undefined;
42
+ const toBlock = options.toBlock ? BigInt(options.toBlock) : undefined;
43
+
44
+ const dstRpcClient = new RpcClient(config.destinationRpcUrl);
45
+ const history = await dstRpcClient.getRedemptionHistory(
46
+ config.dstZAssetAddress,
47
+ nullifier,
48
+ fromBlock,
49
+ toBlock,
50
+ );
51
+
52
+ if (history.length === 0) {
53
+ console.log("No redemptions found for this secret.");
54
+ return;
55
+ }
56
+
57
+ // Get token info for formatting
58
+ const tokenInfo = await client.getDstZAssetInfo();
59
+
60
+ console.log(
61
+ `Found ${history.length} redemption${history.length > 1 ? "s" : ""}:`,
62
+ );
63
+ console.log("");
64
+
65
+ for (let i = 0; i < history.length; i++) {
66
+ const entry = history[i]!;
67
+ console.log(`#${i + 1} Block: ${entry.blockNumber}`);
68
+ console.log(` Tx: ${entry.txHash}`);
69
+ console.log(
70
+ ` Amount: ${formatAmount(entry.redeemAmount, tokenInfo.decimals, tokenInfo.symbol)}`,
71
+ );
72
+ console.log(` Beneficiary: ${entry.beneficiary}`);
73
+ console.log(
74
+ ` Explorer: ${getExplorerUrl(config.destinationChainId, entry.txHash)}`,
75
+ );
76
+ console.log("");
77
+ }
78
+
79
+ // Show total redeemed
80
+ const totalRedeemed = history.reduce(
81
+ (sum, h) => sum + h.redeemAmount,
82
+ 0n,
83
+ );
84
+ console.log(
85
+ `Total redeemed: ${formatAmount(totalRedeemed, tokenInfo.decimals, tokenInfo.symbol)}`,
86
+ );
87
+ } catch (e) {
88
+ console.error("Error:", (e as Error).message);
89
+ process.exit(1);
90
+ }
91
+ });
@@ -0,0 +1,133 @@
1
+ import { writeFileSync } from "node:fs";
2
+ import { Command } from "commander";
3
+ import { UnionPrivatePayments } from "../../legacy/client.js";
4
+ import { parseProofJson } from "../../rpc.js";
5
+ import { loadConfig } from "../config.js";
6
+ import {
7
+ parseBeneficiaries,
8
+ parseClientIds,
9
+ validateAddress,
10
+ validateSecret,
11
+ } from "../utils.js";
12
+
13
+ export const proveCommand = new Command("prove")
14
+ .description("Generate ZK proof for redemption")
15
+ .requiredOption("--secret <hex>", "32-byte secret (0x-prefixed hex)")
16
+ .option(
17
+ "--beneficiaries <addresses>",
18
+ "Comma-separated beneficiary addresses for address derivation",
19
+ )
20
+ .requiredOption("--beneficiary <address>", "Address to redeem to")
21
+ .requiredOption(
22
+ "--amount <value>",
23
+ 'Amount to redeem in smallest units (e.g., "2000000" for 2 USDC)',
24
+ )
25
+ .requiredOption(
26
+ "--client-ids <ids>",
27
+ "Comma-separated light client IDs for anonymity set",
28
+ )
29
+ .requiredOption("--selected-client <id>", "Which client ID to use for proof")
30
+ .option("--output <file>", "Save proof JSON to file (default: stdout)")
31
+ .option(
32
+ "--config <path>",
33
+ "Path to config file",
34
+ "./private-payments.config.json",
35
+ )
36
+ .action(async (options) => {
37
+ try {
38
+ const config = loadConfig(options.config);
39
+ const secret = validateSecret(options.secret);
40
+ const beneficiaries = parseBeneficiaries(options.beneficiaries);
41
+ const beneficiary = validateAddress(options.beneficiary, "beneficiary");
42
+ const clientIds = parseClientIds(options.clientIds);
43
+ const selectedClientId = parseInt(options.selectedClient, 10);
44
+
45
+ if (isNaN(selectedClientId)) {
46
+ throw new Error("Invalid selected client ID");
47
+ }
48
+
49
+ if (!clientIds.includes(selectedClientId)) {
50
+ throw new Error(
51
+ `Selected client ${selectedClientId} not in client IDs: ${clientIds.join(", ")}`,
52
+ );
53
+ }
54
+
55
+ const client = new UnionPrivatePayments({
56
+ proverUrl: config.proverUrl,
57
+ sourceRpcUrl: config.sourceRpcUrl,
58
+ destinationRpcUrl: config.destinationRpcUrl,
59
+ srcZAssetAddress: config.srcZAssetAddress,
60
+ dstZAssetAddress: config.dstZAssetAddress,
61
+ sourceChainId: BigInt(config.sourceChainId),
62
+ destinationChainId: BigInt(config.destinationChainId),
63
+ });
64
+
65
+ const amount = BigInt(options.amount);
66
+
67
+ console.error("Generating proof...");
68
+ console.error(" Secret:", secret.slice(0, 10) + "...");
69
+ console.error(" Beneficiary:", beneficiary);
70
+ console.error(" Amount:", amount.toString());
71
+ console.error(" Client IDs:", clientIds.join(", "));
72
+ console.error(" Selected Client:", selectedClientId);
73
+
74
+ const result = await client.generateProof(
75
+ secret,
76
+ beneficiaries,
77
+ beneficiary,
78
+ amount,
79
+ clientIds,
80
+ selectedClientId,
81
+ );
82
+
83
+ if (
84
+ !result.proof.success ||
85
+ !result.proof.proofJson ||
86
+ !result.metadata
87
+ ) {
88
+ throw new Error(result.proof.error ?? "Proof generation failed");
89
+ }
90
+
91
+ console.error("Proof generated successfully!");
92
+
93
+ const proofJson = parseProofJson(result.proof.proofJson);
94
+ const output = {
95
+ proof: proofJson,
96
+ metadata: {
97
+ depositAddress: result.metadata.depositAddress,
98
+ beneficiary: result.metadata.beneficiary,
99
+ value: result.metadata.value.toString(),
100
+ nullifier:
101
+ "0x" + result.metadata.nullifier.toString(16).padStart(64, "0"),
102
+ lightClients: result.metadata.lightClients.map((lc) => ({
103
+ clientId: lc.clientId,
104
+ height: lc.height.toString(),
105
+ stateRoot: lc.stateRoot,
106
+ })),
107
+ },
108
+ };
109
+
110
+ const jsonOutput = JSON.stringify(output, null, 2);
111
+
112
+ if (options.output) {
113
+ writeFileSync(options.output, jsonOutput);
114
+ console.error(`Proof saved to: ${options.output}`);
115
+ } else {
116
+ console.log(jsonOutput);
117
+ }
118
+
119
+ console.error("");
120
+ console.error("Metadata:");
121
+ console.error(" Deposit Address:", result.metadata.depositAddress);
122
+ console.error(" Beneficiary:", result.metadata.beneficiary);
123
+ console.error(" Value:", result.metadata.value.toString());
124
+ console.error(
125
+ " Nullifier:",
126
+ "0x" + result.metadata.nullifier.toString(16).padStart(64, "0"),
127
+ );
128
+ console.error(" Light Clients:", result.metadata.lightClients.length);
129
+ } catch (e) {
130
+ console.error("Error:", (e as Error).message);
131
+ process.exit(1);
132
+ }
133
+ });