agentwallet-sdk 5.0.0 → 5.0.1
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/README.md +221 -0
- package/dist/abi.d.ts +397 -0
- package/dist/abi.d.ts.map +1 -0
- package/dist/abi.js +255 -0
- package/dist/abi.js.map +1 -0
- package/dist/ap2/index.d.ts +185 -0
- package/dist/ap2/index.d.ts.map +1 -0
- package/dist/ap2/index.js +255 -0
- package/dist/ap2/index.js.map +1 -0
- package/dist/bridge/abis.d.ts +64 -0
- package/dist/bridge/abis.d.ts.map +1 -0
- package/dist/bridge/abis.js +129 -0
- package/dist/bridge/abis.js.map +1 -0
- package/dist/bridge/client.d.ts +35 -0
- package/dist/bridge/client.d.ts.map +1 -0
- package/dist/bridge/client.js +230 -0
- package/dist/bridge/client.js.map +1 -0
- package/dist/bridge/index.d.ts +4 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/index.js +3 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/bridge/types.d.ts +69 -0
- package/dist/bridge/types.d.ts.map +1 -0
- package/dist/bridge/types.js +53 -0
- package/dist/bridge/types.js.map +1 -0
- package/dist/bridge/unified.d.ts +101 -0
- package/dist/bridge/unified.d.ts.map +1 -0
- package/dist/bridge/unified.js +284 -0
- package/dist/bridge/unified.js.map +1 -0
- package/dist/chains.d.ts +62 -0
- package/dist/chains.d.ts.map +1 -0
- package/dist/chains.js +108 -0
- package/dist/chains.js.map +1 -0
- package/dist/escrow/MutualStakeEscrow.d.ts +75 -0
- package/dist/escrow/MutualStakeEscrow.d.ts.map +1 -0
- package/dist/escrow/MutualStakeEscrow.js +339 -0
- package/dist/escrow/MutualStakeEscrow.js.map +1 -0
- package/dist/escrow/types.d.ts +59 -0
- package/dist/escrow/types.d.ts.map +1 -0
- package/dist/escrow/types.js +11 -0
- package/dist/escrow/types.js.map +1 -0
- package/dist/escrow/verifiers.d.ts +26 -0
- package/dist/escrow/verifiers.d.ts.map +1 -0
- package/dist/escrow/verifiers.js +53 -0
- package/dist/escrow/verifiers.js.map +1 -0
- package/dist/fiat/index.d.ts +10 -0
- package/dist/fiat/index.d.ts.map +1 -0
- package/dist/fiat/index.js +9 -0
- package/dist/fiat/index.js.map +1 -0
- package/dist/fiat/onramp.d.ts +101 -0
- package/dist/fiat/onramp.d.ts.map +1 -0
- package/dist/fiat/onramp.js +155 -0
- package/dist/fiat/onramp.js.map +1 -0
- package/dist/fiat/providers/index.d.ts +16 -0
- package/dist/fiat/providers/index.d.ts.map +1 -0
- package/dist/fiat/providers/index.js +30 -0
- package/dist/fiat/providers/index.js.map +1 -0
- package/dist/fiat/providers/moonpay.d.ts +22 -0
- package/dist/fiat/providers/moonpay.d.ts.map +1 -0
- package/dist/fiat/providers/moonpay.js +107 -0
- package/dist/fiat/providers/moonpay.js.map +1 -0
- package/dist/fiat/providers/stripe.d.ts +26 -0
- package/dist/fiat/providers/stripe.d.ts.map +1 -0
- package/dist/fiat/providers/stripe.js +135 -0
- package/dist/fiat/providers/stripe.js.map +1 -0
- package/dist/fiat/providers/transak.d.ts +26 -0
- package/dist/fiat/providers/transak.d.ts.map +1 -0
- package/dist/fiat/providers/transak.js +119 -0
- package/dist/fiat/providers/transak.js.map +1 -0
- package/dist/fiat/types.d.ts +106 -0
- package/dist/fiat/types.d.ts.map +1 -0
- package/dist/fiat/types.js +13 -0
- package/dist/fiat/types.js.map +1 -0
- package/dist/flash/executor.d.ts +119 -0
- package/dist/flash/executor.d.ts.map +1 -0
- package/dist/flash/executor.js +195 -0
- package/dist/flash/executor.js.map +1 -0
- package/dist/flash/index.d.ts +28 -0
- package/dist/flash/index.d.ts.map +1 -0
- package/dist/flash/index.js +29 -0
- package/dist/flash/index.js.map +1 -0
- package/dist/flash/scanner.d.ts +133 -0
- package/dist/flash/scanner.d.ts.map +1 -0
- package/dist/flash/scanner.js +212 -0
- package/dist/flash/scanner.js.map +1 -0
- package/dist/flash/types.d.ts +136 -0
- package/dist/flash/types.d.ts.map +1 -0
- package/dist/flash/types.js +23 -0
- package/dist/flash/types.js.map +1 -0
- package/dist/gas/index.d.ts +4 -0
- package/dist/gas/index.d.ts.map +1 -0
- package/dist/gas/index.js +3 -0
- package/dist/gas/index.js.map +1 -0
- package/dist/gas/sponsor.d.ts +70 -0
- package/dist/gas/sponsor.d.ts.map +1 -0
- package/dist/gas/sponsor.js +193 -0
- package/dist/gas/sponsor.js.map +1 -0
- package/dist/gas/types.d.ts +76 -0
- package/dist/gas/types.d.ts.map +1 -0
- package/dist/gas/types.js +21 -0
- package/dist/gas/types.js.map +1 -0
- package/dist/identity/agent-identity.d.ts +276 -0
- package/dist/identity/agent-identity.d.ts.map +1 -0
- package/dist/identity/agent-identity.js +300 -0
- package/dist/identity/agent-identity.js.map +1 -0
- package/dist/identity/erc6551.d.ts +441 -0
- package/dist/identity/erc6551.d.ts.map +1 -0
- package/dist/identity/erc6551.js +517 -0
- package/dist/identity/erc6551.js.map +1 -0
- package/dist/identity/erc8004.d.ts +305 -0
- package/dist/identity/erc8004.d.ts.map +1 -0
- package/dist/identity/erc8004.js +413 -0
- package/dist/identity/erc8004.js.map +1 -0
- package/dist/identity/index.d.ts +7 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +4 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/identity/reputation.d.ts +318 -0
- package/dist/identity/reputation.d.ts.map +1 -0
- package/dist/identity/reputation.js +272 -0
- package/dist/identity/reputation.js.map +1 -0
- package/dist/identity/validation.d.ts +284 -0
- package/dist/identity/validation.d.ts.map +1 -0
- package/dist/identity/validation.js +226 -0
- package/dist/identity/validation.js.map +1 -0
- package/dist/index.d.ts +38803 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +376 -0
- package/dist/index.js.map +1 -0
- package/dist/mev/index.d.ts +4 -0
- package/dist/mev/index.d.ts.map +1 -0
- package/dist/mev/index.js +8 -0
- package/dist/mev/index.js.map +1 -0
- package/dist/mev/protection.d.ts +54 -0
- package/dist/mev/protection.d.ts.map +1 -0
- package/dist/mev/protection.js +185 -0
- package/dist/mev/protection.js.map +1 -0
- package/dist/mev/risk.d.ts +19 -0
- package/dist/mev/risk.d.ts.map +1 -0
- package/dist/mev/risk.js +95 -0
- package/dist/mev/risk.js.map +1 -0
- package/dist/mev/types.d.ts +49 -0
- package/dist/mev/types.d.ts.map +1 -0
- package/dist/mev/types.js +2 -0
- package/dist/mev/types.js.map +1 -0
- package/dist/plugins/elizaos.d.ts +52 -0
- package/dist/plugins/elizaos.d.ts.map +1 -0
- package/dist/plugins/elizaos.js +89 -0
- package/dist/plugins/elizaos.js.map +1 -0
- package/dist/policy/SpendingPolicy.d.ts +106 -0
- package/dist/policy/SpendingPolicy.d.ts.map +1 -0
- package/dist/policy/SpendingPolicy.js +155 -0
- package/dist/policy/SpendingPolicy.js.map +1 -0
- package/dist/policy/SpendingPolicy.test.d.ts +2 -0
- package/dist/policy/SpendingPolicy.test.d.ts.map +1 -0
- package/dist/policy/SpendingPolicy.test.js +143 -0
- package/dist/policy/SpendingPolicy.test.js.map +1 -0
- package/dist/settlement/index.d.ts +4 -0
- package/dist/settlement/index.d.ts.map +1 -0
- package/dist/settlement/index.js +3 -0
- package/dist/settlement/index.js.map +1 -0
- package/dist/settlement/types.d.ts +66 -0
- package/dist/settlement/types.d.ts.map +1 -0
- package/dist/settlement/types.js +37 -0
- package/dist/settlement/types.js.map +1 -0
- package/dist/settlement/verifier.d.ts +75 -0
- package/dist/settlement/verifier.d.ts.map +1 -0
- package/dist/settlement/verifier.js +354 -0
- package/dist/settlement/verifier.js.map +1 -0
- package/dist/solana/bridge.d.ts +144 -0
- package/dist/solana/bridge.d.ts.map +1 -0
- package/dist/solana/bridge.js +352 -0
- package/dist/solana/bridge.js.map +1 -0
- package/dist/solana/index.d.ts +8 -0
- package/dist/solana/index.d.ts.map +1 -0
- package/dist/solana/index.js +6 -0
- package/dist/solana/index.js.map +1 -0
- package/dist/solana/swap.d.ts +85 -0
- package/dist/solana/swap.d.ts.map +1 -0
- package/dist/solana/swap.js +173 -0
- package/dist/solana/swap.js.map +1 -0
- package/dist/solana/types.d.ts +126 -0
- package/dist/solana/types.d.ts.map +1 -0
- package/dist/solana/types.js +10 -0
- package/dist/solana/types.js.map +1 -0
- package/dist/solana/wallet.d.ts +83 -0
- package/dist/solana/wallet.d.ts.map +1 -0
- package/dist/solana/wallet.js +164 -0
- package/dist/solana/wallet.js.map +1 -0
- package/dist/solana/x402.d.ts +69 -0
- package/dist/solana/x402.d.ts.map +1 -0
- package/dist/solana/x402.js +154 -0
- package/dist/solana/x402.js.map +1 -0
- package/dist/solver/adapter.d.ts +47 -0
- package/dist/solver/adapter.d.ts.map +1 -0
- package/dist/solver/adapter.js +146 -0
- package/dist/solver/adapter.js.map +1 -0
- package/dist/solver/analyzer.d.ts +48 -0
- package/dist/solver/analyzer.d.ts.map +1 -0
- package/dist/solver/analyzer.js +171 -0
- package/dist/solver/analyzer.js.map +1 -0
- package/dist/solver/builder.d.ts +31 -0
- package/dist/solver/builder.d.ts.map +1 -0
- package/dist/solver/builder.js +60 -0
- package/dist/solver/builder.js.map +1 -0
- package/dist/solver/index.d.ts +22 -0
- package/dist/solver/index.d.ts.map +1 -0
- package/dist/solver/index.js +25 -0
- package/dist/solver/index.js.map +1 -0
- package/dist/solver/types.d.ts +115 -0
- package/dist/solver/types.d.ts.map +1 -0
- package/dist/solver/types.js +10 -0
- package/dist/solver/types.js.map +1 -0
- package/dist/spend-guard/index.d.ts +125 -0
- package/dist/spend-guard/index.d.ts.map +1 -0
- package/dist/spend-guard/index.js +150 -0
- package/dist/spend-guard/index.js.map +1 -0
- package/dist/swap/SwapModule.d.ts +34 -0
- package/dist/swap/SwapModule.d.ts.map +1 -0
- package/dist/swap/SwapModule.js +144 -0
- package/dist/swap/SwapModule.js.map +1 -0
- package/dist/swap/abi.d.ts +51 -0
- package/dist/swap/abi.d.ts.map +1 -0
- package/dist/swap/abi.js +118 -0
- package/dist/swap/abi.js.map +1 -0
- package/dist/swap/index.d.ts +5 -0
- package/dist/swap/index.d.ts.map +1 -0
- package/dist/swap/index.js +4 -0
- package/dist/swap/index.js.map +1 -0
- package/dist/swap/router/cache.d.ts +13 -0
- package/dist/swap/router/cache.d.ts.map +1 -0
- package/dist/swap/router/cache.js +30 -0
- package/dist/swap/router/cache.js.map +1 -0
- package/dist/swap/router/flashbots.d.ts +10 -0
- package/dist/swap/router/flashbots.d.ts.map +1 -0
- package/dist/swap/router/flashbots.js +43 -0
- package/dist/swap/router/flashbots.js.map +1 -0
- package/dist/swap/router/health.d.ts +17 -0
- package/dist/swap/router/health.d.ts.map +1 -0
- package/dist/swap/router/health.js +38 -0
- package/dist/swap/router/health.js.map +1 -0
- package/dist/swap/router/index.d.ts +10 -0
- package/dist/swap/router/index.d.ts.map +1 -0
- package/dist/swap/router/index.js +10 -0
- package/dist/swap/router/index.js.map +1 -0
- package/dist/swap/router/providers/cowswap.d.ts +11 -0
- package/dist/swap/router/providers/cowswap.d.ts.map +1 -0
- package/dist/swap/router/providers/cowswap.js +79 -0
- package/dist/swap/router/providers/cowswap.js.map +1 -0
- package/dist/swap/router/providers/index.d.ts +20 -0
- package/dist/swap/router/providers/index.d.ts.map +1 -0
- package/dist/swap/router/providers/index.js +32 -0
- package/dist/swap/router/providers/index.js.map +1 -0
- package/dist/swap/router/providers/jupiter.d.ts +12 -0
- package/dist/swap/router/providers/jupiter.d.ts.map +1 -0
- package/dist/swap/router/providers/jupiter.js +73 -0
- package/dist/swap/router/providers/jupiter.js.map +1 -0
- package/dist/swap/router/providers/lifi.d.ts +11 -0
- package/dist/swap/router/providers/lifi.d.ts.map +1 -0
- package/dist/swap/router/providers/lifi.js +123 -0
- package/dist/swap/router/providers/lifi.js.map +1 -0
- package/dist/swap/router/providers/oneinch.d.ts +13 -0
- package/dist/swap/router/providers/oneinch.d.ts.map +1 -0
- package/dist/swap/router/providers/oneinch.js +71 -0
- package/dist/swap/router/providers/oneinch.js.map +1 -0
- package/dist/swap/router/providers/paraswap.d.ts +11 -0
- package/dist/swap/router/providers/paraswap.d.ts.map +1 -0
- package/dist/swap/router/providers/paraswap.js +73 -0
- package/dist/swap/router/providers/paraswap.js.map +1 -0
- package/dist/swap/router/providers/uniswap.d.ts +31 -0
- package/dist/swap/router/providers/uniswap.d.ts.map +1 -0
- package/dist/swap/router/providers/uniswap.js +237 -0
- package/dist/swap/router/providers/uniswap.js.map +1 -0
- package/dist/swap/router/providers/zerox.d.ts +13 -0
- package/dist/swap/router/providers/zerox.d.ts.map +1 -0
- package/dist/swap/router/providers/zerox.js +94 -0
- package/dist/swap/router/providers/zerox.js.map +1 -0
- package/dist/swap/router/router.d.ts +86 -0
- package/dist/swap/router/router.d.ts.map +1 -0
- package/dist/swap/router/router.js +224 -0
- package/dist/swap/router/router.js.map +1 -0
- package/dist/swap/router/rsi/engine.d.ts +60 -0
- package/dist/swap/router/rsi/engine.d.ts.map +1 -0
- package/dist/swap/router/rsi/engine.js +483 -0
- package/dist/swap/router/rsi/engine.js.map +1 -0
- package/dist/swap/router/rsi/index.d.ts +3 -0
- package/dist/swap/router/rsi/index.d.ts.map +1 -0
- package/dist/swap/router/rsi/index.js +3 -0
- package/dist/swap/router/rsi/index.js.map +1 -0
- package/dist/swap/router/rsi/types.d.ts +106 -0
- package/dist/swap/router/rsi/types.d.ts.map +1 -0
- package/dist/swap/router/rsi/types.js +3 -0
- package/dist/swap/router/rsi/types.js.map +1 -0
- package/dist/swap/router/types.d.ts +120 -0
- package/dist/swap/router/types.d.ts.map +1 -0
- package/dist/swap/router/types.js +16 -0
- package/dist/swap/router/types.js.map +1 -0
- package/dist/swap/types.d.ts +51 -0
- package/dist/swap/types.d.ts.map +1 -0
- package/dist/swap/types.js +17 -0
- package/dist/swap/types.js.map +1 -0
- package/dist/tax/engine.d.ts +131 -0
- package/dist/tax/engine.d.ts.map +1 -0
- package/dist/tax/engine.js +307 -0
- package/dist/tax/engine.js.map +1 -0
- package/dist/tax/index.d.ts +9 -0
- package/dist/tax/index.d.ts.map +1 -0
- package/dist/tax/index.js +12 -0
- package/dist/tax/index.js.map +1 -0
- package/dist/tax/lots.d.ts +60 -0
- package/dist/tax/lots.d.ts.map +1 -0
- package/dist/tax/lots.js +129 -0
- package/dist/tax/lots.js.map +1 -0
- package/dist/tax/types.d.ts +113 -0
- package/dist/tax/types.d.ts.map +1 -0
- package/dist/tax/types.js +18 -0
- package/dist/tax/types.js.map +1 -0
- package/dist/types.d.ts +110 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/dist/x402/__tests__/budget.test.d.ts +2 -0
- package/dist/x402/__tests__/budget.test.d.ts.map +1 -0
- package/dist/x402/__tests__/budget.test.js +114 -0
- package/dist/x402/__tests__/budget.test.js.map +1 -0
- package/dist/x402/__tests__/client.test.d.ts +2 -0
- package/dist/x402/__tests__/client.test.d.ts.map +1 -0
- package/dist/x402/__tests__/client.test.js +107 -0
- package/dist/x402/__tests__/client.test.js.map +1 -0
- package/dist/x402/budget.d.ts +52 -0
- package/dist/x402/budget.d.ts.map +1 -0
- package/dist/x402/budget.js +113 -0
- package/dist/x402/budget.js.map +1 -0
- package/dist/x402/chains/abstract/index.d.ts +135 -0
- package/dist/x402/chains/abstract/index.d.ts.map +1 -0
- package/dist/x402/chains/abstract/index.js +190 -0
- package/dist/x402/chains/abstract/index.js.map +1 -0
- package/dist/x402/client.d.ts +60 -0
- package/dist/x402/client.d.ts.map +1 -0
- package/dist/x402/client.js +205 -0
- package/dist/x402/client.js.map +1 -0
- package/dist/x402/index.d.ts +8 -0
- package/dist/x402/index.d.ts.map +1 -0
- package/dist/x402/index.js +8 -0
- package/dist/x402/index.js.map +1 -0
- package/dist/x402/middleware.d.ts +37 -0
- package/dist/x402/middleware.d.ts.map +1 -0
- package/dist/x402/middleware.js +65 -0
- package/dist/x402/middleware.js.map +1 -0
- package/dist/x402/types.d.ts +91 -0
- package/dist/x402/types.d.ts.map +1 -0
- package/dist/x402/types.js +9 -0
- package/dist/x402/types.js.map +1 -0
- package/dist/yield/index.d.ts +26 -0
- package/dist/yield/index.d.ts.map +1 -0
- package/dist/yield/index.js +29 -0
- package/dist/yield/index.js.map +1 -0
- package/dist/yield/rates.d.ts +114 -0
- package/dist/yield/rates.d.ts.map +1 -0
- package/dist/yield/rates.js +351 -0
- package/dist/yield/rates.js.map +1 -0
- package/dist/yield/types.d.ts +134 -0
- package/dist/yield/types.d.ts.map +1 -0
- package/dist/yield/types.js +24 -0
- package/dist/yield/types.js.map +1 -0
- package/dist/yield/vault.d.ts +112 -0
- package/dist/yield/vault.d.ts.map +1 -0
- package/dist/yield/vault.js +264 -0
- package/dist/yield/vault.js.map +1 -0
- package/package.json +46 -7
- package/index.js +0 -2
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
import { resolveVerifierAddress, encodeOptimisticVerifierData } from './verifiers.js';
|
|
2
|
+
// ─── ABIs ────────────────────────────────────────────────────────────────────
|
|
3
|
+
const StakeVaultFactoryAbi = [
|
|
4
|
+
{
|
|
5
|
+
name: 'createEscrow',
|
|
6
|
+
type: 'function',
|
|
7
|
+
stateMutability: 'nonpayable',
|
|
8
|
+
inputs: [
|
|
9
|
+
{ name: '_buyer', type: 'address' },
|
|
10
|
+
{ name: '_seller', type: 'address' },
|
|
11
|
+
{ name: '_token', type: 'address' },
|
|
12
|
+
{ name: '_paymentAmount', type: 'uint256' },
|
|
13
|
+
{ name: '_buyerStake', type: 'uint256' },
|
|
14
|
+
{ name: '_sellerStake', type: 'uint256' },
|
|
15
|
+
{ name: '_verifier', type: 'address' },
|
|
16
|
+
{ name: '_verifierData', type: 'bytes' },
|
|
17
|
+
{ name: '_deadline', type: 'uint256' },
|
|
18
|
+
{ name: '_challengeWindow', type: 'uint256' },
|
|
19
|
+
],
|
|
20
|
+
outputs: [{ name: 'vault', type: 'address' }],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'VaultCreated',
|
|
24
|
+
type: 'event',
|
|
25
|
+
inputs: [
|
|
26
|
+
{ name: 'vault', type: 'address', indexed: true },
|
|
27
|
+
{ name: 'buyer', type: 'address', indexed: true },
|
|
28
|
+
{ name: 'seller', type: 'address', indexed: true },
|
|
29
|
+
{ name: 'token', type: 'address', indexed: false },
|
|
30
|
+
{ name: 'paymentAmount', type: 'uint256', indexed: false },
|
|
31
|
+
{ name: 'buyerStake', type: 'uint256', indexed: false },
|
|
32
|
+
{ name: 'sellerStake', type: 'uint256', indexed: false },
|
|
33
|
+
{ name: 'verifier', type: 'address', indexed: false },
|
|
34
|
+
{ name: 'deadline', type: 'uint256', indexed: false },
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
const StakeVaultAbi = [
|
|
39
|
+
{ name: 'fund', type: 'function', stateMutability: 'nonpayable', inputs: [], outputs: [] },
|
|
40
|
+
{ name: 'accept', type: 'function', stateMutability: 'nonpayable', inputs: [], outputs: [] },
|
|
41
|
+
{ name: 'fulfill', type: 'function', stateMutability: 'nonpayable', inputs: [{ name: 'proof', type: 'bytes' }], outputs: [] },
|
|
42
|
+
{ name: 'verify', type: 'function', stateMutability: 'nonpayable', inputs: [], outputs: [] },
|
|
43
|
+
{ name: 'challenge', type: 'function', stateMutability: 'nonpayable', inputs: [{ name: 'evidence', type: 'bytes' }], outputs: [] },
|
|
44
|
+
{ name: 'resolve', type: 'function', stateMutability: 'nonpayable', inputs: [{ name: 'sellerWins', type: 'bool' }], outputs: [] },
|
|
45
|
+
{ name: 'cancel', type: 'function', stateMutability: 'nonpayable', inputs: [], outputs: [] },
|
|
46
|
+
{ name: 'reclaimExpired', type: 'function', stateMutability: 'nonpayable', inputs: [], outputs: [] },
|
|
47
|
+
{
|
|
48
|
+
name: 'getEscrowDetails',
|
|
49
|
+
type: 'function',
|
|
50
|
+
stateMutability: 'view',
|
|
51
|
+
inputs: [],
|
|
52
|
+
outputs: [
|
|
53
|
+
{ name: '_buyer', type: 'address' },
|
|
54
|
+
{ name: '_seller', type: 'address' },
|
|
55
|
+
{ name: '_token', type: 'address' },
|
|
56
|
+
{ name: '_paymentAmount', type: 'uint256' },
|
|
57
|
+
{ name: '_buyerStake', type: 'uint256' },
|
|
58
|
+
{ name: '_sellerStake', type: 'uint256' },
|
|
59
|
+
{ name: '_verifier', type: 'address' },
|
|
60
|
+
{ name: '_deadline', type: 'uint256' },
|
|
61
|
+
{ name: '_challengeWindow', type: 'uint256' },
|
|
62
|
+
{ name: '_status', type: 'uint8' },
|
|
63
|
+
{ name: '_fulfilledAt', type: 'uint256' },
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
{ name: 'status', type: 'function', stateMutability: 'view', inputs: [], outputs: [{ name: '', type: 'uint8' }] },
|
|
67
|
+
];
|
|
68
|
+
const ERC20ApproveAbi = [
|
|
69
|
+
{
|
|
70
|
+
name: 'approve',
|
|
71
|
+
type: 'function',
|
|
72
|
+
stateMutability: 'nonpayable',
|
|
73
|
+
inputs: [
|
|
74
|
+
{ name: 'spender', type: 'address' },
|
|
75
|
+
{ name: 'amount', type: 'uint256' },
|
|
76
|
+
],
|
|
77
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
/** Base USDC address */
|
|
81
|
+
const BASE_USDC = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
|
|
82
|
+
/**
|
|
83
|
+
* MutualStakeEscrow — SDK class for creating and managing mutual-stake escrow vaults
|
|
84
|
+
*
|
|
85
|
+
* Wraps the StakeVault and StakeVaultFactory contracts with a clean TypeScript API.
|
|
86
|
+
* Both buyer and seller deposit collateral, ensuring aligned incentives.
|
|
87
|
+
*/
|
|
88
|
+
export class MutualStakeEscrow {
|
|
89
|
+
constructor(params) {
|
|
90
|
+
this.publicClient = params.publicClient;
|
|
91
|
+
this.walletClient = params.walletClient;
|
|
92
|
+
this.factoryAddress = params.factoryAddress;
|
|
93
|
+
this.chainId = params.chainId;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Create a new escrow vault via the factory
|
|
97
|
+
* @param params - Escrow creation parameters
|
|
98
|
+
* @returns The deployed vault address and transaction hash
|
|
99
|
+
*/
|
|
100
|
+
async create(params) {
|
|
101
|
+
const account = this.walletClient.account;
|
|
102
|
+
if (!account)
|
|
103
|
+
throw new Error('Wallet client must have an account');
|
|
104
|
+
const token = params.token ?? BASE_USDC;
|
|
105
|
+
const verifierAddress = resolveVerifierAddress(params.verifier, this.chainId);
|
|
106
|
+
const verifierData = params.verifierData ?? encodeOptimisticVerifierData();
|
|
107
|
+
const txHash = await this.walletClient.writeContract({
|
|
108
|
+
address: this.factoryAddress,
|
|
109
|
+
abi: StakeVaultFactoryAbi,
|
|
110
|
+
functionName: 'createEscrow',
|
|
111
|
+
args: [
|
|
112
|
+
account.address,
|
|
113
|
+
params.seller,
|
|
114
|
+
token,
|
|
115
|
+
params.paymentAmount,
|
|
116
|
+
params.buyerStake,
|
|
117
|
+
params.sellerStake,
|
|
118
|
+
verifierAddress,
|
|
119
|
+
verifierData,
|
|
120
|
+
BigInt(params.deadline),
|
|
121
|
+
BigInt(params.challengeWindow),
|
|
122
|
+
],
|
|
123
|
+
account,
|
|
124
|
+
chain: this.walletClient.chain,
|
|
125
|
+
});
|
|
126
|
+
const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
127
|
+
// Extract vault address from VaultCreated event
|
|
128
|
+
const vaultCreatedLog = receipt.logs.find((log) => log.topics[0] === '0x' // Match VaultCreated event signature
|
|
129
|
+
);
|
|
130
|
+
// Fallback: read vault address from return data via simulation
|
|
131
|
+
const vaultAddress = await this.publicClient.readContract({
|
|
132
|
+
address: this.factoryAddress,
|
|
133
|
+
abi: StakeVaultFactoryAbi,
|
|
134
|
+
functionName: 'createEscrow',
|
|
135
|
+
args: [
|
|
136
|
+
account.address,
|
|
137
|
+
params.seller,
|
|
138
|
+
token,
|
|
139
|
+
params.paymentAmount,
|
|
140
|
+
params.buyerStake,
|
|
141
|
+
params.sellerStake,
|
|
142
|
+
verifierAddress,
|
|
143
|
+
verifierData,
|
|
144
|
+
BigInt(params.deadline),
|
|
145
|
+
BigInt(params.challengeWindow),
|
|
146
|
+
],
|
|
147
|
+
});
|
|
148
|
+
return { address: vaultAddress, txHash };
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Fund an escrow as buyer (deposits payment + buyerStake)
|
|
152
|
+
* @param vaultAddress - Address of the StakeVault
|
|
153
|
+
* @param approveAmount - Total amount to approve (payment + buyerStake)
|
|
154
|
+
*/
|
|
155
|
+
async fund(vaultAddress, approveAmount) {
|
|
156
|
+
const account = this.walletClient.account;
|
|
157
|
+
if (!account)
|
|
158
|
+
throw new Error('Wallet client must have an account');
|
|
159
|
+
const details = await this.getDetails(vaultAddress);
|
|
160
|
+
// Approve token transfer
|
|
161
|
+
await this.walletClient.writeContract({
|
|
162
|
+
address: details.token,
|
|
163
|
+
abi: ERC20ApproveAbi,
|
|
164
|
+
functionName: 'approve',
|
|
165
|
+
args: [vaultAddress, approveAmount],
|
|
166
|
+
account,
|
|
167
|
+
chain: this.walletClient.chain,
|
|
168
|
+
});
|
|
169
|
+
const txHash = await this.walletClient.writeContract({
|
|
170
|
+
address: vaultAddress,
|
|
171
|
+
abi: StakeVaultAbi,
|
|
172
|
+
functionName: 'fund',
|
|
173
|
+
args: [],
|
|
174
|
+
account,
|
|
175
|
+
chain: this.walletClient.chain,
|
|
176
|
+
});
|
|
177
|
+
return { txHash };
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Accept an escrow as seller (deposits sellerStake)
|
|
181
|
+
* @param vaultAddress - Address of the StakeVault
|
|
182
|
+
*/
|
|
183
|
+
async accept(vaultAddress) {
|
|
184
|
+
const account = this.walletClient.account;
|
|
185
|
+
if (!account)
|
|
186
|
+
throw new Error('Wallet client must have an account');
|
|
187
|
+
const details = await this.getDetails(vaultAddress);
|
|
188
|
+
// Approve seller stake transfer
|
|
189
|
+
await this.walletClient.writeContract({
|
|
190
|
+
address: details.token,
|
|
191
|
+
abi: ERC20ApproveAbi,
|
|
192
|
+
functionName: 'approve',
|
|
193
|
+
args: [vaultAddress, details.sellerStake],
|
|
194
|
+
account,
|
|
195
|
+
chain: this.walletClient.chain,
|
|
196
|
+
});
|
|
197
|
+
const txHash = await this.walletClient.writeContract({
|
|
198
|
+
address: vaultAddress,
|
|
199
|
+
abi: StakeVaultAbi,
|
|
200
|
+
functionName: 'accept',
|
|
201
|
+
args: [],
|
|
202
|
+
account,
|
|
203
|
+
chain: this.walletClient.chain,
|
|
204
|
+
});
|
|
205
|
+
return { txHash };
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Submit fulfillment proof as seller
|
|
209
|
+
* @param vaultAddress - Address of the StakeVault
|
|
210
|
+
* @param proof - Completion proof bytes
|
|
211
|
+
*/
|
|
212
|
+
async fulfill(vaultAddress, proof) {
|
|
213
|
+
const account = this.walletClient.account;
|
|
214
|
+
if (!account)
|
|
215
|
+
throw new Error('Wallet client must have an account');
|
|
216
|
+
const txHash = await this.walletClient.writeContract({
|
|
217
|
+
address: vaultAddress,
|
|
218
|
+
abi: StakeVaultAbi,
|
|
219
|
+
functionName: 'fulfill',
|
|
220
|
+
args: [proof],
|
|
221
|
+
account,
|
|
222
|
+
chain: this.walletClient.chain,
|
|
223
|
+
});
|
|
224
|
+
return { txHash };
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Verify completion after challenge window (anyone can call)
|
|
228
|
+
* @param vaultAddress - Address of the StakeVault
|
|
229
|
+
*/
|
|
230
|
+
async verify(vaultAddress) {
|
|
231
|
+
const account = this.walletClient.account;
|
|
232
|
+
if (!account)
|
|
233
|
+
throw new Error('Wallet client must have an account');
|
|
234
|
+
const txHash = await this.walletClient.writeContract({
|
|
235
|
+
address: vaultAddress,
|
|
236
|
+
abi: StakeVaultAbi,
|
|
237
|
+
functionName: 'verify',
|
|
238
|
+
args: [],
|
|
239
|
+
account,
|
|
240
|
+
chain: this.walletClient.chain,
|
|
241
|
+
});
|
|
242
|
+
return { txHash };
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Challenge a fulfillment as buyer
|
|
246
|
+
* @param vaultAddress - Address of the StakeVault
|
|
247
|
+
* @param evidence - Challenge evidence bytes
|
|
248
|
+
*/
|
|
249
|
+
async challenge(vaultAddress, evidence) {
|
|
250
|
+
const account = this.walletClient.account;
|
|
251
|
+
if (!account)
|
|
252
|
+
throw new Error('Wallet client must have an account');
|
|
253
|
+
const txHash = await this.walletClient.writeContract({
|
|
254
|
+
address: vaultAddress,
|
|
255
|
+
abi: StakeVaultAbi,
|
|
256
|
+
functionName: 'challenge',
|
|
257
|
+
args: [evidence],
|
|
258
|
+
account,
|
|
259
|
+
chain: this.walletClient.chain,
|
|
260
|
+
});
|
|
261
|
+
return { txHash };
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Cancel escrow before seller accepts (buyer only)
|
|
265
|
+
* @param vaultAddress - Address of the StakeVault
|
|
266
|
+
*/
|
|
267
|
+
async cancel(vaultAddress) {
|
|
268
|
+
const account = this.walletClient.account;
|
|
269
|
+
if (!account)
|
|
270
|
+
throw new Error('Wallet client must have an account');
|
|
271
|
+
const txHash = await this.walletClient.writeContract({
|
|
272
|
+
address: vaultAddress,
|
|
273
|
+
abi: StakeVaultAbi,
|
|
274
|
+
functionName: 'cancel',
|
|
275
|
+
args: [],
|
|
276
|
+
account,
|
|
277
|
+
chain: this.walletClient.chain,
|
|
278
|
+
});
|
|
279
|
+
return { txHash };
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Reclaim funds after deadline expiry
|
|
283
|
+
* @param vaultAddress - Address of the StakeVault
|
|
284
|
+
*/
|
|
285
|
+
async reclaimExpired(vaultAddress) {
|
|
286
|
+
const account = this.walletClient.account;
|
|
287
|
+
if (!account)
|
|
288
|
+
throw new Error('Wallet client must have an account');
|
|
289
|
+
const txHash = await this.walletClient.writeContract({
|
|
290
|
+
address: vaultAddress,
|
|
291
|
+
abi: StakeVaultAbi,
|
|
292
|
+
functionName: 'reclaimExpired',
|
|
293
|
+
args: [],
|
|
294
|
+
account,
|
|
295
|
+
chain: this.walletClient.chain,
|
|
296
|
+
});
|
|
297
|
+
return { txHash };
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Get full escrow details from on-chain
|
|
301
|
+
* @param vaultAddress - Address of the StakeVault
|
|
302
|
+
*/
|
|
303
|
+
async getDetails(vaultAddress) {
|
|
304
|
+
const result = await this.publicClient.readContract({
|
|
305
|
+
address: vaultAddress,
|
|
306
|
+
abi: StakeVaultAbi,
|
|
307
|
+
functionName: 'getEscrowDetails',
|
|
308
|
+
args: [],
|
|
309
|
+
});
|
|
310
|
+
const [buyer, seller, token, paymentAmount, buyerStake, sellerStake, verifier, deadline, challengeWindow, statusNum, fulfilledAt] = result;
|
|
311
|
+
return {
|
|
312
|
+
buyer,
|
|
313
|
+
seller,
|
|
314
|
+
token,
|
|
315
|
+
paymentAmount,
|
|
316
|
+
buyerStake,
|
|
317
|
+
sellerStake,
|
|
318
|
+
verifier,
|
|
319
|
+
deadline,
|
|
320
|
+
challengeWindow,
|
|
321
|
+
status: statusNum,
|
|
322
|
+
fulfilledAt,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Get the current status of an escrow
|
|
327
|
+
* @param vaultAddress - Address of the StakeVault
|
|
328
|
+
*/
|
|
329
|
+
async getStatus(vaultAddress) {
|
|
330
|
+
const result = await this.publicClient.readContract({
|
|
331
|
+
address: vaultAddress,
|
|
332
|
+
abi: StakeVaultAbi,
|
|
333
|
+
functionName: 'status',
|
|
334
|
+
args: [],
|
|
335
|
+
});
|
|
336
|
+
return result;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
//# sourceMappingURL=MutualStakeEscrow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MutualStakeEscrow.js","sourceRoot":"","sources":["../../src/escrow/MutualStakeEscrow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { Address, Hash, Hex } from 'viem';
|
|
2
|
+
/** Mirrors the on-chain TaskStatus enum */
|
|
3
|
+
export declare enum TaskStatus {
|
|
4
|
+
Created = 0,
|
|
5
|
+
Funded = 1,
|
|
6
|
+
Fulfilled = 2,
|
|
7
|
+
Challenged = 3,
|
|
8
|
+
Resolved = 4,
|
|
9
|
+
Cancelled = 5
|
|
10
|
+
}
|
|
11
|
+
/** Supported built-in verifier types */
|
|
12
|
+
export type VerifierType = 'optimistic' | 'hash';
|
|
13
|
+
/** Parameters for creating a new mutual-stake escrow */
|
|
14
|
+
export interface CreateEscrowParams {
|
|
15
|
+
/** Seller/service-provider address */
|
|
16
|
+
seller: Address;
|
|
17
|
+
/** Payment amount in token's smallest unit (e.g., 6 decimals for USDC) */
|
|
18
|
+
paymentAmount: bigint;
|
|
19
|
+
/** Buyer's anti-grief collateral */
|
|
20
|
+
buyerStake: bigint;
|
|
21
|
+
/** Seller's anti-fraud collateral */
|
|
22
|
+
sellerStake: bigint;
|
|
23
|
+
/** Verifier type or custom verifier contract address */
|
|
24
|
+
verifier: VerifierType | Address;
|
|
25
|
+
/** Verifier-specific configuration data (auto-generated for built-in verifiers) */
|
|
26
|
+
verifierData?: Hex;
|
|
27
|
+
/** Challenge window in seconds after fulfillment */
|
|
28
|
+
challengeWindow: number;
|
|
29
|
+
/** Unix timestamp deadline for the task */
|
|
30
|
+
deadline: number;
|
|
31
|
+
/** ERC-20 token address (defaults to USDC on Base) */
|
|
32
|
+
token?: Address;
|
|
33
|
+
}
|
|
34
|
+
/** Result from creating an escrow */
|
|
35
|
+
export interface EscrowCreated {
|
|
36
|
+
/** Address of the deployed StakeVault contract */
|
|
37
|
+
address: Address;
|
|
38
|
+
/** Transaction hash of the factory call */
|
|
39
|
+
txHash: Hash;
|
|
40
|
+
}
|
|
41
|
+
/** Full escrow details from on-chain */
|
|
42
|
+
export interface EscrowDetails {
|
|
43
|
+
buyer: Address;
|
|
44
|
+
seller: Address;
|
|
45
|
+
token: Address;
|
|
46
|
+
paymentAmount: bigint;
|
|
47
|
+
buyerStake: bigint;
|
|
48
|
+
sellerStake: bigint;
|
|
49
|
+
verifier: Address;
|
|
50
|
+
deadline: bigint;
|
|
51
|
+
challengeWindow: bigint;
|
|
52
|
+
status: TaskStatus;
|
|
53
|
+
fulfilledAt: bigint;
|
|
54
|
+
}
|
|
55
|
+
/** Transaction result */
|
|
56
|
+
export interface TxResult {
|
|
57
|
+
txHash: Hash;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/escrow/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE/C,2CAA2C;AAC3C,oBAAY,UAAU;IACpB,OAAO,IAAI;IACX,MAAM,IAAI;IACV,SAAS,IAAI;IACb,UAAU,IAAI;IACd,QAAQ,IAAI;IACZ,SAAS,IAAI;CACd;AAED,wCAAwC;AACxC,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,MAAM,CAAC;AAEjD,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC;IACjC,mFAAmF;IACnF,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,MAAM,EAAE,IAAI,CAAC;CACd;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,yBAAyB;AACzB,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,IAAI,CAAC;CACd"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Mirrors the on-chain TaskStatus enum */
|
|
2
|
+
export var TaskStatus;
|
|
3
|
+
(function (TaskStatus) {
|
|
4
|
+
TaskStatus[TaskStatus["Created"] = 0] = "Created";
|
|
5
|
+
TaskStatus[TaskStatus["Funded"] = 1] = "Funded";
|
|
6
|
+
TaskStatus[TaskStatus["Fulfilled"] = 2] = "Fulfilled";
|
|
7
|
+
TaskStatus[TaskStatus["Challenged"] = 3] = "Challenged";
|
|
8
|
+
TaskStatus[TaskStatus["Resolved"] = 4] = "Resolved";
|
|
9
|
+
TaskStatus[TaskStatus["Cancelled"] = 5] = "Cancelled";
|
|
10
|
+
})(TaskStatus || (TaskStatus = {}));
|
|
11
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/escrow/types.ts"],"names":[],"mappings":"AAEA,2CAA2C;AAC3C,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IACpB,iDAAW,CAAA;IACX,+CAAU,CAAA;IACV,qDAAa,CAAA;IACb,uDAAc,CAAA;IACd,mDAAY,CAAA;IACZ,qDAAa,CAAA;AACf,CAAC,EAPW,UAAU,KAAV,UAAU,QAOrB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type Address, type Hex } from 'viem';
|
|
2
|
+
import type { VerifierType } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Known verifier contract addresses on Base mainnet.
|
|
5
|
+
* These are deployed once and shared by all StakeVault instances.
|
|
6
|
+
*/
|
|
7
|
+
export declare const VERIFIER_ADDRESSES: Record<string, Record<VerifierType, Address>>;
|
|
8
|
+
/**
|
|
9
|
+
* Resolve a verifier type to its deployed contract address for a given chain
|
|
10
|
+
* @param verifier - Built-in verifier type or custom contract address
|
|
11
|
+
* @param chainId - Chain ID to look up
|
|
12
|
+
* @returns The verifier contract address
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveVerifierAddress(verifier: VerifierType | Address, chainId: number): Address;
|
|
15
|
+
/**
|
|
16
|
+
* Encode verifier configuration data for the HashVerifier
|
|
17
|
+
* @param expectedHash - SHA256 hash of the expected output
|
|
18
|
+
* @returns ABI-encoded bytes for the verifierData field
|
|
19
|
+
*/
|
|
20
|
+
export declare function encodeHashVerifierData(expectedHash: Hex): Hex;
|
|
21
|
+
/**
|
|
22
|
+
* Encode verifier configuration data for the OptimisticVerifier
|
|
23
|
+
* @returns Empty bytes (optimistic verifier has no config)
|
|
24
|
+
*/
|
|
25
|
+
export declare function encodeOptimisticVerifierData(): Hex;
|
|
26
|
+
//# sourceMappingURL=verifiers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifiers.d.ts","sourceRoot":"","sources":["../../src/escrow/verifiers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAA2C,MAAM,MAAM,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAW5E,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAgBjG;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,GAAG,GAAG,GAAG,CAE7D;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,IAAI,GAAG,CAElD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { encodeAbiParameters, parseAbiParameters } from 'viem';
|
|
2
|
+
/**
|
|
3
|
+
* Known verifier contract addresses on Base mainnet.
|
|
4
|
+
* These are deployed once and shared by all StakeVault instances.
|
|
5
|
+
*/
|
|
6
|
+
export const VERIFIER_ADDRESSES = {
|
|
7
|
+
// Base mainnet (chain ID 8453)
|
|
8
|
+
'8453': {
|
|
9
|
+
optimistic: '0x0000000000000000000000000000000000000000', // Pre-deployment: set after deploying StakeVault verifier contracts to Base
|
|
10
|
+
hash: '0x0000000000000000000000000000000000000000', // Pre-deployment: set after deploying StakeVault verifier contracts to Base
|
|
11
|
+
},
|
|
12
|
+
// Base Sepolia testnet (chain ID 84532)
|
|
13
|
+
'84532': {
|
|
14
|
+
optimistic: '0x0000000000000000000000000000000000000000', // Pre-deployment: set after deploying StakeVault verifier contracts to Base
|
|
15
|
+
hash: '0x0000000000000000000000000000000000000000', // Pre-deployment: set after deploying StakeVault verifier contracts to Base
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Resolve a verifier type to its deployed contract address for a given chain
|
|
20
|
+
* @param verifier - Built-in verifier type or custom contract address
|
|
21
|
+
* @param chainId - Chain ID to look up
|
|
22
|
+
* @returns The verifier contract address
|
|
23
|
+
*/
|
|
24
|
+
export function resolveVerifierAddress(verifier, chainId) {
|
|
25
|
+
if (verifier.startsWith('0x') && verifier.length === 42) {
|
|
26
|
+
return verifier;
|
|
27
|
+
}
|
|
28
|
+
const chainAddresses = VERIFIER_ADDRESSES[chainId.toString()];
|
|
29
|
+
if (!chainAddresses) {
|
|
30
|
+
throw new Error(`No verifier addresses configured for chain ${chainId}`);
|
|
31
|
+
}
|
|
32
|
+
const address = chainAddresses[verifier];
|
|
33
|
+
if (!address || address === '0x0000000000000000000000000000000000000000') {
|
|
34
|
+
throw new Error(`Verifier "${verifier}" not deployed on chain ${chainId}. Deploy it first or pass a custom address.`);
|
|
35
|
+
}
|
|
36
|
+
return address;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Encode verifier configuration data for the HashVerifier
|
|
40
|
+
* @param expectedHash - SHA256 hash of the expected output
|
|
41
|
+
* @returns ABI-encoded bytes for the verifierData field
|
|
42
|
+
*/
|
|
43
|
+
export function encodeHashVerifierData(expectedHash) {
|
|
44
|
+
return encodeAbiParameters(parseAbiParameters('bytes32'), [expectedHash]);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Encode verifier configuration data for the OptimisticVerifier
|
|
48
|
+
* @returns Empty bytes (optimistic verifier has no config)
|
|
49
|
+
*/
|
|
50
|
+
export function encodeOptimisticVerifierData() {
|
|
51
|
+
return '0x';
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=verifiers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifiers.js","sourceRoot":"","sources":["../../src/escrow/verifiers.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAGvF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkD;IAC/E,+BAA+B;IAC/B,MAAM,EAAE;QACN,UAAU,EAAE,4CAA4C,EAAE,0BAA0B;QACpF,IAAI,EAAE,4CAA4C,EAAE,0BAA0B;KAC/E;IACD,wCAAwC;IACxC,OAAO,EAAE;QACP,UAAU,EAAE,4CAA4C,EAAE,0BAA0B;QACpF,IAAI,EAAE,4CAA4C,EAAE,0BAA0B;KAC/E;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgC,EAAE,OAAe;IACtF,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACxD,OAAO,QAAmB,CAAC;IAC7B,CAAC;IAED,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,QAAwB,CAAC,CAAC;IACzD,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,4CAA4C,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,2BAA2B,OAAO,6CAA6C,CAAC,CAAC;IACxH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,YAAiB;IACtD,OAAO,mBAAmB,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fiat Onramp module — optional fiat-to-crypto for agentwallet-sdk.
|
|
3
|
+
*
|
|
4
|
+
* This module is OPT-IN ONLY. Import and use FiatOnramp only if you want
|
|
5
|
+
* fiat onramp capability. The core SDK is fully anonymous and non-custodial.
|
|
6
|
+
*/
|
|
7
|
+
export { FiatOnramp } from './onramp.js';
|
|
8
|
+
export type { FiatOnrampConfig, FiatQuote, OnrampParams, FiatProvider } from './types.js';
|
|
9
|
+
export { MoonPayProvider, StripeProvider, TransakProvider } from './providers/index.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fiat/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fiat Onramp module — optional fiat-to-crypto for agentwallet-sdk.
|
|
3
|
+
*
|
|
4
|
+
* This module is OPT-IN ONLY. Import and use FiatOnramp only if you want
|
|
5
|
+
* fiat onramp capability. The core SDK is fully anonymous and non-custodial.
|
|
6
|
+
*/
|
|
7
|
+
export { FiatOnramp } from './onramp.js';
|
|
8
|
+
export { MoonPayProvider, StripeProvider, TransakProvider } from './providers/index.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fiat/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FiatOnramp — optional fiat-to-crypto onramp module for agentwallet-sdk.
|
|
3
|
+
*
|
|
4
|
+
* ╔══════════════════════════════════════════════════════════════════════╗
|
|
5
|
+
* ║ KYC NOTICE — IMPORTANT ║
|
|
6
|
+
* ║ ║
|
|
7
|
+
* ║ This module is entirely OPT-IN. Users who fund their agent wallet ║
|
|
8
|
+
* ║ via direct crypto transfer, bridge, or any other method NEVER ║
|
|
9
|
+
* ║ encounter KYC and remain fully anonymous. ║
|
|
10
|
+
* ║ ║
|
|
11
|
+
* ║ KYC only occurs when a user explicitly chooses to use this fiat ║
|
|
12
|
+
* ║ onramp feature. KYC is handled entirely by the third-party ║
|
|
13
|
+
* ║ provider (MoonPay, Stripe, Transak) on their hosted page. ║
|
|
14
|
+
* ║ The SDK never collects, stores, or transmits any KYC data. ║
|
|
15
|
+
* ╚══════════════════════════════════════════════════════════════════════╝
|
|
16
|
+
*/
|
|
17
|
+
import type { FiatOnrampConfig, FiatQuote, OnrampParams } from './types.js';
|
|
18
|
+
/**
|
|
19
|
+
* FiatOnramp — aggregates multiple fiat onramp providers into a single interface.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { FiatOnramp } from 'agentwallet-sdk';
|
|
24
|
+
*
|
|
25
|
+
* // Only configure providers you have API keys for
|
|
26
|
+
* const onramp = new FiatOnramp({
|
|
27
|
+
* moonpayApiKey: process.env.MOONPAY_API_KEY,
|
|
28
|
+
* transakApiKey: process.env.TRANSAK_API_KEY,
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* // Get quotes from all configured providers
|
|
32
|
+
* const quotes = await onramp.getQuotes({
|
|
33
|
+
* amount: 100,
|
|
34
|
+
* currency: 'USD',
|
|
35
|
+
* token: 'USDC',
|
|
36
|
+
* chain: 'base',
|
|
37
|
+
* walletAddress: '0xYourWalletAddress',
|
|
38
|
+
* });
|
|
39
|
+
*
|
|
40
|
+
* // Open the purchaseUrl in a browser to complete KYC + payment on the provider's page
|
|
41
|
+
* console.log(quotes[0].purchaseUrl);
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare class FiatOnramp {
|
|
45
|
+
private providers;
|
|
46
|
+
private config;
|
|
47
|
+
/**
|
|
48
|
+
* Create a FiatOnramp instance.
|
|
49
|
+
*
|
|
50
|
+
* @param config - Provider API keys and defaults. All fields are optional.
|
|
51
|
+
* Passing no config (or an empty object) is valid — it returns
|
|
52
|
+
* an empty provider list, causing zero friction for users who
|
|
53
|
+
* don't want fiat onramp.
|
|
54
|
+
*/
|
|
55
|
+
constructor(config?: FiatOnrampConfig);
|
|
56
|
+
/**
|
|
57
|
+
* Get quotes from all configured providers that support the given chain/token.
|
|
58
|
+
* Failed providers are silently skipped (logged to console.warn).
|
|
59
|
+
*
|
|
60
|
+
* @returns Array of FiatQuote — may be empty if no providers are configured
|
|
61
|
+
* or if none support the requested chain/token combination.
|
|
62
|
+
*/
|
|
63
|
+
getQuotes(params: OnrampParams): Promise<FiatQuote[]>;
|
|
64
|
+
/**
|
|
65
|
+
* Create a purchase session with a specific provider.
|
|
66
|
+
* Returns a FiatQuote containing a purchaseUrl — open this in a browser
|
|
67
|
+
* to complete KYC + payment on the provider's hosted page.
|
|
68
|
+
*
|
|
69
|
+
* @throws Error if the provider is not configured or doesn't support the chain/token.
|
|
70
|
+
*/
|
|
71
|
+
createSession(params: OnrampParams & {
|
|
72
|
+
provider: string;
|
|
73
|
+
}): Promise<FiatQuote>;
|
|
74
|
+
/**
|
|
75
|
+
* Check if a provider supports a given chain/token combination.
|
|
76
|
+
*
|
|
77
|
+
* @param provider - Provider name: 'moonpay', 'stripe', 'transak'
|
|
78
|
+
* @param chain - Blockchain name: 'ethereum', 'base', 'solana', etc.
|
|
79
|
+
* @param token - Token symbol: 'USDC', 'ETH', 'SOL', etc.
|
|
80
|
+
*/
|
|
81
|
+
isSupported(provider: string, chain: string, token: string): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Get the names of all configured providers.
|
|
84
|
+
* Returns an empty array if no API keys were provided.
|
|
85
|
+
*/
|
|
86
|
+
getProviders(): string[];
|
|
87
|
+
/**
|
|
88
|
+
* Get the chains supported by a given provider.
|
|
89
|
+
*
|
|
90
|
+
* @param provider - Provider name: 'moonpay', 'stripe', 'transak'
|
|
91
|
+
*/
|
|
92
|
+
getSupportedChains(provider: string): string[];
|
|
93
|
+
/**
|
|
94
|
+
* Get the tokens supported by a given provider on a given chain.
|
|
95
|
+
*
|
|
96
|
+
* @param provider - Provider name: 'moonpay', 'stripe', 'transak'
|
|
97
|
+
* @param chain - Blockchain name: 'ethereum', 'base', 'solana', etc.
|
|
98
|
+
*/
|
|
99
|
+
getSupportedTokens(provider: string, chain: string): string[];
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=onramp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onramp.d.ts","sourceRoot":"","sources":["../../src/fiat/onramp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAgB,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1F;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,MAAM,CAAmB;IAEjC;;;;;;;OAOG;gBACS,MAAM,GAAE,gBAAqB;IAKzC;;;;;;OAMG;IACG,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA2B3D;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IA8BpF;;;;;;OAMG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAOpE;;;OAGG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB;;;;OAIG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAM9C;;;;;OAKG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CAK9D"}
|