@eth-optimism/actions-sdk 0.2.0 → 0.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 (500) hide show
  1. package/dist/__mocks__/MockAssets.d.ts +17 -2
  2. package/dist/__mocks__/MockAssets.d.ts.map +1 -1
  3. package/dist/__mocks__/MockAssets.js +49 -4
  4. package/dist/__mocks__/MockAssets.js.map +1 -1
  5. package/dist/__tests__/actions.test.js +1 -5
  6. package/dist/__tests__/actions.test.js.map +1 -1
  7. package/dist/actions.d.ts +23 -9
  8. package/dist/actions.d.ts.map +1 -1
  9. package/dist/actions.js +68 -36
  10. package/dist/actions.js.map +1 -1
  11. package/dist/constants/assets.d.ts +217 -2
  12. package/dist/constants/assets.d.ts.map +1 -1
  13. package/dist/constants/assets.js +744 -6
  14. package/dist/constants/assets.js.map +1 -1
  15. package/dist/constants/contracts.d.ts +4 -0
  16. package/dist/constants/contracts.d.ts.map +1 -0
  17. package/dist/constants/contracts.js +3 -0
  18. package/dist/constants/contracts.js.map +1 -0
  19. package/dist/constants/providers.d.ts +6 -0
  20. package/dist/constants/providers.d.ts.map +1 -0
  21. package/dist/constants/providers.js +6 -0
  22. package/dist/constants/providers.js.map +1 -0
  23. package/dist/constants/supportedChains.d.ts +2 -2
  24. package/dist/constants/supportedChains.d.ts.map +1 -1
  25. package/dist/constants/supportedChains.js +12 -2
  26. package/dist/constants/supportedChains.js.map +1 -1
  27. package/dist/index.d.ts +4 -4
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/lend/__mocks__/MockLendProvider.d.ts +1 -1
  32. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -1
  33. package/dist/lend/__mocks__/MockLendProvider.js +7 -2
  34. package/dist/lend/__mocks__/MockLendProvider.js.map +1 -1
  35. package/dist/lend/core/LendProvider.d.ts +12 -14
  36. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  37. package/dist/lend/core/LendProvider.js +16 -31
  38. package/dist/lend/core/LendProvider.js.map +1 -1
  39. package/dist/lend/core/__tests__/LendProvider.test.js +2 -4
  40. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
  41. package/dist/lend/namespaces/BaseLendNamespace.d.ts +2 -6
  42. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -1
  43. package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -1
  44. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +7 -4
  45. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -1
  46. package/dist/lend/providers/aave/AaveLendProvider.d.ts +1 -6
  47. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
  48. package/dist/lend/providers/aave/AaveLendProvider.js +3 -6
  49. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
  50. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +14 -6
  51. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -1
  52. package/dist/lend/providers/aave/addresses.d.ts +13 -39
  53. package/dist/lend/providers/aave/addresses.d.ts.map +1 -1
  54. package/dist/lend/providers/aave/addresses.js +65 -60
  55. package/dist/lend/providers/aave/addresses.js.map +1 -1
  56. package/dist/lend/providers/aave/sdk.d.ts +2 -2
  57. package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
  58. package/dist/lend/providers/aave/sdk.js +6 -28
  59. package/dist/lend/providers/aave/sdk.js.map +1 -1
  60. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +1 -6
  61. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  62. package/dist/lend/providers/morpho/MorphoLendProvider.js +4 -13
  63. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  64. package/dist/lend/providers/morpho/__tests__/api.test.js +52 -43
  65. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
  66. package/dist/lend/providers/morpho/__tests__/sdk.test.js +41 -41
  67. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  68. package/dist/lend/providers/morpho/api.d.ts +3 -3
  69. package/dist/lend/providers/morpho/api.d.ts.map +1 -1
  70. package/dist/lend/providers/morpho/api.js +2 -2
  71. package/dist/lend/providers/morpho/api.js.map +1 -1
  72. package/dist/lend/providers/morpho/contracts.d.ts +11 -10
  73. package/dist/lend/providers/morpho/contracts.d.ts.map +1 -1
  74. package/dist/lend/providers/morpho/contracts.js +43 -10
  75. package/dist/lend/providers/morpho/contracts.js.map +1 -1
  76. package/dist/lend/providers/morpho/sdk.d.ts +7 -2
  77. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  78. package/dist/lend/providers/morpho/sdk.js +67 -54
  79. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  80. package/dist/nodeActionsFactory.d.ts +1 -1
  81. package/dist/reactActionsFactory.d.ts +1 -1
  82. package/dist/services/ChainManager.d.ts +8 -8
  83. package/dist/services/ChainManager.d.ts.map +1 -1
  84. package/dist/services/ChainManager.js.map +1 -1
  85. package/dist/services/__mocks__/MockChainManager.d.ts +4 -4
  86. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
  87. package/dist/services/__mocks__/MockChainManager.js.map +1 -1
  88. package/dist/services/tokenBalance.d.ts +1 -1
  89. package/dist/services/tokenBalance.d.ts.map +1 -1
  90. package/dist/services/tokenBalance.js +31 -30
  91. package/dist/services/tokenBalance.js.map +1 -1
  92. package/dist/services/tokenBalance.spec.js +20 -24
  93. package/dist/services/tokenBalance.spec.js.map +1 -1
  94. package/dist/swap/__mocks__/MockSwapProvider.d.ts +50 -0
  95. package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -0
  96. package/dist/swap/__mocks__/MockSwapProvider.js +161 -0
  97. package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -0
  98. package/dist/swap/core/SwapProvider.d.ts +145 -0
  99. package/dist/swap/core/SwapProvider.d.ts.map +1 -0
  100. package/dist/swap/core/SwapProvider.js +359 -0
  101. package/dist/swap/core/SwapProvider.js.map +1 -0
  102. package/dist/swap/core/__tests__/SwapProvider.test.d.ts +2 -0
  103. package/dist/swap/core/__tests__/SwapProvider.test.d.ts.map +1 -0
  104. package/dist/swap/core/__tests__/SwapProvider.test.js +435 -0
  105. package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -0
  106. package/dist/swap/core/markets.d.ts +47 -0
  107. package/dist/swap/core/markets.d.ts.map +1 -0
  108. package/dist/swap/core/markets.js +65 -0
  109. package/dist/swap/core/markets.js.map +1 -0
  110. package/dist/swap/index.d.ts +9 -0
  111. package/dist/swap/index.d.ts.map +1 -0
  112. package/dist/swap/index.js +9 -0
  113. package/dist/swap/index.js.map +1 -0
  114. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +8 -0
  115. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts.map +1 -0
  116. package/dist/swap/namespaces/ActionsSwapNamespace.js +8 -0
  117. package/dist/swap/namespaces/ActionsSwapNamespace.js.map +1 -0
  118. package/dist/swap/namespaces/BaseSwapNamespace.d.ts +73 -0
  119. package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -0
  120. package/dist/swap/namespaces/BaseSwapNamespace.js +181 -0
  121. package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -0
  122. package/dist/swap/namespaces/WalletSwapNamespace.d.ts +34 -0
  123. package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -0
  124. package/dist/swap/namespaces/WalletSwapNamespace.js +84 -0
  125. package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -0
  126. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts +2 -0
  127. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +1 -0
  128. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +245 -0
  129. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -0
  130. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts +2 -0
  131. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +1 -0
  132. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +209 -0
  133. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -0
  134. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +35 -0
  135. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -0
  136. package/dist/swap/providers/uniswap/UniswapSwapProvider.js +148 -0
  137. package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -0
  138. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts +2 -0
  139. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +1 -0
  140. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +258 -0
  141. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -0
  142. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts +2 -0
  143. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +1 -0
  144. package/dist/swap/providers/uniswap/__tests__/sdk.test.js +312 -0
  145. package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -0
  146. package/dist/swap/providers/uniswap/abis.d.ts +227 -0
  147. package/dist/swap/providers/uniswap/abis.d.ts.map +1 -0
  148. package/dist/swap/providers/uniswap/abis.js +138 -0
  149. package/dist/swap/providers/uniswap/abis.js.map +1 -0
  150. package/dist/swap/providers/uniswap/addresses.d.ts +26 -0
  151. package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -0
  152. package/dist/swap/providers/uniswap/addresses.js +81 -0
  153. package/dist/swap/providers/uniswap/addresses.js.map +1 -0
  154. package/dist/swap/providers/uniswap/encoding.d.ts +77 -0
  155. package/dist/swap/providers/uniswap/encoding.d.ts.map +1 -0
  156. package/dist/swap/providers/uniswap/encoding.js +233 -0
  157. package/dist/swap/providers/uniswap/encoding.js.map +1 -0
  158. package/dist/swap/providers/uniswap/markets.d.ts +19 -0
  159. package/dist/swap/providers/uniswap/markets.d.ts.map +1 -0
  160. package/dist/swap/providers/uniswap/markets.js +48 -0
  161. package/dist/swap/providers/uniswap/markets.js.map +1 -0
  162. package/dist/swap/providers/uniswap/types.d.ts +21 -0
  163. package/dist/swap/providers/uniswap/types.d.ts.map +1 -0
  164. package/dist/swap/providers/uniswap/types.js +2 -0
  165. package/dist/swap/providers/uniswap/types.js.map +1 -0
  166. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +49 -0
  167. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
  168. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js +140 -0
  169. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
  170. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +2 -0
  171. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
  172. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +255 -0
  173. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
  174. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +2 -0
  175. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
  176. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +166 -0
  177. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
  178. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +2 -0
  179. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
  180. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +419 -0
  181. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
  182. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts +2 -0
  183. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
  184. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js +51 -0
  185. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
  186. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts +14 -0
  187. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
  188. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js +13 -0
  189. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
  190. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts +2 -0
  191. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
  192. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js +173 -0
  193. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
  194. package/dist/swap/providers/velodrome/abis.d.ts +396 -0
  195. package/dist/swap/providers/velodrome/abis.d.ts.map +1 -0
  196. package/dist/swap/providers/velodrome/abis.js +257 -0
  197. package/dist/swap/providers/velodrome/abis.js.map +1 -0
  198. package/dist/swap/providers/velodrome/addresses.d.ts +39 -0
  199. package/dist/swap/providers/velodrome/addresses.d.ts.map +1 -0
  200. package/dist/swap/providers/velodrome/addresses.js +57 -0
  201. package/dist/swap/providers/velodrome/addresses.js.map +1 -0
  202. package/dist/swap/providers/velodrome/config.d.ts +22 -0
  203. package/dist/swap/providers/velodrome/config.d.ts.map +1 -0
  204. package/dist/swap/providers/velodrome/config.js +29 -0
  205. package/dist/swap/providers/velodrome/config.js.map +1 -0
  206. package/dist/swap/providers/velodrome/encoding/helpers.d.ts +37 -0
  207. package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
  208. package/dist/swap/providers/velodrome/encoding/helpers.js +60 -0
  209. package/dist/swap/providers/velodrome/encoding/helpers.js.map +1 -0
  210. package/dist/swap/providers/velodrome/encoding/index.d.ts +8 -0
  211. package/dist/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
  212. package/dist/swap/providers/velodrome/encoding/index.js +5 -0
  213. package/dist/swap/providers/velodrome/encoding/index.js.map +1 -0
  214. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts +39 -0
  215. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
  216. package/dist/swap/providers/velodrome/encoding/poolRouter.js +83 -0
  217. package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
  218. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +15 -0
  219. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +1 -0
  220. package/dist/swap/providers/velodrome/encoding/routers/approval.js +33 -0
  221. package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +1 -0
  222. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts +40 -0
  223. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
  224. package/dist/swap/providers/velodrome/encoding/routers/cl.js +80 -0
  225. package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
  226. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts +42 -0
  227. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
  228. package/dist/swap/providers/velodrome/encoding/routers/v2.js +166 -0
  229. package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
  230. package/dist/swap/providers/velodrome/markets.d.ts +21 -0
  231. package/dist/swap/providers/velodrome/markets.d.ts.map +1 -0
  232. package/dist/swap/providers/velodrome/markets.js +69 -0
  233. package/dist/swap/providers/velodrome/markets.js.map +1 -0
  234. package/dist/swap/providers/velodrome/types.d.ts +31 -0
  235. package/dist/swap/providers/velodrome/types.d.ts.map +1 -0
  236. package/dist/swap/providers/velodrome/types.js +2 -0
  237. package/dist/swap/providers/velodrome/types.js.map +1 -0
  238. package/dist/types/actions.d.ts +60 -11
  239. package/dist/types/actions.d.ts.map +1 -1
  240. package/dist/types/asset.d.ts +7 -9
  241. package/dist/types/asset.d.ts.map +1 -1
  242. package/dist/types/chain.d.ts +2 -2
  243. package/dist/types/chain.d.ts.map +1 -1
  244. package/dist/types/index.d.ts +2 -0
  245. package/dist/types/index.d.ts.map +1 -1
  246. package/dist/types/index.js +2 -0
  247. package/dist/types/index.js.map +1 -1
  248. package/dist/types/lend/base.d.ts +9 -19
  249. package/dist/types/lend/base.d.ts.map +1 -1
  250. package/dist/types/lend/base.js.map +1 -1
  251. package/dist/types/lend/contracts.d.ts +2 -1
  252. package/dist/types/lend/contracts.d.ts.map +1 -1
  253. package/dist/types/providers.d.ts +21 -0
  254. package/dist/types/providers.d.ts.map +1 -0
  255. package/dist/types/providers.js +2 -0
  256. package/dist/types/providers.js.map +1 -0
  257. package/dist/types/swap/base.d.ts +338 -0
  258. package/dist/types/swap/base.d.ts.map +1 -0
  259. package/dist/types/swap/base.js +4 -0
  260. package/dist/types/swap/base.js.map +1 -0
  261. package/dist/types/swap/index.d.ts +2 -0
  262. package/dist/types/swap/index.d.ts.map +1 -0
  263. package/dist/types/swap/index.js +2 -0
  264. package/dist/types/swap/index.js.map +1 -0
  265. package/dist/types/transaction.d.ts +14 -0
  266. package/dist/types/transaction.d.ts.map +1 -0
  267. package/dist/types/transaction.js +2 -0
  268. package/dist/types/transaction.js.map +1 -0
  269. package/dist/utils/approve.d.ts +82 -0
  270. package/dist/utils/approve.d.ts.map +1 -0
  271. package/dist/utils/approve.js +134 -0
  272. package/dist/utils/approve.js.map +1 -0
  273. package/dist/utils/approve.test.d.ts +2 -0
  274. package/dist/utils/approve.test.d.ts.map +1 -0
  275. package/dist/utils/approve.test.js +203 -0
  276. package/dist/utils/approve.test.js.map +1 -0
  277. package/dist/utils/assets.d.ts +10 -5
  278. package/dist/utils/assets.d.ts.map +1 -1
  279. package/dist/utils/assets.js +14 -11
  280. package/dist/utils/assets.js.map +1 -1
  281. package/dist/utils/assets.test.js +13 -1
  282. package/dist/utils/assets.test.js.map +1 -1
  283. package/dist/utils/validateAddresses.d.ts +32 -0
  284. package/dist/utils/validateAddresses.d.ts.map +1 -0
  285. package/dist/utils/validateAddresses.js +103 -0
  286. package/dist/utils/validateAddresses.js.map +1 -0
  287. package/dist/utils/validateAddresses.test.d.ts +2 -0
  288. package/dist/utils/validateAddresses.test.d.ts.map +1 -0
  289. package/dist/utils/validateAddresses.test.js +314 -0
  290. package/dist/utils/validateAddresses.test.js.map +1 -0
  291. package/dist/utils/validation.d.ts +12 -0
  292. package/dist/utils/validation.d.ts.map +1 -0
  293. package/dist/utils/validation.js +44 -0
  294. package/dist/utils/validation.js.map +1 -0
  295. package/dist/wallet/core/namespace/WalletNamespace.d.ts +21 -9
  296. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  297. package/dist/wallet/core/namespace/WalletNamespace.js +44 -15
  298. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  299. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
  300. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  301. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +4 -10
  302. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  303. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +2 -1
  304. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  305. package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -7
  306. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  307. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +5 -6
  308. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  309. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +5 -1
  310. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  311. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +2 -2
  312. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  313. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +12 -12
  314. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  315. package/dist/wallet/core/wallets/abstract/Wallet.js +9 -4
  316. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  317. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +10 -1
  318. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
  319. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +2 -2
  320. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
  321. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +12 -4
  322. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  323. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +5 -7
  324. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  325. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +6 -5
  326. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  327. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  328. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +4 -6
  329. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  330. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -1
  331. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  332. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +2 -4
  333. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  334. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +8 -9
  335. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  336. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +4 -4
  337. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  338. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +3 -6
  339. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  340. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +4 -2
  341. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  342. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +4 -6
  343. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  344. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +4 -3
  345. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  346. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -6
  347. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  348. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  349. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  350. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -6
  351. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  352. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +7 -2
  353. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  354. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +1 -0
  355. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  356. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +5 -6
  357. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  358. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +6 -2
  359. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  360. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -0
  361. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  362. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +5 -8
  363. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  364. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -4
  365. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  366. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +2 -4
  367. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
  368. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +11 -13
  369. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  370. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +6 -6
  371. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  372. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +7 -6
  373. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  374. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +5 -3
  375. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  376. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +2 -6
  377. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  378. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  379. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +5 -6
  380. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  381. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  382. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  383. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -6
  384. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  385. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  386. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  387. package/package.json +4 -3
  388. package/src/__mocks__/MockAssets.ts +54 -4
  389. package/src/__tests__/actions.test.ts +1 -5
  390. package/src/actions.ts +106 -71
  391. package/src/constants/assets.ts +792 -5
  392. package/src/constants/contracts.ts +5 -0
  393. package/src/constants/providers.ts +5 -0
  394. package/src/constants/supportedChains.ts +22 -2
  395. package/src/index.ts +76 -6
  396. package/src/lend/__mocks__/MockLendProvider.ts +8 -3
  397. package/src/lend/core/LendProvider.ts +28 -41
  398. package/src/lend/core/__tests__/LendProvider.test.ts +2 -5
  399. package/src/lend/namespaces/BaseLendNamespace.ts +2 -6
  400. package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +12 -5
  401. package/src/lend/providers/aave/AaveLendProvider.ts +3 -7
  402. package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +16 -7
  403. package/src/lend/providers/aave/addresses.ts +82 -64
  404. package/src/lend/providers/aave/sdk.ts +11 -36
  405. package/src/lend/providers/morpho/MorphoLendProvider.ts +4 -16
  406. package/src/lend/providers/morpho/__tests__/api.test.ts +65 -44
  407. package/src/lend/providers/morpho/__tests__/sdk.test.ts +43 -42
  408. package/src/lend/providers/morpho/api.ts +7 -4
  409. package/src/lend/providers/morpho/contracts.ts +62 -13
  410. package/src/lend/providers/morpho/sdk.ts +85 -54
  411. package/src/services/ChainManager.ts +12 -21
  412. package/src/services/__mocks__/MockChainManager.ts +4 -7
  413. package/src/services/tokenBalance.spec.ts +20 -24
  414. package/src/services/tokenBalance.ts +39 -33
  415. package/src/swap/__mocks__/MockSwapProvider.ts +251 -0
  416. package/src/swap/core/SwapProvider.ts +577 -0
  417. package/src/swap/core/__tests__/SwapProvider.test.ts +620 -0
  418. package/src/swap/core/markets.ts +104 -0
  419. package/src/swap/index.ts +19 -0
  420. package/src/swap/namespaces/ActionsSwapNamespace.ts +7 -0
  421. package/src/swap/namespaces/BaseSwapNamespace.ts +258 -0
  422. package/src/swap/namespaces/WalletSwapNamespace.ts +121 -0
  423. package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +365 -0
  424. package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +257 -0
  425. package/src/swap/providers/uniswap/UniswapSwapProvider.ts +217 -0
  426. package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +299 -0
  427. package/src/swap/providers/uniswap/__tests__/sdk.test.ts +369 -0
  428. package/src/swap/providers/uniswap/abis.ts +144 -0
  429. package/src/swap/providers/uniswap/addresses.ts +110 -0
  430. package/src/swap/providers/uniswap/encoding.ts +406 -0
  431. package/src/swap/providers/uniswap/markets.ts +84 -0
  432. package/src/swap/providers/uniswap/types.ts +25 -0
  433. package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +224 -0
  434. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +341 -0
  435. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +202 -0
  436. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +506 -0
  437. package/src/swap/providers/velodrome/__tests__/encoding.cl.test.ts +69 -0
  438. package/src/swap/providers/velodrome/__tests__/encoding.helpers.ts +20 -0
  439. package/src/swap/providers/velodrome/__tests__/encoding.v2.test.ts +235 -0
  440. package/src/swap/providers/velodrome/abis.ts +264 -0
  441. package/src/swap/providers/velodrome/addresses.ts +107 -0
  442. package/src/swap/providers/velodrome/config.ts +46 -0
  443. package/src/swap/providers/velodrome/encoding/helpers.ts +82 -0
  444. package/src/swap/providers/velodrome/encoding/index.ts +7 -0
  445. package/src/swap/providers/velodrome/encoding/poolRouter.ts +124 -0
  446. package/src/swap/providers/velodrome/encoding/routers/approval.ts +45 -0
  447. package/src/swap/providers/velodrome/encoding/routers/cl.ts +156 -0
  448. package/src/swap/providers/velodrome/encoding/routers/v2.ts +267 -0
  449. package/src/swap/providers/velodrome/markets.ts +100 -0
  450. package/src/swap/providers/velodrome/types.ts +30 -0
  451. package/src/types/actions.ts +68 -12
  452. package/src/types/asset.ts +12 -9
  453. package/src/types/chain.ts +2 -2
  454. package/src/types/index.ts +2 -0
  455. package/src/types/lend/base.ts +10 -20
  456. package/src/types/lend/contracts.ts +5 -1
  457. package/src/types/providers.ts +22 -0
  458. package/src/types/swap/base.ts +372 -0
  459. package/src/types/swap/index.ts +1 -0
  460. package/src/types/transaction.ts +14 -0
  461. package/src/utils/approve.test.ts +258 -0
  462. package/src/utils/approve.ts +197 -0
  463. package/src/utils/assets.test.ts +16 -1
  464. package/src/utils/assets.ts +27 -10
  465. package/src/utils/validateAddresses.test.ts +439 -0
  466. package/src/utils/validateAddresses.ts +153 -0
  467. package/src/utils/validation.ts +76 -0
  468. package/src/wallet/core/namespace/WalletNamespace.ts +70 -16
  469. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +8 -4
  470. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +6 -10
  471. package/src/wallet/core/providers/hosted/types/index.ts +9 -7
  472. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +10 -10
  473. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +2 -0
  474. package/src/wallet/core/wallets/abstract/Wallet.ts +23 -14
  475. package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +13 -1
  476. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +21 -5
  477. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +11 -14
  478. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
  479. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +11 -7
  480. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +16 -8
  481. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
  482. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +6 -7
  483. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +8 -11
  484. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +7 -11
  485. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +11 -7
  486. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +1 -0
  487. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +10 -7
  488. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -0
  489. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +10 -9
  490. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +38 -13
  491. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
  492. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +13 -11
  493. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
  494. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +11 -11
  495. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +11 -11
  496. package/dist/supported/tokens.d.ts +0 -25
  497. package/dist/supported/tokens.d.ts.map +0 -1
  498. package/dist/supported/tokens.js +0 -37
  499. package/dist/supported/tokens.js.map +0 -1
  500. package/src/supported/tokens.ts +0 -52
@@ -0,0 +1,73 @@
1
+ import type { SupportedChainId } from '../../constants/supportedChains.js';
2
+ import type { SwapProvider } from '../core/SwapProvider.js';
3
+ import type { SwapProviderName, SwapSettings } from '../../types/actions.js';
4
+ import type { Asset } from '../../types/asset.js';
5
+ import type { GetSwapMarketParams, GetSwapMarketsParams, SwapMarket, SwapProviderConfig, SwapProviders, SwapQuote, SwapQuoteParams } from '../../types/swap/index.js';
6
+ /**
7
+ * Base swap namespace with shared read-only operations
8
+ */
9
+ export declare abstract class BaseSwapNamespace {
10
+ protected readonly providers: SwapProviders;
11
+ protected readonly settings?: SwapSettings | undefined;
12
+ constructor(providers: SwapProviders, settings?: SwapSettings | undefined);
13
+ /**
14
+ * Get a swap quote with pre-built execution data.
15
+ * When `routing: 'price'` is set in settings and no explicit provider is requested,
16
+ * fetches quotes from all eligible providers in parallel and returns the best price.
17
+ * @param params - Quote parameters (assets, amounts, chain, optional provider)
18
+ * @returns The best available SwapQuote
19
+ */
20
+ getQuote(params: SwapQuoteParams): Promise<SwapQuote>;
21
+ /**
22
+ * Fetch quotes from all eligible providers in parallel and return the best.
23
+ * @param params - Quote parameters
24
+ * @returns The quote with the highest amountOut
25
+ * @throws If no provider returns a valid quote
26
+ */
27
+ private getBestQuote;
28
+ /**
29
+ * Fetch quotes from all eligible providers in parallel.
30
+ * Providers that don't support the pair or fail to quote are silently skipped.
31
+ * @param params - Quote parameters
32
+ * @returns Array of successful quotes (may be empty if all providers fail)
33
+ */
34
+ private fetchAllQuotes;
35
+ /**
36
+ * Fetch quotes from all eligible providers in parallel.
37
+ * Unlike getQuote(), returns all successful quotes instead of just the best.
38
+ * If an explicit provider is specified, returns a single-element array from that provider.
39
+ * @param params - Quote parameters (assets, amounts, chain, optional provider)
40
+ * @returns Array of SwapQuotes sorted by amountOut descending (best first)
41
+ */
42
+ getQuotes(params: SwapQuoteParams): Promise<SwapQuote[]>;
43
+ /**
44
+ * Get a specific swap market by ID.
45
+ * @param params - Market identifier (poolId + chainId)
46
+ * @param provider - Optional provider name to query directly instead of searching all
47
+ * @returns Market information
48
+ */
49
+ getMarket(params: GetSwapMarketParams, provider?: SwapProviderName): Promise<SwapMarket>;
50
+ /**
51
+ * Get available swap markets across all providers
52
+ * @param params - Optional filtering by chainId or asset
53
+ * @returns Promise resolving to array of markets from all providers
54
+ */
55
+ getMarkets(params?: GetSwapMarketsParams): Promise<SwapMarket[]>;
56
+ /**
57
+ * Get all supported chain IDs across all providers
58
+ */
59
+ supportedChainIds(): SupportedChainId[];
60
+ protected getAllProviders(): Array<SwapProvider<SwapProviderConfig>>;
61
+ /**
62
+ * Resolve which provider handles a request.
63
+ *
64
+ * Precedence:
65
+ * 1. Explicit `provider` param on the call
66
+ * 2. routing.defaultProvider (when no strategy set)
67
+ * 3. routing.strategy match (market-aware, defaultProvider as tiebreaker)
68
+ * 4. First provider whose allowlist matches
69
+ * 5. First configured provider
70
+ */
71
+ protected resolveProvider(provider: SwapProviderName | undefined, assetIn: Asset, assetOut: Asset, chainId: SupportedChainId): SwapProvider<SwapProviderConfig>;
72
+ }
73
+ //# sourceMappingURL=BaseSwapNamespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseSwapNamespace.d.ts","sourceRoot":"","sources":["../../../src/swap/namespaces/BaseSwapNamespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B;;GAEG;AACH,8BAAsB,iBAAiB;IAEnC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa;IAC3C,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY;gBADvB,SAAS,EAAE,aAAa,EACxB,QAAQ,CAAC,EAAE,YAAY,YAAA;IAG5C;;;;;;OAMG;IACG,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IA2B3D;;;;;OAKG;YACW,YAAY;IAmB1B;;;;;OAKG;YACW,cAAc;IAsB5B;;;;;;OAMG;IACG,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAqB9D;;;;;OAKG;IACG,SAAS,CACb,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,UAAU,CAAC;IAqBtB;;;;OAIG;IACG,UAAU,CAAC,MAAM,GAAE,oBAAyB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAO1E;;OAEG;IACH,iBAAiB,IAAI,gBAAgB,EAAE;IAWvC,SAAS,CAAC,eAAe,IAAI,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAMpE;;;;;;;;;OASG;IACH,SAAS,CAAC,eAAe,CACvB,QAAQ,EAAE,gBAAgB,GAAG,SAAS,EACtC,OAAO,EAAE,KAAK,EACd,QAAQ,EAAE,KAAK,EACf,OAAO,EAAE,gBAAgB,GACxB,YAAY,CAAC,kBAAkB,CAAC;CA0CpC"}
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Base swap namespace with shared read-only operations
3
+ */
4
+ export class BaseSwapNamespace {
5
+ constructor(providers, settings) {
6
+ this.providers = providers;
7
+ this.settings = settings;
8
+ }
9
+ /**
10
+ * Get a swap quote with pre-built execution data.
11
+ * When `routing: 'price'` is set in settings and no explicit provider is requested,
12
+ * fetches quotes from all eligible providers in parallel and returns the best price.
13
+ * @param params - Quote parameters (assets, amounts, chain, optional provider)
14
+ * @returns The best available SwapQuote
15
+ */
16
+ async getQuote(params) {
17
+ // Explicit provider — skip routing
18
+ if (params.provider) {
19
+ const provider = this.resolveProvider(params.provider, params.assetIn, params.assetOut, params.chainId);
20
+ return provider.getQuote(params);
21
+ }
22
+ // Price routing — quote all eligible providers, return best
23
+ if (this.settings?.routing === 'price') {
24
+ return this.getBestQuote(params);
25
+ }
26
+ // No routing — resolve single provider via fallback logic
27
+ const provider = this.resolveProvider(undefined, params.assetIn, params.assetOut, params.chainId);
28
+ return provider.getQuote(params);
29
+ }
30
+ /**
31
+ * Fetch quotes from all eligible providers in parallel and return the best.
32
+ * @param params - Quote parameters
33
+ * @returns The quote with the highest amountOut
34
+ * @throws If no provider returns a valid quote
35
+ */
36
+ async getBestQuote(params) {
37
+ const quotes = await this.fetchAllQuotes(params);
38
+ let best = null;
39
+ for (const quote of quotes) {
40
+ if (!best || quote.amountOutRaw > best.amountOutRaw) {
41
+ best = quote;
42
+ }
43
+ }
44
+ if (!best) {
45
+ throw new Error(`All providers failed to quote ${params.assetIn.metadata.symbol}/${params.assetOut.metadata.symbol}`);
46
+ }
47
+ return best;
48
+ }
49
+ /**
50
+ * Fetch quotes from all eligible providers in parallel.
51
+ * Providers that don't support the pair or fail to quote are silently skipped.
52
+ * @param params - Quote parameters
53
+ * @returns Array of successful quotes (may be empty if all providers fail)
54
+ */
55
+ async fetchAllQuotes(params) {
56
+ const eligible = this.getAllProviders().filter((p) => p.isMarketSupported(params.assetIn, params.assetOut, params.chainId));
57
+ if (eligible.length === 0) {
58
+ throw new Error(`No provider supports ${params.assetIn.metadata.symbol}/${params.assetOut.metadata.symbol} on chain ${params.chainId}`);
59
+ }
60
+ const results = await Promise.allSettled(eligible.map((p) => p.getQuote(params)));
61
+ return results
62
+ .filter((r) => r.status === 'fulfilled')
63
+ .map((r) => r.value);
64
+ }
65
+ /**
66
+ * Fetch quotes from all eligible providers in parallel.
67
+ * Unlike getQuote(), returns all successful quotes instead of just the best.
68
+ * If an explicit provider is specified, returns a single-element array from that provider.
69
+ * @param params - Quote parameters (assets, amounts, chain, optional provider)
70
+ * @returns Array of SwapQuotes sorted by amountOut descending (best first)
71
+ */
72
+ async getQuotes(params) {
73
+ if (params.provider) {
74
+ const provider = this.resolveProvider(params.provider, params.assetIn, params.assetOut, params.chainId);
75
+ return [await provider.getQuote(params)];
76
+ }
77
+ const quotes = await this.fetchAllQuotes(params);
78
+ return quotes.sort((a, b) => a.amountOutRaw > b.amountOutRaw
79
+ ? -1
80
+ : a.amountOutRaw < b.amountOutRaw
81
+ ? 1
82
+ : 0);
83
+ }
84
+ /**
85
+ * Get a specific swap market by ID.
86
+ * @param params - Market identifier (poolId + chainId)
87
+ * @param provider - Optional provider name to query directly instead of searching all
88
+ * @returns Market information
89
+ */
90
+ async getMarket(params, provider) {
91
+ if (provider) {
92
+ const named = this.providers[provider];
93
+ if (!named) {
94
+ throw new Error(`Swap provider "${provider}" not configured`);
95
+ }
96
+ return named.getMarket(params);
97
+ }
98
+ for (const p of this.getAllProviders()) {
99
+ try {
100
+ return await p.getMarket(params);
101
+ }
102
+ catch {
103
+ continue;
104
+ }
105
+ }
106
+ throw new Error(`Market with poolId ${params.poolId} not found on chain ${params.chainId}`);
107
+ }
108
+ /**
109
+ * Get available swap markets across all providers
110
+ * @param params - Optional filtering by chainId or asset
111
+ * @returns Promise resolving to array of markets from all providers
112
+ */
113
+ async getMarkets(params = {}) {
114
+ const results = await Promise.all(this.getAllProviders().map((p) => p.getMarkets(params)));
115
+ return results.flat();
116
+ }
117
+ /**
118
+ * Get all supported chain IDs across all providers
119
+ */
120
+ supportedChainIds() {
121
+ const chainIds = new Set();
122
+ for (const provider of this.getAllProviders()) {
123
+ for (const chainId of provider.supportedChainIds()) {
124
+ chainIds.add(chainId);
125
+ }
126
+ }
127
+ return Array.from(chainIds);
128
+ }
129
+ // SwapProviders keys are optional (uniswap?, velodrome?, etc.) so filter out unconfigured ones
130
+ getAllProviders() {
131
+ return Object.values(this.providers).filter((p) => p !== undefined);
132
+ }
133
+ /**
134
+ * Resolve which provider handles a request.
135
+ *
136
+ * Precedence:
137
+ * 1. Explicit `provider` param on the call
138
+ * 2. routing.defaultProvider (when no strategy set)
139
+ * 3. routing.strategy match (market-aware, defaultProvider as tiebreaker)
140
+ * 4. First provider whose allowlist matches
141
+ * 5. First configured provider
142
+ */
143
+ resolveProvider(provider, assetIn, assetOut, chainId) {
144
+ const allProviders = this.getAllProviders();
145
+ if (allProviders.length === 0) {
146
+ throw new Error('No swap provider configured');
147
+ }
148
+ // 1. Explicit provider param
149
+ if (provider) {
150
+ const named = this.providers[provider];
151
+ if (!named) {
152
+ throw new Error(`Swap provider "${provider}" not configured`);
153
+ }
154
+ return named;
155
+ }
156
+ // Single provider — no routing needed
157
+ if (allProviders.length === 1) {
158
+ return allProviders[0];
159
+ }
160
+ // 2. defaultProvider with no routing strategy — always use it
161
+ if (this.settings?.defaultProvider && !this.settings.routing) {
162
+ const provider = this.providers[this.settings.defaultProvider];
163
+ if (provider)
164
+ return provider;
165
+ }
166
+ // 3. Match by market allowlist
167
+ for (const p of allProviders) {
168
+ if (p.isMarketSupported(assetIn, assetOut, chainId)) {
169
+ return p;
170
+ }
171
+ }
172
+ // 4. Match by chain support
173
+ for (const p of allProviders) {
174
+ if (p.isChainSupported(chainId)) {
175
+ return p;
176
+ }
177
+ }
178
+ return allProviders[0];
179
+ }
180
+ }
181
+ //# sourceMappingURL=BaseSwapNamespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseSwapNamespace.js","sourceRoot":"","sources":["../../../src/swap/namespaces/BaseSwapNamespace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { BaseSwapNamespace } from './BaseSwapNamespace.js';
2
+ import type { SwapSettings } from '../../types/actions.js';
3
+ import type { SwapProviders, SwapQuote, SwapQuoteParams, SwapReceipt, WalletSwapParams } from '../../types/swap/index.js';
4
+ import type { Wallet } from '../../wallet/core/wallets/abstract/Wallet.js';
5
+ /**
6
+ * Wallet swap namespace with full operations including signing.
7
+ * Provides getQuote() for pricing and execute() for swapping tokens.
8
+ */
9
+ export declare class WalletSwapNamespace extends BaseSwapNamespace {
10
+ private readonly wallet;
11
+ constructor(providers: SwapProviders, wallet: Wallet, settings?: SwapSettings);
12
+ /**
13
+ * Get a swap quote with the wallet address as recipient.
14
+ * Ensures calldata is encoded for the real wallet, not a placeholder.
15
+ */
16
+ getQuote(params: SwapQuoteParams): Promise<SwapQuote>;
17
+ /**
18
+ * Get quotes from all providers with the wallet address as recipient.
19
+ */
20
+ getQuotes(params: SwapQuoteParams): Promise<SwapQuote[]>;
21
+ /**
22
+ * Execute a token swap.
23
+ * Accepts either raw params (re-quotes internally) or a pre-built SwapQuote (skips re-quoting).
24
+ * @param params - Swap parameters or a pre-built SwapQuote from getQuote()
25
+ * @returns Swap receipt with transaction details
26
+ */
27
+ execute(params: WalletSwapParams | SwapQuote): Promise<SwapReceipt>;
28
+ private buildReceipt;
29
+ /**
30
+ * Execute swap transaction with approval batching
31
+ */
32
+ private executeTransaction;
33
+ }
34
+ //# sourceMappingURL=WalletSwapNamespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletSwapNamespace.d.ts","sourceRoot":"","sources":["../../../src/swap/namespaces/WalletSwapNamespace.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,eAAe,EACf,WAAW,EAEX,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAA;AAEtE;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IAGtD,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADvB,SAAS,EAAE,aAAa,EACP,MAAM,EAAE,MAAM,EAC/B,QAAQ,CAAC,EAAE,YAAY;IAKzB;;;OAGG;IACY,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAOpE;;OAEG;IACY,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAOvE;;;;;OAKG;IACG,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAoBzE,OAAO,CAAC,YAAY;IAiBpB;;OAEG;YACW,kBAAkB;CA0BjC"}
@@ -0,0 +1,84 @@
1
+ import { QUOTE_DISCRIMINATOR } from '../core/SwapProvider.js';
2
+ import { BaseSwapNamespace } from './BaseSwapNamespace.js';
3
+ /**
4
+ * Wallet swap namespace with full operations including signing.
5
+ * Provides getQuote() for pricing and execute() for swapping tokens.
6
+ */
7
+ export class WalletSwapNamespace extends BaseSwapNamespace {
8
+ constructor(providers, wallet, settings) {
9
+ super(providers, settings);
10
+ this.wallet = wallet;
11
+ }
12
+ /**
13
+ * Get a swap quote with the wallet address as recipient.
14
+ * Ensures calldata is encoded for the real wallet, not a placeholder.
15
+ */
16
+ async getQuote(params) {
17
+ return super.getQuote({
18
+ ...params,
19
+ recipient: params.recipient ?? this.wallet.address,
20
+ });
21
+ }
22
+ /**
23
+ * Get quotes from all providers with the wallet address as recipient.
24
+ */
25
+ async getQuotes(params) {
26
+ return super.getQuotes({
27
+ ...params,
28
+ recipient: params.recipient ?? this.wallet.address,
29
+ });
30
+ }
31
+ /**
32
+ * Execute a token swap.
33
+ * Accepts either raw params (re-quotes internally) or a pre-built SwapQuote (skips re-quoting).
34
+ * @param params - Swap parameters or a pre-built SwapQuote from getQuote()
35
+ * @returns Swap receipt with transaction details
36
+ */
37
+ async execute(params) {
38
+ // Inject walletAddress — raw params need it for validation,
39
+ // quotes need it for on-chain allowance checks during approval building
40
+ const executeParams = QUOTE_DISCRIMINATOR in params
41
+ ? { ...params, recipient: this.wallet.address }
42
+ : { ...params, walletAddress: this.wallet.address };
43
+ const provider = this.resolveProvider(params.provider, params.assetIn, params.assetOut, params.chainId);
44
+ const swapTx = await provider.execute(executeParams);
45
+ const receipt = await this.executeTransaction(swapTx, params.chainId);
46
+ return this.buildReceipt(swapTx, receipt);
47
+ }
48
+ buildReceipt(swapTx, receipt) {
49
+ return {
50
+ receipt,
51
+ amountIn: swapTx.amountIn,
52
+ amountOut: swapTx.amountOut,
53
+ amountInRaw: swapTx.amountInRaw,
54
+ amountOutRaw: swapTx.amountOutRaw,
55
+ assetIn: swapTx.assetIn,
56
+ assetOut: swapTx.assetOut,
57
+ price: swapTx.price,
58
+ priceImpact: swapTx.priceImpact,
59
+ };
60
+ }
61
+ /**
62
+ * Execute swap transaction with approval batching
63
+ */
64
+ async executeTransaction(swapTx, chainId) {
65
+ const { transactionData } = swapTx;
66
+ const txs = [];
67
+ // Add token approval if needed
68
+ if (transactionData.tokenApproval) {
69
+ txs.push(transactionData.tokenApproval);
70
+ }
71
+ // Add Permit2 approval if needed
72
+ if (transactionData.permit2Approval) {
73
+ txs.push(transactionData.permit2Approval);
74
+ }
75
+ // Add main swap transaction
76
+ txs.push(transactionData.swap);
77
+ // Execute as batch if multiple transactions, otherwise single
78
+ if (txs.length > 1) {
79
+ return this.wallet.sendBatch(txs, chainId);
80
+ }
81
+ return this.wallet.send(transactionData.swap, chainId);
82
+ }
83
+ }
84
+ //# sourceMappingURL=WalletSwapNamespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletSwapNamespace.js","sourceRoot":"","sources":["../../../src/swap/namespaces/WalletSwapNamespace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAY1E;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,iBAAiB;IACxD,YACE,SAAwB,EACP,MAAc,EAC/B,QAAuB;QAEvB,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAHT,WAAM,GAAN,MAAM,CAAQ;IAIjC,CAAC;IAED;;;OAGG;IACM,KAAK,CAAC,QAAQ,CAAC,MAAuB;QAC7C,OAAO,KAAK,CAAC,QAAQ,CAAC;YACpB,GAAG,MAAM;YACT,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;SACnD,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACM,KAAK,CAAC,SAAS,CAAC,MAAuB;QAC9C,OAAO,KAAK,CAAC,SAAS,CAAC;YACrB,GAAG,MAAM;YACT,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;SACnD,CAAC,CAAA;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,MAAoC;QAChD,4DAA4D;QAC5D,wEAAwE;QACxE,MAAM,aAAa,GACjB,mBAAmB,IAAI,MAAM;YAC3B,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YAC/C,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CACnC,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,OAAO,CACf,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QACpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACrE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC;IAEO,YAAY,CAClB,MAAuB,EACvB,OAA+B;QAE/B,OAAO;YACL,OAAO;YACP,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAA;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAC9B,MAAuB,EACvB,OAAyB;QAEzB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAA;QAClC,MAAM,GAAG,GAAG,EAAE,CAAA;QAEd,+BAA+B;QAC/B,IAAI,eAAe,CAAC,aAAa,EAAE,CAAC;YAClC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;QACzC,CAAC;QAED,iCAAiC;QACjC,IAAI,eAAe,CAAC,eAAe,EAAE,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;QAC3C,CAAC;QAED,4BAA4B;QAC5B,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAE9B,8DAA8D;QAC9D,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BaseSwapNamespace.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseSwapNamespace.spec.d.ts","sourceRoot":"","sources":["../../../../src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,245 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { MockChainManager } from '../../../services/__mocks__/MockChainManager.js';
3
+ import { createMockSwapProvider, MockSwapProvider, } from '../../__mocks__/MockSwapProvider.js';
4
+ import { ActionsSwapNamespace } from '../ActionsSwapNamespace.js';
5
+ describe('BaseSwapNamespace', () => {
6
+ const USDC = {
7
+ type: 'erc20',
8
+ address: { 84532: '0x036CbD53842c5426634e7929541eC2318f3dCF7e' },
9
+ metadata: { name: 'USD Coin', symbol: 'USDC', decimals: 6 },
10
+ };
11
+ const ETH = {
12
+ type: 'native',
13
+ address: { 84532: '0x0000000000000000000000000000000000000000' },
14
+ metadata: { name: 'Ether', symbol: 'ETH', decimals: 18 },
15
+ };
16
+ describe('getQuote', () => {
17
+ it('delegates to provider getQuote', async () => {
18
+ const provider = createMockSwapProvider();
19
+ const namespace = new ActionsSwapNamespace({ uniswap: provider });
20
+ const result = await namespace.getQuote({
21
+ assetIn: USDC,
22
+ assetOut: ETH,
23
+ amountIn: 100,
24
+ chainId: 84532,
25
+ });
26
+ expect(provider.mockGetQuote).toHaveBeenCalledTimes(1);
27
+ expect(result.price).toBe(1.5);
28
+ expect(result.execution).toBeDefined();
29
+ expect(result.execution.swapCalldata).toMatch(/^0x/);
30
+ expect(result.provider).toBe('uniswap');
31
+ });
32
+ it('throws if no provider configured', async () => {
33
+ const namespace = new ActionsSwapNamespace({});
34
+ await expect(namespace.getQuote({
35
+ assetIn: USDC,
36
+ assetOut: ETH,
37
+ amountIn: 100,
38
+ chainId: 84532,
39
+ })).rejects.toThrow('No swap provider configured');
40
+ });
41
+ });
42
+ describe('getQuote with price routing', () => {
43
+ it('returns the best price across providers when routing is price', async () => {
44
+ const cheapProvider = new MockSwapProvider({ marketAllowlist: [{ assets: [USDC, ETH] }] }, { defaultPrice: 1.2, provider: 'uniswap' });
45
+ const expensiveProvider = new MockSwapProvider({ marketAllowlist: [{ assets: [USDC, ETH] }] }, { defaultPrice: 1.8, provider: 'velodrome' });
46
+ const namespace = new ActionsSwapNamespace({ uniswap: cheapProvider, velodrome: expensiveProvider }, { routing: 'price' });
47
+ const result = await namespace.getQuote({
48
+ assetIn: USDC,
49
+ assetOut: ETH,
50
+ amountIn: 100,
51
+ chainId: 84532,
52
+ });
53
+ // Should pick velodrome because 1.8 > 1.2 (higher amountOut)
54
+ expect(result.provider).toBe('velodrome');
55
+ });
56
+ it('skips providers that fail to quote', async () => {
57
+ const workingProvider = createMockSwapProvider({ marketAllowlist: [{ assets: [USDC, ETH] }] }, { provider: 'velodrome' });
58
+ const failingProvider = createMockSwapProvider({ marketAllowlist: [{ assets: [USDC, ETH] }] }, { provider: 'uniswap' });
59
+ failingProvider.mockGetQuote.mockRejectedValue(new Error('RPC failure'));
60
+ const namespace = new ActionsSwapNamespace({ uniswap: failingProvider, velodrome: workingProvider }, { routing: 'price' });
61
+ const result = await namespace.getQuote({
62
+ assetIn: USDC,
63
+ assetOut: ETH,
64
+ amountIn: 100,
65
+ chainId: 84532,
66
+ });
67
+ expect(result.provider).toBe('velodrome');
68
+ });
69
+ it('throws when all providers fail to quote', async () => {
70
+ const failingProvider = createMockSwapProvider({
71
+ marketAllowlist: [{ assets: [USDC, ETH] }],
72
+ });
73
+ failingProvider.mockGetQuote.mockRejectedValue(new Error('fail'));
74
+ const namespace = new ActionsSwapNamespace({ uniswap: failingProvider }, { routing: 'price' });
75
+ await expect(namespace.getQuote({
76
+ assetIn: USDC,
77
+ assetOut: ETH,
78
+ amountIn: 100,
79
+ chainId: 84532,
80
+ })).rejects.toThrow('All providers failed');
81
+ });
82
+ it('uses explicit provider when specified, ignoring routing', async () => {
83
+ const cheapProvider = new MockSwapProvider({ marketAllowlist: [{ assets: [USDC, ETH] }] }, { defaultPrice: 1.2, provider: 'uniswap' });
84
+ const expensiveProvider = new MockSwapProvider({ marketAllowlist: [{ assets: [USDC, ETH] }] }, { defaultPrice: 1.8, provider: 'velodrome' });
85
+ const namespace = new ActionsSwapNamespace({ uniswap: cheapProvider, velodrome: expensiveProvider }, { routing: 'price' });
86
+ const result = await namespace.getQuote({
87
+ assetIn: USDC,
88
+ assetOut: ETH,
89
+ amountIn: 100,
90
+ chainId: 84532,
91
+ provider: 'uniswap',
92
+ });
93
+ // Should use uniswap despite worse price because it was explicitly requested
94
+ expect(result.provider).toBe('uniswap');
95
+ });
96
+ });
97
+ describe('getQuotes', () => {
98
+ it('returns quotes from all eligible providers sorted by best price', async () => {
99
+ const cheapProvider = new MockSwapProvider({ marketAllowlist: [{ assets: [USDC, ETH] }] }, { defaultPrice: 1.2, provider: 'uniswap' });
100
+ const expensiveProvider = new MockSwapProvider({ marketAllowlist: [{ assets: [USDC, ETH] }] }, { defaultPrice: 1.8, provider: 'velodrome' });
101
+ const namespace = new ActionsSwapNamespace({
102
+ uniswap: cheapProvider,
103
+ velodrome: expensiveProvider,
104
+ });
105
+ const quotes = await namespace.getQuotes({
106
+ assetIn: USDC,
107
+ assetOut: ETH,
108
+ amountIn: 100,
109
+ chainId: 84532,
110
+ });
111
+ expect(quotes).toHaveLength(2);
112
+ expect(quotes[0].provider).toBe('velodrome');
113
+ expect(quotes[1].provider).toBe('uniswap');
114
+ });
115
+ it('skips failed providers and returns successful ones', async () => {
116
+ const workingProvider = createMockSwapProvider({ marketAllowlist: [{ assets: [USDC, ETH] }] }, { provider: 'velodrome' });
117
+ const failingProvider = createMockSwapProvider({ marketAllowlist: [{ assets: [USDC, ETH] }] }, { provider: 'uniswap' });
118
+ failingProvider.mockGetQuote.mockRejectedValue(new Error('fail'));
119
+ const namespace = new ActionsSwapNamespace({
120
+ uniswap: failingProvider,
121
+ velodrome: workingProvider,
122
+ });
123
+ const quotes = await namespace.getQuotes({
124
+ assetIn: USDC,
125
+ assetOut: ETH,
126
+ amountIn: 100,
127
+ chainId: 84532,
128
+ });
129
+ expect(quotes).toHaveLength(1);
130
+ expect(quotes[0].provider).toBe('velodrome');
131
+ });
132
+ it('returns single-element array when explicit provider specified', async () => {
133
+ const provider1 = createMockSwapProvider(undefined, {
134
+ provider: 'uniswap',
135
+ });
136
+ const provider2 = new MockSwapProvider(undefined, {
137
+ supportedChains: [84532],
138
+ provider: 'velodrome',
139
+ });
140
+ const namespace = new ActionsSwapNamespace({
141
+ uniswap: provider1,
142
+ velodrome: provider2,
143
+ });
144
+ const quotes = await namespace.getQuotes({
145
+ assetIn: USDC,
146
+ assetOut: ETH,
147
+ amountIn: 100,
148
+ chainId: 84532,
149
+ provider: 'uniswap',
150
+ });
151
+ expect(quotes).toHaveLength(1);
152
+ expect(quotes[0].provider).toBe('uniswap');
153
+ });
154
+ });
155
+ describe('getMarket', () => {
156
+ it('delegates to provider getMarket', async () => {
157
+ const provider = createMockSwapProvider();
158
+ const namespace = new ActionsSwapNamespace({ uniswap: provider });
159
+ const result = await namespace.getMarket({
160
+ poolId: '0xpool123',
161
+ chainId: 84532,
162
+ });
163
+ expect(provider.mockGetMarket).toHaveBeenCalledTimes(1);
164
+ expect(result.marketId.poolId).toBe('0xpool123');
165
+ });
166
+ it('queries specific provider when specified', async () => {
167
+ const provider1 = createMockSwapProvider(undefined, {
168
+ provider: 'uniswap',
169
+ });
170
+ const provider2 = new MockSwapProvider(undefined, {
171
+ supportedChains: [84532],
172
+ provider: 'velodrome',
173
+ });
174
+ const namespace = new ActionsSwapNamespace({
175
+ uniswap: provider1,
176
+ velodrome: provider2,
177
+ });
178
+ await namespace.getMarket({ poolId: '0xpool123', chainId: 84532 }, 'velodrome');
179
+ expect(provider2.mockGetMarket).toHaveBeenCalledTimes(1);
180
+ expect(provider1.mockGetMarket).not.toHaveBeenCalled();
181
+ });
182
+ it('throws for unknown provider name', async () => {
183
+ const namespace = new ActionsSwapNamespace({
184
+ uniswap: createMockSwapProvider(),
185
+ });
186
+ await expect(namespace.getMarket({ poolId: '0x1', chainId: 84532 }, 'velodrome')).rejects.toThrow('not configured');
187
+ });
188
+ });
189
+ describe('getMarkets', () => {
190
+ it('aggregates markets from all providers', async () => {
191
+ const provider1 = createMockSwapProvider();
192
+ const provider2 = new MockSwapProvider(undefined, {
193
+ supportedChains: [84532],
194
+ });
195
+ const namespace = new ActionsSwapNamespace({
196
+ uniswap: provider1,
197
+ velodrome: provider2,
198
+ });
199
+ const result = await namespace.getMarkets({});
200
+ expect(result.length).toBeGreaterThanOrEqual(1);
201
+ expect(provider1.mockGetMarkets).toHaveBeenCalledTimes(1);
202
+ expect(provider2.mockGetMarkets).toHaveBeenCalledTimes(1);
203
+ });
204
+ it('returns empty array when no providers', async () => {
205
+ const namespace = new ActionsSwapNamespace({});
206
+ const result = await namespace.getMarkets({});
207
+ expect(result).toEqual([]);
208
+ });
209
+ });
210
+ describe('supportedChainIds', () => {
211
+ it('returns union of chains from all providers', () => {
212
+ const provider1 = createMockSwapProvider(undefined, {
213
+ supportedChains: [84532],
214
+ });
215
+ const provider2 = new MockSwapProvider(undefined, { supportedChains: [1, 10] }, new MockChainManager({
216
+ supportedChains: [1, 10],
217
+ }));
218
+ const namespace = new ActionsSwapNamespace({
219
+ uniswap: provider1,
220
+ velodrome: provider2,
221
+ });
222
+ const result = namespace.supportedChainIds();
223
+ expect(result).toContain(84532);
224
+ expect(result).toContain(1);
225
+ expect(result).toContain(10);
226
+ expect(result.length).toBe(3);
227
+ });
228
+ it('deduplicates chain IDs', () => {
229
+ const provider1 = createMockSwapProvider(undefined, {
230
+ supportedChains: [84532, 1],
231
+ });
232
+ const provider2 = new MockSwapProvider(undefined, {
233
+ supportedChains: [1],
234
+ });
235
+ const namespace = new ActionsSwapNamespace({
236
+ uniswap: provider1,
237
+ velodrome: provider2,
238
+ });
239
+ const result = namespace.supportedChainIds();
240
+ // Should have unique values only
241
+ expect(new Set(result).size).toBe(result.length);
242
+ });
243
+ });
244
+ });
245
+ //# sourceMappingURL=BaseSwapNamespace.spec.js.map