@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.
- package/Abi/package.json +6 -0
- package/Attestor/package.json +6 -0
- package/Constants/package.json +6 -0
- package/Domain/package.json +6 -0
- package/Error/package.json +6 -0
- package/EvmPublicClient/package.json +6 -0
- package/EvmWalletClient/package.json +6 -0
- package/Payment/package.json +6 -0
- package/PaymentError/package.json +6 -0
- package/Prover/package.json +6 -0
- package/PublicClient/package.json +6 -0
- package/README.md +1 -0
- package/Schema/package.json +6 -0
- package/Utils/package.json +6 -0
- package/WalletClient/package.json +6 -0
- package/attestation/package.json +6 -0
- package/cli/commands/balance/package.json +6 -0
- package/cli/commands/deposit/package.json +6 -0
- package/cli/commands/export-verifier/package.json +6 -0
- package/cli/commands/generate/package.json +6 -0
- package/cli/commands/history/package.json +6 -0
- package/cli/commands/prove/package.json +6 -0
- package/cli/commands/redeem/package.json +6 -0
- package/cli/commands/update-client/package.json +6 -0
- package/cli/config/package.json +6 -0
- package/cli/package.json +6 -0
- package/cli/utils/package.json +6 -0
- package/constants/ibc-core-registry/package.json +6 -0
- package/constants/services/package.json +6 -0
- package/constants/z-asset-registry/package.json +6 -0
- package/dist/cjs/Abi.js +270 -0
- package/dist/cjs/Abi.js.map +1 -0
- package/dist/cjs/Attestor.js +76 -0
- package/dist/cjs/Attestor.js.map +1 -0
- package/dist/cjs/Constants.js +8 -0
- package/dist/cjs/Constants.js.map +1 -0
- package/dist/cjs/Domain.js +24 -0
- package/dist/cjs/Domain.js.map +1 -0
- package/dist/cjs/Error.js +100 -0
- package/dist/cjs/Error.js.map +1 -0
- package/dist/cjs/EvmPublicClient.js +301 -0
- package/dist/cjs/EvmPublicClient.js.map +1 -0
- package/dist/cjs/EvmWalletClient.js +670 -0
- package/dist/cjs/EvmWalletClient.js.map +1 -0
- package/dist/cjs/Payment.js +333 -0
- package/dist/cjs/Payment.js.map +1 -0
- package/dist/cjs/PaymentError.js +32 -0
- package/dist/cjs/PaymentError.js.map +1 -0
- package/dist/cjs/Prover.js +153 -0
- package/dist/cjs/Prover.js.map +1 -0
- package/dist/cjs/PublicClient.js +39 -0
- package/dist/cjs/PublicClient.js.map +1 -0
- package/dist/cjs/Schema.js +38 -0
- package/dist/cjs/Schema.js.map +1 -0
- package/dist/cjs/Utils.js +33 -0
- package/dist/cjs/Utils.js.map +1 -0
- package/dist/cjs/WalletClient.js +39 -0
- package/dist/cjs/WalletClient.js.map +1 -0
- package/dist/cjs/attestation.js +49 -0
- package/dist/cjs/attestation.js.map +1 -0
- package/dist/cjs/cli/commands/balance.js +60 -0
- package/dist/cjs/cli/commands/balance.js.map +1 -0
- package/dist/cjs/cli/commands/deposit.js +58 -0
- package/dist/cjs/cli/commands/deposit.js.map +1 -0
- package/dist/cjs/cli/commands/export-verifier.js +27 -0
- package/dist/cjs/cli/commands/export-verifier.js.map +1 -0
- package/dist/cjs/cli/commands/generate.js +41 -0
- package/dist/cjs/cli/commands/generate.js.map +1 -0
- package/dist/cjs/cli/commands/history.js +59 -0
- package/dist/cjs/cli/commands/history.js.map +1 -0
- package/dist/cjs/cli/commands/prove.js +82 -0
- package/dist/cjs/cli/commands/prove.js.map +1 -0
- package/dist/cjs/cli/commands/redeem.js +152 -0
- package/dist/cjs/cli/commands/redeem.js.map +1 -0
- package/dist/cjs/cli/commands/update-client.js +62 -0
- package/dist/cjs/cli/commands/update-client.js.map +1 -0
- package/dist/cjs/cli/config.js +32 -0
- package/dist/cjs/cli/config.js.map +1 -0
- package/dist/cjs/cli/utils.js +108 -0
- package/dist/cjs/cli/utils.js.map +1 -0
- package/dist/cjs/cli.js +24 -0
- package/dist/cjs/cli.js.map +1 -0
- package/dist/cjs/constants/ibc-core-registry.js +30 -0
- package/dist/cjs/constants/ibc-core-registry.js.map +1 -0
- package/dist/cjs/constants/services.js +9 -0
- package/dist/cjs/constants/services.js.map +1 -0
- package/dist/cjs/constants/z-asset-registry.js +32 -0
- package/dist/cjs/constants/z-asset-registry.js.map +1 -0
- package/dist/cjs/gen/prover_pb.js +81 -0
- package/dist/cjs/gen/prover_pb.js.map +1 -0
- package/dist/cjs/index.js +32 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal/evm.js +191 -0
- package/dist/cjs/internal/evm.js.map +1 -0
- package/dist/cjs/internal/evmWalletClient.js +6 -0
- package/dist/cjs/internal/evmWalletClient.js.map +1 -0
- package/dist/cjs/internal/publicClient.js +49 -0
- package/dist/cjs/internal/publicClient.js.map +1 -0
- package/dist/cjs/internal/walletClient.js +43 -0
- package/dist/cjs/internal/walletClient.js.map +1 -0
- package/dist/cjs/legacy/client.js +1222 -0
- package/dist/cjs/legacy/client.js.map +1 -0
- package/dist/cjs/legacy/prover.js +112 -0
- package/dist/cjs/legacy/prover.js.map +1 -0
- package/dist/cjs/poseidon2.js +226 -0
- package/dist/cjs/poseidon2.js.map +1 -0
- package/dist/cjs/promises/Attestor.js +23 -0
- package/dist/cjs/promises/Attestor.js.map +1 -0
- package/dist/cjs/promises/EvmPublicClient.js +34 -0
- package/dist/cjs/promises/EvmPublicClient.js.map +1 -0
- package/dist/cjs/promises/EvmWalletClient.js +51 -0
- package/dist/cjs/promises/EvmWalletClient.js.map +1 -0
- package/dist/cjs/promises/Payment.js +22 -0
- package/dist/cjs/promises/Payment.js.map +1 -0
- package/dist/cjs/promises/Prover.js +26 -0
- package/dist/cjs/promises/Prover.js.map +1 -0
- package/dist/cjs/promises/PublicClient.js +53 -0
- package/dist/cjs/promises/PublicClient.js.map +1 -0
- package/dist/cjs/promises/WalletClient.js +44 -0
- package/dist/cjs/promises/WalletClient.js.map +1 -0
- package/dist/cjs/promises/index.js +22 -0
- package/dist/cjs/promises/index.js.map +1 -0
- package/dist/cjs/rpc.js +867 -0
- package/dist/cjs/rpc.js.map +1 -0
- package/dist/cjs/types.js +6 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/dts/Abi.d.ts +220 -0
- package/dist/dts/Abi.d.ts.map +1 -0
- package/dist/dts/Attestor.d.ts +42 -0
- package/dist/dts/Attestor.d.ts.map +1 -0
- package/dist/dts/Constants.d.ts +3 -0
- package/dist/dts/Constants.d.ts.map +1 -0
- package/dist/dts/Domain.d.ts +141 -0
- package/dist/dts/Domain.d.ts.map +1 -0
- package/dist/dts/Error.d.ts +102 -0
- package/dist/dts/Error.d.ts.map +1 -0
- package/dist/dts/EvmPublicClient.d.ts +61 -0
- package/dist/dts/EvmPublicClient.d.ts.map +1 -0
- package/dist/dts/EvmWalletClient.d.ts +67 -0
- package/dist/dts/EvmWalletClient.d.ts.map +1 -0
- package/dist/dts/Payment.d.ts +128 -0
- package/dist/dts/Payment.d.ts.map +1 -0
- package/dist/dts/PaymentError.d.ts +21 -0
- package/dist/dts/PaymentError.d.ts.map +1 -0
- package/dist/dts/Prover.d.ts +87 -0
- package/dist/dts/Prover.d.ts.map +1 -0
- package/dist/dts/PublicClient.d.ts +146 -0
- package/dist/dts/PublicClient.d.ts.map +1 -0
- package/dist/dts/Schema.d.ts +16 -0
- package/dist/dts/Schema.d.ts.map +1 -0
- package/dist/dts/Utils.d.ts +11 -0
- package/dist/dts/Utils.d.ts.map +1 -0
- package/dist/dts/WalletClient.d.ts +123 -0
- package/dist/dts/WalletClient.d.ts.map +1 -0
- package/dist/dts/attestation.d.ts +13 -0
- package/dist/dts/attestation.d.ts.map +1 -0
- package/dist/dts/cli/commands/balance.d.ts +3 -0
- package/dist/dts/cli/commands/balance.d.ts.map +1 -0
- package/dist/dts/cli/commands/deposit.d.ts +3 -0
- package/dist/dts/cli/commands/deposit.d.ts.map +1 -0
- package/dist/dts/cli/commands/export-verifier.d.ts +3 -0
- package/dist/dts/cli/commands/export-verifier.d.ts.map +1 -0
- package/dist/dts/cli/commands/generate.d.ts +3 -0
- package/dist/dts/cli/commands/generate.d.ts.map +1 -0
- package/dist/dts/cli/commands/history.d.ts +3 -0
- package/dist/dts/cli/commands/history.d.ts.map +1 -0
- package/dist/dts/cli/commands/prove.d.ts +3 -0
- package/dist/dts/cli/commands/prove.d.ts.map +1 -0
- package/dist/dts/cli/commands/redeem.d.ts +3 -0
- package/dist/dts/cli/commands/redeem.d.ts.map +1 -0
- package/dist/dts/cli/commands/update-client.d.ts +3 -0
- package/dist/dts/cli/commands/update-client.d.ts.map +1 -0
- package/dist/dts/cli/config.d.ts +14 -0
- package/dist/dts/cli/config.d.ts.map +1 -0
- package/dist/dts/cli/utils.d.ts +11 -0
- package/dist/dts/cli/utils.d.ts.map +1 -0
- package/dist/dts/cli.d.ts +3 -0
- package/dist/dts/cli.d.ts.map +1 -0
- package/dist/dts/constants/ibc-core-registry.d.ts +11 -0
- package/dist/dts/constants/ibc-core-registry.d.ts.map +1 -0
- package/dist/dts/constants/services.d.ts +3 -0
- package/dist/dts/constants/services.d.ts.map +1 -0
- package/dist/dts/constants/z-asset-registry.d.ts +13 -0
- package/dist/dts/constants/z-asset-registry.d.ts.map +1 -0
- package/dist/dts/gen/prover_pb.d.ts +300 -0
- package/dist/dts/gen/prover_pb.d.ts.map +1 -0
- package/dist/dts/index.d.ts +21 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/internal/evm.d.ts +250 -0
- package/dist/dts/internal/evm.d.ts.map +1 -0
- package/dist/dts/internal/evmWalletClient.d.ts +2 -0
- package/dist/dts/internal/evmWalletClient.d.ts.map +1 -0
- package/dist/dts/internal/publicClient.d.ts +2 -0
- package/dist/dts/internal/publicClient.d.ts.map +1 -0
- package/dist/dts/internal/walletClient.d.ts +2 -0
- package/dist/dts/internal/walletClient.d.ts.map +1 -0
- package/dist/dts/legacy/client.d.ts +313 -0
- package/dist/dts/legacy/client.d.ts.map +1 -0
- package/dist/dts/legacy/prover.d.ts +30 -0
- package/dist/dts/legacy/prover.d.ts.map +1 -0
- package/dist/dts/poseidon2.d.ts +18 -0
- package/dist/dts/poseidon2.d.ts.map +1 -0
- package/dist/dts/promises/Attestor.d.ts +17 -0
- package/dist/dts/promises/Attestor.d.ts.map +1 -0
- package/dist/dts/promises/EvmPublicClient.d.ts +3709 -0
- package/dist/dts/promises/EvmPublicClient.d.ts.map +1 -0
- package/dist/dts/promises/EvmWalletClient.d.ts +4502 -0
- package/dist/dts/promises/EvmWalletClient.d.ts.map +1 -0
- package/dist/dts/promises/Payment.d.ts +33 -0
- package/dist/dts/promises/Payment.d.ts.map +1 -0
- package/dist/dts/promises/Prover.d.ts +14 -0
- package/dist/dts/promises/Prover.d.ts.map +1 -0
- package/dist/dts/promises/PublicClient.d.ts +23 -0
- package/dist/dts/promises/PublicClient.d.ts.map +1 -0
- package/dist/dts/promises/WalletClient.d.ts +57 -0
- package/dist/dts/promises/WalletClient.d.ts.map +1 -0
- package/dist/dts/promises/index.d.ts +8 -0
- package/dist/dts/promises/index.d.ts.map +1 -0
- package/dist/dts/rpc.d.ts +148 -0
- package/dist/dts/rpc.d.ts.map +1 -0
- package/dist/dts/types.d.ts +263 -0
- package/dist/dts/types.d.ts.map +1 -0
- package/dist/esm/Abi.js +264 -0
- package/dist/esm/Abi.js.map +1 -0
- package/dist/esm/Attestor.js +68 -0
- package/dist/esm/Attestor.js.map +1 -0
- package/dist/esm/Constants.js +2 -0
- package/dist/esm/Constants.js.map +1 -0
- package/dist/esm/Domain.js +17 -0
- package/dist/esm/Domain.js.map +1 -0
- package/dist/esm/Error.js +89 -0
- package/dist/esm/Error.js.map +1 -0
- package/dist/esm/EvmPublicClient.js +292 -0
- package/dist/esm/EvmPublicClient.js.map +1 -0
- package/dist/esm/EvmWalletClient.js +659 -0
- package/dist/esm/EvmWalletClient.js.map +1 -0
- package/dist/esm/Payment.js +323 -0
- package/dist/esm/Payment.js.map +1 -0
- package/dist/esm/PaymentError.js +24 -0
- package/dist/esm/PaymentError.js.map +1 -0
- package/dist/esm/Prover.js +142 -0
- package/dist/esm/Prover.js.map +1 -0
- package/dist/esm/PublicClient.js +30 -0
- package/dist/esm/PublicClient.js.map +1 -0
- package/dist/esm/Schema.js +31 -0
- package/dist/esm/Schema.js.map +1 -0
- package/dist/esm/Utils.js +27 -0
- package/dist/esm/Utils.js.map +1 -0
- package/dist/esm/WalletClient.js +30 -0
- package/dist/esm/WalletClient.js.map +1 -0
- package/dist/esm/attestation.js +42 -0
- package/dist/esm/attestation.js.map +1 -0
- package/dist/esm/cli/commands/balance.js +54 -0
- package/dist/esm/cli/commands/balance.js.map +1 -0
- package/dist/esm/cli/commands/deposit.js +52 -0
- package/dist/esm/cli/commands/deposit.js.map +1 -0
- package/dist/esm/cli/commands/export-verifier.js +21 -0
- package/dist/esm/cli/commands/export-verifier.js.map +1 -0
- package/dist/esm/cli/commands/generate.js +35 -0
- package/dist/esm/cli/commands/generate.js.map +1 -0
- package/dist/esm/cli/commands/history.js +53 -0
- package/dist/esm/cli/commands/history.js.map +1 -0
- package/dist/esm/cli/commands/prove.js +76 -0
- package/dist/esm/cli/commands/prove.js.map +1 -0
- package/dist/esm/cli/commands/redeem.js +146 -0
- package/dist/esm/cli/commands/redeem.js.map +1 -0
- package/dist/esm/cli/commands/update-client.js +56 -0
- package/dist/esm/cli/commands/update-client.js.map +1 -0
- package/dist/esm/cli/config.js +26 -0
- package/dist/esm/cli/config.js.map +1 -0
- package/dist/esm/cli/utils.js +94 -0
- package/dist/esm/cli/utils.js.map +1 -0
- package/dist/esm/cli.js +22 -0
- package/dist/esm/cli.js.map +1 -0
- package/dist/esm/constants/ibc-core-registry.js +21 -0
- package/dist/esm/constants/ibc-core-registry.js.map +1 -0
- package/dist/esm/constants/services.js +3 -0
- package/dist/esm/constants/services.js.map +1 -0
- package/dist/esm/constants/z-asset-registry.js +23 -0
- package/dist/esm/constants/z-asset-registry.js.map +1 -0
- package/dist/esm/gen/prover_pb.js +74 -0
- package/dist/esm/gen/prover_pb.js.map +1 -0
- package/dist/esm/index.js +22 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/evm.js +169 -0
- package/dist/esm/internal/evm.js.map +1 -0
- package/dist/esm/internal/evmWalletClient.js +2 -0
- package/dist/esm/internal/evmWalletClient.js.map +1 -0
- package/dist/esm/internal/publicClient.js +41 -0
- package/dist/esm/internal/publicClient.js.map +1 -0
- package/dist/esm/internal/walletClient.js +35 -0
- package/dist/esm/internal/walletClient.js.map +1 -0
- package/dist/esm/legacy/client.js +1212 -0
- package/dist/esm/legacy/client.js.map +1 -0
- package/dist/esm/legacy/prover.js +105 -0
- package/dist/esm/legacy/prover.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/dist/esm/poseidon2.js +218 -0
- package/dist/esm/poseidon2.js.map +1 -0
- package/dist/esm/promises/Attestor.js +14 -0
- package/dist/esm/promises/Attestor.js.map +1 -0
- package/dist/esm/promises/EvmPublicClient.js +26 -0
- package/dist/esm/promises/EvmPublicClient.js.map +1 -0
- package/dist/esm/promises/EvmWalletClient.js +43 -0
- package/dist/esm/promises/EvmWalletClient.js.map +1 -0
- package/dist/esm/promises/Payment.js +13 -0
- package/dist/esm/promises/Payment.js.map +1 -0
- package/dist/esm/promises/Prover.js +17 -0
- package/dist/esm/promises/Prover.js.map +1 -0
- package/dist/esm/promises/PublicClient.js +45 -0
- package/dist/esm/promises/PublicClient.js.map +1 -0
- package/dist/esm/promises/WalletClient.js +36 -0
- package/dist/esm/promises/WalletClient.js.map +1 -0
- package/dist/esm/promises/index.js +8 -0
- package/dist/esm/promises/index.js.map +1 -0
- package/dist/esm/rpc.js +850 -0
- package/dist/esm/rpc.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/gen/prover_pb/package.json +6 -0
- package/index/package.json +6 -0
- package/legacy/client/package.json +6 -0
- package/legacy/prover/package.json +6 -0
- package/package.json +397 -44
- package/poseidon2/package.json +6 -0
- package/promises/Attestor/package.json +6 -0
- package/promises/EvmPublicClient/package.json +6 -0
- package/promises/EvmWalletClient/package.json +6 -0
- package/promises/Payment/package.json +6 -0
- package/promises/Prover/package.json +6 -0
- package/promises/PublicClient/package.json +6 -0
- package/promises/WalletClient/package.json +6 -0
- package/promises/index/package.json +6 -0
- package/promises/package.json +6 -0
- package/rpc/package.json +6 -0
- package/src/Abi.ts +195 -0
- package/src/Attestor.ts +113 -0
- package/src/Constants.ts +4 -0
- package/src/Domain.ts +52 -0
- package/src/Error.ts +163 -0
- package/src/EvmPublicClient.ts +549 -0
- package/src/EvmWalletClient.ts +1034 -0
- package/src/Payment.ts +523 -0
- package/src/PaymentError.ts +39 -0
- package/src/Prover.ts +240 -0
- package/src/PublicClient.ts +196 -0
- package/src/Schema.ts +36 -0
- package/src/Utils.ts +43 -0
- package/src/WalletClient.ts +172 -0
- package/src/attestation.ts +69 -0
- package/src/cli/commands/balance.ts +88 -0
- package/src/cli/commands/deposit.ts +104 -0
- package/src/cli/commands/export-verifier.ts +28 -0
- package/src/cli/commands/generate.ts +86 -0
- package/src/cli/commands/history.ts +91 -0
- package/src/cli/commands/prove.ts +133 -0
- package/src/cli/commands/redeem.ts +277 -0
- package/src/cli/commands/update-client.ts +96 -0
- package/src/cli/config.ts +55 -0
- package/src/cli/utils.ts +136 -0
- package/src/cli.ts +31 -0
- package/src/constants/ibc-core-registry.ts +44 -0
- package/src/constants/services.ts +4 -0
- package/src/constants/z-asset-registry.ts +47 -0
- package/src/gen/prover_pb.ts +375 -0
- package/src/index.ts +23 -0
- package/src/internal/evm.ts +361 -0
- package/src/internal/evmWalletClient.ts +0 -0
- package/src/internal/publicClient.ts +57 -0
- package/src/internal/walletClient.ts +50 -0
- package/src/legacy/client.ts +1652 -0
- package/src/legacy/prover.ts +135 -0
- package/src/poseidon2.ts +246 -0
- package/src/promises/Attestor.ts +25 -0
- package/src/promises/EvmPublicClient.ts +39 -0
- package/src/promises/EvmWalletClient.ts +63 -0
- package/src/promises/Payment.ts +86 -0
- package/src/promises/Prover.ts +26 -0
- package/src/promises/PublicClient.ts +47 -0
- package/src/promises/WalletClient.ts +38 -0
- package/src/promises/index.ts +7 -0
- package/src/rpc.ts +994 -0
- package/src/types.ts +281 -0
- package/types/package.json +6 -0
- package/dist/LICENSE +0 -1
- package/dist/chunk-37PNLRA6.js +0 -2418
- package/dist/cli.cjs +0 -3031
- package/dist/cli.js +0 -675
- package/dist/index.cjs +0 -2451
- package/dist/index.js +0 -1
- package/dist/package.json +0 -18
- package/dist/payments.d.ts +0 -835
- /package/{dist → src}/tsdoc-metadata.json +0 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as S from "effect/Schema";
|
|
2
|
+
/**
|
|
3
|
+
* Describes `0x${string}` from non-empty string.
|
|
4
|
+
*
|
|
5
|
+
* Note: To be used ineroperably with `viem`.
|
|
6
|
+
*/
|
|
7
|
+
export const Hex = /*#__PURE__*/S.NonEmptyString.pipe(/*#__PURE__*/
|
|
8
|
+
// TODO: add `Bytes` brand separately
|
|
9
|
+
S.pattern(/^0x[0-9a-fA-F]+$/), /*#__PURE__*/
|
|
10
|
+
// TODO: remove uppercase
|
|
11
|
+
S.minLength(3), /*#__PURE__*/S.annotations({
|
|
12
|
+
title: "hex",
|
|
13
|
+
description: "hex string"
|
|
14
|
+
}));
|
|
15
|
+
/**
|
|
16
|
+
* Describes `0x${string}` address from non-empty string.
|
|
17
|
+
*
|
|
18
|
+
* Note: To be used ineroperably with `viem`.
|
|
19
|
+
*/
|
|
20
|
+
export const Address = /*#__PURE__*/S.NonEmptyString.pipe(/*#__PURE__*/
|
|
21
|
+
// TODO: add `Bytes` brand separately
|
|
22
|
+
S.pattern(/^0x[0-9a-fA-F]+$/), /*#__PURE__*/
|
|
23
|
+
// TODO: remove uppercase
|
|
24
|
+
S.minLength(3), /*#__PURE__*/S.annotations({
|
|
25
|
+
title: "address",
|
|
26
|
+
description: "address string"
|
|
27
|
+
// }),
|
|
28
|
+
// S.brand("Address")
|
|
29
|
+
// ) as unknown as S.brand<S.refine<S.TemplateLiteral<`0x${string}`>, S.filter<typeof S.NonEmptyString>>, "Address">
|
|
30
|
+
}));
|
|
31
|
+
//# sourceMappingURL=Schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Schema.js","names":["S","Hex","NonEmptyString","pipe","pattern","minLength","annotations","title","description","Address"],"sources":["../../src/Schema.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,CAAC,MAAM,eAAe;AAElC;;;;;AAKA,OAAO,MAAMC,GAAG,gBAAGD,CAAC,CAACE,cAAc,CAACC,IAAI;AACtC;AACAH,CAAC,CAACI,OAAO,CAAC,kBAAkB,CAAC;AAAE;AAC/BJ,CAAC,CAACK,SAAS,CAAC,CAAC,CAAC,eACdL,CAAC,CAACM,WAAW,CAAC;EACZC,KAAK,EAAE,KAAK;EACZC,WAAW,EAAE;CACd,CAAC,CAC4C;AAGhD;;;;;AAKA,OAAO,MAAMC,OAAO,gBAAGT,CAAC,CAACE,cAAc,CAACC,IAAI;AAC1C;AACAH,CAAC,CAACI,OAAO,CAAC,kBAAkB,CAAC;AAAE;AAC/BJ,CAAC,CAACK,SAAS,CAAC,CAAC,CAAC,eACdL,CAAC,CAACM,WAAW,CAAC;EACZC,KAAK,EAAE,SAAS;EAChBC,WAAW,EAAE;EACb;EACA;EACA;CACD,CAAC,CAC4C","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { hexToBigInt } from "viem";
|
|
2
|
+
/**
|
|
3
|
+
* @public
|
|
4
|
+
*/
|
|
5
|
+
export function proofJsonToRedeemParams(proofJson, metadata) {
|
|
6
|
+
const parseBigInt = s => {
|
|
7
|
+
if (s.startsWith("0x")) {
|
|
8
|
+
return hexToBigInt(s);
|
|
9
|
+
}
|
|
10
|
+
return BigInt(s);
|
|
11
|
+
};
|
|
12
|
+
return {
|
|
13
|
+
proof: proofJson.proof.map(parseBigInt),
|
|
14
|
+
commitments: proofJson.commitments.map(parseBigInt),
|
|
15
|
+
commitmentPok: proofJson.commitmentPok.map(parseBigInt),
|
|
16
|
+
lightClients: metadata.lightClients.map(lc => ({
|
|
17
|
+
clientId: lc.clientId,
|
|
18
|
+
height: lc.height
|
|
19
|
+
})),
|
|
20
|
+
nullifier: metadata.nullifier,
|
|
21
|
+
value: metadata.value,
|
|
22
|
+
beneficiary: metadata.beneficiary,
|
|
23
|
+
attestedMessage: metadata.attestedMessage,
|
|
24
|
+
signature: metadata.signature
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=Utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Utils.js","names":["hexToBigInt","proofJsonToRedeemParams","proofJson","metadata","parseBigInt","s","startsWith","BigInt","proof","map","commitments","commitmentPok","lightClients","lc","clientId","height","nullifier","value","beneficiary","attestedMessage","signature"],"sources":["../../src/Utils.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAmBA,WAAW,QAAQ,MAAM;AAU5C;;;AAGA,OAAM,SAAUC,uBAAuBA,CACrCC,SAAkC,EAClCC,QAAkC;EAElC,MAAMC,WAAW,GAAIC,CAAS,IAAY;IACxC,IAAIA,CAAC,CAACC,UAAU,CAAC,IAAI,CAAC,EAAE;MACtB,OAAON,WAAW,CAACK,CAAQ,CAAC;IAC9B;IACA,OAAOE,MAAM,CAACF,CAAC,CAAC;EAClB,CAAC;EAED,OAAO;IACLG,KAAK,EAAEN,SAAS,CAACM,KAAK,CAACC,GAAG,CAACL,WAAW,CAA0B;IAChEM,WAAW,EAAER,SAAS,CAACQ,WAAW,CAACD,GAAG,CACpCL,WAAW,CACmB;IAChCO,aAAa,EAAET,SAAS,CAACS,aAAa,CAACF,GAAG,CACxCL,WAAW,CACqB;IAClCQ,YAAY,EAAET,QAAQ,CAACS,YAAY,CAACH,GAAG,CAAEI,EAAE,KAAM;MAC/CC,QAAQ,EAAED,EAAE,CAACC,QAAQ;MACrBC,MAAM,EAAEF,EAAE,CAACE;KACZ,CAAC,CAAC;IACHC,SAAS,EAAEb,QAAQ,CAACa,SAAS;IAC7BC,KAAK,EAAEd,QAAQ,CAACc,KAAK;IACrBC,WAAW,EAAEf,QAAQ,CAACe,WAAW;IACjCC,eAAe,EAAEhB,QAAQ,CAACgB,eAAe;IACzCC,SAAS,EAAEjB,QAAQ,CAACiB;GACrB;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Layer } from "effect";
|
|
2
|
+
import * as Context from "effect/Context";
|
|
3
|
+
import { identity } from "effect/Function";
|
|
4
|
+
import * as internal from "./internal/walletClient.js";
|
|
5
|
+
/**
|
|
6
|
+
* @category type ids
|
|
7
|
+
* @since 1.0.0
|
|
8
|
+
*/
|
|
9
|
+
export const TypeId = internal.TypeId;
|
|
10
|
+
/**
|
|
11
|
+
* @category models
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
export const WalletClient = internal.clientTag;
|
|
15
|
+
/**
|
|
16
|
+
* @category models
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
*/
|
|
19
|
+
export class SourceWalletClient extends /*#__PURE__*/Context.Tag("SourceWalletClient")() {
|
|
20
|
+
static layer = layer => Layer.project(layer, WalletClient, SourceWalletClient, identity);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @category models
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
*/
|
|
26
|
+
export class DestinationWalletClient extends /*#__PURE__*/Context.Tag("DestinationWalletClient")() {
|
|
27
|
+
static layer = layer => Layer.project(layer, WalletClient, DestinationWalletClient, identity);
|
|
28
|
+
}
|
|
29
|
+
export const make = internal.make;
|
|
30
|
+
//# sourceMappingURL=WalletClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletClient.js","names":["Layer","Context","identity","internal","TypeId","WalletClient","clientTag","SourceWalletClient","Tag","layer","project","DestinationWalletClient","make"],"sources":["../../src/WalletClient.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAK,QAAQ,QAAQ;AAC9B,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AAEzC,SAASC,QAAQ,QAAQ,iBAAiB;AAI1C,OAAO,KAAKC,QAAQ,MAAM,4BAA4B;AAGtD;;;;AAIA,OAAO,MAAMC,MAAM,GAAkBD,QAAQ,CAACC,MAAM;AAmEpD;;;;AAIA,OAAO,MAAMC,YAAY,GACvBF,QAAQ,CAACG,SAAS;AAEpB;;;;AAIA,OAAM,MAAOC,kBAAmB,sBAAQN,OAAO,CAACO,GAAG,CAAC,oBAAoB,CAAC,EAGtE;EACD,OAAOC,KAAK,GAAUA,KAAsC,IAC1DT,KAAK,CAACU,OAAO,CAACD,KAAK,EAAEJ,YAAY,EAAEE,kBAAkB,EAAEL,QAAQ,CAAC;;AAGpE;;;;AAIA,OAAM,MAAOS,uBAAwB,sBAAQV,OAAO,CAACO,GAAG,CACtD,yBAAyB,CAC1B,EAAyC;EACxC,OAAOC,KAAK,GAAUA,KAAsC,IAC1DT,KAAK,CAACU,OAAO,CAACD,KAAK,EAAEJ,YAAY,EAAEM,uBAAuB,EAAET,QAAQ,CAAC;;AA6DzE,OAAO,MAAMU,IAAI,GAEgCT,QAAQ,CAACS,IAAI","ignoreList":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client for attestation service that signs poseidon(unspendable_address, beneficiary)
|
|
3
|
+
* @public
|
|
4
|
+
*/
|
|
5
|
+
export class AttestationClient {
|
|
6
|
+
baseUrl;
|
|
7
|
+
apiKey;
|
|
8
|
+
constructor(baseUrl, apiKey) {
|
|
9
|
+
this.baseUrl = baseUrl.replace(/\/$/, ""); // Remove trailing slash
|
|
10
|
+
this.apiKey = apiKey;
|
|
11
|
+
}
|
|
12
|
+
async getAttestation(unspendableAddress, beneficiary) {
|
|
13
|
+
const request = {
|
|
14
|
+
unspendableAddress,
|
|
15
|
+
beneficiary
|
|
16
|
+
};
|
|
17
|
+
const headers = {
|
|
18
|
+
"Content-Type": "application/json"
|
|
19
|
+
};
|
|
20
|
+
headers["x-api-key"] = this.apiKey;
|
|
21
|
+
const response = await fetch(this.baseUrl, {
|
|
22
|
+
method: "POST",
|
|
23
|
+
headers,
|
|
24
|
+
body: JSON.stringify(request)
|
|
25
|
+
});
|
|
26
|
+
if (!response.ok) {
|
|
27
|
+
const errorText = await response.text();
|
|
28
|
+
throw new Error(`Attestation service error: ${response.status} ${errorText}`);
|
|
29
|
+
}
|
|
30
|
+
const data = await response.json();
|
|
31
|
+
// Combine r, s, v into 65-byte signature
|
|
32
|
+
const r = data.signature.r.slice(2);
|
|
33
|
+
const s = data.signature.s.slice(2);
|
|
34
|
+
const v = data.signature.v.toString(16).padStart(2, "0");
|
|
35
|
+
const signature = `0x${r}${s}${v}`;
|
|
36
|
+
return {
|
|
37
|
+
attestedMessage: data.hash,
|
|
38
|
+
signature
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=attestation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attestation.js","names":["AttestationClient","baseUrl","apiKey","constructor","replace","getAttestation","unspendableAddress","beneficiary","request","headers","response","fetch","method","body","JSON","stringify","ok","errorText","text","Error","status","data","json","r","signature","slice","s","v","toString","padStart","attestedMessage","hash"],"sources":["../../src/attestation.ts"],"sourcesContent":[null],"mappings":"AAcA;;;;AAIA,OAAM,MAAOA,iBAAiB;EACpBC,OAAO;EACPC,MAAM;EAEdC,YAAYF,OAAe,EAAEC,MAAc;IACzC,IAAI,CAACD,OAAO,GAAGA,OAAO,CAACG,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3C,IAAI,CAACF,MAAM,GAAGA,MAAM;EACtB;EAEA,MAAMG,cAAcA,CAClBC,kBAA2B,EAC3BC,WAAoB;IAEpB,MAAMC,OAAO,GAAuB;MAClCF,kBAAkB;MAClBC;KACD;IAED,MAAME,OAAO,GAA2B;MACtC,cAAc,EAAE;KACjB;IAEDA,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAACP,MAAM;IAElC,MAAMQ,QAAQ,GAAG,MAAMC,KAAK,CAAC,IAAI,CAACV,OAAO,EAAE;MACzCW,MAAM,EAAE,MAAM;MACdH,OAAO;MACPI,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACP,OAAO;KAC7B,CAAC;IAEF,IAAI,CAACE,QAAQ,CAACM,EAAE,EAAE;MAChB,MAAMC,SAAS,GAAG,MAAMP,QAAQ,CAACQ,IAAI,EAAE;MACvC,MAAM,IAAIC,KAAK,CACb,8BAA8BT,QAAQ,CAACU,MAAM,IAAIH,SAAS,EAAE,CAC7D;IACH;IAEA,MAAMI,IAAI,GAAI,MAAMX,QAAQ,CAACY,IAAI,EAAiC;IAElE;IACA,MAAMC,CAAC,GAAGF,IAAI,CAACG,SAAS,CAACD,CAAC,CAACE,KAAK,CAAC,CAAC,CAAC;IACnC,MAAMC,CAAC,GAAGL,IAAI,CAACG,SAAS,CAACE,CAAC,CAACD,KAAK,CAAC,CAAC,CAAC;IACnC,MAAME,CAAC,GAAGN,IAAI,CAACG,SAAS,CAACG,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACxD,MAAML,SAAS,GAAG,KAAKD,CAAC,GAAGG,CAAC,GAAGC,CAAC,EAAS;IAEzC,OAAO;MACLG,eAAe,EAAET,IAAI,CAACU,IAAI;MAC1BP;KACD;EACH","ignoreList":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
export const balanceCommand = /*#__PURE__*/new Command("balance").description("Query balance via light client").requiredOption("--secret <hex>", "32-byte secret (0x-prefixed hex)").option("--beneficiaries <addresses>", "Comma-separated beneficiary addresses").requiredOption("--client-id <id>", "Light client ID to use").option("--config <path>", "Path to config file", "./private-payments.config.json").action(async options => {
|
|
6
|
+
try {
|
|
7
|
+
const config = loadConfig(options.config);
|
|
8
|
+
const secret = validateSecret(options.secret);
|
|
9
|
+
const beneficiaries = parseBeneficiaries(options.beneficiaries);
|
|
10
|
+
const clientId = parseInt(options.clientId, 10);
|
|
11
|
+
if (isNaN(clientId) || clientId < 0) {
|
|
12
|
+
throw new Error("Invalid light client ID");
|
|
13
|
+
}
|
|
14
|
+
const client = new UnionPrivatePayments({
|
|
15
|
+
proverUrl: config.proverUrl,
|
|
16
|
+
sourceRpcUrl: config.sourceRpcUrl,
|
|
17
|
+
destinationRpcUrl: config.destinationRpcUrl,
|
|
18
|
+
srcZAssetAddress: config.srcZAssetAddress,
|
|
19
|
+
dstZAssetAddress: config.dstZAssetAddress,
|
|
20
|
+
sourceChainId: BigInt(config.sourceChainId),
|
|
21
|
+
destinationChainId: BigInt(config.destinationChainId)
|
|
22
|
+
});
|
|
23
|
+
const depositAddress = client.getDepositAddress(secret, beneficiaries);
|
|
24
|
+
const nullifier = client.getNullifier(secret);
|
|
25
|
+
console.log("Querying balance...");
|
|
26
|
+
console.log("Deposit Address:", depositAddress);
|
|
27
|
+
console.log("Light Client ID:", clientId);
|
|
28
|
+
const balance = await client.getBalance({
|
|
29
|
+
depositAddress,
|
|
30
|
+
nullifier,
|
|
31
|
+
clientId
|
|
32
|
+
});
|
|
33
|
+
const tokenInfo = await client.getSrcZAssetInfo();
|
|
34
|
+
console.log("");
|
|
35
|
+
console.log(`Latest height: ${balance.latestHeight}`);
|
|
36
|
+
console.log(`Light client height: ${balance.lightClientHeight}`);
|
|
37
|
+
console.log(`Light client lag: ${balance.latestHeight - balance.lightClientHeight}`);
|
|
38
|
+
console.log(`Balance:`);
|
|
39
|
+
console.log(" Pending:", formatAmount(balance.pending, tokenInfo.decimals, tokenInfo.symbol));
|
|
40
|
+
console.log(" Confirmed:", formatAmount(balance.confirmed, tokenInfo.decimals, tokenInfo.symbol));
|
|
41
|
+
console.log(" Redeemed:", formatAmount(balance.redeemed, tokenInfo.decimals, tokenInfo.symbol));
|
|
42
|
+
console.log(" Available:", formatAmount(balance.available, tokenInfo.decimals, tokenInfo.symbol));
|
|
43
|
+
console.log("");
|
|
44
|
+
console.log("Raw balance:");
|
|
45
|
+
console.log(" Pending:", balance.pending.toString());
|
|
46
|
+
console.log(" Confirmed:", balance.confirmed.toString());
|
|
47
|
+
console.log(" Redeemed:", balance.redeemed.toString());
|
|
48
|
+
console.log(" Available:", balance.available.toString());
|
|
49
|
+
} catch (e) {
|
|
50
|
+
console.error("Error:", e.message);
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=balance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.js","names":["Command","UnionPrivatePayments","loadConfig","formatAmount","parseBeneficiaries","validateSecret","balanceCommand","description","requiredOption","option","action","options","config","secret","beneficiaries","clientId","parseInt","isNaN","Error","client","proverUrl","sourceRpcUrl","destinationRpcUrl","srcZAssetAddress","dstZAssetAddress","sourceChainId","BigInt","destinationChainId","depositAddress","getDepositAddress","nullifier","getNullifier","console","log","balance","getBalance","tokenInfo","getSrcZAssetInfo","latestHeight","lightClientHeight","pending","decimals","symbol","confirmed","redeemed","available","toString","e","error","message","process","exit"],"sources":["../../../../src/cli/commands/balance.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { 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 { getExplorerUrl, padBeneficiaries, parseBeneficiaries, validateSecret } from "../utils.js";
|
|
8
|
+
export const depositCommand = /*#__PURE__*/new Command("deposit").description("Wrap underlying tokens and deposit to ZAsset").requiredOption("--amount <amount>", 'Amount to deposit in smallest units (e.g., "50000000" for 50 USDC)').requiredOption("--secret <hex>", "32-byte secret to derive deposit address (0x-prefixed hex)").option("--beneficiaries <addresses>", "Comma-separated beneficiary addresses (max 4, empty = unbounded)").option("--private-key <key>", "Private key to sign transaction (or env SENDER_PRIVATE_KEY)").option("--config <path>", "Path to config file", "./private-payments.config.json").action(async options => {
|
|
9
|
+
try {
|
|
10
|
+
const privateKey = options.privateKey ?? process.env.SENDER_PRIVATE_KEY;
|
|
11
|
+
if (!privateKey) {
|
|
12
|
+
throw new Error("Private key required. Use --private-key or set SENDER_PRIVATE_KEY env var");
|
|
13
|
+
}
|
|
14
|
+
if (!privateKey.startsWith("0x")) {
|
|
15
|
+
throw new Error("Private key must start with 0x");
|
|
16
|
+
}
|
|
17
|
+
const config = loadConfig(options.config);
|
|
18
|
+
const secret = validateSecret(options.secret);
|
|
19
|
+
const beneficiaries = parseBeneficiaries(options.beneficiaries);
|
|
20
|
+
const paddedBeneficiaries = padBeneficiaries(beneficiaries);
|
|
21
|
+
// Use source chain RPC and ZAsset from config
|
|
22
|
+
const rpcUrl = config.sourceRpcUrl;
|
|
23
|
+
const zAssetAddress = config.srcZAssetAddress;
|
|
24
|
+
// Parse amount as bigint (smallest units)
|
|
25
|
+
const amount = BigInt(options.amount);
|
|
26
|
+
// Derive deposit address from secret
|
|
27
|
+
const depositAddress = computeUnspendableAddress(secret, BigInt(config.destinationChainId), paddedBeneficiaries);
|
|
28
|
+
// Create wallet client from private key
|
|
29
|
+
const account = privateKeyToAccount(privateKey);
|
|
30
|
+
const walletClient = createWalletClient({
|
|
31
|
+
account,
|
|
32
|
+
chain: {
|
|
33
|
+
id: config.sourceChainId
|
|
34
|
+
},
|
|
35
|
+
transport: http(rpcUrl)
|
|
36
|
+
});
|
|
37
|
+
console.log("Depositing to ZAsset...");
|
|
38
|
+
console.log(" ZAsset:", zAssetAddress);
|
|
39
|
+
console.log(" Amount:", amount.toString());
|
|
40
|
+
console.log(" Deposit Address:", depositAddress);
|
|
41
|
+
console.log("");
|
|
42
|
+
const result = await depositToZAsset(rpcUrl, zAssetAddress, depositAddress, amount, walletClient);
|
|
43
|
+
console.log("");
|
|
44
|
+
console.log("Deposit complete!");
|
|
45
|
+
console.log(" Tx Hash:", result.txHash);
|
|
46
|
+
console.log(" Explorer:", getExplorerUrl(Number(result.chainId), result.txHash));
|
|
47
|
+
} catch (e) {
|
|
48
|
+
console.error("Error:", e.message);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=deposit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deposit.js","names":["Command","createWalletClient","http","privateKeyToAccount","computeUnspendableAddress","depositToZAsset","loadConfig","getExplorerUrl","padBeneficiaries","parseBeneficiaries","validateSecret","depositCommand","description","requiredOption","option","action","options","privateKey","process","env","SENDER_PRIVATE_KEY","Error","startsWith","config","secret","beneficiaries","paddedBeneficiaries","rpcUrl","sourceRpcUrl","zAssetAddress","srcZAssetAddress","amount","BigInt","depositAddress","destinationChainId","account","walletClient","chain","id","sourceChainId","transport","console","log","toString","result","txHash","Number","chainId","e","error","message","exit"],"sources":["../../../../src/cli/commands/deposit.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { writeFileSync } from "node:fs";
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { ProverClient } from "../../legacy/prover.js";
|
|
4
|
+
export const exportVerifierCommand = /*#__PURE__*/new Command("export-verifier").description("Export the Solidity verifier contract from the prover server").option("--prover-url <url>", "Prover gRPC-web URL", "http://localhost:8080").option("--output <file>", "Save verifier to file (default: stdout)").action(async options => {
|
|
5
|
+
try {
|
|
6
|
+
const proverClient = new ProverClient(options.proverUrl);
|
|
7
|
+
console.error("Exporting verifier contract...");
|
|
8
|
+
console.error(" Prover URL:", options.proverUrl);
|
|
9
|
+
const verifierContract = await proverClient.exportVerifier();
|
|
10
|
+
if (options.output) {
|
|
11
|
+
writeFileSync(options.output, verifierContract);
|
|
12
|
+
console.error(`Verifier saved to: ${options.output}`);
|
|
13
|
+
} else {
|
|
14
|
+
console.log(verifierContract);
|
|
15
|
+
}
|
|
16
|
+
} catch (e) {
|
|
17
|
+
console.error("Error:", e.message);
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=export-verifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-verifier.js","names":["writeFileSync","Command","ProverClient","exportVerifierCommand","description","option","action","options","proverClient","proverUrl","console","error","verifierContract","exportVerifier","output","log","e","message","process","exit"],"sources":["../../../../src/cli/commands/export-verifier.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,aAAa,QAAQ,SAAS;AACvC,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,YAAY,QAAQ,wBAAwB;AAErD,OAAO,MAAMC,qBAAqB,gBAAG,IAAIF,OAAO,CAAC,iBAAiB,CAAC,CAChEG,WAAW,CAAC,8DAA8D,CAAC,CAC3EC,MAAM,CAAC,oBAAoB,EAAE,qBAAqB,EAAE,uBAAuB,CAAC,CAC5EA,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC,CACpEC,MAAM,CAAC,MAAOC,OAAO,IAAI;EACxB,IAAI;IACF,MAAMC,YAAY,GAAG,IAAIN,YAAY,CAACK,OAAO,CAACE,SAAS,CAAC;IAExDC,OAAO,CAACC,KAAK,CAAC,gCAAgC,CAAC;IAC/CD,OAAO,CAACC,KAAK,CAAC,eAAe,EAAEJ,OAAO,CAACE,SAAS,CAAC;IAEjD,MAAMG,gBAAgB,GAAG,MAAMJ,YAAY,CAACK,cAAc,EAAE;IAE5D,IAAIN,OAAO,CAACO,MAAM,EAAE;MAClBd,aAAa,CAACO,OAAO,CAACO,MAAM,EAAEF,gBAAgB,CAAC;MAC/CF,OAAO,CAACC,KAAK,CAAC,sBAAsBJ,OAAO,CAACO,MAAM,EAAE,CAAC;IACvD,CAAC,MAAM;MACLJ,OAAO,CAACK,GAAG,CAACH,gBAAgB,CAAC;IAC/B;EACF,CAAC,CAAC,OAAOI,CAAC,EAAE;IACVN,OAAO,CAACC,KAAK,CAAC,QAAQ,EAAGK,CAAW,CAACC,OAAO,CAAC;IAC7CC,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { computeNullifier, computeUnspendableAddress, generatePaymentKey } from "../../poseidon2.js";
|
|
3
|
+
import { loadConfig } from "../config.js";
|
|
4
|
+
import { padBeneficiaries, parseBeneficiaries, validateSecret } from "../utils.js";
|
|
5
|
+
export const generateCommand = /*#__PURE__*/new Command("generate").description("Generate a new unspendable address (generates random secret by default)").option("--secret <hex>", "Use existing 32-byte secret (0x-prefixed hex) instead of generating").option("--beneficiaries <addresses>", "Comma-separated beneficiary addresses (max 4, empty = unbounded)").option("--config <path>", "Path to config file", "./private-payments.config.json").action(async options => {
|
|
6
|
+
try {
|
|
7
|
+
const config = loadConfig(options.config);
|
|
8
|
+
const secret = options.secret ? validateSecret(options.secret) : generatePaymentKey();
|
|
9
|
+
const isNewSecret = !options.secret;
|
|
10
|
+
const beneficiaries = parseBeneficiaries(options.beneficiaries);
|
|
11
|
+
const paddedBeneficiaries = padBeneficiaries(beneficiaries);
|
|
12
|
+
const depositAddress = computeUnspendableAddress(secret, BigInt(config.destinationChainId), paddedBeneficiaries);
|
|
13
|
+
const nullifier = computeNullifier(secret, BigInt(config.destinationChainId));
|
|
14
|
+
const isUnbounded = beneficiaries.length === 0;
|
|
15
|
+
if (isNewSecret) {
|
|
16
|
+
console.log("Secret:", secret);
|
|
17
|
+
console.log("");
|
|
18
|
+
console.log("WARNING: Save this secret! It is required to redeem funds.");
|
|
19
|
+
console.log("");
|
|
20
|
+
}
|
|
21
|
+
console.log("Deposit Address:", depositAddress);
|
|
22
|
+
console.log("Nullifier:", "0x" + nullifier.toString(16).padStart(64, "0"));
|
|
23
|
+
console.log("Mode:", isUnbounded ? "Unbounded (any beneficiary allowed)" : `Bounded (${beneficiaries.length} beneficiaries)`);
|
|
24
|
+
if (!isUnbounded) {
|
|
25
|
+
console.log("Beneficiaries:");
|
|
26
|
+
for (const addr of beneficiaries) {
|
|
27
|
+
console.log(` - ${addr}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
} catch (e) {
|
|
31
|
+
console.error("Error:", e.message);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","names":["Command","computeNullifier","computeUnspendableAddress","generatePaymentKey","loadConfig","padBeneficiaries","parseBeneficiaries","validateSecret","generateCommand","description","option","action","options","config","secret","isNewSecret","beneficiaries","paddedBeneficiaries","depositAddress","BigInt","destinationChainId","nullifier","isUnbounded","length","console","log","toString","padStart","addr","e","error","message","process","exit"],"sources":["../../../../src/cli/commands/generate.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAO,QAAQ,WAAW;AACnC,SACEC,gBAAgB,EAChBC,yBAAyB,EACzBC,kBAAkB,QACb,oBAAoB;AAC3B,SAASC,UAAU,QAAQ,cAAc;AACzC,SACEC,gBAAgB,EAChBC,kBAAkB,EAClBC,cAAc,QACT,aAAa;AAEpB,OAAO,MAAMC,eAAe,gBAAG,IAAIR,OAAO,CAAC,UAAU,CAAC,CACnDS,WAAW,CACV,yEAAyE,CAC1E,CACAC,MAAM,CACL,gBAAgB,EAChB,qEAAqE,CACtE,CACAA,MAAM,CACL,6BAA6B,EAC7B,kEAAkE,CACnE,CACAA,MAAM,CACL,iBAAiB,EACjB,qBAAqB,EACrB,gCAAgC,CACjC,CACAC,MAAM,CAAC,MAAOC,OAAO,IAAI;EACxB,IAAI;IACF,MAAMC,MAAM,GAAGT,UAAU,CAACQ,OAAO,CAACC,MAAM,CAAC;IACzC,MAAMC,MAAM,GAAGF,OAAO,CAACE,MAAM,GACzBP,cAAc,CAACK,OAAO,CAACE,MAAM,CAAC,GAC9BX,kBAAkB,EAAE;IACxB,MAAMY,WAAW,GAAG,CAACH,OAAO,CAACE,MAAM;IAEnC,MAAME,aAAa,GAAGV,kBAAkB,CAACM,OAAO,CAACI,aAAa,CAAC;IAC/D,MAAMC,mBAAmB,GAAGZ,gBAAgB,CAACW,aAAa,CAAC;IAE3D,MAAME,cAAc,GAAGhB,yBAAyB,CAC9CY,MAAM,EACNK,MAAM,CAACN,MAAM,CAACO,kBAAkB,CAAC,EACjCH,mBAAmB,CACpB;IAED,MAAMI,SAAS,GAAGpB,gBAAgB,CAChCa,MAAM,EACNK,MAAM,CAACN,MAAM,CAACO,kBAAkB,CAAC,CAClC;IAED,MAAME,WAAW,GAAGN,aAAa,CAACO,MAAM,KAAK,CAAC;IAE9C,IAAIR,WAAW,EAAE;MACfS,OAAO,CAACC,GAAG,CAAC,SAAS,EAAEX,MAAM,CAAC;MAC9BU,OAAO,CAACC,GAAG,CAAC,EAAE,CAAC;MACfD,OAAO,CAACC,GAAG,CACT,4DAA4D,CAC7D;MACDD,OAAO,CAACC,GAAG,CAAC,EAAE,CAAC;IACjB;IAEAD,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAEP,cAAc,CAAC;IAC/CM,OAAO,CAACC,GAAG,CACT,YAAY,EACZ,IAAI,GAAGJ,SAAS,CAACK,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAChD;IACDH,OAAO,CAACC,GAAG,CACT,OAAO,EACPH,WAAW,GACP,qCAAqC,GACrC,YAAYN,aAAa,CAACO,MAAM,iBAAiB,CACtD;IAED,IAAI,CAACD,WAAW,EAAE;MAChBE,OAAO,CAACC,GAAG,CAAC,gBAAgB,CAAC;MAC7B,KAAK,MAAMG,IAAI,IAAIZ,aAAa,EAAE;QAChCQ,OAAO,CAACC,GAAG,CAAC,OAAOG,IAAI,EAAE,CAAC;MAC5B;IACF;EACF,CAAC,CAAC,OAAOC,CAAC,EAAE;IACVL,OAAO,CAACM,KAAK,CAAC,QAAQ,EAAGD,CAAW,CAACE,OAAO,CAAC;IAC7CC,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
export const historyCommand = /*#__PURE__*/new Command("history").description("List redemption transactions for a secret").requiredOption("--secret <hex>", "32-byte secret (0x-prefixed hex)").option("--from-block <number>", "Start block number (default: earliest)").option("--to-block <number>", "End block number (default: latest)").option("--config <path>", "Path to config file", "./private-payments.config.json").action(async options => {
|
|
7
|
+
try {
|
|
8
|
+
const config = loadConfig(options.config);
|
|
9
|
+
const secret = validateSecret(options.secret);
|
|
10
|
+
const client = new UnionPrivatePayments({
|
|
11
|
+
proverUrl: config.proverUrl,
|
|
12
|
+
sourceRpcUrl: config.sourceRpcUrl,
|
|
13
|
+
destinationRpcUrl: config.destinationRpcUrl,
|
|
14
|
+
srcZAssetAddress: config.srcZAssetAddress,
|
|
15
|
+
dstZAssetAddress: config.dstZAssetAddress,
|
|
16
|
+
sourceChainId: BigInt(config.sourceChainId),
|
|
17
|
+
destinationChainId: BigInt(config.destinationChainId)
|
|
18
|
+
});
|
|
19
|
+
const nullifier = client.getNullifier(secret);
|
|
20
|
+
const nullifierHex = "0x" + nullifier.toString(16).padStart(64, "0");
|
|
21
|
+
console.log("Querying redemption history...");
|
|
22
|
+
console.log("Nullifier:", nullifierHex);
|
|
23
|
+
console.log("");
|
|
24
|
+
const fromBlock = options.fromBlock ? BigInt(options.fromBlock) : undefined;
|
|
25
|
+
const toBlock = options.toBlock ? BigInt(options.toBlock) : undefined;
|
|
26
|
+
const dstRpcClient = new RpcClient(config.destinationRpcUrl);
|
|
27
|
+
const history = await dstRpcClient.getRedemptionHistory(config.dstZAssetAddress, nullifier, fromBlock, toBlock);
|
|
28
|
+
if (history.length === 0) {
|
|
29
|
+
console.log("No redemptions found for this secret.");
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
// Get token info for formatting
|
|
33
|
+
const tokenInfo = await client.getDstZAssetInfo();
|
|
34
|
+
console.log(`Found ${history.length} redemption${history.length > 1 ? "s" : ""}:`);
|
|
35
|
+
console.log("");
|
|
36
|
+
for (let i = 0; i < history.length; i++) {
|
|
37
|
+
const entry = history[i];
|
|
38
|
+
console.log(`#${i + 1} Block: ${entry.blockNumber}`);
|
|
39
|
+
console.log(` Tx: ${entry.txHash}`);
|
|
40
|
+
console.log(` Amount: ${formatAmount(entry.redeemAmount, tokenInfo.decimals, tokenInfo.symbol)}`);
|
|
41
|
+
console.log(` Beneficiary: ${entry.beneficiary}`);
|
|
42
|
+
console.log(` Explorer: ${getExplorerUrl(config.destinationChainId, entry.txHash)}`);
|
|
43
|
+
console.log("");
|
|
44
|
+
}
|
|
45
|
+
// Show total redeemed
|
|
46
|
+
const totalRedeemed = history.reduce((sum, h) => sum + h.redeemAmount, 0n);
|
|
47
|
+
console.log(`Total redeemed: ${formatAmount(totalRedeemed, tokenInfo.decimals, tokenInfo.symbol)}`);
|
|
48
|
+
} catch (e) {
|
|
49
|
+
console.error("Error:", e.message);
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","names":["Command","UnionPrivatePayments","RpcClient","loadConfig","formatAmount","getExplorerUrl","validateSecret","historyCommand","description","requiredOption","option","action","options","config","secret","client","proverUrl","sourceRpcUrl","destinationRpcUrl","srcZAssetAddress","dstZAssetAddress","sourceChainId","BigInt","destinationChainId","nullifier","getNullifier","nullifierHex","toString","padStart","console","log","fromBlock","undefined","toBlock","dstRpcClient","history","getRedemptionHistory","length","tokenInfo","getDstZAssetInfo","i","entry","blockNumber","txHash","redeemAmount","decimals","symbol","beneficiary","totalRedeemed","reduce","sum","h","e","error","message","process","exit"],"sources":["../../../../src/cli/commands/history.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,76 @@
|
|
|
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 { parseBeneficiaries, parseClientIds, validateAddress, validateSecret } from "../utils.js";
|
|
7
|
+
export const proveCommand = /*#__PURE__*/new Command("prove").description("Generate ZK proof for redemption").requiredOption("--secret <hex>", "32-byte secret (0x-prefixed hex)").option("--beneficiaries <addresses>", "Comma-separated beneficiary addresses for address derivation").requiredOption("--beneficiary <address>", "Address to redeem to").requiredOption("--amount <value>", 'Amount to redeem in smallest units (e.g., "2000000" for 2 USDC)').requiredOption("--client-ids <ids>", "Comma-separated light client IDs for anonymity set").requiredOption("--selected-client <id>", "Which client ID to use for proof").option("--output <file>", "Save proof JSON to file (default: stdout)").option("--config <path>", "Path to config file", "./private-payments.config.json").action(async options => {
|
|
8
|
+
try {
|
|
9
|
+
const config = loadConfig(options.config);
|
|
10
|
+
const secret = validateSecret(options.secret);
|
|
11
|
+
const beneficiaries = parseBeneficiaries(options.beneficiaries);
|
|
12
|
+
const beneficiary = validateAddress(options.beneficiary, "beneficiary");
|
|
13
|
+
const clientIds = parseClientIds(options.clientIds);
|
|
14
|
+
const selectedClientId = parseInt(options.selectedClient, 10);
|
|
15
|
+
if (isNaN(selectedClientId)) {
|
|
16
|
+
throw new Error("Invalid selected client ID");
|
|
17
|
+
}
|
|
18
|
+
if (!clientIds.includes(selectedClientId)) {
|
|
19
|
+
throw new Error(`Selected client ${selectedClientId} not in client IDs: ${clientIds.join(", ")}`);
|
|
20
|
+
}
|
|
21
|
+
const client = new UnionPrivatePayments({
|
|
22
|
+
proverUrl: config.proverUrl,
|
|
23
|
+
sourceRpcUrl: config.sourceRpcUrl,
|
|
24
|
+
destinationRpcUrl: config.destinationRpcUrl,
|
|
25
|
+
srcZAssetAddress: config.srcZAssetAddress,
|
|
26
|
+
dstZAssetAddress: config.dstZAssetAddress,
|
|
27
|
+
sourceChainId: BigInt(config.sourceChainId),
|
|
28
|
+
destinationChainId: BigInt(config.destinationChainId)
|
|
29
|
+
});
|
|
30
|
+
const amount = BigInt(options.amount);
|
|
31
|
+
console.error("Generating proof...");
|
|
32
|
+
console.error(" Secret:", secret.slice(0, 10) + "...");
|
|
33
|
+
console.error(" Beneficiary:", beneficiary);
|
|
34
|
+
console.error(" Amount:", amount.toString());
|
|
35
|
+
console.error(" Client IDs:", clientIds.join(", "));
|
|
36
|
+
console.error(" Selected Client:", selectedClientId);
|
|
37
|
+
const result = await client.generateProof(secret, beneficiaries, beneficiary, amount, clientIds, selectedClientId);
|
|
38
|
+
if (!result.proof.success || !result.proof.proofJson || !result.metadata) {
|
|
39
|
+
throw new Error(result.proof.error ?? "Proof generation failed");
|
|
40
|
+
}
|
|
41
|
+
console.error("Proof generated successfully!");
|
|
42
|
+
const proofJson = parseProofJson(result.proof.proofJson);
|
|
43
|
+
const output = {
|
|
44
|
+
proof: proofJson,
|
|
45
|
+
metadata: {
|
|
46
|
+
depositAddress: result.metadata.depositAddress,
|
|
47
|
+
beneficiary: result.metadata.beneficiary,
|
|
48
|
+
value: result.metadata.value.toString(),
|
|
49
|
+
nullifier: "0x" + result.metadata.nullifier.toString(16).padStart(64, "0"),
|
|
50
|
+
lightClients: result.metadata.lightClients.map(lc => ({
|
|
51
|
+
clientId: lc.clientId,
|
|
52
|
+
height: lc.height.toString(),
|
|
53
|
+
stateRoot: lc.stateRoot
|
|
54
|
+
}))
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const jsonOutput = JSON.stringify(output, null, 2);
|
|
58
|
+
if (options.output) {
|
|
59
|
+
writeFileSync(options.output, jsonOutput);
|
|
60
|
+
console.error(`Proof saved to: ${options.output}`);
|
|
61
|
+
} else {
|
|
62
|
+
console.log(jsonOutput);
|
|
63
|
+
}
|
|
64
|
+
console.error("");
|
|
65
|
+
console.error("Metadata:");
|
|
66
|
+
console.error(" Deposit Address:", result.metadata.depositAddress);
|
|
67
|
+
console.error(" Beneficiary:", result.metadata.beneficiary);
|
|
68
|
+
console.error(" Value:", result.metadata.value.toString());
|
|
69
|
+
console.error(" Nullifier:", "0x" + result.metadata.nullifier.toString(16).padStart(64, "0"));
|
|
70
|
+
console.error(" Light Clients:", result.metadata.lightClients.length);
|
|
71
|
+
} catch (e) {
|
|
72
|
+
console.error("Error:", e.message);
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=prove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prove.js","names":["writeFileSync","Command","UnionPrivatePayments","parseProofJson","loadConfig","parseBeneficiaries","parseClientIds","validateAddress","validateSecret","proveCommand","description","requiredOption","option","action","options","config","secret","beneficiaries","beneficiary","clientIds","selectedClientId","parseInt","selectedClient","isNaN","Error","includes","join","client","proverUrl","sourceRpcUrl","destinationRpcUrl","srcZAssetAddress","dstZAssetAddress","sourceChainId","BigInt","destinationChainId","amount","console","error","slice","toString","result","generateProof","proof","success","proofJson","metadata","output","depositAddress","value","nullifier","padStart","lightClients","map","lc","clientId","height","stateRoot","jsonOutput","JSON","stringify","log","length","e","message","process","exit"],"sources":["../../../../src/cli/commands/prove.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|