agentwallet-sdk 3.2.1 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/README.md +2 -536
  2. package/dist/bridge/abis.d.ts +48 -171
  3. package/dist/bridge/abis.d.ts.map +1 -1
  4. package/dist/bridge/abis.js.map +1 -1
  5. package/dist/bridge/client.d.ts +2 -41
  6. package/dist/bridge/client.d.ts.map +1 -1
  7. package/dist/bridge/client.js +35 -168
  8. package/dist/bridge/client.js.map +1 -1
  9. package/dist/bridge/index.d.ts +2 -4
  10. package/dist/bridge/index.d.ts.map +1 -1
  11. package/dist/bridge/index.js +1 -8
  12. package/dist/bridge/index.js.map +1 -1
  13. package/dist/bridge/types.d.ts +15 -134
  14. package/dist/bridge/types.d.ts.map +1 -1
  15. package/dist/bridge/types.js +16 -170
  16. package/dist/bridge/types.js.map +1 -1
  17. package/dist/identity/erc8004.d.ts +2 -240
  18. package/dist/identity/erc8004.d.ts.map +1 -1
  19. package/dist/identity/erc8004.js +58 -334
  20. package/dist/identity/erc8004.js.map +1 -1
  21. package/dist/index.d.ts +313 -134
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +11 -56
  24. package/dist/index.js.map +1 -1
  25. package/dist/swap/SwapModule.d.ts +6 -50
  26. package/dist/swap/SwapModule.d.ts.map +1 -1
  27. package/dist/swap/SwapModule.js +25 -153
  28. package/dist/swap/SwapModule.js.map +1 -1
  29. package/dist/swap/abi.d.ts +47 -165
  30. package/dist/swap/abi.d.ts.map +1 -1
  31. package/dist/swap/abi.js.map +1 -1
  32. package/dist/swap/index.d.ts +2 -3
  33. package/dist/swap/index.d.ts.map +1 -1
  34. package/dist/swap/index.js +1 -4
  35. package/dist/swap/index.js.map +1 -1
  36. package/dist/swap/types.d.ts +6 -36
  37. package/dist/swap/types.d.ts.map +1 -1
  38. package/dist/swap/types.js +0 -1
  39. package/dist/swap/types.js.map +1 -1
  40. package/dist/types.d.ts +1 -2
  41. package/dist/types.d.ts.map +1 -1
  42. package/dist/types.js +0 -1
  43. package/dist/types.js.map +1 -1
  44. package/dist/x402/__tests__/budget.test.d.ts +2 -0
  45. package/dist/x402/__tests__/budget.test.d.ts.map +1 -0
  46. package/dist/x402/__tests__/budget.test.js +114 -0
  47. package/dist/x402/__tests__/budget.test.js.map +1 -0
  48. package/dist/x402/__tests__/client.test.d.ts +2 -0
  49. package/dist/x402/__tests__/client.test.d.ts.map +1 -0
  50. package/dist/x402/__tests__/client.test.js +107 -0
  51. package/dist/x402/__tests__/client.test.js.map +1 -0
  52. package/dist/x402/chains/abstract/index.d.ts +135 -0
  53. package/dist/x402/chains/abstract/index.d.ts.map +1 -0
  54. package/dist/x402/chains/abstract/index.js +190 -0
  55. package/dist/x402/chains/abstract/index.js.map +1 -0
  56. package/dist/x402/client.d.ts.map +1 -1
  57. package/dist/x402/client.js +1 -2
  58. package/dist/x402/client.js.map +1 -1
  59. package/dist/x402/index.d.ts +3 -1
  60. package/dist/x402/index.d.ts.map +1 -1
  61. package/dist/x402/index.js +3 -1
  62. package/dist/x402/index.js.map +1 -1
  63. package/dist/x402/types.d.ts +3 -5
  64. package/dist/x402/types.d.ts.map +1 -1
  65. package/dist/x402/types.js +2 -17
  66. package/dist/x402/types.js.map +1 -1
  67. package/package.json +12 -32
  68. package/dist/ap2/index.d.ts +0 -185
  69. package/dist/ap2/index.d.ts.map +0 -1
  70. package/dist/ap2/index.js +0 -255
  71. package/dist/ap2/index.js.map +0 -1
  72. package/dist/bridge/unified.d.ts +0 -101
  73. package/dist/bridge/unified.d.ts.map +0 -1
  74. package/dist/bridge/unified.js +0 -284
  75. package/dist/bridge/unified.js.map +0 -1
  76. package/dist/chains.d.ts +0 -62
  77. package/dist/chains.d.ts.map +0 -1
  78. package/dist/chains.js +0 -108
  79. package/dist/chains.js.map +0 -1
  80. package/dist/fiat/index.d.ts +0 -10
  81. package/dist/fiat/index.d.ts.map +0 -1
  82. package/dist/fiat/index.js +0 -9
  83. package/dist/fiat/index.js.map +0 -1
  84. package/dist/fiat/onramp.d.ts +0 -101
  85. package/dist/fiat/onramp.d.ts.map +0 -1
  86. package/dist/fiat/onramp.js +0 -155
  87. package/dist/fiat/onramp.js.map +0 -1
  88. package/dist/fiat/providers/index.d.ts +0 -16
  89. package/dist/fiat/providers/index.d.ts.map +0 -1
  90. package/dist/fiat/providers/index.js +0 -30
  91. package/dist/fiat/providers/index.js.map +0 -1
  92. package/dist/fiat/providers/moonpay.d.ts +0 -22
  93. package/dist/fiat/providers/moonpay.d.ts.map +0 -1
  94. package/dist/fiat/providers/moonpay.js +0 -107
  95. package/dist/fiat/providers/moonpay.js.map +0 -1
  96. package/dist/fiat/providers/stripe.d.ts +0 -26
  97. package/dist/fiat/providers/stripe.d.ts.map +0 -1
  98. package/dist/fiat/providers/stripe.js +0 -135
  99. package/dist/fiat/providers/stripe.js.map +0 -1
  100. package/dist/fiat/providers/transak.d.ts +0 -26
  101. package/dist/fiat/providers/transak.d.ts.map +0 -1
  102. package/dist/fiat/providers/transak.js +0 -119
  103. package/dist/fiat/providers/transak.js.map +0 -1
  104. package/dist/fiat/types.d.ts +0 -106
  105. package/dist/fiat/types.d.ts.map +0 -1
  106. package/dist/fiat/types.js +0 -13
  107. package/dist/fiat/types.js.map +0 -1
  108. package/dist/flash/executor.d.ts +0 -119
  109. package/dist/flash/executor.d.ts.map +0 -1
  110. package/dist/flash/executor.js +0 -195
  111. package/dist/flash/executor.js.map +0 -1
  112. package/dist/flash/index.d.ts +0 -28
  113. package/dist/flash/index.d.ts.map +0 -1
  114. package/dist/flash/index.js +0 -25
  115. package/dist/flash/index.js.map +0 -1
  116. package/dist/flash/scanner.d.ts +0 -133
  117. package/dist/flash/scanner.d.ts.map +0 -1
  118. package/dist/flash/scanner.js +0 -212
  119. package/dist/flash/scanner.js.map +0 -1
  120. package/dist/flash/types.d.ts +0 -136
  121. package/dist/flash/types.d.ts.map +0 -1
  122. package/dist/flash/types.js +0 -23
  123. package/dist/flash/types.js.map +0 -1
  124. package/dist/gas/index.d.ts +0 -4
  125. package/dist/gas/index.d.ts.map +0 -1
  126. package/dist/gas/index.js +0 -3
  127. package/dist/gas/index.js.map +0 -1
  128. package/dist/gas/sponsor.d.ts +0 -70
  129. package/dist/gas/sponsor.d.ts.map +0 -1
  130. package/dist/gas/sponsor.js +0 -193
  131. package/dist/gas/sponsor.js.map +0 -1
  132. package/dist/gas/types.d.ts +0 -76
  133. package/dist/gas/types.d.ts.map +0 -1
  134. package/dist/gas/types.js +0 -21
  135. package/dist/gas/types.js.map +0 -1
  136. package/dist/identity/agent-identity.d.ts +0 -276
  137. package/dist/identity/agent-identity.d.ts.map +0 -1
  138. package/dist/identity/agent-identity.js +0 -300
  139. package/dist/identity/agent-identity.js.map +0 -1
  140. package/dist/identity/erc6551.d.ts +0 -441
  141. package/dist/identity/erc6551.d.ts.map +0 -1
  142. package/dist/identity/erc6551.js +0 -517
  143. package/dist/identity/erc6551.js.map +0 -1
  144. package/dist/mev/index.d.ts +0 -4
  145. package/dist/mev/index.d.ts.map +0 -1
  146. package/dist/mev/index.js +0 -4
  147. package/dist/mev/index.js.map +0 -1
  148. package/dist/mev/protection.d.ts +0 -54
  149. package/dist/mev/protection.d.ts.map +0 -1
  150. package/dist/mev/protection.js +0 -185
  151. package/dist/mev/protection.js.map +0 -1
  152. package/dist/mev/risk.d.ts +0 -19
  153. package/dist/mev/risk.d.ts.map +0 -1
  154. package/dist/mev/risk.js +0 -95
  155. package/dist/mev/risk.js.map +0 -1
  156. package/dist/mev/types.d.ts +0 -49
  157. package/dist/mev/types.d.ts.map +0 -1
  158. package/dist/mev/types.js +0 -2
  159. package/dist/mev/types.js.map +0 -1
  160. package/dist/settlement/index.d.ts +0 -4
  161. package/dist/settlement/index.d.ts.map +0 -1
  162. package/dist/settlement/index.js +0 -3
  163. package/dist/settlement/index.js.map +0 -1
  164. package/dist/settlement/types.d.ts +0 -66
  165. package/dist/settlement/types.d.ts.map +0 -1
  166. package/dist/settlement/types.js +0 -37
  167. package/dist/settlement/types.js.map +0 -1
  168. package/dist/settlement/verifier.d.ts +0 -75
  169. package/dist/settlement/verifier.d.ts.map +0 -1
  170. package/dist/settlement/verifier.js +0 -354
  171. package/dist/settlement/verifier.js.map +0 -1
  172. package/dist/solana/bridge.d.ts +0 -144
  173. package/dist/solana/bridge.d.ts.map +0 -1
  174. package/dist/solana/bridge.js +0 -352
  175. package/dist/solana/bridge.js.map +0 -1
  176. package/dist/solana/index.d.ts +0 -8
  177. package/dist/solana/index.d.ts.map +0 -1
  178. package/dist/solana/index.js +0 -6
  179. package/dist/solana/index.js.map +0 -1
  180. package/dist/solana/swap.d.ts +0 -85
  181. package/dist/solana/swap.d.ts.map +0 -1
  182. package/dist/solana/swap.js +0 -173
  183. package/dist/solana/swap.js.map +0 -1
  184. package/dist/solana/types.d.ts +0 -126
  185. package/dist/solana/types.d.ts.map +0 -1
  186. package/dist/solana/types.js +0 -10
  187. package/dist/solana/types.js.map +0 -1
  188. package/dist/solana/wallet.d.ts +0 -83
  189. package/dist/solana/wallet.d.ts.map +0 -1
  190. package/dist/solana/wallet.js +0 -164
  191. package/dist/solana/wallet.js.map +0 -1
  192. package/dist/solana/x402.d.ts +0 -69
  193. package/dist/solana/x402.d.ts.map +0 -1
  194. package/dist/solana/x402.js +0 -154
  195. package/dist/solana/x402.js.map +0 -1
  196. package/dist/solver/adapter.d.ts +0 -47
  197. package/dist/solver/adapter.d.ts.map +0 -1
  198. package/dist/solver/adapter.js +0 -138
  199. package/dist/solver/adapter.js.map +0 -1
  200. package/dist/solver/analyzer.d.ts +0 -48
  201. package/dist/solver/analyzer.d.ts.map +0 -1
  202. package/dist/solver/analyzer.js +0 -89
  203. package/dist/solver/analyzer.js.map +0 -1
  204. package/dist/solver/builder.d.ts +0 -31
  205. package/dist/solver/builder.d.ts.map +0 -1
  206. package/dist/solver/builder.js +0 -60
  207. package/dist/solver/builder.js.map +0 -1
  208. package/dist/solver/index.d.ts +0 -22
  209. package/dist/solver/index.d.ts.map +0 -1
  210. package/dist/solver/index.js +0 -21
  211. package/dist/solver/index.js.map +0 -1
  212. package/dist/solver/types.d.ts +0 -115
  213. package/dist/solver/types.d.ts.map +0 -1
  214. package/dist/solver/types.js +0 -10
  215. package/dist/solver/types.js.map +0 -1
  216. package/dist/swap/router/cache.d.ts +0 -13
  217. package/dist/swap/router/cache.d.ts.map +0 -1
  218. package/dist/swap/router/cache.js +0 -30
  219. package/dist/swap/router/cache.js.map +0 -1
  220. package/dist/swap/router/flashbots.d.ts +0 -10
  221. package/dist/swap/router/flashbots.d.ts.map +0 -1
  222. package/dist/swap/router/flashbots.js +0 -43
  223. package/dist/swap/router/flashbots.js.map +0 -1
  224. package/dist/swap/router/health.d.ts +0 -17
  225. package/dist/swap/router/health.d.ts.map +0 -1
  226. package/dist/swap/router/health.js +0 -38
  227. package/dist/swap/router/health.js.map +0 -1
  228. package/dist/swap/router/index.d.ts +0 -10
  229. package/dist/swap/router/index.d.ts.map +0 -1
  230. package/dist/swap/router/index.js +0 -10
  231. package/dist/swap/router/index.js.map +0 -1
  232. package/dist/swap/router/providers/cowswap.d.ts +0 -11
  233. package/dist/swap/router/providers/cowswap.d.ts.map +0 -1
  234. package/dist/swap/router/providers/cowswap.js +0 -79
  235. package/dist/swap/router/providers/cowswap.js.map +0 -1
  236. package/dist/swap/router/providers/index.d.ts +0 -20
  237. package/dist/swap/router/providers/index.d.ts.map +0 -1
  238. package/dist/swap/router/providers/index.js +0 -32
  239. package/dist/swap/router/providers/index.js.map +0 -1
  240. package/dist/swap/router/providers/jupiter.d.ts +0 -12
  241. package/dist/swap/router/providers/jupiter.d.ts.map +0 -1
  242. package/dist/swap/router/providers/jupiter.js +0 -73
  243. package/dist/swap/router/providers/jupiter.js.map +0 -1
  244. package/dist/swap/router/providers/lifi.d.ts +0 -11
  245. package/dist/swap/router/providers/lifi.d.ts.map +0 -1
  246. package/dist/swap/router/providers/lifi.js +0 -123
  247. package/dist/swap/router/providers/lifi.js.map +0 -1
  248. package/dist/swap/router/providers/oneinch.d.ts +0 -13
  249. package/dist/swap/router/providers/oneinch.d.ts.map +0 -1
  250. package/dist/swap/router/providers/oneinch.js +0 -71
  251. package/dist/swap/router/providers/oneinch.js.map +0 -1
  252. package/dist/swap/router/providers/paraswap.d.ts +0 -11
  253. package/dist/swap/router/providers/paraswap.d.ts.map +0 -1
  254. package/dist/swap/router/providers/paraswap.js +0 -73
  255. package/dist/swap/router/providers/paraswap.js.map +0 -1
  256. package/dist/swap/router/providers/uniswap.d.ts +0 -31
  257. package/dist/swap/router/providers/uniswap.d.ts.map +0 -1
  258. package/dist/swap/router/providers/uniswap.js +0 -116
  259. package/dist/swap/router/providers/uniswap.js.map +0 -1
  260. package/dist/swap/router/providers/zerox.d.ts +0 -13
  261. package/dist/swap/router/providers/zerox.d.ts.map +0 -1
  262. package/dist/swap/router/providers/zerox.js +0 -94
  263. package/dist/swap/router/providers/zerox.js.map +0 -1
  264. package/dist/swap/router/router.d.ts +0 -86
  265. package/dist/swap/router/router.d.ts.map +0 -1
  266. package/dist/swap/router/router.js +0 -224
  267. package/dist/swap/router/router.js.map +0 -1
  268. package/dist/swap/router/rsi/engine.d.ts +0 -60
  269. package/dist/swap/router/rsi/engine.d.ts.map +0 -1
  270. package/dist/swap/router/rsi/engine.js +0 -483
  271. package/dist/swap/router/rsi/engine.js.map +0 -1
  272. package/dist/swap/router/rsi/index.d.ts +0 -3
  273. package/dist/swap/router/rsi/index.d.ts.map +0 -1
  274. package/dist/swap/router/rsi/index.js +0 -3
  275. package/dist/swap/router/rsi/index.js.map +0 -1
  276. package/dist/swap/router/rsi/types.d.ts +0 -106
  277. package/dist/swap/router/rsi/types.d.ts.map +0 -1
  278. package/dist/swap/router/rsi/types.js +0 -3
  279. package/dist/swap/router/rsi/types.js.map +0 -1
  280. package/dist/swap/router/types.d.ts +0 -120
  281. package/dist/swap/router/types.d.ts.map +0 -1
  282. package/dist/swap/router/types.js +0 -16
  283. package/dist/swap/router/types.js.map +0 -1
  284. package/dist/tax/engine.d.ts +0 -131
  285. package/dist/tax/engine.d.ts.map +0 -1
  286. package/dist/tax/engine.js +0 -307
  287. package/dist/tax/engine.js.map +0 -1
  288. package/dist/tax/index.d.ts +0 -9
  289. package/dist/tax/index.d.ts.map +0 -1
  290. package/dist/tax/index.js +0 -8
  291. package/dist/tax/index.js.map +0 -1
  292. package/dist/tax/lots.d.ts +0 -60
  293. package/dist/tax/lots.d.ts.map +0 -1
  294. package/dist/tax/lots.js +0 -129
  295. package/dist/tax/lots.js.map +0 -1
  296. package/dist/tax/types.d.ts +0 -113
  297. package/dist/tax/types.d.ts.map +0 -1
  298. package/dist/tax/types.js +0 -18
  299. package/dist/tax/types.js.map +0 -1
  300. package/dist/yield/index.d.ts +0 -26
  301. package/dist/yield/index.d.ts.map +0 -1
  302. package/dist/yield/index.js +0 -25
  303. package/dist/yield/index.js.map +0 -1
  304. package/dist/yield/rates.d.ts +0 -114
  305. package/dist/yield/rates.d.ts.map +0 -1
  306. package/dist/yield/rates.js +0 -351
  307. package/dist/yield/rates.js.map +0 -1
  308. package/dist/yield/types.d.ts +0 -134
  309. package/dist/yield/types.d.ts.map +0 -1
  310. package/dist/yield/types.js +0 -24
  311. package/dist/yield/types.js.map +0 -1
  312. package/dist/yield/vault.d.ts +0 -112
  313. package/dist/yield/vault.d.ts.map +0 -1
  314. package/dist/yield/vault.js +0 -264
  315. package/dist/yield/vault.js.map +0 -1
@@ -1,154 +0,0 @@
1
- // [MAX-ADDED] Solana x402 payment support — handles 'solana:mainnet' network in x402 offers.
2
- // SPL token (USDC) payment signing + proof construction, compatible with x402 protocol spec.
3
- import { PublicKey, Transaction, SystemProgram, } from '@solana/web3.js';
4
- import { getAssociatedTokenAddress, createTransferInstruction, } from '@solana/spl-token';
5
- import { SOLANA_USDC_MINT, SOLANA_USDC_DEVNET_MINT, SOL_NATIVE_MINT } from './types.js';
6
- /** x402 version this client implements */
7
- const X402_VERSION = 1;
8
- /** Default USDC mint per network */
9
- export const SOLANA_NETWORK_USDC = {
10
- 'solana:mainnet': SOLANA_USDC_MINT,
11
- 'solana:devnet': SOLANA_USDC_DEVNET_MINT,
12
- };
13
- /**
14
- * SolanaX402Client — handles x402 payment flows on Solana.
15
- *
16
- * Flow:
17
- * 1. Receive x402 PaymentRequired with network='solana:mainnet'
18
- * 2. Build an SPL token transfer transaction (USDC → payTo)
19
- * 3. Sign with agent's Ed25519 keypair
20
- * 4. Return base64-serialized signed tx as payment proof
21
- * 5. Optionally broadcast and return tx signature
22
- *
23
- * Non-custodial: private key never leaves the SolanaWallet instance.
24
- */
25
- export class SolanaX402Client {
26
- constructor(wallet) {
27
- this.wallet = wallet;
28
- }
29
- /**
30
- * Determine if this client can handle a given x402 network string.
31
- */
32
- canHandle(network) {
33
- return network === 'solana:mainnet' || network === 'solana:devnet';
34
- }
35
- /**
36
- * Build and sign a USDC SPL token payment for x402.
37
- *
38
- * Does NOT broadcast — returns signed tx as base64 for the caller to submit.
39
- * This matches the x402 pattern where the client returns a payment proof
40
- * that the facilitator can verify and then settle.
41
- *
42
- * @param requirements - Payment requirements from the x402 402 response
43
- * @returns SolanaX402PaymentProof with signed transaction
44
- */
45
- async buildPaymentProof(requirements) {
46
- if (!this.canHandle(requirements.network)) {
47
- throw new Error(`SolanaX402Client cannot handle network: ${requirements.network}. ` +
48
- `Supported: solana:mainnet, solana:devnet`);
49
- }
50
- const amount = BigInt(requirements.amount);
51
- if (amount <= 0n) {
52
- throw new Error(`Invalid x402 payment amount: ${requirements.amount}`);
53
- }
54
- const mint = requirements.asset;
55
- const recipient = new PublicKey(requirements.payTo);
56
- const sender = this.wallet.getPublicKey();
57
- const connection = this.wallet.getConnection();
58
- // Build the SPL transfer transaction
59
- const tx = new Transaction();
60
- if (mint === SOL_NATIVE_MINT) {
61
- // Native SOL payment
62
- tx.add(SystemProgram.transfer({
63
- fromPubkey: sender,
64
- toPubkey: recipient,
65
- lamports: Number(amount),
66
- }));
67
- }
68
- else {
69
- // SPL token payment (USDC or other)
70
- const mintPubkey = new PublicKey(mint);
71
- const senderAta = await getAssociatedTokenAddress(mintPubkey, sender);
72
- const recipientAta = await getAssociatedTokenAddress(mintPubkey, recipient);
73
- tx.add(createTransferInstruction(senderAta, recipientAta, sender, Number(amount)));
74
- }
75
- // Sign the transaction (with blockhash for validity)
76
- const signedTxBase64 = await this.wallet.signTransactionBase64(tx);
77
- return {
78
- x402Version: X402_VERSION,
79
- network: requirements.network,
80
- mint,
81
- recipient: requirements.payTo,
82
- amount: requirements.amount,
83
- sender: this.wallet.getAddress(),
84
- signedTransaction: signedTxBase64,
85
- };
86
- }
87
- /**
88
- * Build payment proof AND broadcast the transaction to Solana.
89
- * Returns the proof enriched with the on-chain tx signature.
90
- *
91
- * @param requirements - Payment requirements from 402 response
92
- * @returns SolanaX402PaymentProof with txSignature populated
93
- */
94
- async pay(requirements) {
95
- const proof = await this.buildPaymentProof(requirements);
96
- // Broadcast
97
- const txSignature = await this.wallet.transfer({
98
- recipient: requirements.payTo,
99
- amount: BigInt(requirements.amount),
100
- mint: requirements.asset !== SOL_NATIVE_MINT ? requirements.asset : undefined,
101
- });
102
- return { ...proof, txSignature };
103
- }
104
- /**
105
- * Validate that payment requirements are acceptable before paying.
106
- *
107
- * Checks:
108
- * - Network is Solana (mainnet or devnet)
109
- * - Asset is USDC or native SOL
110
- * - Amount > 0
111
- * - maxTimeoutSeconds is reasonable
112
- */
113
- validateRequirements(requirements, options = {}) {
114
- if (!this.canHandle(requirements.network)) {
115
- return { valid: false, reason: `Unsupported network: ${requirements.network}` };
116
- }
117
- const amount = BigInt(requirements.amount);
118
- if (amount <= 0n) {
119
- return { valid: false, reason: 'Amount must be > 0' };
120
- }
121
- if (options.maxAmount !== undefined && amount > options.maxAmount) {
122
- return {
123
- valid: false,
124
- reason: `Amount ${amount} exceeds max allowed ${options.maxAmount}`,
125
- };
126
- }
127
- const expectedUsdc = SOLANA_NETWORK_USDC[requirements.network];
128
- const allowedMints = options.allowedMints ?? [expectedUsdc, SOL_NATIVE_MINT];
129
- if (!allowedMints.includes(requirements.asset)) {
130
- return {
131
- valid: false,
132
- reason: `Asset ${requirements.asset} not in allowed mints: ${allowedMints.join(', ')}`,
133
- };
134
- }
135
- if (requirements.maxTimeoutSeconds <= 0) {
136
- return { valid: false, reason: 'maxTimeoutSeconds must be > 0' };
137
- }
138
- try {
139
- new PublicKey(requirements.payTo);
140
- }
141
- catch {
142
- return { valid: false, reason: `Invalid recipient public key: ${requirements.payTo}` };
143
- }
144
- return { valid: true };
145
- }
146
- }
147
- /**
148
- * Factory: create a SolanaX402Client from a SolanaWallet.
149
- */
150
- export function createSolanaX402Client(wallet) {
151
- return new SolanaX402Client(wallet);
152
- }
153
- export { SOLANA_USDC_MINT, SOLANA_USDC_DEVNET_MINT };
154
- //# sourceMappingURL=x402.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"x402.js","sourceRoot":"","sources":["../../src/solana/x402.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- /**
2
- * CowSolverAdapter — Main entry point for the CowSwap solver integration.
3
- *
4
- * ⚠️ IMPORTANT: Shadow competition is FREE and requires no registration or KYC.
5
- * Production solver requires CowSwap DAO bonding pool approval and KYC.
6
- * This adapter defaults to 'shadow' mode — never assume production credentials.
7
- *
8
- * Flow:
9
- * 1. CowSwap broadcasts an auction batch to all registered solvers.
10
- * 2. We call processAuction() — must return within ~30 seconds.
11
- * 3. We detect CoW (Coincidence of Wants) first — zero DEX fees.
12
- * 4. Remaining orders are routed through SmartSwapRouter (7 DEXes in parallel).
13
- * 5. We call submitSolution() with the best settlement we can construct.
14
- * 6. If we win, we earn the surplus above user limit prices.
15
- */
16
- import type { SmartSwapRouter } from '../swap/router/router.js';
17
- import type { CowAuctionBatch, SolverConfig, SolverSolution, SolverStats, SolutionSubmissionResult } from './types.js';
18
- export declare class CowSolverAdapter {
19
- private config;
20
- private analyzer;
21
- private builder;
22
- private stats;
23
- /** CowSwap competition API endpoints */
24
- private readonly ENDPOINTS;
25
- constructor(config: SolverConfig, router?: SmartSwapRouter);
26
- /**
27
- * Process an auction batch and return our best settlement solution.
28
- *
29
- * Called when CowSwap sends us an auction. Must respond within 30 seconds.
30
- * Returns null if we have nothing viable to submit.
31
- */
32
- processAuction(batch: CowAuctionBatch): Promise<SolverSolution | null>;
33
- /**
34
- * Submit a solution to CowSwap.
35
- *
36
- * In shadow mode, the solution is evaluated but never executed on-chain —
37
- * useful for measuring competitiveness before applying for the production
38
- * bonding pool.
39
- */
40
- submitSolution(solution: SolverSolution): Promise<SolutionSubmissionResult>;
41
- /** Get current solver performance statistics */
42
- getStats(): SolverStats;
43
- /** Get the CowSwap API base URL for the configured environment */
44
- getApiUrl(): string;
45
- private getChainId;
46
- }
47
- //# sourceMappingURL=adapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/solver/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,EACX,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAIpB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,KAAK,CAAc;IAE3B,wCAAwC;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAIxB;gBAEU,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,eAAe;IAyB1D;;;;;OAKG;IACG,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAmD5E;;;;;;OAMG;IACG,cAAc,CAClB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,wBAAwB,CAAC;IAgDpC,gDAAgD;IAChD,QAAQ,IAAI,WAAW;IAIvB,kEAAkE;IAClE,SAAS,IAAI,MAAM;IAInB,OAAO,CAAC,UAAU;CASnB"}
@@ -1,138 +0,0 @@
1
- import { AuctionAnalyzer } from './analyzer.js';
2
- import { SolutionBuilder } from './builder.js';
3
- export class CowSolverAdapter {
4
- constructor(config, router) {
5
- /** CowSwap competition API endpoints */
6
- this.ENDPOINTS = {
7
- shadow: 'https://api.cow.fi/mainnet/api/v1/solver_competition',
8
- staging: 'https://barn.api.cow.fi/mainnet/api/v1/solver_competition',
9
- mainnet: 'https://api.cow.fi/mainnet/api/v1/solver_competition',
10
- };
11
- this.config = {
12
- environment: 'shadow',
13
- solverName: 'AgentWallet',
14
- maxGasGwei: 50,
15
- minSurplusUsd: 0.5,
16
- responseTimeoutMs: 20000,
17
- submissionUrl: '',
18
- ...config,
19
- };
20
- this.analyzer = new AuctionAnalyzer(router);
21
- this.builder = new SolutionBuilder();
22
- this.stats = {
23
- auctionsProcessed: 0,
24
- auctionsWon: 0,
25
- auctionsLost: 0,
26
- totalSurplusGenerated: '0',
27
- winRate: 0,
28
- avgResponseTimeMs: 0,
29
- lastAuctionAt: undefined,
30
- };
31
- }
32
- /**
33
- * Process an auction batch and return our best settlement solution.
34
- *
35
- * Called when CowSwap sends us an auction. Must respond within 30 seconds.
36
- * Returns null if we have nothing viable to submit.
37
- */
38
- async processAuction(batch) {
39
- const startTime = Date.now();
40
- this.stats.auctionsProcessed++;
41
- this.stats.lastAuctionAt = startTime;
42
- const orders = Object.values(batch.instance.orders);
43
- if (orders.length === 0)
44
- return null;
45
- // Step 1: Find Coincidence of Wants — best outcome for users, no DEX fees
46
- const cowMatches = this.analyzer.findCoincidenceOfWants(orders);
47
- // Step 2: Route remaining orders through SmartSwapRouter
48
- const matchedOrderIds = new Set(cowMatches.flatMap((m) => [m.orderA.uid, m.orderB.uid]));
49
- const remainingOrders = orders.filter((o) => !matchedOrderIds.has(o.uid));
50
- const analysisPromises = remainingOrders.map((order) => this.analyzer
51
- .analyzeOrder(order, this.getChainId())
52
- .then((result) => result ? { order, route: result.bestRoute } : { order, route: null }));
53
- const routes = await Promise.all(analysisPromises);
54
- // Step 3: Only keep orders we can actually fill
55
- const viableRoutes = routes.filter((r) => r.route !== null);
56
- // Step 4: Nothing to submit?
57
- if (viableRoutes.length === 0 && cowMatches.length === 0)
58
- return null;
59
- // Step 5: Assemble the solution
60
- const solution = this.builder.buildSolution({
61
- auctionId: batch.id,
62
- orders,
63
- routes: viableRoutes,
64
- cowMatches,
65
- });
66
- // Step 6: Update timing stats
67
- const elapsed = Date.now() - startTime;
68
- this.stats.avgResponseTimeMs =
69
- (this.stats.avgResponseTimeMs * (this.stats.auctionsProcessed - 1) +
70
- elapsed) /
71
- this.stats.auctionsProcessed;
72
- return solution;
73
- }
74
- /**
75
- * Submit a solution to CowSwap.
76
- *
77
- * In shadow mode, the solution is evaluated but never executed on-chain —
78
- * useful for measuring competitiveness before applying for the production
79
- * bonding pool.
80
- */
81
- async submitSolution(solution) {
82
- const endpoint = this.config.submissionUrl ||
83
- this.ENDPOINTS[this.config.environment];
84
- try {
85
- const response = await fetch(`${endpoint}/solutions`, {
86
- method: 'POST',
87
- headers: { 'Content-Type': 'application/json' },
88
- body: JSON.stringify({
89
- auctionId: solution.auctionId,
90
- trades: solution.trades,
91
- interactions: solution.interactions,
92
- prices: solution.prices,
93
- }),
94
- });
95
- if (!response.ok) {
96
- const text = await response.text();
97
- return {
98
- success: false,
99
- auctionId: solution.auctionId,
100
- error: text,
101
- };
102
- }
103
- const result = (await response.json());
104
- return {
105
- success: true,
106
- auctionId: solution.auctionId,
107
- solutionId: result.id,
108
- won: result.winner === this.config.solverName,
109
- surplus: result.surplus,
110
- };
111
- }
112
- catch (err) {
113
- return {
114
- success: false,
115
- auctionId: solution.auctionId,
116
- error: err instanceof Error ? err.message : 'Unknown error',
117
- };
118
- }
119
- }
120
- /** Get current solver performance statistics */
121
- getStats() {
122
- return { ...this.stats };
123
- }
124
- /** Get the CowSwap API base URL for the configured environment */
125
- getApiUrl() {
126
- return this.ENDPOINTS[this.config.environment];
127
- }
128
- getChainId() {
129
- const map = {
130
- ethereum: 1,
131
- base: 8453,
132
- arbitrum: 42161,
133
- gnosis: 100,
134
- };
135
- return map[this.config.chain] ?? 1;
136
- }
137
- }
138
- //# sourceMappingURL=adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/solver/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- /**
2
- * AuctionAnalyzer — Core intelligence for CowSwap solver.
3
- *
4
- * Given an auction batch, finds the best execution route for each order
5
- * by leveraging SmartSwapRouter (7 DEX aggregators queried in parallel).
6
- *
7
- * Also detects Coincidence of Wants (CoW): orders that can settle directly
8
- * without any DEX, saving gas and maximising user surplus.
9
- */
10
- import type { SmartSwapRouter } from '../swap/router/router.js';
11
- import type { AggregatorQuote } from '../swap/router/types.js';
12
- import type { CowOrder } from './types.js';
13
- export declare class AuctionAnalyzer {
14
- private router?;
15
- constructor(router?: SmartSwapRouter | undefined);
16
- /**
17
- * Analyse a single order — find the best execution route.
18
- * Returns null if no router is configured or no viable quotes exist.
19
- *
20
- * NOTE: analyzeOrder is intentionally graceful — it never throws.
21
- * A missing router or empty quote list simply returns null.
22
- */
23
- analyzeOrder(order: CowOrder, chainId: number): Promise<{
24
- order: CowOrder;
25
- bestRoute: AggregatorQuote | null;
26
- /** Surplus vs the order's limit price in buy-token units */
27
- surplusBuyToken: bigint;
28
- /** Surplus in USD (simplified) */
29
- surplusUsd: number;
30
- viable: boolean;
31
- } | null>;
32
- /**
33
- * Find Coincidence of Wants (CoW) — orders that can trade directly.
34
- *
35
- * If user A wants to sell ETH for USDC and user B wants to sell USDC for
36
- * ETH, they can settle directly with ZERO DEX fees. This is CowSwap's core
37
- * innovation and is the primary edge for any competitive solver.
38
- */
39
- findCoincidenceOfWants(orders: CowOrder[]): Array<{
40
- orderA: CowOrder;
41
- orderB: CowOrder;
42
- matchedAmount: bigint;
43
- estimatedGasSaved: bigint;
44
- }>;
45
- private calculateCoWMatch;
46
- private chainIdToName;
47
- }
48
- //# sourceMappingURL=analyzer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/solver/analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,eAAe;IACd,OAAO,CAAC,MAAM,CAAC;gBAAP,MAAM,CAAC,6BAAiB;IAE5C;;;;;;OAMG;IACG,YAAY,CAChB,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QACT,KAAK,EAAE,QAAQ,CAAC;QAChB,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;QAClC,4DAA4D;QAC5D,eAAe,EAAE,MAAM,CAAC;QACxB,kCAAkC;QAClC,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC;KACjB,GAAG,IAAI,CAAC;IAqCT;;;;;;OAMG;IACH,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QAChD,MAAM,EAAE,QAAQ,CAAC;QACjB,MAAM,EAAE,QAAQ,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IA+BF,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,aAAa;CAStB"}
@@ -1,89 +0,0 @@
1
- export class AuctionAnalyzer {
2
- constructor(router) {
3
- this.router = router;
4
- }
5
- /**
6
- * Analyse a single order — find the best execution route.
7
- * Returns null if no router is configured or no viable quotes exist.
8
- *
9
- * NOTE: analyzeOrder is intentionally graceful — it never throws.
10
- * A missing router or empty quote list simply returns null.
11
- */
12
- async analyzeOrder(order, chainId) {
13
- if (!this.router)
14
- return null;
15
- try {
16
- const quotes = await this.router.getQuotes({
17
- fromToken: order.sellToken,
18
- toToken: order.buyToken,
19
- // getQuotes expects a human-readable amount string; we pass the raw
20
- // uint256 string which is fine for comparisons in test/shadow mode.
21
- amount: order.sellAmount,
22
- chain: this.chainIdToName(chainId),
23
- });
24
- if (quotes.length === 0)
25
- return null;
26
- const best = quotes[0];
27
- const limitPrice = BigInt(order.buyAmount);
28
- // Surplus = what we can deliver ABOVE the user's limit price
29
- const surplusBuyToken = best.toAmount > limitPrice ? best.toAmount - limitPrice : 0n;
30
- // Simplified USD estimate (assumes 6-decimal stablecoin output)
31
- const surplusUsd = Number(surplusBuyToken) / 1e6;
32
- return {
33
- order,
34
- bestRoute: best,
35
- surplusBuyToken,
36
- surplusUsd,
37
- viable: surplusBuyToken > 0n,
38
- };
39
- }
40
- catch {
41
- return null;
42
- }
43
- }
44
- /**
45
- * Find Coincidence of Wants (CoW) — orders that can trade directly.
46
- *
47
- * If user A wants to sell ETH for USDC and user B wants to sell USDC for
48
- * ETH, they can settle directly with ZERO DEX fees. This is CowSwap's core
49
- * innovation and is the primary edge for any competitive solver.
50
- */
51
- findCoincidenceOfWants(orders) {
52
- const matches = [];
53
- for (let i = 0; i < orders.length; i++) {
54
- for (let j = i + 1; j < orders.length; j++) {
55
- const a = orders[i];
56
- const b = orders[j];
57
- // Complementary: A sells what B buys, and B sells what A buys
58
- if (a.sellToken === b.buyToken && a.buyToken === b.sellToken) {
59
- const matchedAmount = this.calculateCoWMatch(a, b);
60
- if (matchedAmount > 0n) {
61
- matches.push({
62
- orderA: a,
63
- orderB: b,
64
- matchedAmount,
65
- estimatedGasSaved: 50000n, // ~50K gas saved per matched pair
66
- });
67
- }
68
- }
69
- }
70
- }
71
- return matches;
72
- }
73
- calculateCoWMatch(orderA, orderB) {
74
- const aCanSell = BigInt(orderA.sellAmount);
75
- const bWantsToBuy = BigInt(orderB.buyAmount); // minimum they accept
76
- // Return the smaller of the two amounts (limited by both constraints)
77
- return aCanSell < bWantsToBuy ? aCanSell : bWantsToBuy;
78
- }
79
- chainIdToName(chainId) {
80
- const map = {
81
- 1: 'ethereum',
82
- 8453: 'base',
83
- 42161: 'arbitrum',
84
- 100: 'gnosis',
85
- };
86
- return map[chainId] ?? 'ethereum';
87
- }
88
- }
89
- //# sourceMappingURL=analyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/solver/analyzer.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- /**
2
- * SolutionBuilder — Constructs CowSwap settlement solutions.
3
- *
4
- * Takes analysed orders (CoW matches + DEX-routed orders) and assembles
5
- * the SolverSolution payload that is submitted to the CowSwap API.
6
- */
7
- import type { AggregatorQuote } from '../swap/router/types.js';
8
- import type { CowOrder, SolverSolution } from './types.js';
9
- export declare class SolutionBuilder {
10
- /**
11
- * Build a settlement solution from analysed orders.
12
- *
13
- * CoW-matched orders are processed first (zero DEX fees, best for users).
14
- * DEX-routed orders are processed second, with swap calldata inserted as
15
- * intra-transaction interactions.
16
- */
17
- buildSolution(params: {
18
- auctionId: number;
19
- orders: CowOrder[];
20
- routes: Array<{
21
- order: CowOrder;
22
- route: AggregatorQuote | null;
23
- }>;
24
- cowMatches?: Array<{
25
- orderA: CowOrder;
26
- orderB: CowOrder;
27
- matchedAmount: bigint;
28
- }>;
29
- }): SolverSolution;
30
- }
31
- //# sourceMappingURL=builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/solver/builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAoB,MAAM,YAAY,CAAC;AAE7E,qBAAa,eAAe;IAC1B;;;;;;OAMG;IACH,aAAa,CAAC,MAAM,EAAE;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,QAAQ,EAAE,CAAC;QACnB,MAAM,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,QAAQ,CAAC;YAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;QAClE,UAAU,CAAC,EAAE,KAAK,CAAC;YACjB,MAAM,EAAE,QAAQ,CAAC;YACjB,MAAM,EAAE,QAAQ,CAAC;YACjB,aAAa,EAAE,MAAM,CAAC;SACvB,CAAC,CAAC;KACJ,GAAG,cAAc;CAuDnB"}
@@ -1,60 +0,0 @@
1
- export class SolutionBuilder {
2
- /**
3
- * Build a settlement solution from analysed orders.
4
- *
5
- * CoW-matched orders are processed first (zero DEX fees, best for users).
6
- * DEX-routed orders are processed second, with swap calldata inserted as
7
- * intra-transaction interactions.
8
- */
9
- buildSolution(params) {
10
- const trades = [];
11
- const interactions = {
12
- pre: [],
13
- intra: [],
14
- post: [],
15
- };
16
- const prices = {};
17
- // 1. Process CoW matches first — no DEX fees, pure surplus for users
18
- for (const match of params.cowMatches ?? []) {
19
- trades.push({
20
- kind: 'fulfillment',
21
- order: match.orderA.uid,
22
- executedAmount: match.matchedAmount.toString(),
23
- });
24
- trades.push({
25
- kind: 'fulfillment',
26
- order: match.orderB.uid,
27
- executedAmount: match.matchedAmount.toString(),
28
- });
29
- }
30
- // 2. Process DEX-routed orders
31
- for (const { order, route } of params.routes) {
32
- if (!route)
33
- continue;
34
- trades.push({
35
- kind: 'fulfillment',
36
- order: order.uid,
37
- executedAmount: route.toAmount.toString(),
38
- });
39
- // Insert swap calldata as an intra-settlement interaction
40
- if (route.txData) {
41
- const interaction = {
42
- target: route.txData.to,
43
- value: route.txData.value?.toString() ?? '0',
44
- callData: route.txData.data ?? '0x',
45
- };
46
- interactions.intra.push(interaction);
47
- }
48
- // Set clearing prices for this token pair
49
- prices[order.sellToken] = order.sellAmount;
50
- prices[order.buyToken] = route.toAmount.toString();
51
- }
52
- return {
53
- auctionId: params.auctionId,
54
- trades,
55
- interactions,
56
- prices,
57
- };
58
- }
59
- }
60
- //# sourceMappingURL=builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/solver/builder.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,eAAe;IAC1B;;;;;;OAMG;IACH,aAAa,CAAC,MASb;QACC,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAmC;YACnD,GAAG,EAAE,EAAE;YACP,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;SACT,CAAC;QACF,MAAM,MAAM,GAA2B,EAAE,CAAC;QAE1C,qEAAqE;QACrE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG;gBACvB,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE;aAC/C,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG;gBACvB,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE;aAC/C,CAAC,CAAC;QACL,CAAC;QAED,+BAA+B;QAC/B,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK;gBAAE,SAAS;YAErB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,KAAK,CAAC,GAAG;gBAChB,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE;aAC1C,CAAC,CAAC;YAEH,0DAA0D;YAC1D,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,WAAW,GAAqB;oBACpC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;oBACvB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG;oBAC5C,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI;iBACpC,CAAC;gBACF,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvC,CAAC;YAED,0CAA0C;YAC1C,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACrD,CAAC;QAED,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM;YACN,YAAY;YACZ,MAAM;SACP,CAAC;IACJ,CAAC;CACF"}
@@ -1,22 +0,0 @@
1
- /**
2
- * CowSwap Solver Module
3
- *
4
- * Flips the CowSwap relationship: instead of submitting orders as a user,
5
- * we receive auction batches and compete to fill them as a solver.
6
- *
7
- * ⚠️ Shadow competition is FREE — no registration, no KYC required.
8
- * Production solver requires CowSwap DAO bonding pool approval and KYC.
9
- *
10
- * Quick start (shadow mode):
11
- * ```ts
12
- * import { CowSolverAdapter } from '@agentwallet/sdk';
13
- * const solver = new CowSolverAdapter({ chain: 'ethereum' }, router);
14
- * const solution = await solver.processAuction(batch);
15
- * if (solution) await solver.submitSolution(solution);
16
- * ```
17
- */
18
- export { CowSolverAdapter } from './adapter.js';
19
- export { AuctionAnalyzer } from './analyzer.js';
20
- export { SolutionBuilder } from './builder.js';
21
- export type { OrderKind, SigningScheme, TokenBalance, CowOrder, CowAuctionBatch, TokenInteraction, SolverSolution, SolutionSubmissionResult, SolverStats, SolverConfig, } from './types.js';
22
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/solver/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,WAAW,EACX,YAAY,GACb,MAAM,YAAY,CAAC"}
@@ -1,21 +0,0 @@
1
- /**
2
- * CowSwap Solver Module
3
- *
4
- * Flips the CowSwap relationship: instead of submitting orders as a user,
5
- * we receive auction batches and compete to fill them as a solver.
6
- *
7
- * ⚠️ Shadow competition is FREE — no registration, no KYC required.
8
- * Production solver requires CowSwap DAO bonding pool approval and KYC.
9
- *
10
- * Quick start (shadow mode):
11
- * ```ts
12
- * import { CowSolverAdapter } from '@agentwallet/sdk';
13
- * const solver = new CowSolverAdapter({ chain: 'ethereum' }, router);
14
- * const solution = await solver.processAuction(batch);
15
- * if (solution) await solver.submitSolution(solution);
16
- * ```
17
- */
18
- export { CowSolverAdapter } from './adapter.js';
19
- export { AuctionAnalyzer } from './analyzer.js';
20
- export { SolutionBuilder } from './builder.js';
21
- //# sourceMappingURL=index.js.map