@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,146 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { Command } from "commander";
3
+ import { createWalletClient, http } from "viem";
4
+ import { privateKeyToAccount } from "viem/accounts";
5
+ import { arbitrum, base, mainnet, optimism, polygon } from "viem/chains";
6
+ import { AttestationClient } from "../../attestation.js";
7
+ import { UnionPrivatePayments } from "../../legacy/client.js";
8
+ import { parseProofJson, proofJsonToRedeemParams, submitRedeem } from "../../rpc.js";
9
+ import { loadConfig } from "../config.js";
10
+ import { getExplorerUrl, parseBeneficiaries, parseClientIds, validateAddress, validateSecret } from "../utils.js";
11
+ const CHAIN_MAP = {
12
+ 1: mainnet,
13
+ 8453: base,
14
+ 42161: arbitrum,
15
+ 10: optimism,
16
+ 137: polygon
17
+ };
18
+ export const redeemCommand = /*#__PURE__*/new Command("redeem").description("Submit redemption transaction (with existing proof or generate on the fly)").option("--proof <file>", "Path to proof JSON file (from prove command)").option("--secret <hex>", "32-byte secret (0x-prefixed hex) - required if no --proof").option("--beneficiaries <addresses>", "Comma-separated beneficiary addresses for address derivation").option("--beneficiary <address>", "Address to redeem to - required if no --proof").option("--amount <value>", "Amount to redeem in smallest units - required if no --proof").option("--client-ids <ids>", "Comma-separated light client IDs for anonymity set - required if no --proof").option("--selected-client <id>", "Which client ID to use for proof - required if no --proof").option("--private-key <key>", "Private key to send transaction (or env SENDER_PRIVATE_KEY)").option("--config <path>", "Path to config file", "./private-payments.config.json").action(async options => {
19
+ try {
20
+ const config = loadConfig(options.config);
21
+ const privateKey = options.privateKey ?? process.env.SENDER_PRIVATE_KEY;
22
+ if (!privateKey) {
23
+ throw new Error("Private key required. Use --private-key or set SENDER_PRIVATE_KEY env var");
24
+ }
25
+ if (!privateKey.startsWith("0x")) {
26
+ throw new Error("Private key must start with 0x");
27
+ }
28
+ if (!config.attestorUrl) {
29
+ throw new Error("attestorUrl required in config for redemption");
30
+ }
31
+ if (!config.attestorApiKey) {
32
+ throw new Error("attestorApiKey required in config for redemption");
33
+ }
34
+ let proofData;
35
+ if (options.proof) {
36
+ // Mode 1: Load existing proof from file
37
+ const proofContent = readFileSync(options.proof, "utf-8");
38
+ proofData = JSON.parse(proofContent);
39
+ console.log("Loading proof from:", options.proof);
40
+ } else {
41
+ // Mode 2: Generate proof on the fly
42
+ if (!options.secret || !options.beneficiary || !options.amount || !options.clientIds || !options.selectedClient) {
43
+ throw new Error("When not using --proof, you must provide: --secret, --beneficiary, --amount, --client-ids, --selected-client");
44
+ }
45
+ const secret = validateSecret(options.secret);
46
+ const beneficiaries = parseBeneficiaries(options.beneficiaries);
47
+ const beneficiary = validateAddress(options.beneficiary, "beneficiary");
48
+ const clientIds = parseClientIds(options.clientIds);
49
+ const selectedClientId = parseInt(options.selectedClient, 10);
50
+ if (isNaN(selectedClientId)) {
51
+ throw new Error("Invalid selected client ID");
52
+ }
53
+ if (!clientIds.includes(selectedClientId)) {
54
+ throw new Error(`Selected client ${selectedClientId} not in client IDs: ${clientIds.join(", ")}`);
55
+ }
56
+ const client = new UnionPrivatePayments({
57
+ proverUrl: config.proverUrl,
58
+ sourceRpcUrl: config.sourceRpcUrl,
59
+ destinationRpcUrl: config.destinationRpcUrl,
60
+ srcZAssetAddress: config.srcZAssetAddress,
61
+ dstZAssetAddress: config.dstZAssetAddress,
62
+ sourceChainId: BigInt(config.sourceChainId),
63
+ destinationChainId: BigInt(config.destinationChainId)
64
+ });
65
+ const amount = BigInt(options.amount);
66
+ console.log("Generating proof...");
67
+ console.log(" Secret:", secret.slice(0, 10) + "...");
68
+ console.log(" Beneficiary:", beneficiary);
69
+ console.log(" Amount:", amount.toString());
70
+ console.log(" Client IDs:", clientIds.join(", "));
71
+ console.log(" Selected Client:", selectedClientId);
72
+ const result = await client.generateProof(secret, beneficiaries, beneficiary, amount, clientIds, selectedClientId);
73
+ if (!result.proof.success || !result.proof.proofJson || !result.metadata) {
74
+ throw new Error(result.proof.error ?? "Proof generation failed");
75
+ }
76
+ console.log("Proof generated successfully!");
77
+ const proofJson = parseProofJson(result.proof.proofJson);
78
+ proofData = {
79
+ proof: proofJson,
80
+ metadata: {
81
+ depositAddress: result.metadata.depositAddress,
82
+ beneficiary: result.metadata.beneficiary,
83
+ value: result.metadata.value.toString(),
84
+ nullifier: "0x" + result.metadata.nullifier.toString(16).padStart(64, "0"),
85
+ lightClients: result.metadata.lightClients.map(lc => ({
86
+ clientId: lc.clientId,
87
+ height: lc.height.toString(),
88
+ stateRoot: lc.stateRoot
89
+ }))
90
+ }
91
+ };
92
+ }
93
+ const lightClients = proofData.metadata.lightClients.map(lc => ({
94
+ clientId: lc.clientId,
95
+ height: BigInt(lc.height),
96
+ stateRoot: lc.stateRoot
97
+ }));
98
+ const nullifier = BigInt(proofData.metadata.nullifier);
99
+ const value = BigInt(proofData.metadata.value);
100
+ const beneficiary = proofData.metadata.beneficiary;
101
+ const depositAddress = proofData.metadata.depositAddress;
102
+ console.log("");
103
+ console.log("Redemption details:");
104
+ console.log(" Deposit Address:", depositAddress);
105
+ console.log(" Beneficiary:", beneficiary);
106
+ console.log(" Value:", value.toString());
107
+ console.log(" Nullifier:", proofData.metadata.nullifier);
108
+ console.log(" Light Clients:", lightClients.length);
109
+ console.log("");
110
+ console.log("Requesting attestation...");
111
+ const attestationClient = new AttestationClient(config.attestorUrl, config.attestorApiKey);
112
+ const attestation = await attestationClient.getAttestation(depositAddress, beneficiary);
113
+ console.log(" Attested Message:", attestation.attestedMessage);
114
+ console.log(" Signature:", attestation.signature.slice(0, 20) + "...");
115
+ const redeemParams = proofJsonToRedeemParams(proofData.proof, {
116
+ lightClients,
117
+ nullifier,
118
+ value,
119
+ beneficiary,
120
+ attestedMessage: attestation.attestedMessage,
121
+ signature: attestation.signature
122
+ });
123
+ const chain = CHAIN_MAP[config.destinationChainId];
124
+ if (!chain) {
125
+ throw new Error(`Unsupported destination chain ID: ${config.destinationChainId}`);
126
+ }
127
+ // Create wallet client from private key
128
+ const account = privateKeyToAccount(privateKey);
129
+ const walletClient = createWalletClient({
130
+ account,
131
+ chain,
132
+ transport: http(config.destinationRpcUrl)
133
+ });
134
+ console.log("");
135
+ console.log("Submitting redeem transaction...");
136
+ const txHash = await submitRedeem(config.dstZAssetAddress, redeemParams, walletClient);
137
+ console.log("");
138
+ console.log("Transaction submitted!");
139
+ console.log("Hash:", txHash);
140
+ console.log("Explorer:", getExplorerUrl(config.destinationChainId, txHash));
141
+ } catch (e) {
142
+ console.error("Error:", e.message);
143
+ process.exit(1);
144
+ }
145
+ });
146
+ //# sourceMappingURL=redeem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redeem.js","names":["readFileSync","Command","createWalletClient","http","privateKeyToAccount","arbitrum","base","mainnet","optimism","polygon","AttestationClient","UnionPrivatePayments","parseProofJson","proofJsonToRedeemParams","submitRedeem","loadConfig","getExplorerUrl","parseBeneficiaries","parseClientIds","validateAddress","validateSecret","CHAIN_MAP","redeemCommand","description","option","action","options","config","privateKey","process","env","SENDER_PRIVATE_KEY","Error","startsWith","attestorUrl","attestorApiKey","proofData","proof","proofContent","JSON","parse","console","log","secret","beneficiary","amount","clientIds","selectedClient","beneficiaries","selectedClientId","parseInt","isNaN","includes","join","client","proverUrl","sourceRpcUrl","destinationRpcUrl","srcZAssetAddress","dstZAssetAddress","sourceChainId","BigInt","destinationChainId","slice","toString","result","generateProof","success","proofJson","metadata","error","depositAddress","value","nullifier","padStart","lightClients","map","lc","clientId","height","stateRoot","length","attestationClient","attestation","getAttestation","attestedMessage","signature","redeemParams","chain","account","walletClient","transport","txHash","e","message","exit"],"sources":["../../../../src/cli/commands/redeem.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,56 @@
1
+ import { Command } from "commander";
2
+ import { createPublicClient, createWalletClient, http } from "viem";
3
+ import { privateKeyToAccount } from "viem/accounts";
4
+ import { updateLoopbackClient } from "../../rpc.js";
5
+ import { getExplorerUrl } from "../utils.js";
6
+ export const updateClientCommand = /*#__PURE__*/new Command("update-client").description("Update loopback light client to a specific block height").requiredOption("--rpc <url>", "RPC URL for the chain").requiredOption("--client-id <id>", "Light client ID to update").option("--height <height>", "Block height to update to (default: latest)", "latest").requiredOption("--ibc-handler <address>", "IBCHandler contract address").option("--private-key <key>", "Private key to send transaction (or env SENDER_PRIVATE_KEY)").action(async options => {
7
+ try {
8
+ const privateKey = options.privateKey ?? process.env.SENDER_PRIVATE_KEY;
9
+ if (!privateKey) {
10
+ throw new Error("Private key required. Use --private-key or set SENDER_PRIVATE_KEY env var");
11
+ }
12
+ if (!privateKey.startsWith("0x")) {
13
+ throw new Error("Private key must start with 0x");
14
+ }
15
+ const clientId = parseInt(options.clientId, 10);
16
+ if (isNaN(clientId)) {
17
+ throw new Error("Invalid client ID: must be a number");
18
+ }
19
+ const ibcHandlerAddress = options.ibcHandler;
20
+ if (!ibcHandlerAddress.startsWith("0x") || ibcHandlerAddress.length !== 42) {
21
+ throw new Error("Invalid IBC handler address");
22
+ }
23
+ const height = options.height === "latest" ? "latest" : BigInt(options.height);
24
+ // Get chain ID from RPC first
25
+ const publicClient = createPublicClient({
26
+ transport: http(options.rpc)
27
+ });
28
+ const chainId = await publicClient.getChainId();
29
+ // Create wallet client from private key
30
+ const account = privateKeyToAccount(privateKey);
31
+ const walletClient = createWalletClient({
32
+ account,
33
+ chain: {
34
+ id: chainId
35
+ },
36
+ transport: http(options.rpc)
37
+ });
38
+ console.log("Updating loopback light client...");
39
+ console.log(" RPC:", options.rpc);
40
+ console.log(" IBC Handler:", ibcHandlerAddress);
41
+ console.log(" Client ID:", clientId);
42
+ console.log(" Height:", height === "latest" ? "latest" : height.toString());
43
+ console.log("");
44
+ const result = await updateLoopbackClient(options.rpc, ibcHandlerAddress, clientId, height, walletClient);
45
+ console.log("Light client updated successfully!");
46
+ console.log(" Chain ID:", result.chainId.toString());
47
+ console.log(" Block Number:", result.blockNumber.toString());
48
+ console.log(" State Root:", result.stateRoot);
49
+ console.log(" Transaction:", result.txHash);
50
+ console.log(" Explorer:", getExplorerUrl(Number(result.chainId), result.txHash));
51
+ } catch (e) {
52
+ console.error("Error:", e.message);
53
+ process.exit(1);
54
+ }
55
+ });
56
+ //# sourceMappingURL=update-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-client.js","names":["Command","createPublicClient","createWalletClient","http","privateKeyToAccount","updateLoopbackClient","getExplorerUrl","updateClientCommand","description","requiredOption","option","action","options","privateKey","process","env","SENDER_PRIVATE_KEY","Error","startsWith","clientId","parseInt","isNaN","ibcHandlerAddress","ibcHandler","length","height","BigInt","publicClient","transport","rpc","chainId","getChainId","account","walletClient","chain","id","console","log","toString","result","blockNumber","stateRoot","txHash","Number","e","error","message","exit"],"sources":["../../../../src/cli/commands/update-client.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ const DEFAULT_CONFIG_PATH = "./private-payments.config.json";
3
+ export function loadConfig(configPath) {
4
+ const path = configPath ?? DEFAULT_CONFIG_PATH;
5
+ if (!existsSync(path)) {
6
+ throw new Error(`Config file not found: ${path}\nCreate a private-payments.config.json file or specify --config <path>`);
7
+ }
8
+ try {
9
+ const content = readFileSync(path, "utf-8");
10
+ const config = JSON.parse(content);
11
+ // Validate required fields
12
+ const required = ["proverUrl", "sourceRpcUrl", "destinationRpcUrl", "srcZAssetAddress", "dstZAssetAddress", "sourceChainId", "destinationChainId"];
13
+ for (const field of required) {
14
+ if (config[field] === undefined) {
15
+ throw new Error(`Missing required field in config: ${field}`);
16
+ }
17
+ }
18
+ return config;
19
+ } catch (e) {
20
+ if (e instanceof SyntaxError) {
21
+ throw new Error(`Invalid JSON in config file: ${path}`);
22
+ }
23
+ throw e;
24
+ }
25
+ }
26
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","names":["existsSync","readFileSync","DEFAULT_CONFIG_PATH","loadConfig","configPath","path","Error","content","config","JSON","parse","required","field","undefined","e","SyntaxError"],"sources":["../../../src/cli/config.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAU,EAAEC,YAAY,QAAQ,SAAS;AAelD,MAAMC,mBAAmB,GAAG,gCAAgC;AAE5D,OAAM,SAAUC,UAAUA,CAACC,UAAmB;EAC5C,MAAMC,IAAI,GAAGD,UAAU,IAAIF,mBAAmB;EAE9C,IAAI,CAACF,UAAU,CAACK,IAAI,CAAC,EAAE;IACrB,MAAM,IAAIC,KAAK,CACb,0BAA0BD,IAAI,yEAAyE,CACxG;EACH;EAEA,IAAI;IACF,MAAME,OAAO,GAAGN,YAAY,CAACI,IAAI,EAAE,OAAO,CAAC;IAC3C,MAAMG,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACH,OAAO,CAAc;IAE/C;IACA,MAAMI,QAAQ,GAAwB,CACpC,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,CACrB;IAED,KAAK,MAAMC,KAAK,IAAID,QAAQ,EAAE;MAC5B,IAAIH,MAAM,CAACI,KAAK,CAAC,KAAKC,SAAS,EAAE;QAC/B,MAAM,IAAIP,KAAK,CAAC,qCAAqCM,KAAK,EAAE,CAAC;MAC/D;IACF;IAEA,OAAOJ,MAAM;EACf,CAAC,CAAC,OAAOM,CAAC,EAAE;IACV,IAAIA,CAAC,YAAYC,WAAW,EAAE;MAC5B,MAAM,IAAIT,KAAK,CAAC,gCAAgCD,IAAI,EAAE,CAAC;IACzD;IACA,MAAMS,CAAC;EACT;AACF","ignoreList":[]}
@@ -0,0 +1,94 @@
1
+ const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
2
+ export function parseBeneficiaries(input) {
3
+ if (!input || input.trim() === "") {
4
+ return [];
5
+ }
6
+ const addresses = input.split(",").map(s => s.trim().toLowerCase());
7
+ if (addresses.length > 4) {
8
+ throw new Error("Maximum 4 beneficiaries allowed");
9
+ }
10
+ for (const addr of addresses) {
11
+ if (!isValidAddress(addr)) {
12
+ throw new Error(`Invalid address: ${addr}`);
13
+ }
14
+ }
15
+ return addresses;
16
+ }
17
+ export function padBeneficiaries(beneficiaries) {
18
+ return [beneficiaries[0] ?? ZERO_ADDRESS, beneficiaries[1] ?? ZERO_ADDRESS, beneficiaries[2] ?? ZERO_ADDRESS, beneficiaries[3] ?? ZERO_ADDRESS];
19
+ }
20
+ export function parseClientIds(input) {
21
+ const ids = input.split(",").map(s => {
22
+ const id = parseInt(s.trim(), 10);
23
+ if (isNaN(id) || id < 0) {
24
+ throw new Error(`Invalid client ID: ${s}`);
25
+ }
26
+ return id;
27
+ });
28
+ if (ids.length === 0) {
29
+ throw new Error("At least one client ID is required");
30
+ }
31
+ return ids;
32
+ }
33
+ export function validateSecret(secret) {
34
+ if (!secret.startsWith("0x")) {
35
+ throw new Error("Secret must start with 0x");
36
+ }
37
+ if (secret.length !== 66) {
38
+ throw new Error("Secret must be 32 bytes (66 characters with 0x prefix)");
39
+ }
40
+ if (!/^0x[0-9a-fA-F]{64}$/.test(secret)) {
41
+ throw new Error("Secret must be a valid hex string");
42
+ }
43
+ return secret.toLowerCase();
44
+ }
45
+ export function isValidAddress(address) {
46
+ return /^0x[0-9a-fA-F]{40}$/.test(address);
47
+ }
48
+ export function validateAddress(address, name) {
49
+ if (!isValidAddress(address)) {
50
+ throw new Error(`Invalid ${name} address: ${address}`);
51
+ }
52
+ return address.toLowerCase();
53
+ }
54
+ export function formatAmount(amount, decimals, symbol) {
55
+ const divisor = 10n ** BigInt(decimals);
56
+ const whole = amount / divisor;
57
+ const fraction = amount % divisor;
58
+ const fractionStr = fraction.toString().padStart(decimals, "0");
59
+ const trimmedFraction = fractionStr.replace(/0+$/, "");
60
+ const formatted = trimmedFraction ? `${whole}.${trimmedFraction}` : whole.toString();
61
+ return symbol ? `${formatted} ${symbol}` : formatted;
62
+ }
63
+ export function parseAmount(input, decimals) {
64
+ const parts = input.split(".");
65
+ if (parts.length > 2) {
66
+ throw new Error(`Invalid amount: ${input}`);
67
+ }
68
+ const whole = parts[0] ?? "0";
69
+ let fraction = parts[1] ?? "";
70
+ if (fraction.length > decimals) {
71
+ fraction = fraction.slice(0, decimals);
72
+ } else {
73
+ fraction = fraction.padEnd(decimals, "0");
74
+ }
75
+ const wholeBigInt = BigInt(whole);
76
+ const fractionBigInt = BigInt(fraction);
77
+ const divisor = 10n ** BigInt(decimals);
78
+ return wholeBigInt * divisor + fractionBigInt;
79
+ }
80
+ export function getExplorerUrl(chainId, txHash) {
81
+ const explorers = {
82
+ 1: "https://etherscan.io",
83
+ 8453: "https://basescan.org",
84
+ 42161: "https://arbiscan.io",
85
+ 10: "https://optimistic.etherscan.io",
86
+ 137: "https://polygonscan.com"
87
+ };
88
+ const explorer = explorers[chainId];
89
+ if (explorer) {
90
+ return `${explorer}/tx/${txHash}`;
91
+ }
92
+ return txHash;
93
+ }
94
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":["ZERO_ADDRESS","parseBeneficiaries","input","trim","addresses","split","map","s","toLowerCase","length","Error","addr","isValidAddress","padBeneficiaries","beneficiaries","parseClientIds","ids","id","parseInt","isNaN","validateSecret","secret","startsWith","test","address","validateAddress","name","formatAmount","amount","decimals","symbol","divisor","BigInt","whole","fraction","fractionStr","toString","padStart","trimmedFraction","replace","formatted","parseAmount","parts","slice","padEnd","wholeBigInt","fractionBigInt","getExplorerUrl","chainId","txHash","explorers","explorer"],"sources":["../../../src/cli/utils.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander";
3
+ import { balanceCommand } from "./cli/commands/balance.js";
4
+ import { depositCommand } from "./cli/commands/deposit.js";
5
+ import { exportVerifierCommand } from "./cli/commands/export-verifier.js";
6
+ import { generateCommand } from "./cli/commands/generate.js";
7
+ import { historyCommand } from "./cli/commands/history.js";
8
+ import { proveCommand } from "./cli/commands/prove.js";
9
+ import { redeemCommand } from "./cli/commands/redeem.js";
10
+ import { updateClientCommand } from "./cli/commands/update-client.js";
11
+ const program = /*#__PURE__*/new Command();
12
+ program.name("payments").description("CLI for Union Private Payments - privacy-preserving transfers using ZK proofs").version("0.1.0");
13
+ program.addCommand(generateCommand);
14
+ program.addCommand(balanceCommand);
15
+ program.addCommand(proveCommand);
16
+ program.addCommand(redeemCommand);
17
+ program.addCommand(updateClientCommand);
18
+ program.addCommand(depositCommand);
19
+ program.addCommand(historyCommand);
20
+ program.addCommand(exportVerifierCommand);
21
+ program.parse();
22
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","names":["Command","balanceCommand","depositCommand","exportVerifierCommand","generateCommand","historyCommand","proveCommand","redeemCommand","updateClientCommand","program","name","description","version","addCommand","parse"],"sources":["../../src/cli.ts"],"sourcesContent":[null],"mappings":";AAEA,SAASA,OAAO,QAAQ,WAAW;AACnC,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,SAASC,qBAAqB,QAAQ,mCAAmC;AACzE,SAASC,eAAe,QAAQ,4BAA4B;AAC5D,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,mBAAmB,QAAQ,iCAAiC;AAErE,MAAMC,OAAO,gBAAG,IAAIT,OAAO,EAAE;AAE7BS,OAAO,CACJC,IAAI,CAAC,UAAU,CAAC,CAChBC,WAAW,CACV,+EAA+E,CAChF,CACAC,OAAO,CAAC,OAAO,CAAC;AAEnBH,OAAO,CAACI,UAAU,CAACT,eAAe,CAAC;AACnCK,OAAO,CAACI,UAAU,CAACZ,cAAc,CAAC;AAClCQ,OAAO,CAACI,UAAU,CAACP,YAAY,CAAC;AAChCG,OAAO,CAACI,UAAU,CAACN,aAAa,CAAC;AACjCE,OAAO,CAACI,UAAU,CAACL,mBAAmB,CAAC;AACvCC,OAAO,CAACI,UAAU,CAACX,cAAc,CAAC;AAClCO,OAAO,CAACI,UAAU,CAACR,cAAc,CAAC;AAClCI,OAAO,CAACI,UAAU,CAACV,qBAAqB,CAAC;AAEzCM,OAAO,CAACK,KAAK,EAAE","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ import { Effect, flow, Option } from "effect";
2
+ import * as Domain from "../Domain.js";
3
+ import * as Error from "../Error.js";
4
+ export const IBC_CORE_REGISTRY = {
5
+ "8453": /*#__PURE__*/Domain.IbcHandlerAddress("0xee4ea8d358473f0fcebf0329feed95d56e8c04d7")
6
+ };
7
+ export function getIbcHandler(chainId) {
8
+ return Option.fromNullable(IBC_CORE_REGISTRY[`${chainId}`]);
9
+ }
10
+ export const getIbcHandlerOrError = /*#__PURE__*/flow(getIbcHandler, /*#__PURE__*/Effect.mapError(cause => new Error.SystemError({
11
+ module: "IbcCoreRegistry",
12
+ reason: "InvalidData",
13
+ method: "getIbcHandlerOrError",
14
+ cause
15
+ })));
16
+ export const getIbcHandlerOrThrow = /*#__PURE__*/flow(getIbcHandler, /*#__PURE__*/Option.getOrThrowWith(() => new Error.SystemError({
17
+ module: "IbcCoreRegistry",
18
+ reason: "InvalidData",
19
+ method: "getIbcHandlerOrError"
20
+ })));
21
+ //# sourceMappingURL=ibc-core-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ibc-core-registry.js","names":["Effect","flow","Option","Domain","Error","IBC_CORE_REGISTRY","IbcHandlerAddress","getIbcHandler","chainId","fromNullable","getIbcHandlerOrError","mapError","cause","SystemError","module","reason","method","getIbcHandlerOrThrow","getOrThrowWith"],"sources":["../../../src/constants/ibc-core-registry.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAqBA,MAAM,EAAEC,IAAI,EAAEC,MAAM,QAAQ,QAAQ;AACzD,OAAO,KAAKC,MAAM,MAAM,cAAc;AACtC,OAAO,KAAKC,KAAK,MAAM,aAAa;AAIpC,OAAO,MAAMC,iBAAiB,GAE1B;EACF,MAAM,eAAEF,MAAM,CAACG,iBAAiB,CAC9B,4CAA4C;CAEtC;AAEV,OAAM,SAAUC,aAAaA,CAC3BC,OAAe;EAEf,OAAON,MAAM,CAACO,YAAY,CAACJ,iBAAiB,CAAC,GAAGG,OAAO,EAAE,CAAC,CAAC;AAC7D;AAEA,OAAO,MAAME,oBAAoB,gBAAGT,IAAI,CACtCM,aAAa,eACbP,MAAM,CAACW,QAAQ,CACZC,KAAK,IACJ,IAAIR,KAAK,CAACS,WAAW,CAAC;EACpBC,MAAM,EAAE,iBAAiB;EACzBC,MAAM,EAAE,aAAa;EACrBC,MAAM,EAAE,sBAAsB;EAC9BJ;CACD,CAAC,CACL,CACF;AAED,OAAO,MAAMK,oBAAoB,gBAAGhB,IAAI,CACtCM,aAAa,eACbL,MAAM,CAACgB,cAAc,CACnB,MACE,IAAId,KAAK,CAACS,WAAW,CAAC;EACpBC,MAAM,EAAE,iBAAiB;EACzBC,MAAM,EAAE,aAAa;EACrBC,MAAM,EAAE;CACT,CAAC,CACL,CACF","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export const DEFAULT_PROVER_URL = "https://prover.payments.union.build";
2
+ export const DEFAULT_ATTESTOR_URL = "https://attestor.payments.union.build/functions/v1/attest";
3
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","names":["DEFAULT_PROVER_URL","DEFAULT_ATTESTOR_URL"],"sources":["../../../src/constants/services.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,MAAMA,kBAAkB,GAAG,qCAAqC;AAEvE,OAAO,MAAMC,oBAAoB,GAC/B,2DAA2D","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ import { Effect, flow, Option } from "effect";
2
+ import * as Domain from "../Domain.js";
3
+ import * as Error from "../Error.js";
4
+ export const Z_ASSET_REGISTRY = {
5
+ "8453": {
6
+ [/*#__PURE__*/Domain.Erc20Address("0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913")]: /*#__PURE__*/Domain.ZAssetAddress("0xF0000101561619d8A61ABd045F47Af4f41Afe62D")
7
+ }
8
+ };
9
+ export function getZAsset(chainId, assetAddress) {
10
+ return Option.fromNullable(Z_ASSET_REGISTRY[`${chainId}`]?.[assetAddress]);
11
+ }
12
+ export const getZAssetOrError = /*#__PURE__*/flow(getZAsset, /*#__PURE__*/Effect.mapError(cause => new Error.SystemError({
13
+ method: "approveZAssetToSpendErc20",
14
+ module: "EvmWalletClient",
15
+ reason: "InvalidData",
16
+ cause
17
+ })));
18
+ export const getZAssetOrThrow = /*#__PURE__*/flow(getZAsset, /*#__PURE__*/Option.getOrThrowWith(() => new Error.SystemError({
19
+ method: "approveZAssetToSpendErc20",
20
+ module: "EvmWalletClient",
21
+ reason: "InvalidData"
22
+ })));
23
+ //# sourceMappingURL=z-asset-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"z-asset-registry.js","names":["Effect","flow","Option","Domain","Error","Z_ASSET_REGISTRY","Erc20Address","ZAssetAddress","getZAsset","chainId","assetAddress","fromNullable","getZAssetOrError","mapError","cause","SystemError","method","module","reason","getZAssetOrThrow","getOrThrowWith"],"sources":["../../../src/constants/z-asset-registry.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAM,EAAEC,IAAI,EAAEC,MAAM,QAAQ,QAAQ;AAE7C,OAAO,KAAKC,MAAM,MAAM,cAAc;AACtC,OAAO,KAAKC,KAAK,MAAM,aAAa;AAEpC,OAAO,MAAMC,gBAAgB,GAIzB;EACF,MAAM,EAAE;IACN,cAACF,MAAM,CAACG,YAAY,CAAC,4CAA4C,CAAC,gBAChEH,MAAM,CAACI,aAAa,CAAC,4CAA4C;;CAE7D;AAEV,OAAM,SAAUC,SAASA,CACvBC,OAAe,EACfC,YAA0B;EAE1B,OAAOR,MAAM,CAACS,YAAY,CAACN,gBAAgB,CAAC,GAAGI,OAAO,EAAE,CAAC,GAAGC,YAAY,CAAC,CAAC;AAC5E;AAEA,OAAO,MAAME,gBAAgB,gBAAGX,IAAI,CAClCO,SAAS,eACTR,MAAM,CAACa,QAAQ,CACZC,KAAK,IACJ,IAAIV,KAAK,CAACW,WAAW,CAAC;EACpBC,MAAM,EAAE,2BAA2B;EACnCC,MAAM,EAAE,iBAAiB;EACzBC,MAAM,EAAE,aAAa;EACrBJ;CACD,CAAC,CACL,CACF;AAED,OAAO,MAAMK,gBAAgB,gBAAGlB,IAAI,CAClCO,SAAS,eACTN,MAAM,CAACkB,cAAc,CACnB,MACE,IAAIhB,KAAK,CAACW,WAAW,CAAC;EACpBC,MAAM,EAAE,2BAA2B;EACnCC,MAAM,EAAE,iBAAiB;EACzBC,MAAM,EAAE;CACT,CAAC,CACL,CACF","ignoreList":[]}
@@ -0,0 +1,74 @@
1
+ // @generated by protoc-gen-es v2.10.1 with parameter "target=ts"
2
+ // @generated from file prover.proto (package prover, syntax proto3)
3
+ /* eslint-disable */
4
+ import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
5
+ /**
6
+ * Describes the file prover.proto.
7
+ */
8
+ export const file_prover = /*@__PURE__*/
9
+ fileDesc("Cgxwcm92ZXIucHJvdG8SBnByb3ZlciI0CgxQcm9vZlJlcXVlc3QSJAoHd2l0bmVzcxgBIAEoCzITLnByb3Zlci5XaXRuZXNzRGF0YSK1AgoLV2l0bmVzc0RhdGESDgoGc2VjcmV0GAEgASgJEhQKDGRzdF9jaGFpbl9pZBgCIAEoBBIVCg1iZW5lZmljaWFyaWVzGAMgAygJEhMKC2JlbmVmaWNpYXJ5GAQgASgJEhUKDXJlZGVlbV9hbW91bnQYBSABKAkSGAoQYWxyZWFkeV9yZWRlZW1lZBgGIAEoCRIuCg1saWdodF9jbGllbnRzGAcgAygLMhcucHJvdmVyLkxpZ2h0Q2xpZW50RGF0YRIdChVzZWxlY3RlZF9jbGllbnRfaW5kZXgYCCABKA0SJwoJbXB0X3Byb29mGAkgASgLMhQucHJvdmVyLk1QVFByb29mRGF0YRIVCg10b2tlbl9hZGRyZXNzGAogASgJEhQKDG1hcHBpbmdfc2xvdBgLIAEoCSJICg9MaWdodENsaWVudERhdGESEQoJY2xpZW50X2lkGAEgASgNEg4KBmhlaWdodBgCIAEoBBISCgpzdGF0ZV9yb290GAMgASgJImkKDE1QVFByb29mRGF0YRIVCg1hY2NvdW50X3Byb29mGAEgAygJEhUKDXN0b3JhZ2VfcHJvb2YYAiADKAkSFQoNc3RvcmFnZV92YWx1ZRgDIAEoCRIUCgxzdG9yYWdlX3Jvb3QYBCABKAkifAoMUG9sbFJlc3BvbnNlEiIKB3BlbmRpbmcYASABKAsyDy5wcm92ZXIuUGVuZGluZ0gAEhwKBGRvbmUYAiABKAsyDC5wcm92ZXIuRG9uZUgAEiAKBmZhaWxlZBgDIAEoCzIOLnByb3Zlci5GYWlsZWRIAEIICgZyZXN1bHQiCQoHUGVuZGluZyIuCgREb25lEhIKCnByb29mX2pzb24YASABKAwSEgoKY3JlYXRlZF9hdBgCIAEoAyIfCgZGYWlsZWQSFQoNZXJyb3JfbWVzc2FnZRgBIAEoCSIRCg9WZXJpZmllclJlcXVlc3QiLQoQVmVyaWZpZXJSZXNwb25zZRIZChF2ZXJpZmllcl9jb250cmFjdBgBIAEoCTKIAQoNUHJvdmVyU2VydmljZRIyCgRQb2xsEhQucHJvdmVyLlByb29mUmVxdWVzdBoULnByb3Zlci5Qb2xsUmVzcG9uc2USQwoORXhwb3J0VmVyaWZpZXISFy5wcm92ZXIuVmVyaWZpZXJSZXF1ZXN0GhgucHJvdmVyLlZlcmlmaWVyUmVzcG9uc2VCHFoacHJpdmF0ZS10cmFuc2Zlci9hcGkvcHJvdG9iBnByb3RvMw");
10
+ /**
11
+ * Describes the message prover.ProofRequest.
12
+ * Use `create(ProofRequestSchema)` to create a new message.
13
+ */
14
+ export const ProofRequestSchema = /*@__PURE__*/
15
+ messageDesc(file_prover, 0);
16
+ /**
17
+ * Describes the message prover.WitnessData.
18
+ * Use `create(WitnessDataSchema)` to create a new message.
19
+ */
20
+ export const WitnessDataSchema = /*@__PURE__*/
21
+ messageDesc(file_prover, 1);
22
+ /**
23
+ * Describes the message prover.LightClientData.
24
+ * Use `create(LightClientDataSchema)` to create a new message.
25
+ */
26
+ export const LightClientDataSchema = /*@__PURE__*/
27
+ messageDesc(file_prover, 2);
28
+ /**
29
+ * Describes the message prover.MPTProofData.
30
+ * Use `create(MPTProofDataSchema)` to create a new message.
31
+ */
32
+ export const MPTProofDataSchema = /*@__PURE__*/
33
+ messageDesc(file_prover, 3);
34
+ /**
35
+ * Describes the message prover.PollResponse.
36
+ * Use `create(PollResponseSchema)` to create a new message.
37
+ */
38
+ export const PollResponseSchema = /*@__PURE__*/
39
+ messageDesc(file_prover, 4);
40
+ /**
41
+ * Describes the message prover.Pending.
42
+ * Use `create(PendingSchema)` to create a new message.
43
+ */
44
+ export const PendingSchema = /*@__PURE__*/
45
+ messageDesc(file_prover, 5);
46
+ /**
47
+ * Describes the message prover.Done.
48
+ * Use `create(DoneSchema)` to create a new message.
49
+ */
50
+ export const DoneSchema = /*@__PURE__*/
51
+ messageDesc(file_prover, 6);
52
+ /**
53
+ * Describes the message prover.Failed.
54
+ * Use `create(FailedSchema)` to create a new message.
55
+ */
56
+ export const FailedSchema = /*@__PURE__*/
57
+ messageDesc(file_prover, 7);
58
+ /**
59
+ * Describes the message prover.VerifierRequest.
60
+ * Use `create(VerifierRequestSchema)` to create a new message.
61
+ */
62
+ export const VerifierRequestSchema = /*@__PURE__*/
63
+ messageDesc(file_prover, 8);
64
+ /**
65
+ * Describes the message prover.VerifierResponse.
66
+ * Use `create(VerifierResponseSchema)` to create a new message.
67
+ */
68
+ export const VerifierResponseSchema = /*@__PURE__*/
69
+ messageDesc(file_prover, 9);
70
+ /**
71
+ * @generated from service prover.ProverService
72
+ */
73
+ export const ProverService = /*@__PURE__*/serviceDesc(file_prover, 0);
74
+ //# sourceMappingURL=prover_pb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prover_pb.js","names":["fileDesc","messageDesc","serviceDesc","file_prover","ProofRequestSchema","WitnessDataSchema","LightClientDataSchema","MPTProofDataSchema","PollResponseSchema","PendingSchema","DoneSchema","FailedSchema","VerifierRequestSchema","VerifierResponseSchema","ProverService"],"sources":["../../../src/gen/prover_pb.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA;AACA;AAQA,SACEA,QAAQ,EACRC,WAAW,EACXC,WAAW,QACN,8BAA8B;AAErC;;;AAGA,OAAO,MAAMC,WAAW,GACtB;AACAH,QAAQ,CACN,g2CAAg2C,CACj2C;AAgBH;;;;AAIA,OAAO,MAAMI,kBAAkB,GAC7B;AACAH,WAAW,CAACE,WAAW,EAAE,CAAC,CAAC;AA6F7B;;;;AAIA,OAAO,MAAME,iBAAiB,GAC5B;AACAJ,WAAW,CAACE,WAAW,EAAE,CAAC,CAAC;AA8B7B;;;;AAIA,OAAO,MAAMG,qBAAqB,GAChC;AACAL,WAAW,CAACE,WAAW,EAAE,CAAC,CAAC;AAyC7B;;;;AAIA,OAAO,MAAMI,kBAAkB,GAC7B;AACAN,WAAW,CAACE,WAAW,EAAE,CAAC,CAAC;AAkC7B;;;;AAIA,OAAO,MAAMK,kBAAkB,GAC7B;AACAP,WAAW,CAACE,WAAW,EAAE,CAAC,CAAC;AAO7B;;;;AAIA,OAAO,MAAMM,aAAa,GACxB;AACAR,WAAW,CAACE,WAAW,EAAE,CAAC,CAAC;AAiB7B;;;;AAIA,OAAO,MAAMO,UAAU,GACrB;AACAT,WAAW,CAACE,WAAW,EAAE,CAAC,CAAC;AAY7B;;;;AAIA,OAAO,MAAMQ,YAAY,GACvB;AACAV,WAAW,CAACE,WAAW,EAAE,CAAC,CAAC;AAO7B;;;;AAIA,OAAO,MAAMS,qBAAqB,GAChC;AACAX,WAAW,CAACE,WAAW,EAAE,CAAC,CAAC;AAY7B;;;;AAIA,OAAO,MAAMU,sBAAsB,GACjC;AACAZ,WAAW,CAACE,WAAW,EAAE,CAAC,CAAC;AAE7B;;;AAGA,OAAO,MAAMW,aAAa,GAiBrB,aAAcZ,WAAW,CAACC,WAAW,EAAE,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ // Copyright (c) 2025 Union.fi Labs, Inc. All rights reserved.
2
+ /**
3
+ * TypeScript SDK for privacy-preserving transfers using Union's ZK proof system.
4
+ *
5
+ * @remarks
6
+ * @see https://pdfs.cdn.union.build/union-private-bridging.pdf
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ export * as Abi from "./Abi.js";
11
+ export * as Attestor from "./Attestor.js";
12
+ export * as IbcCoreRegistry from "./constants/ibc-core-registry.js";
13
+ export * as ZAssetRegistry from "./constants/z-asset-registry.js";
14
+ export * as Domain from "./Domain.js";
15
+ export * as PaymentError from "./Error.js";
16
+ export * as EvmPublicClient from "./EvmPublicClient.js";
17
+ export * as EvmWalletClient from "./EvmWalletClient.js";
18
+ export * as Payment from "./Payment.js";
19
+ export * as Prover from "./Prover.js";
20
+ export * as PublicClient from "./PublicClient.js";
21
+ export * as WalletClient from "./WalletClient.js";
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["Abi","Attestor","IbcCoreRegistry","ZAssetRegistry","Domain","PaymentError","EvmPublicClient","EvmWalletClient","Payment","Prover","PublicClient","WalletClient"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;AAEA;;;;;;;;AASA,OAAO,KAAKA,GAAG,MAAM,UAAU;AAC/B,OAAO,KAAKC,QAAQ,MAAM,eAAe;AACzC,OAAO,KAAKC,eAAe,MAAM,kCAAkC;AACnE,OAAO,KAAKC,cAAc,MAAM,iCAAiC;AACjE,OAAO,KAAKC,MAAM,MAAM,aAAa;AACrC,OAAO,KAAKC,YAAY,MAAM,YAAY;AAC1C,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AACvD,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AACvD,OAAO,KAAKC,OAAO,MAAM,cAAc;AACvC,OAAO,KAAKC,MAAM,MAAM,aAAa;AACrC,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AACjD,OAAO,KAAKC,YAAY,MAAM,mBAAmB","ignoreList":[]}