agentwallet-sdk 3.0.0 → 3.1.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 +226 -10
- 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 +25 -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/index.d.ts +84 -62
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -1
- package/dist/mev/index.d.ts +4 -0
- package/dist/mev/index.d.ts.map +1 -0
- package/dist/mev/index.js +4 -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/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/solver/adapter.d.ts +47 -0
- package/dist/solver/adapter.d.ts.map +1 -0
- package/dist/solver/adapter.js +138 -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 +89 -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 +21 -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/swap/index.d.ts +1 -0
- package/dist/swap/index.d.ts.map +1 -1
- package/dist/swap/index.js +2 -0
- package/dist/swap/index.js.map +1 -1
- 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 +116 -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/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 +8 -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/yield/index.d.ts +26 -0
- package/dist/yield/index.d.ts.map +1 -0
- package/dist/yield/index.js +25 -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 +2 -2
package/README.md
CHANGED
|
@@ -12,16 +12,19 @@ Agent spent $490 today → 🛑 Next tx queued ($500/day limit hit)
|
|
|
12
12
|
|
|
13
13
|
## How We Compare
|
|
14
14
|
|
|
15
|
-
| | **agentwallet-sdk** | **Coinbase Agentic
|
|
16
|
-
|
|
17
|
-
| **Custody** | Non-custodial (
|
|
18
|
-
| **Spend Limits** | On-chain (smart contract) | API-enforced | Not documented |
|
|
19
|
-
| **Chains** |
|
|
20
|
-
| **Agent Identity** | ERC-8004 + ERC-6551 | None | None |
|
|
21
|
-
| **Open Source** | MIT | Partial | Closed |
|
|
22
|
-
| **x402 Payments** | Native | Supported | "Compatible" |
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
| | **agentwallet-sdk** | **Coinbase Agentic** | **OKX OnchainOS** | **Binance Agent** | **MoonPay Agents** |
|
|
16
|
+
|---|---|---|---|---|---|
|
|
17
|
+
| **Custody** | Non-custodial (agent holds keys) | Semi-custodial (TEE) | Custodial (exchange) | Custodial (exchange) | Non-custodial (claimed) |
|
|
18
|
+
| **Spend Limits** | On-chain (smart contract) | API-enforced | Not documented | Not documented | Not documented |
|
|
19
|
+
| **Chains** | **17** (16 EVM + Solana) | Base only | 60+ (custodial) | Binance chain | Unclear |
|
|
20
|
+
| **Agent Identity** | ERC-8004 + ERC-6551 | None | None | None | None |
|
|
21
|
+
| **Open Source** | MIT | Partial | Closed | Closed | Closed |
|
|
22
|
+
| **x402 Payments** | Native | Supported | Supported | No | "Compatible" |
|
|
23
|
+
| **Jupiter Swaps** | Yes (Solana) | No | No | No | No |
|
|
24
|
+
| **CCTP Bridging** | 17-chain V2 | No | Partial | No | No |
|
|
25
|
+
| **If exchange goes down** | Agent keeps working | Degraded | Agent stops | Agent stops | Unknown |
|
|
26
|
+
|
|
27
|
+
> On-chain spend limits can't be bypassed even if the API layer is compromised. Exchanges can freeze your agent's account. A non-custodial smart contract can't. That's the difference between policy and math.
|
|
25
28
|
|
|
26
29
|
## Why Agent Wallet?
|
|
27
30
|
|
|
@@ -611,6 +614,219 @@ const devnet = getSolanaConfig('solana-devnet');
|
|
|
611
614
|
|
|
612
615
|
---
|
|
613
616
|
|
|
617
|
+
## Gas Sponsorship (v3.1.0)
|
|
618
|
+
|
|
619
|
+
Agents don't need to hold native gas tokens. Alchemy's ERC-4337 Gas Manager sponsors gas on their behalf.
|
|
620
|
+
|
|
621
|
+
**Requires:**
|
|
622
|
+
- An Alchemy API key with Gas Manager enabled
|
|
623
|
+
- A Gas Manager policy ID (create at [dashboard.alchemy.com/gas-manager](https://dashboard.alchemy.com/gas-manager))
|
|
624
|
+
- An ERC-4337 smart account for the agent (plain EOAs cannot use paymasters)
|
|
625
|
+
|
|
626
|
+
**Supported chains (6 of 17 CCTP chains):** `ethereum`, `base`, `arbitrum`, `optimism`, `polygon`, `worldchain`
|
|
627
|
+
|
|
628
|
+
```typescript
|
|
629
|
+
import { GasSponsor } from 'agentwallet-sdk';
|
|
630
|
+
|
|
631
|
+
const sponsor = new GasSponsor({
|
|
632
|
+
alchemyApiKey: process.env.ALCHEMY_API_KEY!,
|
|
633
|
+
policyId: process.env.ALCHEMY_GAS_POLICY_ID!, // from Alchemy dashboard
|
|
634
|
+
});
|
|
635
|
+
|
|
636
|
+
// Check support before attempting
|
|
637
|
+
if (sponsor.isSupported('base')) {
|
|
638
|
+
const sponsored = await sponsor.sponsorTransaction({
|
|
639
|
+
chain: 'base',
|
|
640
|
+
from: agentSmartAccountAddress, // must be ERC-4337 smart account
|
|
641
|
+
to: usdcContract,
|
|
642
|
+
data: transferCalldata,
|
|
643
|
+
});
|
|
644
|
+
// Submit sponsored.userOperation to an ERC-4337 bundler
|
|
645
|
+
// e.g. via eth_sendUserOperation
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
// Sponsor a bridge transaction
|
|
649
|
+
const sponsoredBridge = await sponsor.sponsorBridge({
|
|
650
|
+
chain: 'optimism',
|
|
651
|
+
from: agentSmartAccountAddress,
|
|
652
|
+
bridgeTx: {
|
|
653
|
+
to: TOKEN_MESSENGER_V2['optimism'],
|
|
654
|
+
data: depositForBurnCalldata,
|
|
655
|
+
value: 0n,
|
|
656
|
+
},
|
|
657
|
+
});
|
|
658
|
+
|
|
659
|
+
// List all supported chains
|
|
660
|
+
const chains = sponsor.getSupportedChains();
|
|
661
|
+
// ['ethereum', 'base', 'arbitrum', 'optimism', 'polygon', 'worldchain']
|
|
662
|
+
```
|
|
663
|
+
|
|
664
|
+
---
|
|
665
|
+
|
|
666
|
+
## Settlement Verification (v3.1.0)
|
|
667
|
+
|
|
668
|
+
Verify that bridge transfers and x402 payments actually settled on-chain. Useful for agents that need to confirm receipt before proceeding.
|
|
669
|
+
|
|
670
|
+
```typescript
|
|
671
|
+
import { SettlementVerifier } from 'agentwallet-sdk';
|
|
672
|
+
|
|
673
|
+
const verifier = new SettlementVerifier({
|
|
674
|
+
alchemyApiKey: process.env.ALCHEMY_API_KEY, // optional — falls back to public RPCs
|
|
675
|
+
});
|
|
676
|
+
|
|
677
|
+
// Verify any EVM transaction
|
|
678
|
+
const evmResult = await verifier.verifyEvmTransaction({
|
|
679
|
+
chain: 'base',
|
|
680
|
+
txHash: '0xabc123...',
|
|
681
|
+
confirmations: 1, // default: 1
|
|
682
|
+
});
|
|
683
|
+
// { status: 'confirmed', blockNumber: 12345n, confirmations: 5, gasUsed: 21000n, success: true }
|
|
684
|
+
|
|
685
|
+
// Verify a Solana transaction
|
|
686
|
+
const solResult = await verifier.verifySolanaTransaction({
|
|
687
|
+
signature: 'base58sig...',
|
|
688
|
+
commitment: 'finalized', // 'confirmed' | 'finalized', default: 'confirmed'
|
|
689
|
+
});
|
|
690
|
+
|
|
691
|
+
// Verify a CCTP bridge transfer end-to-end
|
|
692
|
+
const bridgeResult = await verifier.verifyBridgeSettlement({
|
|
693
|
+
sourceTxHash: '0xburntx...',
|
|
694
|
+
sourceChain: 'base', // or 'solana'
|
|
695
|
+
destinationChain: 'arbitrum',
|
|
696
|
+
expectedAmount: 1_000_000n, // 1 USDC (6 decimals)
|
|
697
|
+
});
|
|
698
|
+
// { status: 'attestation_complete_awaiting_mint', sourceTx: {...}, attestationStatus: 'complete' }
|
|
699
|
+
|
|
700
|
+
// Verify an x402 payment via ERC20 Transfer event logs
|
|
701
|
+
const paymentResult = await verifier.verifyX402Payment({
|
|
702
|
+
chain: 'base',
|
|
703
|
+
txHash: '0xpaymenttx...',
|
|
704
|
+
expectedPayee: '0xMerchantAddress',
|
|
705
|
+
expectedAmount: 1_000_000n, // 1 USDC
|
|
706
|
+
});
|
|
707
|
+
// { status: 'confirmed', payeeVerified: true, amountVerified: true, actualAmount: 1000000n }
|
|
708
|
+
```
|
|
709
|
+
|
|
710
|
+
### Settlement Status Types
|
|
711
|
+
|
|
712
|
+
| Status | Meaning |
|
|
713
|
+
|--------|---------|
|
|
714
|
+
| `confirmed` | Transaction mined with required confirmations |
|
|
715
|
+
| `pending` | Transaction in mempool or not enough confirmations |
|
|
716
|
+
| `failed` | Transaction reverted (status=0) |
|
|
717
|
+
| `not_found` | Transaction not found or RPC error |
|
|
718
|
+
|
|
719
|
+
Bridge-specific statuses:
|
|
720
|
+
|
|
721
|
+
| Status | Meaning |
|
|
722
|
+
|--------|---------|
|
|
723
|
+
| `source_confirmed_awaiting_attestation` | Burn tx confirmed, Circle attestation pending |
|
|
724
|
+
| `attestation_complete_awaiting_mint` | Attestation ready, destination mint not yet verified |
|
|
725
|
+
| `complete` | Full bridge cycle confirmed |
|
|
726
|
+
| `source_failed` | Source burn transaction reverted |
|
|
727
|
+
|
|
728
|
+
---
|
|
729
|
+
|
|
730
|
+
## Fiat Onramp (Optional — v3.2.0)
|
|
731
|
+
|
|
732
|
+
> **This module is entirely opt-in. The core SDK is fully anonymous and non-custodial.**
|
|
733
|
+
> Users who fund their agent wallet via direct crypto transfer, bridge, or any other method
|
|
734
|
+
> **never encounter KYC** and remain completely anonymous.
|
|
735
|
+
> KYC only occurs when you explicitly choose to use the fiat onramp feature.
|
|
736
|
+
|
|
737
|
+
The `FiatOnramp` class aggregates multiple fiat-to-crypto providers (MoonPay, Stripe, Transak)
|
|
738
|
+
into a single interface. It returns a `purchaseUrl` — opening this URL takes the user to the
|
|
739
|
+
provider's hosted KYC + payment page. **The SDK never sees, stores, or transmits any KYC data.**
|
|
740
|
+
|
|
741
|
+
### Install
|
|
742
|
+
|
|
743
|
+
No additional packages needed — `FiatOnramp` is included in `agentwallet-sdk`.
|
|
744
|
+
|
|
745
|
+
Get API keys from the provider dashboards:
|
|
746
|
+
|
|
747
|
+
- **MoonPay:** https://dashboard.moonpay.com (publishable key)
|
|
748
|
+
- **Stripe:** https://dashboard.stripe.com (secret key — server-side only)
|
|
749
|
+
- **Transak:** https://dashboard.transak.com (API key)
|
|
750
|
+
|
|
751
|
+
### Usage
|
|
752
|
+
|
|
753
|
+
```typescript
|
|
754
|
+
import { FiatOnramp } from 'agentwallet-sdk';
|
|
755
|
+
|
|
756
|
+
// Only configure the providers you have keys for.
|
|
757
|
+
// Omitting all keys is valid — returns empty provider list with zero friction.
|
|
758
|
+
const onramp = new FiatOnramp({
|
|
759
|
+
moonpayApiKey: process.env.MOONPAY_API_KEY,
|
|
760
|
+
transakApiKey: process.env.TRANSAK_API_KEY,
|
|
761
|
+
});
|
|
762
|
+
|
|
763
|
+
// Get quotes from all configured providers that support base/USDC
|
|
764
|
+
const quotes = await onramp.getQuotes({
|
|
765
|
+
amount: 100,
|
|
766
|
+
currency: 'USD',
|
|
767
|
+
token: 'USDC',
|
|
768
|
+
chain: 'base',
|
|
769
|
+
walletAddress: '0xYourAgentWalletAddress',
|
|
770
|
+
});
|
|
771
|
+
|
|
772
|
+
// quotes[0].kycRequired is always true — KYC happens on the provider's hosted page
|
|
773
|
+
console.log(quotes[0].purchaseUrl); // Open this URL in a browser to complete purchase
|
|
774
|
+
|
|
775
|
+
// Or target a specific provider
|
|
776
|
+
const session = await onramp.createSession({
|
|
777
|
+
amount: 100,
|
|
778
|
+
currency: 'USD',
|
|
779
|
+
token: 'USDC',
|
|
780
|
+
chain: 'base',
|
|
781
|
+
walletAddress: '0xYourAgentWalletAddress',
|
|
782
|
+
provider: 'moonpay',
|
|
783
|
+
redirectUrl: 'https://yourapp.com/done', // optional
|
|
784
|
+
});
|
|
785
|
+
|
|
786
|
+
console.log(session.purchaseUrl); // MoonPay hosted KYC + payment page
|
|
787
|
+
console.log(session.feeAmount); // e.g., 2.50
|
|
788
|
+
console.log(session.feePercent); // e.g., 2.5
|
|
789
|
+
```
|
|
790
|
+
|
|
791
|
+
### Supported Chains & Tokens
|
|
792
|
+
|
|
793
|
+
| Provider | Chains | Tokens |
|
|
794
|
+
|----------|--------|--------|
|
|
795
|
+
| MoonPay | ethereum, base, solana, polygon, arbitrum, optimism | ETH, USDC, USDT, SOL, MATIC |
|
|
796
|
+
| Stripe | ethereum, base, solana, polygon, arbitrum, optimism | ETH, USDC, SOL, MATIC |
|
|
797
|
+
| Transak | ethereum, base, solana, polygon, arbitrum, optimism, avalanche, bsc | ETH, USDC, USDT, SOL, MATIC, AVAX, BNB |
|
|
798
|
+
|
|
799
|
+
### API
|
|
800
|
+
|
|
801
|
+
```typescript
|
|
802
|
+
// Get quotes from all configured providers
|
|
803
|
+
getQuotes(params: OnrampParams): Promise<FiatQuote[]>
|
|
804
|
+
|
|
805
|
+
// Create a session with a specific provider
|
|
806
|
+
createSession(params: OnrampParams & { provider: string }): Promise<FiatQuote>
|
|
807
|
+
|
|
808
|
+
// Check if a provider supports a chain/token combo
|
|
809
|
+
isSupported(provider: string, chain: string, token: string): boolean
|
|
810
|
+
|
|
811
|
+
// Get configured provider names
|
|
812
|
+
getProviders(): string[]
|
|
813
|
+
|
|
814
|
+
// Get supported chains for a provider
|
|
815
|
+
getSupportedChains(provider: string): string[]
|
|
816
|
+
|
|
817
|
+
// Get supported tokens on a chain for a provider
|
|
818
|
+
getSupportedTokens(provider: string, chain: string): string[]
|
|
819
|
+
```
|
|
820
|
+
|
|
821
|
+
### Privacy Guarantee
|
|
822
|
+
|
|
823
|
+
- The SDK **never** collects, stores, or transmits KYC data
|
|
824
|
+
- The SDK **never** stores payment info (no card numbers, no bank accounts)
|
|
825
|
+
- KYC + payment happen entirely on the provider's hosted page
|
|
826
|
+
- Direct crypto funding (transfer, bridge, swap) = fully anonymous, no KYC, ever
|
|
827
|
+
|
|
828
|
+
---
|
|
829
|
+
|
|
614
830
|
## License
|
|
615
831
|
|
|
616
832
|
MIT
|
|
@@ -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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
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 { buildProviders } from './providers/index.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 class FiatOnramp {
|
|
45
|
+
/**
|
|
46
|
+
* Create a FiatOnramp instance.
|
|
47
|
+
*
|
|
48
|
+
* @param config - Provider API keys and defaults. All fields are optional.
|
|
49
|
+
* Passing no config (or an empty object) is valid — it returns
|
|
50
|
+
* an empty provider list, causing zero friction for users who
|
|
51
|
+
* don't want fiat onramp.
|
|
52
|
+
*/
|
|
53
|
+
constructor(config = {}) {
|
|
54
|
+
this.config = config;
|
|
55
|
+
this.providers = buildProviders(config);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get quotes from all configured providers that support the given chain/token.
|
|
59
|
+
* Failed providers are silently skipped (logged to console.warn).
|
|
60
|
+
*
|
|
61
|
+
* @returns Array of FiatQuote — may be empty if no providers are configured
|
|
62
|
+
* or if none support the requested chain/token combination.
|
|
63
|
+
*/
|
|
64
|
+
async getQuotes(params) {
|
|
65
|
+
const resolvedParams = {
|
|
66
|
+
...params,
|
|
67
|
+
currency: params.currency ?? this.config.defaultCurrency ?? 'USD',
|
|
68
|
+
};
|
|
69
|
+
const supportedProviders = this.providers.filter((p) => this.isSupported(p.name, resolvedParams.chain, resolvedParams.token));
|
|
70
|
+
const results = await Promise.allSettled(supportedProviders.map((p) => p.getQuote(resolvedParams)));
|
|
71
|
+
const quotes = [];
|
|
72
|
+
for (let i = 0; i < results.length; i++) {
|
|
73
|
+
const result = results[i];
|
|
74
|
+
if (result.status === 'fulfilled') {
|
|
75
|
+
quotes.push(result.value);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
console.warn(`[FiatOnramp] ${supportedProviders[i].name} quote failed:`, result.reason);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return quotes;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Create a purchase session with a specific provider.
|
|
85
|
+
* Returns a FiatQuote containing a purchaseUrl — open this in a browser
|
|
86
|
+
* to complete KYC + payment on the provider's hosted page.
|
|
87
|
+
*
|
|
88
|
+
* @throws Error if the provider is not configured or doesn't support the chain/token.
|
|
89
|
+
*/
|
|
90
|
+
async createSession(params) {
|
|
91
|
+
const { provider: providerName, ...onrampParams } = params;
|
|
92
|
+
const resolvedParams = {
|
|
93
|
+
...onrampParams,
|
|
94
|
+
currency: onrampParams.currency ?? this.config.defaultCurrency ?? 'USD',
|
|
95
|
+
};
|
|
96
|
+
const provider = this.providers.find((p) => p.name === providerName);
|
|
97
|
+
if (!provider) {
|
|
98
|
+
const configuredNames = this.providers.map((p) => p.name);
|
|
99
|
+
if (configuredNames.length === 0) {
|
|
100
|
+
throw new Error(`No fiat providers configured. Add an API key for '${providerName}' in FiatOnrampConfig.`);
|
|
101
|
+
}
|
|
102
|
+
throw new Error(`Provider '${providerName}' is not configured. Configured providers: ${configuredNames.join(', ')}`);
|
|
103
|
+
}
|
|
104
|
+
if (!this.isSupported(providerName, resolvedParams.chain, resolvedParams.token)) {
|
|
105
|
+
throw new Error(`Provider '${providerName}' does not support ${resolvedParams.token} on ${resolvedParams.chain}. ` +
|
|
106
|
+
`Supported tokens: ${(provider.supportedAssets[resolvedParams.chain] ?? []).join(', ')}`);
|
|
107
|
+
}
|
|
108
|
+
return provider.createSession(resolvedParams);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Check if a provider supports a given chain/token combination.
|
|
112
|
+
*
|
|
113
|
+
* @param provider - Provider name: 'moonpay', 'stripe', 'transak'
|
|
114
|
+
* @param chain - Blockchain name: 'ethereum', 'base', 'solana', etc.
|
|
115
|
+
* @param token - Token symbol: 'USDC', 'ETH', 'SOL', etc.
|
|
116
|
+
*/
|
|
117
|
+
isSupported(provider, chain, token) {
|
|
118
|
+
const p = this.providers.find((pr) => pr.name === provider);
|
|
119
|
+
if (!p)
|
|
120
|
+
return false;
|
|
121
|
+
const tokens = p.supportedAssets[chain.toLowerCase()];
|
|
122
|
+
return Array.isArray(tokens) && tokens.includes(token.toUpperCase());
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get the names of all configured providers.
|
|
126
|
+
* Returns an empty array if no API keys were provided.
|
|
127
|
+
*/
|
|
128
|
+
getProviders() {
|
|
129
|
+
return this.providers.map((p) => p.name);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get the chains supported by a given provider.
|
|
133
|
+
*
|
|
134
|
+
* @param provider - Provider name: 'moonpay', 'stripe', 'transak'
|
|
135
|
+
*/
|
|
136
|
+
getSupportedChains(provider) {
|
|
137
|
+
const p = this.providers.find((pr) => pr.name === provider);
|
|
138
|
+
if (!p)
|
|
139
|
+
return [];
|
|
140
|
+
return Object.keys(p.supportedAssets);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Get the tokens supported by a given provider on a given chain.
|
|
144
|
+
*
|
|
145
|
+
* @param provider - Provider name: 'moonpay', 'stripe', 'transak'
|
|
146
|
+
* @param chain - Blockchain name: 'ethereum', 'base', 'solana', etc.
|
|
147
|
+
*/
|
|
148
|
+
getSupportedTokens(provider, chain) {
|
|
149
|
+
const p = this.providers.find((pr) => pr.name === provider);
|
|
150
|
+
if (!p)
|
|
151
|
+
return [];
|
|
152
|
+
return p.supportedAssets[chain.toLowerCase()] ?? [];
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=onramp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onramp.js","sourceRoot":"","sources":["../../src/fiat/onramp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider registry — assembles configured providers from FiatOnrampConfig.
|
|
3
|
+
*/
|
|
4
|
+
import type { FiatOnrampConfig, FiatProvider } from '../types.js';
|
|
5
|
+
export { MoonPayProvider } from './moonpay.js';
|
|
6
|
+
export { StripeProvider } from './stripe.js';
|
|
7
|
+
export { TransakProvider } from './transak.js';
|
|
8
|
+
/**
|
|
9
|
+
* Build the list of configured providers from the given config.
|
|
10
|
+
* Providers without an API key are excluded gracefully.
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildProviders(config: FiatOnrampConfig): FiatProvider[];
|
|
13
|
+
/** All known provider names */
|
|
14
|
+
export declare const ALL_PROVIDER_NAMES: readonly ["moonpay", "stripe", "transak"];
|
|
15
|
+
export type ProviderName = (typeof ALL_PROVIDER_NAMES)[number];
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fiat/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKlE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAevE;AAED,+BAA+B;AAC/B,eAAO,MAAM,kBAAkB,2CAA4C,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider registry — assembles configured providers from FiatOnrampConfig.
|
|
3
|
+
*/
|
|
4
|
+
import { MoonPayProvider } from './moonpay.js';
|
|
5
|
+
import { StripeProvider } from './stripe.js';
|
|
6
|
+
import { TransakProvider } from './transak.js';
|
|
7
|
+
export { MoonPayProvider } from './moonpay.js';
|
|
8
|
+
export { StripeProvider } from './stripe.js';
|
|
9
|
+
export { TransakProvider } from './transak.js';
|
|
10
|
+
/**
|
|
11
|
+
* Build the list of configured providers from the given config.
|
|
12
|
+
* Providers without an API key are excluded gracefully.
|
|
13
|
+
*/
|
|
14
|
+
export function buildProviders(config) {
|
|
15
|
+
const providers = [];
|
|
16
|
+
const testMode = config.testMode ?? false;
|
|
17
|
+
if (config.moonpayApiKey) {
|
|
18
|
+
providers.push(new MoonPayProvider(config.moonpayApiKey, testMode));
|
|
19
|
+
}
|
|
20
|
+
if (config.stripeApiKey) {
|
|
21
|
+
providers.push(new StripeProvider(config.stripeApiKey, testMode));
|
|
22
|
+
}
|
|
23
|
+
if (config.transakApiKey) {
|
|
24
|
+
providers.push(new TransakProvider(config.transakApiKey, testMode));
|
|
25
|
+
}
|
|
26
|
+
return providers;
|
|
27
|
+
}
|
|
28
|
+
/** All known provider names */
|
|
29
|
+
export const ALL_PROVIDER_NAMES = ['moonpay', 'stripe', 'transak'];
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fiat/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAwB;IACrD,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;IAE1C,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,SAAS,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,SAAS,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,SAAS,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+BAA+B;AAC/B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MoonPay Provider
|
|
3
|
+
*
|
|
4
|
+
* Creates buy quotes and purchase URLs via MoonPay's REST API.
|
|
5
|
+
* KYC + payment happen on MoonPay's hosted page — we never see KYC data.
|
|
6
|
+
*
|
|
7
|
+
* API reference: https://dev.moonpay.com/reference/buy-quote
|
|
8
|
+
* Dashboard: https://dashboard.moonpay.com
|
|
9
|
+
*/
|
|
10
|
+
import type { FiatProvider, FiatQuote, OnrampParams } from '../types.js';
|
|
11
|
+
export declare class MoonPayProvider implements FiatProvider {
|
|
12
|
+
readonly name = "moonpay";
|
|
13
|
+
readonly supportedAssets: Record<string, string[]>;
|
|
14
|
+
private apiKey;
|
|
15
|
+
private baseUrl;
|
|
16
|
+
constructor(apiKey: string, testMode?: boolean);
|
|
17
|
+
get isConfigured(): boolean;
|
|
18
|
+
getQuote(params: OnrampParams): Promise<FiatQuote>;
|
|
19
|
+
createSession(params: OnrampParams): Promise<FiatQuote>;
|
|
20
|
+
private buildPurchaseUrl;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=moonpay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moonpay.d.ts","sourceRoot":"","sources":["../../../src/fiat/providers/moonpay.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAuCzE,qBAAa,eAAgB,YAAW,YAAY;IAClD,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,eAAe,2BAAoB;IAE5C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,MAAM,EAAE,QAAQ,UAAQ;IAK5C,IAAI,YAAY,IAAI,OAAO,CAE1B;IAEK,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAoDlD,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAK7D,OAAO,CAAC,gBAAgB;CAazB"}
|