agentwallet-sdk 5.0.2 → 5.0.4

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 (258) hide show
  1. package/README.md +15 -0
  2. package/dist/index.d.ts +213 -284
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/package.json +3 -3
  7. package/dist/ap2/index.d.ts +0 -185
  8. package/dist/ap2/index.d.ts.map +0 -1
  9. package/dist/ap2/index.js +0 -255
  10. package/dist/ap2/index.js.map +0 -1
  11. package/dist/bridge/unified.d.ts +0 -101
  12. package/dist/bridge/unified.d.ts.map +0 -1
  13. package/dist/bridge/unified.js +0 -284
  14. package/dist/bridge/unified.js.map +0 -1
  15. package/dist/chains.d.ts +0 -62
  16. package/dist/chains.d.ts.map +0 -1
  17. package/dist/chains.js +0 -108
  18. package/dist/chains.js.map +0 -1
  19. package/dist/fiat/index.d.ts +0 -10
  20. package/dist/fiat/index.d.ts.map +0 -1
  21. package/dist/fiat/index.js +0 -9
  22. package/dist/fiat/index.js.map +0 -1
  23. package/dist/fiat/onramp.d.ts +0 -101
  24. package/dist/fiat/onramp.d.ts.map +0 -1
  25. package/dist/fiat/onramp.js +0 -155
  26. package/dist/fiat/onramp.js.map +0 -1
  27. package/dist/fiat/providers/index.d.ts +0 -16
  28. package/dist/fiat/providers/index.d.ts.map +0 -1
  29. package/dist/fiat/providers/index.js +0 -30
  30. package/dist/fiat/providers/index.js.map +0 -1
  31. package/dist/fiat/providers/moonpay.d.ts +0 -22
  32. package/dist/fiat/providers/moonpay.d.ts.map +0 -1
  33. package/dist/fiat/providers/moonpay.js +0 -107
  34. package/dist/fiat/providers/moonpay.js.map +0 -1
  35. package/dist/fiat/providers/stripe.d.ts +0 -26
  36. package/dist/fiat/providers/stripe.d.ts.map +0 -1
  37. package/dist/fiat/providers/stripe.js +0 -135
  38. package/dist/fiat/providers/stripe.js.map +0 -1
  39. package/dist/fiat/providers/transak.d.ts +0 -26
  40. package/dist/fiat/providers/transak.d.ts.map +0 -1
  41. package/dist/fiat/providers/transak.js +0 -119
  42. package/dist/fiat/providers/transak.js.map +0 -1
  43. package/dist/fiat/types.d.ts +0 -106
  44. package/dist/fiat/types.d.ts.map +0 -1
  45. package/dist/fiat/types.js +0 -13
  46. package/dist/fiat/types.js.map +0 -1
  47. package/dist/flash/executor.d.ts +0 -119
  48. package/dist/flash/executor.d.ts.map +0 -1
  49. package/dist/flash/executor.js +0 -195
  50. package/dist/flash/executor.js.map +0 -1
  51. package/dist/flash/index.d.ts +0 -28
  52. package/dist/flash/index.d.ts.map +0 -1
  53. package/dist/flash/index.js +0 -29
  54. package/dist/flash/index.js.map +0 -1
  55. package/dist/flash/scanner.d.ts +0 -133
  56. package/dist/flash/scanner.d.ts.map +0 -1
  57. package/dist/flash/scanner.js +0 -212
  58. package/dist/flash/scanner.js.map +0 -1
  59. package/dist/flash/types.d.ts +0 -136
  60. package/dist/flash/types.d.ts.map +0 -1
  61. package/dist/flash/types.js +0 -23
  62. package/dist/flash/types.js.map +0 -1
  63. package/dist/gas/index.d.ts +0 -4
  64. package/dist/gas/index.d.ts.map +0 -1
  65. package/dist/gas/index.js +0 -3
  66. package/dist/gas/index.js.map +0 -1
  67. package/dist/gas/sponsor.d.ts +0 -70
  68. package/dist/gas/sponsor.d.ts.map +0 -1
  69. package/dist/gas/sponsor.js +0 -193
  70. package/dist/gas/sponsor.js.map +0 -1
  71. package/dist/gas/types.d.ts +0 -76
  72. package/dist/gas/types.d.ts.map +0 -1
  73. package/dist/gas/types.js +0 -21
  74. package/dist/gas/types.js.map +0 -1
  75. package/dist/identity/agent-identity.d.ts +0 -276
  76. package/dist/identity/agent-identity.d.ts.map +0 -1
  77. package/dist/identity/agent-identity.js +0 -300
  78. package/dist/identity/agent-identity.js.map +0 -1
  79. package/dist/identity/erc6551.d.ts +0 -441
  80. package/dist/identity/erc6551.d.ts.map +0 -1
  81. package/dist/identity/erc6551.js +0 -517
  82. package/dist/identity/erc6551.js.map +0 -1
  83. package/dist/mev/index.d.ts +0 -4
  84. package/dist/mev/index.d.ts.map +0 -1
  85. package/dist/mev/index.js +0 -8
  86. package/dist/mev/index.js.map +0 -1
  87. package/dist/mev/protection.d.ts +0 -54
  88. package/dist/mev/protection.d.ts.map +0 -1
  89. package/dist/mev/protection.js +0 -185
  90. package/dist/mev/protection.js.map +0 -1
  91. package/dist/mev/risk.d.ts +0 -19
  92. package/dist/mev/risk.d.ts.map +0 -1
  93. package/dist/mev/risk.js +0 -95
  94. package/dist/mev/risk.js.map +0 -1
  95. package/dist/mev/types.d.ts +0 -49
  96. package/dist/mev/types.d.ts.map +0 -1
  97. package/dist/mev/types.js +0 -2
  98. package/dist/mev/types.js.map +0 -1
  99. package/dist/settlement/index.d.ts +0 -4
  100. package/dist/settlement/index.d.ts.map +0 -1
  101. package/dist/settlement/index.js +0 -3
  102. package/dist/settlement/index.js.map +0 -1
  103. package/dist/settlement/types.d.ts +0 -66
  104. package/dist/settlement/types.d.ts.map +0 -1
  105. package/dist/settlement/types.js +0 -37
  106. package/dist/settlement/types.js.map +0 -1
  107. package/dist/settlement/verifier.d.ts +0 -75
  108. package/dist/settlement/verifier.d.ts.map +0 -1
  109. package/dist/settlement/verifier.js +0 -354
  110. package/dist/settlement/verifier.js.map +0 -1
  111. package/dist/solana/bridge.d.ts +0 -144
  112. package/dist/solana/bridge.d.ts.map +0 -1
  113. package/dist/solana/bridge.js +0 -352
  114. package/dist/solana/bridge.js.map +0 -1
  115. package/dist/solana/index.d.ts +0 -8
  116. package/dist/solana/index.d.ts.map +0 -1
  117. package/dist/solana/index.js +0 -6
  118. package/dist/solana/index.js.map +0 -1
  119. package/dist/solana/swap.d.ts +0 -85
  120. package/dist/solana/swap.d.ts.map +0 -1
  121. package/dist/solana/swap.js +0 -173
  122. package/dist/solana/swap.js.map +0 -1
  123. package/dist/solana/types.d.ts +0 -126
  124. package/dist/solana/types.d.ts.map +0 -1
  125. package/dist/solana/types.js +0 -10
  126. package/dist/solana/types.js.map +0 -1
  127. package/dist/solana/wallet.d.ts +0 -83
  128. package/dist/solana/wallet.d.ts.map +0 -1
  129. package/dist/solana/wallet.js +0 -164
  130. package/dist/solana/wallet.js.map +0 -1
  131. package/dist/solana/x402.d.ts +0 -69
  132. package/dist/solana/x402.d.ts.map +0 -1
  133. package/dist/solana/x402.js +0 -154
  134. package/dist/solana/x402.js.map +0 -1
  135. package/dist/solver/adapter.d.ts +0 -47
  136. package/dist/solver/adapter.d.ts.map +0 -1
  137. package/dist/solver/adapter.js +0 -146
  138. package/dist/solver/adapter.js.map +0 -1
  139. package/dist/solver/analyzer.d.ts +0 -48
  140. package/dist/solver/analyzer.d.ts.map +0 -1
  141. package/dist/solver/analyzer.js +0 -171
  142. package/dist/solver/analyzer.js.map +0 -1
  143. package/dist/solver/builder.d.ts +0 -31
  144. package/dist/solver/builder.d.ts.map +0 -1
  145. package/dist/solver/builder.js +0 -60
  146. package/dist/solver/builder.js.map +0 -1
  147. package/dist/solver/index.d.ts +0 -22
  148. package/dist/solver/index.d.ts.map +0 -1
  149. package/dist/solver/index.js +0 -25
  150. package/dist/solver/index.js.map +0 -1
  151. package/dist/solver/types.d.ts +0 -115
  152. package/dist/solver/types.d.ts.map +0 -1
  153. package/dist/solver/types.js +0 -10
  154. package/dist/solver/types.js.map +0 -1
  155. package/dist/spend-guard/index.d.ts +0 -125
  156. package/dist/spend-guard/index.d.ts.map +0 -1
  157. package/dist/spend-guard/index.js +0 -150
  158. package/dist/spend-guard/index.js.map +0 -1
  159. package/dist/swap/router/cache.d.ts +0 -13
  160. package/dist/swap/router/cache.d.ts.map +0 -1
  161. package/dist/swap/router/cache.js +0 -30
  162. package/dist/swap/router/cache.js.map +0 -1
  163. package/dist/swap/router/flashbots.d.ts +0 -10
  164. package/dist/swap/router/flashbots.d.ts.map +0 -1
  165. package/dist/swap/router/flashbots.js +0 -43
  166. package/dist/swap/router/flashbots.js.map +0 -1
  167. package/dist/swap/router/health.d.ts +0 -17
  168. package/dist/swap/router/health.d.ts.map +0 -1
  169. package/dist/swap/router/health.js +0 -38
  170. package/dist/swap/router/health.js.map +0 -1
  171. package/dist/swap/router/index.d.ts +0 -10
  172. package/dist/swap/router/index.d.ts.map +0 -1
  173. package/dist/swap/router/index.js +0 -10
  174. package/dist/swap/router/index.js.map +0 -1
  175. package/dist/swap/router/providers/cowswap.d.ts +0 -11
  176. package/dist/swap/router/providers/cowswap.d.ts.map +0 -1
  177. package/dist/swap/router/providers/cowswap.js +0 -79
  178. package/dist/swap/router/providers/cowswap.js.map +0 -1
  179. package/dist/swap/router/providers/index.d.ts +0 -20
  180. package/dist/swap/router/providers/index.d.ts.map +0 -1
  181. package/dist/swap/router/providers/index.js +0 -32
  182. package/dist/swap/router/providers/index.js.map +0 -1
  183. package/dist/swap/router/providers/jupiter.d.ts +0 -12
  184. package/dist/swap/router/providers/jupiter.d.ts.map +0 -1
  185. package/dist/swap/router/providers/jupiter.js +0 -73
  186. package/dist/swap/router/providers/jupiter.js.map +0 -1
  187. package/dist/swap/router/providers/lifi.d.ts +0 -11
  188. package/dist/swap/router/providers/lifi.d.ts.map +0 -1
  189. package/dist/swap/router/providers/lifi.js +0 -123
  190. package/dist/swap/router/providers/lifi.js.map +0 -1
  191. package/dist/swap/router/providers/oneinch.d.ts +0 -13
  192. package/dist/swap/router/providers/oneinch.d.ts.map +0 -1
  193. package/dist/swap/router/providers/oneinch.js +0 -71
  194. package/dist/swap/router/providers/oneinch.js.map +0 -1
  195. package/dist/swap/router/providers/paraswap.d.ts +0 -11
  196. package/dist/swap/router/providers/paraswap.d.ts.map +0 -1
  197. package/dist/swap/router/providers/paraswap.js +0 -73
  198. package/dist/swap/router/providers/paraswap.js.map +0 -1
  199. package/dist/swap/router/providers/uniswap.d.ts +0 -31
  200. package/dist/swap/router/providers/uniswap.d.ts.map +0 -1
  201. package/dist/swap/router/providers/uniswap.js +0 -237
  202. package/dist/swap/router/providers/uniswap.js.map +0 -1
  203. package/dist/swap/router/providers/zerox.d.ts +0 -13
  204. package/dist/swap/router/providers/zerox.d.ts.map +0 -1
  205. package/dist/swap/router/providers/zerox.js +0 -94
  206. package/dist/swap/router/providers/zerox.js.map +0 -1
  207. package/dist/swap/router/router.d.ts +0 -86
  208. package/dist/swap/router/router.d.ts.map +0 -1
  209. package/dist/swap/router/router.js +0 -224
  210. package/dist/swap/router/router.js.map +0 -1
  211. package/dist/swap/router/rsi/engine.d.ts +0 -60
  212. package/dist/swap/router/rsi/engine.d.ts.map +0 -1
  213. package/dist/swap/router/rsi/engine.js +0 -483
  214. package/dist/swap/router/rsi/engine.js.map +0 -1
  215. package/dist/swap/router/rsi/index.d.ts +0 -3
  216. package/dist/swap/router/rsi/index.d.ts.map +0 -1
  217. package/dist/swap/router/rsi/index.js +0 -3
  218. package/dist/swap/router/rsi/index.js.map +0 -1
  219. package/dist/swap/router/rsi/types.d.ts +0 -106
  220. package/dist/swap/router/rsi/types.d.ts.map +0 -1
  221. package/dist/swap/router/rsi/types.js +0 -3
  222. package/dist/swap/router/rsi/types.js.map +0 -1
  223. package/dist/swap/router/types.d.ts +0 -120
  224. package/dist/swap/router/types.d.ts.map +0 -1
  225. package/dist/swap/router/types.js +0 -16
  226. package/dist/swap/router/types.js.map +0 -1
  227. package/dist/tax/engine.d.ts +0 -131
  228. package/dist/tax/engine.d.ts.map +0 -1
  229. package/dist/tax/engine.js +0 -307
  230. package/dist/tax/engine.js.map +0 -1
  231. package/dist/tax/index.d.ts +0 -9
  232. package/dist/tax/index.d.ts.map +0 -1
  233. package/dist/tax/index.js +0 -12
  234. package/dist/tax/index.js.map +0 -1
  235. package/dist/tax/lots.d.ts +0 -60
  236. package/dist/tax/lots.d.ts.map +0 -1
  237. package/dist/tax/lots.js +0 -129
  238. package/dist/tax/lots.js.map +0 -1
  239. package/dist/tax/types.d.ts +0 -113
  240. package/dist/tax/types.d.ts.map +0 -1
  241. package/dist/tax/types.js +0 -18
  242. package/dist/tax/types.js.map +0 -1
  243. package/dist/yield/index.d.ts +0 -26
  244. package/dist/yield/index.d.ts.map +0 -1
  245. package/dist/yield/index.js +0 -29
  246. package/dist/yield/index.js.map +0 -1
  247. package/dist/yield/rates.d.ts +0 -114
  248. package/dist/yield/rates.d.ts.map +0 -1
  249. package/dist/yield/rates.js +0 -351
  250. package/dist/yield/rates.js.map +0 -1
  251. package/dist/yield/types.d.ts +0 -134
  252. package/dist/yield/types.d.ts.map +0 -1
  253. package/dist/yield/types.js +0 -24
  254. package/dist/yield/types.js.map +0 -1
  255. package/dist/yield/vault.d.ts +0 -112
  256. package/dist/yield/vault.d.ts.map +0 -1
  257. package/dist/yield/vault.js +0 -264
  258. package/dist/yield/vault.js.map +0 -1
@@ -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,25 +0,0 @@
1
- /**
2
- * @premium This module is part of AgentWallet Premium.
3
- * Contact: https://github.com/up2itnow/AgentNexus2 for access.
4
- */
5
- /**
6
- * CowSwap Solver Module
7
- *
8
- * Flips the CowSwap relationship: instead of submitting orders as a user,
9
- * we receive auction batches and compete to fill them as a solver.
10
- *
11
- * ⚠️ Shadow competition is FREE — no registration, no KYC required.
12
- * Production solver requires CowSwap DAO bonding pool approval and KYC.
13
- *
14
- * Quick start (shadow mode):
15
- * ```ts
16
- * import { CowSolverAdapter } from '@agentwallet/sdk';
17
- * const solver = new CowSolverAdapter({ chain: 'ethereum' }, router);
18
- * const solution = await solver.processAuction(batch);
19
- * if (solution) await solver.submitSolution(solution);
20
- * ```
21
- */
22
- export { CowSolverAdapter } from './adapter.js';
23
- export { AuctionAnalyzer } from './analyzer.js';
24
- export { SolutionBuilder } from './builder.js';
25
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","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"}
@@ -1,115 +0,0 @@
1
- /**
2
- * CowSwap Solver Adapter — Types
3
- *
4
- * Shadow competition is FREE. Production solver requires CowSwap DAO bonding
5
- * pool approval and KYC. Never assume production credentials in this module.
6
- *
7
- * @module solver/types
8
- */
9
- /** CowSwap order types (from their protocol) */
10
- export type OrderKind = 'sell' | 'buy';
11
- export type SigningScheme = 'eip712' | 'ethsign' | 'presign' | 'eip1271';
12
- export type TokenBalance = 'erc20' | 'internal' | 'external';
13
- /** A single user order in a CowSwap auction batch */
14
- export interface CowOrder {
15
- /** Unique order UID */
16
- uid: string;
17
- /** Owner wallet */
18
- owner: string;
19
- sellToken: string;
20
- buyToken: string;
21
- sellAmount: string;
22
- buyAmount: string;
23
- feeAmount: string;
24
- kind: OrderKind;
25
- partiallyFillable: boolean;
26
- sellTokenBalance: TokenBalance;
27
- buyTokenBalance: TokenBalance;
28
- validTo: number;
29
- appData: string;
30
- signingScheme: SigningScheme;
31
- signature: string;
32
- }
33
- /** An auction batch that CowSwap sends to solvers */
34
- export interface CowAuctionBatch {
35
- id: number;
36
- instance: {
37
- /** The orders to settle */
38
- orders: Record<string, CowOrder>;
39
- /** Current on-chain token prices (used for surplus calculation) */
40
- prices: Record<string, string>;
41
- /** Available AMM pools for solver use */
42
- ammsAndLiquidity?: unknown;
43
- };
44
- /** Auction deadline (submit before this) */
45
- deadline: number;
46
- }
47
- /** A token interaction in a settlement (AMM trade, DEX swap, etc.) */
48
- export interface TokenInteraction {
49
- target: string;
50
- value: string;
51
- callData: string;
52
- }
53
- /** Our settlement solution to submit to CowSwap */
54
- export interface SolverSolution {
55
- /** Auction ID we're responding to */
56
- auctionId: number;
57
- /** Orders we're settling */
58
- trades: Array<{
59
- kind: 'fulfillment';
60
- order: string;
61
- executedAmount: string;
62
- }>;
63
- /** On-chain interactions needed to source the liquidity */
64
- interactions: {
65
- pre: TokenInteraction[];
66
- intra: TokenInteraction[];
67
- post: TokenInteraction[];
68
- };
69
- /** Token prices in our settlement (solver sets these, determines surplus) */
70
- prices: Record<string, string>;
71
- /** Gas used estimate (CowSwap v2 "score") */
72
- score?: string;
73
- }
74
- /** Result of a solution submission */
75
- export interface SolutionSubmissionResult {
76
- success: boolean;
77
- auctionId: number;
78
- solutionId?: string;
79
- won?: boolean;
80
- surplus?: string;
81
- error?: string;
82
- }
83
- /** Solver competition statistics */
84
- export interface SolverStats {
85
- auctionsProcessed: number;
86
- auctionsWon: number;
87
- auctionsLost: number;
88
- totalSurplusGenerated: string;
89
- winRate: number;
90
- avgResponseTimeMs: number;
91
- lastAuctionAt?: number;
92
- }
93
- /**
94
- * Solver configuration.
95
- *
96
- * ⚠️ Shadow mode is the default and is FREE — no registration required.
97
- * Production solver requires CowSwap DAO bonding pool approval and KYC.
98
- */
99
- export interface SolverConfig {
100
- /** CowSwap environment (default: 'shadow') */
101
- environment?: 'mainnet' | 'staging' | 'shadow';
102
- /** Solver name shown in CowSwap UI (default: 'AgentWallet') */
103
- solverName?: string;
104
- /** Chain to operate on */
105
- chain: string;
106
- /** Submission endpoint override */
107
- submissionUrl?: string;
108
- /** Maximum gas willing to pay per settlement in Gwei (default: 50) */
109
- maxGasGwei?: number;
110
- /** Minimum surplus to bother submitting in USD (default: 0.5) */
111
- minSurplusUsd?: number;
112
- /** Response timeout ms — must be < 30s for CowSwap (default: 20000) */
113
- responseTimeoutMs?: number;
114
- }
115
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/solver/types.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * CowSwap Solver Adapter — Types
3
- *
4
- * Shadow competition is FREE. Production solver requires CowSwap DAO bonding
5
- * pool approval and KYC. Never assume production credentials in this module.
6
- *
7
- * @module solver/types
8
- */
9
- export {};
10
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/solver/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -1,125 +0,0 @@
1
- /**
2
- * SpendGuard — per-session and per-merchant spend caps for agentwallet-sdk.
3
- *
4
- * Closes the PolicyLayer feature gap: gives AI agents deterministic,
5
- * non-custodial spending controls without on-chain round-trips.
6
- *
7
- * @module spend-guard
8
- */
9
- /** Reason a cap was exceeded. */
10
- export type SpendCapReason = 'session_cap' | 'merchant_cap' | 'daily_cap';
11
- /**
12
- * Configuration for SpendGuard.
13
- * All amounts are in USDC (floating point, e.g. 5.00 = $5.00 USDC).
14
- * Any omitted cap is treated as unlimited.
15
- */
16
- export interface SpendGuardConfig {
17
- /** Maximum cumulative spend per session ID. Resets on resetSession(). */
18
- sessionCapUSDC?: number;
19
- /**
20
- * Per-merchant caps keyed by merchant address (checksummed or lowercase).
21
- * Example: { "0xAbC...": 10.00 }
22
- */
23
- merchantCapUSDC?: Record<string, number>;
24
- /** Rolling 24-hour cumulative cap across all sessions and merchants. */
25
- dailyCapUSDC?: number;
26
- /** Called when a cap would be exceeded (before SpendCapError is thrown). */
27
- onCapExceeded?: (reason: SpendCapReason) => void;
28
- }
29
- /** Per-session ledger entry. */
30
- export interface SessionState {
31
- sessionId: string;
32
- spentUSDC: number;
33
- }
34
- /** Per-merchant ledger entry. */
35
- export interface MerchantState {
36
- merchantAddress: string;
37
- spentUSDC: number;
38
- }
39
- /** Snapshot of current spend state. */
40
- export interface SpendState {
41
- /** Per-session spend. If sessionId provided, only that session. */
42
- sessions: SessionState[];
43
- /** Per-merchant spend. */
44
- merchants: MerchantState[];
45
- /** Total spend in the rolling 24hr window. */
46
- dailySpentUSDC: number;
47
- /** Configured caps (for introspection). */
48
- caps: {
49
- sessionCapUSDC?: number;
50
- merchantCapUSDC?: Record<string, number>;
51
- dailyCapUSDC?: number;
52
- };
53
- }
54
- /**
55
- * Thrown when a payment would exceed a configured cap.
56
- */
57
- export declare class SpendCapError extends Error {
58
- /** Which cap was exceeded. */
59
- readonly reason: SpendCapReason;
60
- /** The configured cap value in USDC. */
61
- readonly capUSDC: number;
62
- /** How much has already been spent in this window. */
63
- readonly spentUSDC: number;
64
- /** How much the blocked payment would have added. */
65
- readonly attemptedUSDC: number;
66
- constructor(reason: SpendCapReason, capUSDC: number, spentUSDC: number, attemptedUSDC: number);
67
- }
68
- /**
69
- * SpendGuard enforces per-session, per-merchant, and rolling daily spend caps.
70
- *
71
- * Usage:
72
- * ```ts
73
- * const guard = new SpendGuard({ sessionCapUSDC: 10, dailyCapUSDC: 50 });
74
- * guard.checkPayment(2.50, '0xMerchant', 'session-abc');
75
- * guard.recordPayment(2.50, '0xMerchant', 'session-abc');
76
- * ```
77
- *
78
- * All amounts are floating-point USDC (e.g. 5.00 = $5.00).
79
- */
80
- export declare class SpendGuard {
81
- private readonly config;
82
- /** sessionId → cumulative USDC spent */
83
- private readonly sessionLedger;
84
- /** normalised merchant address → cumulative USDC spent */
85
- private readonly merchantLedger;
86
- /** Rolling 24-hr payment records */
87
- private dailyRecords;
88
- constructor(config: SpendGuardConfig);
89
- private normaliseMerchant;
90
- /** Prune records older than 24 hrs and return current daily spend. */
91
- private getDailySpent;
92
- /**
93
- * Check whether a payment is allowed under all configured caps.
94
- * Throws {@link SpendCapError} if any cap would be exceeded.
95
- * Call this BEFORE signing/sending any payment.
96
- *
97
- * @param amount - Amount in USDC (e.g. 2.50)
98
- * @param merchantAddress - Merchant wallet address
99
- * @param sessionId - Caller-defined session identifier
100
- */
101
- checkPayment(amount: number, merchantAddress: string, sessionId: string): void;
102
- /**
103
- * Record a completed payment. Call this AFTER a payment is confirmed on-chain.
104
- *
105
- * @param amount - Amount in USDC
106
- * @param merchantAddress - Merchant wallet address
107
- * @param sessionId - Session identifier
108
- */
109
- recordPayment(amount: number, merchantAddress: string, sessionId: string): void;
110
- /**
111
- * Get current spend state across all sessions, merchants, and the daily window.
112
- * If `sessionId` is provided, the `sessions` array contains only that session.
113
- *
114
- * @param sessionId - Optional filter
115
- */
116
- getSpendState(sessionId?: string): SpendState;
117
- /**
118
- * Reset the session spend for `sessionId`.
119
- * The daily and merchant ledgers are unaffected.
120
- *
121
- * @param sessionId - Session to reset
122
- */
123
- resetSession(sessionId: string): void;
124
- }
125
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spend-guard/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,iCAAiC;AACjC,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,WAAW,CAAC;AAE1E;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEzC,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;CAClD;AAED,gCAAgC;AAChC,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,uCAAuC;AACvC,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,0BAA0B;IAC1B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,IAAI,EAAE;QACJ,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAID;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAG7B,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM;CAWxB;AAMD;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAE1C,wCAAwC;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAE3D,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAE5D,oCAAoC;IACpC,OAAO,CAAC,YAAY,CAA4B;gBAEpC,MAAM,EAAE,gBAAgB;IAMpC,OAAO,CAAC,iBAAiB;IAIzB,sEAAsE;IACtE,OAAO,CAAC,aAAa;IAQrB;;;;;;;;OAQG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAqC9E;;;;;;OAMG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAa/E;;;;;OAKG;IACH,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU;IAwB7C;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAGtC"}
@@ -1,150 +0,0 @@
1
- /**
2
- * SpendGuard — per-session and per-merchant spend caps for agentwallet-sdk.
3
- *
4
- * Closes the PolicyLayer feature gap: gives AI agents deterministic,
5
- * non-custodial spending controls without on-chain round-trips.
6
- *
7
- * @module spend-guard
8
- */
9
- // ─── Errors ──────────────────────────────────────────────────────────────────
10
- /**
11
- * Thrown when a payment would exceed a configured cap.
12
- */
13
- export class SpendCapError extends Error {
14
- constructor(reason, capUSDC, spentUSDC, attemptedUSDC) {
15
- super(`SpendGuard: ${reason} exceeded — cap ${capUSDC} USDC, spent ${spentUSDC} USDC, attempted ${attemptedUSDC} USDC`);
16
- this.name = 'SpendCapError';
17
- this.reason = reason;
18
- this.capUSDC = capUSDC;
19
- this.spentUSDC = spentUSDC;
20
- this.attemptedUSDC = attemptedUSDC;
21
- }
22
- }
23
- // ─── SpendGuard ──────────────────────────────────────────────────────────────
24
- const TWENTY_FOUR_HOURS_MS = 24 * 60 * 60 * 1000;
25
- /**
26
- * SpendGuard enforces per-session, per-merchant, and rolling daily spend caps.
27
- *
28
- * Usage:
29
- * ```ts
30
- * const guard = new SpendGuard({ sessionCapUSDC: 10, dailyCapUSDC: 50 });
31
- * guard.checkPayment(2.50, '0xMerchant', 'session-abc');
32
- * guard.recordPayment(2.50, '0xMerchant', 'session-abc');
33
- * ```
34
- *
35
- * All amounts are floating-point USDC (e.g. 5.00 = $5.00).
36
- */
37
- export class SpendGuard {
38
- constructor(config) {
39
- /** sessionId → cumulative USDC spent */
40
- this.sessionLedger = new Map();
41
- /** normalised merchant address → cumulative USDC spent */
42
- this.merchantLedger = new Map();
43
- /** Rolling 24-hr payment records */
44
- this.dailyRecords = [];
45
- this.config = { ...config };
46
- }
47
- // ─── Private helpers ───────────────────────────────────────────────────────
48
- normaliseMerchant(addr) {
49
- return addr.toLowerCase();
50
- }
51
- /** Prune records older than 24 hrs and return current daily spend. */
52
- getDailySpent(now = Date.now()) {
53
- const cutoff = now - TWENTY_FOUR_HOURS_MS;
54
- this.dailyRecords = this.dailyRecords.filter(r => r.timestamp > cutoff);
55
- return this.dailyRecords.reduce((sum, r) => sum + r.amount, 0);
56
- }
57
- // ─── Public API ────────────────────────────────────────────────────────────
58
- /**
59
- * Check whether a payment is allowed under all configured caps.
60
- * Throws {@link SpendCapError} if any cap would be exceeded.
61
- * Call this BEFORE signing/sending any payment.
62
- *
63
- * @param amount - Amount in USDC (e.g. 2.50)
64
- * @param merchantAddress - Merchant wallet address
65
- * @param sessionId - Caller-defined session identifier
66
- */
67
- checkPayment(amount, merchantAddress, sessionId) {
68
- const merchant = this.normaliseMerchant(merchantAddress);
69
- // 1. Session cap
70
- if (this.config.sessionCapUSDC !== undefined) {
71
- const sessionSpent = this.sessionLedger.get(sessionId) ?? 0;
72
- if (sessionSpent + amount > this.config.sessionCapUSDC) {
73
- this.config.onCapExceeded?.('session_cap');
74
- throw new SpendCapError('session_cap', this.config.sessionCapUSDC, sessionSpent, amount);
75
- }
76
- }
77
- // 2. Merchant cap
78
- if (this.config.merchantCapUSDC) {
79
- // Check normalised address first, then original casing
80
- const cap = this.config.merchantCapUSDC[merchant] ??
81
- this.config.merchantCapUSDC[merchantAddress];
82
- if (cap !== undefined) {
83
- const merchantSpent = this.merchantLedger.get(merchant) ?? 0;
84
- if (merchantSpent + amount > cap) {
85
- this.config.onCapExceeded?.('merchant_cap');
86
- throw new SpendCapError('merchant_cap', cap, merchantSpent, amount);
87
- }
88
- }
89
- }
90
- // 3. Daily cap (rolling 24 hr)
91
- if (this.config.dailyCapUSDC !== undefined) {
92
- const dailySpent = this.getDailySpent();
93
- if (dailySpent + amount > this.config.dailyCapUSDC) {
94
- this.config.onCapExceeded?.('daily_cap');
95
- throw new SpendCapError('daily_cap', this.config.dailyCapUSDC, dailySpent, amount);
96
- }
97
- }
98
- }
99
- /**
100
- * Record a completed payment. Call this AFTER a payment is confirmed on-chain.
101
- *
102
- * @param amount - Amount in USDC
103
- * @param merchantAddress - Merchant wallet address
104
- * @param sessionId - Session identifier
105
- */
106
- recordPayment(amount, merchantAddress, sessionId) {
107
- const merchant = this.normaliseMerchant(merchantAddress);
108
- // Session ledger
109
- this.sessionLedger.set(sessionId, (this.sessionLedger.get(sessionId) ?? 0) + amount);
110
- // Merchant ledger
111
- this.merchantLedger.set(merchant, (this.merchantLedger.get(merchant) ?? 0) + amount);
112
- // Daily records
113
- this.dailyRecords.push({ amount, timestamp: Date.now() });
114
- }
115
- /**
116
- * Get current spend state across all sessions, merchants, and the daily window.
117
- * If `sessionId` is provided, the `sessions` array contains only that session.
118
- *
119
- * @param sessionId - Optional filter
120
- */
121
- getSpendState(sessionId) {
122
- const sessions = sessionId
123
- ? [{ sessionId, spentUSDC: this.sessionLedger.get(sessionId) ?? 0 }]
124
- : Array.from(this.sessionLedger.entries()).map(([sid, spent]) => ({
125
- sessionId: sid,
126
- spentUSDC: spent,
127
- }));
128
- const merchants = Array.from(this.merchantLedger.entries()).map(([addr, spent]) => ({ merchantAddress: addr, spentUSDC: spent }));
129
- return {
130
- sessions,
131
- merchants,
132
- dailySpentUSDC: this.getDailySpent(),
133
- caps: {
134
- sessionCapUSDC: this.config.sessionCapUSDC,
135
- merchantCapUSDC: this.config.merchantCapUSDC,
136
- dailyCapUSDC: this.config.dailyCapUSDC,
137
- },
138
- };
139
- }
140
- /**
141
- * Reset the session spend for `sessionId`.
142
- * The daily and merchant ledgers are unaffected.
143
- *
144
- * @param sessionId - Session to reset
145
- */
146
- resetSession(sessionId) {
147
- this.sessionLedger.delete(sessionId);
148
- }
149
- }
150
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/spend-guard/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA+DH,gFAAgF;AAEhF;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAUtC,YACE,MAAsB,EACtB,OAAe,EACf,SAAiB,EACjB,aAAqB;QAErB,KAAK,CACH,eAAe,MAAM,mBAAmB,OAAO,gBAAgB,SAAS,oBAAoB,aAAa,OAAO,CACjH,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF;AAED,gFAAgF;AAEhF,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,UAAU;IAYrB,YAAY,MAAwB;QATpC,wCAAwC;QACvB,kBAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE3D,0DAA0D;QACzC,mBAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE5D,oCAAoC;QAC5B,iBAAY,GAAyB,EAAE,CAAC;QAG9C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC9B,CAAC;IAED,8EAA8E;IAEtE,iBAAiB,CAAC,IAAY;QACpC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,sEAAsE;IAC9D,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,GAAG,GAAG,oBAAoB,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,8EAA8E;IAE9E;;;;;;;;OAQG;IACH,YAAY,CAAC,MAAc,EAAE,eAAuB,EAAE,SAAiB;QACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAEzD,iBAAiB;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5D,IAAI,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC;gBAC3C,MAAM,IAAI,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAChC,uDAAuD;YACvD,MAAM,GAAG,GACP,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;gBACrC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;YAC/C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC7D,IAAI,aAAa,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC;oBACjC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,cAAc,CAAC,CAAC;oBAC5C,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,IAAI,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBACnD,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,WAAW,CAAC,CAAC;gBACzC,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,MAAc,EAAE,eAAuB,EAAE,SAAiB;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAEzD,iBAAiB;QACjB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QAErF,kBAAkB;QAClB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QAErF,gBAAgB;QAChB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,SAAkB;QAC9B,MAAM,QAAQ,GAAmB,SAAS;YACxC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACpE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9D,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC,CAAC;QAER,MAAM,SAAS,GAAoB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAC9E,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CACjE,CAAC;QAEF,OAAO;YACL,QAAQ;YACR,SAAS;YACT,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE;YACpC,IAAI,EAAE;gBACJ,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;gBAC1C,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;gBAC5C,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;aACvC;SACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,SAAiB;QAC5B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;CACF"}
@@ -1,13 +0,0 @@
1
- import type { AggregatorQuote, QuoteParams } from './types.js';
2
- export declare class QuoteCache {
3
- private cache;
4
- private ttlMs;
5
- constructor(ttlMs?: number);
6
- private key;
7
- get(params: QuoteParams): AggregatorQuote[] | null;
8
- set(params: QuoteParams, quotes: AggregatorQuote[]): void;
9
- clear(): void;
10
- /** Number of currently cached (non-expired) entries */
11
- size(): number;
12
- }
13
- //# sourceMappingURL=cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/swap/router/cache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE/D,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAuE;IACpF,OAAO,CAAC,KAAK,CAAS;gBAEV,KAAK,SAAO;IAIxB,OAAO,CAAC,GAAG;IAIX,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,EAAE,GAAG,IAAI;IAUlD,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI;IAIzD,KAAK,IAAI,IAAI;IAIb,uDAAuD;IACvD,IAAI,IAAI,MAAM;CAGf"}
@@ -1,30 +0,0 @@
1
- export class QuoteCache {
2
- constructor(ttlMs = 3000) {
3
- this.cache = new Map();
4
- this.ttlMs = ttlMs;
5
- }
6
- key(params) {
7
- return `${params.chain}:${params.fromToken}:${params.toToken}:${params.amount}`;
8
- }
9
- get(params) {
10
- const entry = this.cache.get(this.key(params));
11
- if (!entry)
12
- return null;
13
- if (Date.now() - entry.timestamp > this.ttlMs) {
14
- this.cache.delete(this.key(params));
15
- return null;
16
- }
17
- return entry.quotes;
18
- }
19
- set(params, quotes) {
20
- this.cache.set(this.key(params), { quotes, timestamp: Date.now() });
21
- }
22
- clear() {
23
- this.cache.clear();
24
- }
25
- /** Number of currently cached (non-expired) entries */
26
- size() {
27
- return this.cache.size;
28
- }
29
- }
30
- //# sourceMappingURL=cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/swap/router/cache.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,UAAU;IAIrB,YAAY,KAAK,GAAG,IAAI;QAHhB,UAAK,GAAG,IAAI,GAAG,EAA4D,CAAC;QAIlF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEO,GAAG,CAAC,MAAmB;QAC7B,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;IAClF,CAAC;IAED,GAAG,CAAC,MAAmB;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,MAAmB,EAAE,MAAyB;QAChD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,uDAAuD;IACvD,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF"}
@@ -1,10 +0,0 @@
1
- export declare class FlashbotsProtectRpc {
2
- private readonly rpcUrl;
3
- constructor(options?: {
4
- fast?: boolean;
5
- useMempool?: boolean;
6
- });
7
- sendTransaction(signedTx: string): Promise<string>;
8
- getTransactionStatus(txHash: string): Promise<'pending' | 'included' | 'failed' | 'unknown'>;
9
- }
10
- //# sourceMappingURL=flashbots.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flashbots.d.ts","sourceRoot":"","sources":["../../../src/swap/router/flashbots.ts"],"names":[],"mappings":"AAOA,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE;IAOxD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBlD,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;CASnG"}