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.
Files changed (214) hide show
  1. package/README.md +226 -10
  2. package/dist/fiat/index.d.ts +10 -0
  3. package/dist/fiat/index.d.ts.map +1 -0
  4. package/dist/fiat/index.js +9 -0
  5. package/dist/fiat/index.js.map +1 -0
  6. package/dist/fiat/onramp.d.ts +101 -0
  7. package/dist/fiat/onramp.d.ts.map +1 -0
  8. package/dist/fiat/onramp.js +155 -0
  9. package/dist/fiat/onramp.js.map +1 -0
  10. package/dist/fiat/providers/index.d.ts +16 -0
  11. package/dist/fiat/providers/index.d.ts.map +1 -0
  12. package/dist/fiat/providers/index.js +30 -0
  13. package/dist/fiat/providers/index.js.map +1 -0
  14. package/dist/fiat/providers/moonpay.d.ts +22 -0
  15. package/dist/fiat/providers/moonpay.d.ts.map +1 -0
  16. package/dist/fiat/providers/moonpay.js +107 -0
  17. package/dist/fiat/providers/moonpay.js.map +1 -0
  18. package/dist/fiat/providers/stripe.d.ts +26 -0
  19. package/dist/fiat/providers/stripe.d.ts.map +1 -0
  20. package/dist/fiat/providers/stripe.js +135 -0
  21. package/dist/fiat/providers/stripe.js.map +1 -0
  22. package/dist/fiat/providers/transak.d.ts +26 -0
  23. package/dist/fiat/providers/transak.d.ts.map +1 -0
  24. package/dist/fiat/providers/transak.js +119 -0
  25. package/dist/fiat/providers/transak.js.map +1 -0
  26. package/dist/fiat/types.d.ts +106 -0
  27. package/dist/fiat/types.d.ts.map +1 -0
  28. package/dist/fiat/types.js +13 -0
  29. package/dist/fiat/types.js.map +1 -0
  30. package/dist/flash/executor.d.ts +119 -0
  31. package/dist/flash/executor.d.ts.map +1 -0
  32. package/dist/flash/executor.js +195 -0
  33. package/dist/flash/executor.js.map +1 -0
  34. package/dist/flash/index.d.ts +28 -0
  35. package/dist/flash/index.d.ts.map +1 -0
  36. package/dist/flash/index.js +25 -0
  37. package/dist/flash/index.js.map +1 -0
  38. package/dist/flash/scanner.d.ts +133 -0
  39. package/dist/flash/scanner.d.ts.map +1 -0
  40. package/dist/flash/scanner.js +212 -0
  41. package/dist/flash/scanner.js.map +1 -0
  42. package/dist/flash/types.d.ts +136 -0
  43. package/dist/flash/types.d.ts.map +1 -0
  44. package/dist/flash/types.js +23 -0
  45. package/dist/flash/types.js.map +1 -0
  46. package/dist/gas/index.d.ts +4 -0
  47. package/dist/gas/index.d.ts.map +1 -0
  48. package/dist/gas/index.js +3 -0
  49. package/dist/gas/index.js.map +1 -0
  50. package/dist/gas/sponsor.d.ts +70 -0
  51. package/dist/gas/sponsor.d.ts.map +1 -0
  52. package/dist/gas/sponsor.js +193 -0
  53. package/dist/gas/sponsor.js.map +1 -0
  54. package/dist/gas/types.d.ts +76 -0
  55. package/dist/gas/types.d.ts.map +1 -0
  56. package/dist/gas/types.js +21 -0
  57. package/dist/gas/types.js.map +1 -0
  58. package/dist/index.d.ts +84 -62
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +29 -0
  61. package/dist/index.js.map +1 -1
  62. package/dist/mev/index.d.ts +4 -0
  63. package/dist/mev/index.d.ts.map +1 -0
  64. package/dist/mev/index.js +4 -0
  65. package/dist/mev/index.js.map +1 -0
  66. package/dist/mev/protection.d.ts +54 -0
  67. package/dist/mev/protection.d.ts.map +1 -0
  68. package/dist/mev/protection.js +185 -0
  69. package/dist/mev/protection.js.map +1 -0
  70. package/dist/mev/risk.d.ts +19 -0
  71. package/dist/mev/risk.d.ts.map +1 -0
  72. package/dist/mev/risk.js +95 -0
  73. package/dist/mev/risk.js.map +1 -0
  74. package/dist/mev/types.d.ts +49 -0
  75. package/dist/mev/types.d.ts.map +1 -0
  76. package/dist/mev/types.js +2 -0
  77. package/dist/mev/types.js.map +1 -0
  78. package/dist/settlement/index.d.ts +4 -0
  79. package/dist/settlement/index.d.ts.map +1 -0
  80. package/dist/settlement/index.js +3 -0
  81. package/dist/settlement/index.js.map +1 -0
  82. package/dist/settlement/types.d.ts +66 -0
  83. package/dist/settlement/types.d.ts.map +1 -0
  84. package/dist/settlement/types.js +37 -0
  85. package/dist/settlement/types.js.map +1 -0
  86. package/dist/settlement/verifier.d.ts +75 -0
  87. package/dist/settlement/verifier.d.ts.map +1 -0
  88. package/dist/settlement/verifier.js +354 -0
  89. package/dist/settlement/verifier.js.map +1 -0
  90. package/dist/solver/adapter.d.ts +47 -0
  91. package/dist/solver/adapter.d.ts.map +1 -0
  92. package/dist/solver/adapter.js +138 -0
  93. package/dist/solver/adapter.js.map +1 -0
  94. package/dist/solver/analyzer.d.ts +48 -0
  95. package/dist/solver/analyzer.d.ts.map +1 -0
  96. package/dist/solver/analyzer.js +89 -0
  97. package/dist/solver/analyzer.js.map +1 -0
  98. package/dist/solver/builder.d.ts +31 -0
  99. package/dist/solver/builder.d.ts.map +1 -0
  100. package/dist/solver/builder.js +60 -0
  101. package/dist/solver/builder.js.map +1 -0
  102. package/dist/solver/index.d.ts +22 -0
  103. package/dist/solver/index.d.ts.map +1 -0
  104. package/dist/solver/index.js +21 -0
  105. package/dist/solver/index.js.map +1 -0
  106. package/dist/solver/types.d.ts +115 -0
  107. package/dist/solver/types.d.ts.map +1 -0
  108. package/dist/solver/types.js +10 -0
  109. package/dist/solver/types.js.map +1 -0
  110. package/dist/swap/index.d.ts +1 -0
  111. package/dist/swap/index.d.ts.map +1 -1
  112. package/dist/swap/index.js +2 -0
  113. package/dist/swap/index.js.map +1 -1
  114. package/dist/swap/router/cache.d.ts +13 -0
  115. package/dist/swap/router/cache.d.ts.map +1 -0
  116. package/dist/swap/router/cache.js +30 -0
  117. package/dist/swap/router/cache.js.map +1 -0
  118. package/dist/swap/router/flashbots.d.ts +10 -0
  119. package/dist/swap/router/flashbots.d.ts.map +1 -0
  120. package/dist/swap/router/flashbots.js +43 -0
  121. package/dist/swap/router/flashbots.js.map +1 -0
  122. package/dist/swap/router/health.d.ts +17 -0
  123. package/dist/swap/router/health.d.ts.map +1 -0
  124. package/dist/swap/router/health.js +38 -0
  125. package/dist/swap/router/health.js.map +1 -0
  126. package/dist/swap/router/index.d.ts +10 -0
  127. package/dist/swap/router/index.d.ts.map +1 -0
  128. package/dist/swap/router/index.js +10 -0
  129. package/dist/swap/router/index.js.map +1 -0
  130. package/dist/swap/router/providers/cowswap.d.ts +11 -0
  131. package/dist/swap/router/providers/cowswap.d.ts.map +1 -0
  132. package/dist/swap/router/providers/cowswap.js +79 -0
  133. package/dist/swap/router/providers/cowswap.js.map +1 -0
  134. package/dist/swap/router/providers/index.d.ts +20 -0
  135. package/dist/swap/router/providers/index.d.ts.map +1 -0
  136. package/dist/swap/router/providers/index.js +32 -0
  137. package/dist/swap/router/providers/index.js.map +1 -0
  138. package/dist/swap/router/providers/jupiter.d.ts +12 -0
  139. package/dist/swap/router/providers/jupiter.d.ts.map +1 -0
  140. package/dist/swap/router/providers/jupiter.js +73 -0
  141. package/dist/swap/router/providers/jupiter.js.map +1 -0
  142. package/dist/swap/router/providers/lifi.d.ts +11 -0
  143. package/dist/swap/router/providers/lifi.d.ts.map +1 -0
  144. package/dist/swap/router/providers/lifi.js +123 -0
  145. package/dist/swap/router/providers/lifi.js.map +1 -0
  146. package/dist/swap/router/providers/oneinch.d.ts +13 -0
  147. package/dist/swap/router/providers/oneinch.d.ts.map +1 -0
  148. package/dist/swap/router/providers/oneinch.js +71 -0
  149. package/dist/swap/router/providers/oneinch.js.map +1 -0
  150. package/dist/swap/router/providers/paraswap.d.ts +11 -0
  151. package/dist/swap/router/providers/paraswap.d.ts.map +1 -0
  152. package/dist/swap/router/providers/paraswap.js +73 -0
  153. package/dist/swap/router/providers/paraswap.js.map +1 -0
  154. package/dist/swap/router/providers/uniswap.d.ts +31 -0
  155. package/dist/swap/router/providers/uniswap.d.ts.map +1 -0
  156. package/dist/swap/router/providers/uniswap.js +116 -0
  157. package/dist/swap/router/providers/uniswap.js.map +1 -0
  158. package/dist/swap/router/providers/zerox.d.ts +13 -0
  159. package/dist/swap/router/providers/zerox.d.ts.map +1 -0
  160. package/dist/swap/router/providers/zerox.js +94 -0
  161. package/dist/swap/router/providers/zerox.js.map +1 -0
  162. package/dist/swap/router/router.d.ts +86 -0
  163. package/dist/swap/router/router.d.ts.map +1 -0
  164. package/dist/swap/router/router.js +224 -0
  165. package/dist/swap/router/router.js.map +1 -0
  166. package/dist/swap/router/rsi/engine.d.ts +60 -0
  167. package/dist/swap/router/rsi/engine.d.ts.map +1 -0
  168. package/dist/swap/router/rsi/engine.js +483 -0
  169. package/dist/swap/router/rsi/engine.js.map +1 -0
  170. package/dist/swap/router/rsi/index.d.ts +3 -0
  171. package/dist/swap/router/rsi/index.d.ts.map +1 -0
  172. package/dist/swap/router/rsi/index.js +3 -0
  173. package/dist/swap/router/rsi/index.js.map +1 -0
  174. package/dist/swap/router/rsi/types.d.ts +106 -0
  175. package/dist/swap/router/rsi/types.d.ts.map +1 -0
  176. package/dist/swap/router/rsi/types.js +3 -0
  177. package/dist/swap/router/rsi/types.js.map +1 -0
  178. package/dist/swap/router/types.d.ts +120 -0
  179. package/dist/swap/router/types.d.ts.map +1 -0
  180. package/dist/swap/router/types.js +16 -0
  181. package/dist/swap/router/types.js.map +1 -0
  182. package/dist/tax/engine.d.ts +131 -0
  183. package/dist/tax/engine.d.ts.map +1 -0
  184. package/dist/tax/engine.js +307 -0
  185. package/dist/tax/engine.js.map +1 -0
  186. package/dist/tax/index.d.ts +9 -0
  187. package/dist/tax/index.d.ts.map +1 -0
  188. package/dist/tax/index.js +8 -0
  189. package/dist/tax/index.js.map +1 -0
  190. package/dist/tax/lots.d.ts +60 -0
  191. package/dist/tax/lots.d.ts.map +1 -0
  192. package/dist/tax/lots.js +129 -0
  193. package/dist/tax/lots.js.map +1 -0
  194. package/dist/tax/types.d.ts +113 -0
  195. package/dist/tax/types.d.ts.map +1 -0
  196. package/dist/tax/types.js +18 -0
  197. package/dist/tax/types.js.map +1 -0
  198. package/dist/yield/index.d.ts +26 -0
  199. package/dist/yield/index.d.ts.map +1 -0
  200. package/dist/yield/index.js +25 -0
  201. package/dist/yield/index.js.map +1 -0
  202. package/dist/yield/rates.d.ts +114 -0
  203. package/dist/yield/rates.d.ts.map +1 -0
  204. package/dist/yield/rates.js +351 -0
  205. package/dist/yield/rates.js.map +1 -0
  206. package/dist/yield/types.d.ts +134 -0
  207. package/dist/yield/types.d.ts.map +1 -0
  208. package/dist/yield/types.js +24 -0
  209. package/dist/yield/types.js.map +1 -0
  210. package/dist/yield/vault.d.ts +112 -0
  211. package/dist/yield/vault.d.ts.map +1 -0
  212. package/dist/yield/vault.js +264 -0
  213. package/dist/yield/vault.js.map +1 -0
  214. 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 Wallet** | **MoonPay Agents** |
16
- |---|---|---|---|
17
- | **Custody** | Non-custodial (keys on device) | Semi-custodial (TEE) | Non-custodial (claimed) |
18
- | **Spend Limits** | On-chain (smart contract) | API-enforced | Not documented |
19
- | **Chains** | 5 (Base, ETH, Arb, Polygon, Sepolia) | Base only | Unclear |
20
- | **Agent Identity** | ERC-8004 + ERC-6551 | None | None |
21
- | **Open Source** | MIT | Partial | Closed |
22
- | **x402 Payments** | Native | Supported | "Compatible" |
23
-
24
- > On-chain spend limits can't be bypassed even if the API layer is compromised. That's the difference between policy and math.
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"}