@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,435 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { MockSwapProvider } from '../../__mocks__/MockSwapProvider.js';
3
+ // Test assets
4
+ const MockUSDC = {
5
+ type: 'erc20',
6
+ address: { 84532: '0x1111111111111111111111111111111111111111' },
7
+ metadata: { name: 'USD Coin', symbol: 'USDC', decimals: 6 },
8
+ };
9
+ const MockWETH = {
10
+ type: 'erc20',
11
+ address: { 84532: '0x2222222222222222222222222222222222222222' },
12
+ metadata: { name: 'Wrapped Ether', symbol: 'WETH', decimals: 18 },
13
+ };
14
+ const MockOP = {
15
+ type: 'erc20',
16
+ address: { 84532: '0x3333333333333333333333333333333333333333' },
17
+ metadata: { name: 'Optimism', symbol: 'OP', decimals: 18 },
18
+ };
19
+ describe('SwapProvider', () => {
20
+ describe('constructor and configuration', () => {
21
+ it('should initialize with default config', () => {
22
+ const provider = new MockSwapProvider();
23
+ expect(provider).toBeDefined();
24
+ expect(provider.supportedChainIds()).toContain(84532);
25
+ });
26
+ it('should use default slippage when not configured', () => {
27
+ const provider = new MockSwapProvider();
28
+ expect(provider.defaultSlippage).toBe(0.005);
29
+ });
30
+ it('should use config slippage when provided', () => {
31
+ const provider = new MockSwapProvider({ defaultSlippage: 0.01 });
32
+ expect(provider.defaultSlippage).toBe(0.01);
33
+ });
34
+ it('should use settings slippage when provider does not set one', () => {
35
+ const provider = new MockSwapProvider({}, undefined, undefined, {
36
+ defaultSlippage: 0.02,
37
+ });
38
+ expect(provider.defaultSlippage).toBe(0.02);
39
+ });
40
+ it('should prefer provider slippage over settings', () => {
41
+ const provider = new MockSwapProvider({ defaultSlippage: 0.03 }, undefined, undefined, { defaultSlippage: 0.02 });
42
+ expect(provider.defaultSlippage).toBe(0.03);
43
+ });
44
+ it('should resolve maxSlippage: provider → settings → default', () => {
45
+ expect(new MockSwapProvider().maxSlippage).toBe(0.5);
46
+ expect(new MockSwapProvider({}, undefined, undefined, { maxSlippage: 0.3 })
47
+ .maxSlippage).toBe(0.3);
48
+ expect(new MockSwapProvider({ maxSlippage: 0.1 }, undefined, undefined, {
49
+ maxSlippage: 0.3,
50
+ }).maxSlippage).toBe(0.1);
51
+ });
52
+ it('should resolve quoteExpirationSeconds: provider → settings → default', () => {
53
+ expect(new MockSwapProvider().quoteExpirationSeconds).toBe(60);
54
+ expect(new MockSwapProvider({}, undefined, undefined, {
55
+ quoteExpirationSeconds: 120,
56
+ }).quoteExpirationSeconds).toBe(120);
57
+ expect(new MockSwapProvider({ quoteExpirationSeconds: 30 }, undefined, undefined, { quoteExpirationSeconds: 120 }).quoteExpirationSeconds).toBe(30);
58
+ });
59
+ it('should resolve permit2ExpirationSeconds: provider → settings → default', () => {
60
+ expect(new MockSwapProvider().permit2ExpirationSeconds).toBe(2_592_000);
61
+ expect(new MockSwapProvider({}, undefined, undefined, {
62
+ permit2ExpirationSeconds: 86400,
63
+ }).permit2ExpirationSeconds).toBe(86400);
64
+ });
65
+ it('should store market allowlist when provided', () => {
66
+ const config = {
67
+ assets: [MockUSDC, MockWETH],
68
+ chainId: 84532,
69
+ };
70
+ const provider = new MockSwapProvider({ marketAllowlist: [config] });
71
+ expect(provider.config.marketAllowlist).toEqual([config]);
72
+ });
73
+ });
74
+ describe('execute()', () => {
75
+ it('should throw if neither amountIn nor amountOut provided', async () => {
76
+ const provider = new MockSwapProvider();
77
+ await expect(provider.execute({
78
+ assetIn: MockUSDC,
79
+ assetOut: MockWETH,
80
+ chainId: 84532,
81
+ walletAddress: '0x1234',
82
+ })).rejects.toThrow('Either amountIn or amountOut must be provided');
83
+ });
84
+ it('should throw if chain not supported', async () => {
85
+ const provider = new MockSwapProvider();
86
+ await expect(provider.execute({
87
+ amountIn: 100,
88
+ assetIn: MockUSDC,
89
+ assetOut: MockWETH,
90
+ chainId: 999,
91
+ walletAddress: '0x1234',
92
+ })).rejects.toThrow('Chain 999 is not supported');
93
+ });
94
+ it('should throw if asset not supported on chain', async () => {
95
+ const unsupportedAsset = {
96
+ type: 'erc20',
97
+ address: { 1: '0x1111' }, // Only on mainnet
98
+ metadata: { name: 'Test', symbol: 'TEST', decimals: 18 },
99
+ };
100
+ const provider = new MockSwapProvider();
101
+ await expect(provider.execute({
102
+ amountIn: 100,
103
+ assetIn: unsupportedAsset,
104
+ assetOut: MockWETH,
105
+ chainId: 84532,
106
+ walletAddress: '0x1234',
107
+ })).rejects.toThrow('not supported on chain');
108
+ });
109
+ it('should use param slippage over config default', async () => {
110
+ const provider = new MockSwapProvider({ defaultSlippage: 0.01 });
111
+ const result = await provider.execute({
112
+ amountIn: 100,
113
+ assetIn: MockUSDC,
114
+ assetOut: MockWETH,
115
+ chainId: 84532,
116
+ walletAddress: '0x1234',
117
+ slippage: 0.02,
118
+ });
119
+ expect(result).toBeDefined();
120
+ // Slippage is passed to internal params
121
+ expect(provider.mockExecute).toHaveBeenCalledWith(expect.objectContaining({ slippage: 0.02 }));
122
+ });
123
+ it('should use default deadline when not specified', async () => {
124
+ const provider = new MockSwapProvider();
125
+ const beforeTime = Math.floor(Date.now() / 1000);
126
+ await provider.execute({
127
+ amountIn: 100,
128
+ assetIn: MockUSDC,
129
+ assetOut: MockWETH,
130
+ chainId: 84532,
131
+ walletAddress: '0x1234',
132
+ });
133
+ const afterTime = Math.floor(Date.now() / 1000) + 60;
134
+ expect(provider.mockExecute).toHaveBeenCalledWith(expect.objectContaining({
135
+ deadline: expect.any(Number),
136
+ }));
137
+ const call = provider.mockExecute.mock.calls[0][0];
138
+ expect(call.deadline).toBeGreaterThanOrEqual(beforeTime + 60);
139
+ expect(call.deadline).toBeLessThanOrEqual(afterTime);
140
+ });
141
+ it('should convert human-readable amounts to wei', async () => {
142
+ const provider = new MockSwapProvider();
143
+ await provider.execute({
144
+ amountIn: 100,
145
+ assetIn: MockUSDC, // 6 decimals
146
+ assetOut: MockWETH,
147
+ chainId: 84532,
148
+ walletAddress: '0x1234',
149
+ });
150
+ expect(provider.mockExecute).toHaveBeenCalledWith(expect.objectContaining({
151
+ amountInRaw: 100000000n, // 100 * 10^6
152
+ }));
153
+ });
154
+ it('should return swap transaction', async () => {
155
+ const provider = new MockSwapProvider();
156
+ const result = await provider.execute({
157
+ amountIn: 100,
158
+ assetIn: MockUSDC,
159
+ assetOut: MockWETH,
160
+ chainId: 84532,
161
+ walletAddress: '0x1234',
162
+ });
163
+ expect(result.amountIn).toBeDefined();
164
+ expect(result.amountOut).toBeDefined();
165
+ expect(result.transactionData.swap).toBeDefined();
166
+ });
167
+ });
168
+ describe('getQuote()', () => {
169
+ it('should throw if chain not supported', async () => {
170
+ const provider = new MockSwapProvider();
171
+ await expect(provider.getQuote({
172
+ assetIn: MockUSDC,
173
+ assetOut: MockWETH,
174
+ chainId: 999,
175
+ })).rejects.toThrow('Chain 999 is not supported');
176
+ });
177
+ it('should return quote', async () => {
178
+ const provider = new MockSwapProvider();
179
+ const quote = await provider.getQuote({
180
+ assetIn: MockUSDC,
181
+ assetOut: MockWETH,
182
+ amountIn: 100,
183
+ chainId: 84532,
184
+ });
185
+ expect(quote.price).toBeDefined();
186
+ expect(quote.amountIn).toBeDefined();
187
+ expect(quote.amountOut).toBeDefined();
188
+ expect(quote.route).toBeDefined();
189
+ });
190
+ });
191
+ describe('getMarket()', () => {
192
+ it('should throw if chain not supported', async () => {
193
+ const provider = new MockSwapProvider();
194
+ await expect(provider.getMarket({
195
+ poolId: '0xpool1',
196
+ chainId: 999,
197
+ })).rejects.toThrow('Chain 999 is not supported');
198
+ });
199
+ it('should return market info', async () => {
200
+ const provider = new MockSwapProvider();
201
+ const market = await provider.getMarket({
202
+ poolId: '0xpool1',
203
+ chainId: 84532,
204
+ });
205
+ expect(market.marketId.poolId).toBe('0xpool1');
206
+ expect(market.assets).toHaveLength(2);
207
+ expect(market.provider).toBe('uniswap');
208
+ });
209
+ });
210
+ describe('getMarkets()', () => {
211
+ it('should return markets array', async () => {
212
+ const provider = new MockSwapProvider();
213
+ const markets = await provider.getMarkets();
214
+ expect(Array.isArray(markets)).toBe(true);
215
+ expect(markets.length).toBeGreaterThan(0);
216
+ });
217
+ it('should validate chainId if provided', async () => {
218
+ const provider = new MockSwapProvider();
219
+ await expect(provider.getMarkets({ chainId: 999 })).rejects.toThrow('Chain 999 is not supported');
220
+ });
221
+ });
222
+ describe('supportedChainIds()', () => {
223
+ it('should return array of supported chain IDs', () => {
224
+ const provider = new MockSwapProvider();
225
+ const chainIds = provider.supportedChainIds();
226
+ expect(Array.isArray(chainIds)).toBe(true);
227
+ expect(chainIds).toContain(84532);
228
+ });
229
+ });
230
+ describe('isChainSupported()', () => {
231
+ it('should return true for supported chain', () => {
232
+ const provider = new MockSwapProvider();
233
+ expect(provider.isChainSupported(84532)).toBe(true);
234
+ });
235
+ it('should return false for unsupported chain', () => {
236
+ const provider = new MockSwapProvider();
237
+ expect(provider.isChainSupported(999)).toBe(false);
238
+ });
239
+ });
240
+ describe('validateMarketAllowed()', () => {
241
+ it('should allow any pair when no allowlist configured', () => {
242
+ const provider = new MockSwapProvider();
243
+ expect(() => provider.testValidateMarketAllowed(MockUSDC, MockWETH, 84532)).not.toThrow();
244
+ });
245
+ it('should allow pairs in allowlist', () => {
246
+ const config = {
247
+ assets: [MockUSDC, MockWETH],
248
+ chainId: 84532,
249
+ };
250
+ const provider = new MockSwapProvider({ marketAllowlist: [config] });
251
+ expect(() => provider.testValidateMarketAllowed(MockUSDC, MockWETH, 84532)).not.toThrow();
252
+ });
253
+ it('should reject pairs not in allowlist', () => {
254
+ const config = {
255
+ assets: [MockUSDC, MockWETH],
256
+ chainId: 84532,
257
+ };
258
+ const provider = new MockSwapProvider({ marketAllowlist: [config] });
259
+ expect(() => provider.testValidateMarketAllowed(MockUSDC, MockOP, 84532)).toThrow('not in the allowlist');
260
+ });
261
+ it('should match pairs regardless of order', () => {
262
+ const config = {
263
+ assets: [MockUSDC, MockWETH],
264
+ chainId: 84532,
265
+ };
266
+ const provider = new MockSwapProvider({ marketAllowlist: [config] });
267
+ // Reversed order should still match
268
+ expect(() => provider.testValidateMarketAllowed(MockWETH, MockUSDC, 84532)).not.toThrow();
269
+ });
270
+ it('should reject blocklisted pairs', () => {
271
+ const config = {
272
+ assets: [MockUSDC, MockOP],
273
+ chainId: 84532,
274
+ };
275
+ const provider = new MockSwapProvider({ marketBlocklist: [config] });
276
+ expect(() => provider.testValidateMarketAllowed(MockUSDC, MockOP, 84532)).toThrow('is blocked');
277
+ });
278
+ it('should check blocklist before allowlist', () => {
279
+ const allowConfig = {
280
+ assets: [MockUSDC, MockWETH],
281
+ chainId: 84532,
282
+ };
283
+ const blockConfig = {
284
+ assets: [MockUSDC, MockWETH],
285
+ chainId: 84532,
286
+ };
287
+ const provider = new MockSwapProvider({
288
+ marketAllowlist: [allowConfig],
289
+ marketBlocklist: [blockConfig],
290
+ });
291
+ // Blocklist takes precedence
292
+ expect(() => provider.testValidateMarketAllowed(MockUSDC, MockWETH, 84532)).toThrow('is blocked');
293
+ });
294
+ it('should expand multi-asset filter to all pairs', () => {
295
+ const config = {
296
+ assets: [MockUSDC, MockWETH, MockOP],
297
+ chainId: 84532,
298
+ };
299
+ const provider = new MockSwapProvider({ marketAllowlist: [config] });
300
+ // All 3 pairs should be allowed: USDC/WETH, USDC/OP, WETH/OP
301
+ expect(() => provider.testValidateMarketAllowed(MockUSDC, MockWETH, 84532)).not.toThrow();
302
+ expect(() => provider.testValidateMarketAllowed(MockUSDC, MockOP, 84532)).not.toThrow();
303
+ expect(() => provider.testValidateMarketAllowed(MockWETH, MockOP, 84532)).not.toThrow();
304
+ });
305
+ it('should match any chain when filter has no chainId', () => {
306
+ // Assets with addresses on both chains
307
+ const multiChainUSDC = {
308
+ ...MockUSDC,
309
+ address: {
310
+ 84532: '0x1111111111111111111111111111111111111111',
311
+ 10: '0x1111111111111111111111111111111111111112',
312
+ },
313
+ };
314
+ const multiChainWETH = {
315
+ ...MockWETH,
316
+ address: {
317
+ 84532: '0x2222222222222222222222222222222222222222',
318
+ 10: '0x2222222222222222222222222222222222222223',
319
+ },
320
+ };
321
+ const config = {
322
+ assets: [multiChainUSDC, multiChainWETH],
323
+ };
324
+ const provider = new MockSwapProvider({ marketAllowlist: [config] }, {
325
+ supportedChains: [84532, 10],
326
+ });
327
+ // Should match on any supported chain
328
+ expect(() => provider.testValidateMarketAllowed(multiChainUSDC, multiChainWETH, 84532)).not.toThrow();
329
+ expect(() => provider.testValidateMarketAllowed(multiChainUSDC, multiChainWETH, 10)).not.toThrow();
330
+ });
331
+ it('should filter blocked markets from getMarkets()', async () => {
332
+ const allowConfig = {
333
+ assets: [MockUSDC, MockWETH, MockOP],
334
+ chainId: 84532,
335
+ };
336
+ const blockConfig = {
337
+ assets: [MockUSDC, MockOP],
338
+ chainId: 84532,
339
+ };
340
+ const provider = new MockSwapProvider({
341
+ marketAllowlist: [allowConfig],
342
+ marketBlocklist: [blockConfig],
343
+ });
344
+ // Mock _getMarkets to return markets with real assets
345
+ provider.mockGetMarkets.mockResolvedValue([
346
+ {
347
+ marketId: { poolId: '0xpool1', chainId: 84532 },
348
+ assets: [MockUSDC, MockWETH],
349
+ fee: 0,
350
+ provider: 'uniswap',
351
+ },
352
+ {
353
+ marketId: { poolId: '0xpool2', chainId: 84532 },
354
+ assets: [MockUSDC, MockOP],
355
+ fee: 0,
356
+ provider: 'uniswap',
357
+ },
358
+ ]);
359
+ const markets = await provider.getMarkets();
360
+ // USDC/OP is blocklisted, only USDC/WETH should remain
361
+ expect(markets).toHaveLength(1);
362
+ expect(markets[0].assets[0]).toBe(MockUSDC);
363
+ expect(markets[0].assets[1]).toBe(MockWETH);
364
+ });
365
+ it('should reject blocked market from getMarket()', async () => {
366
+ const blockConfig = {
367
+ assets: [MockUSDC, MockOP],
368
+ chainId: 84532,
369
+ };
370
+ const provider = new MockSwapProvider({
371
+ marketBlocklist: [blockConfig],
372
+ });
373
+ // Mock _getMarket to return a blocked market
374
+ provider.mockGetMarket.mockResolvedValue({
375
+ marketId: { poolId: '0xpool1', chainId: 84532 },
376
+ assets: [MockUSDC, MockOP],
377
+ fee: 0,
378
+ provider: 'uniswap',
379
+ });
380
+ await expect(provider.getMarket({
381
+ poolId: '0xpool1',
382
+ chainId: 84532,
383
+ })).rejects.toThrow('is blocked');
384
+ });
385
+ it('should allow non-blocked market from getMarket()', async () => {
386
+ const blockConfig = {
387
+ assets: [MockUSDC, MockOP],
388
+ chainId: 84532,
389
+ };
390
+ const provider = new MockSwapProvider({
391
+ marketBlocklist: [blockConfig],
392
+ });
393
+ provider.mockGetMarket.mockResolvedValue({
394
+ marketId: { poolId: '0xpool1', chainId: 84532 },
395
+ assets: [MockUSDC, MockWETH],
396
+ fee: 0,
397
+ provider: 'uniswap',
398
+ });
399
+ const market = await provider.getMarket({
400
+ poolId: '0xpool1',
401
+ chainId: 84532,
402
+ });
403
+ expect(market.assets[0]).toBe(MockUSDC);
404
+ expect(market.assets[1]).toBe(MockWETH);
405
+ });
406
+ it('should scope filter to specific chainId when provided', () => {
407
+ const multiChainUSDC = {
408
+ ...MockUSDC,
409
+ address: {
410
+ 84532: '0x1111111111111111111111111111111111111111',
411
+ 10: '0x1111111111111111111111111111111111111112',
412
+ },
413
+ };
414
+ const multiChainWETH = {
415
+ ...MockWETH,
416
+ address: {
417
+ 84532: '0x2222222222222222222222222222222222222222',
418
+ 10: '0x2222222222222222222222222222222222222223',
419
+ },
420
+ };
421
+ const config = {
422
+ assets: [multiChainUSDC, multiChainWETH],
423
+ chainId: 84532,
424
+ };
425
+ const provider = new MockSwapProvider({ marketAllowlist: [config] }, {
426
+ supportedChains: [84532, 10],
427
+ });
428
+ // Should match on 84532
429
+ expect(() => provider.testValidateMarketAllowed(multiChainUSDC, multiChainWETH, 84532)).not.toThrow();
430
+ // Should NOT match on chain 10
431
+ expect(() => provider.testValidateMarketAllowed(multiChainUSDC, multiChainWETH, 10)).toThrow('not in the allowlist');
432
+ });
433
+ });
434
+ });
435
+ //# sourceMappingURL=SwapProvider.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwapProvider.test.js","sourceRoot":"","sources":["../../../../src/swap/core/__tests__/SwapProvider.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type { Address } from 'viem';
2
+ import type { SupportedChainId } from '../../constants/supportedChains.js';
3
+ import type { Asset } from '../../types/asset.js';
4
+ import type { GetSwapMarketsParams, SwapMarket, SwapMarketConfig } from '../../types/swap/index.js';
5
+ /**
6
+ * Sentinel address meaning "send output to msg.sender" in Universal Router commands.
7
+ * The Universal Router maps address(1) to msg.sender and address(2) to the router itself.
8
+ * Only valid in Universal Router calldata encoding — do not use as a general-purpose address.
9
+ * Both Uniswap and Velodrome/Aerodrome Universal Router forks use this convention.
10
+ * @see https://github.com/Uniswap/universal-router/blob/main/contracts/libraries/Constants.sol
11
+ */
12
+ export declare const UNIVERSAL_ROUTER_MSG_SENDER: Address;
13
+ /**
14
+ * Generate unique asset pairs, optionally filtered to pairs containing a required asset.
15
+ * @param assets - Full list of assets from a market config
16
+ * @param requiredAsset - If set, only pairs including this asset are returned
17
+ */
18
+ export declare function assetPairs(assets: Asset[], requiredAsset?: Asset): Array<[Asset, Asset]>;
19
+ /**
20
+ * Sort two addresses for deterministic pool ID computation.
21
+ * @returns [lower, higher] addresses
22
+ */
23
+ export declare function sortAddressPair(addrA: string, addrB: string): [string, string];
24
+ /**
25
+ * Find a specific market by poolId across a set of configs.
26
+ * @param configs - Valid market configs to search
27
+ * @param chainId - Target chain
28
+ * @param poolId - Pool ID to match
29
+ * @param toMarkets - Provider-specific function that expands a config into SwapMarket[]
30
+ * @returns Matching market
31
+ * @throws If no matching market found
32
+ */
33
+ export declare function findMarket<T extends SwapMarketConfig>(configs: T[], chainId: SupportedChainId, poolId: string, toMarkets: (config: T, chainId: SupportedChainId) => SwapMarket[]): SwapMarket;
34
+ /**
35
+ * Expand market configs into concrete SwapMarket objects with optional filters.
36
+ * @param options.configs - Valid market configs
37
+ * @param options.filters - Optional chainId and asset filters
38
+ * @param options.supportedChainIds - All chain IDs this provider supports
39
+ * @param options.toMarkets - Provider-specific function that expands a config into SwapMarket[]
40
+ */
41
+ export declare function expandMarkets<T extends SwapMarketConfig>(options: {
42
+ configs: T[];
43
+ filters: GetSwapMarketsParams;
44
+ supportedChainIds: SupportedChainId[];
45
+ toMarkets: (config: T, chainId: SupportedChainId, asset?: Asset) => SwapMarket[];
46
+ }): SwapMarket[];
47
+ //# sourceMappingURL=markets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markets.d.ts","sourceRoot":"","sources":["../../../src/swap/core/markets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAE9B;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EACU,OAAO,CAAA;AAEzD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,KAAK,EAAE,EACf,aAAa,CAAC,EAAE,KAAK,GACpB,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAMvB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,CAAC,MAAM,EAAE,MAAM,CAAC,CAIlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,gBAAgB,EACnD,OAAO,EAAE,CAAC,EAAE,EACZ,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,KAAK,UAAU,EAAE,GAChE,UAAU,CASZ;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,gBAAgB,EAAE,OAAO,EAAE;IACjE,OAAO,EAAE,CAAC,EAAE,CAAA;IACZ,OAAO,EAAE,oBAAoB,CAAA;IAC7B,iBAAiB,EAAE,gBAAgB,EAAE,CAAA;IACrC,SAAS,EAAE,CACT,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,gBAAgB,EACzB,KAAK,CAAC,EAAE,KAAK,KACV,UAAU,EAAE,CAAA;CAClB,GAAG,UAAU,EAAE,CAaf"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Sentinel address meaning "send output to msg.sender" in Universal Router commands.
3
+ * The Universal Router maps address(1) to msg.sender and address(2) to the router itself.
4
+ * Only valid in Universal Router calldata encoding — do not use as a general-purpose address.
5
+ * Both Uniswap and Velodrome/Aerodrome Universal Router forks use this convention.
6
+ * @see https://github.com/Uniswap/universal-router/blob/main/contracts/libraries/Constants.sol
7
+ */
8
+ export const UNIVERSAL_ROUTER_MSG_SENDER = '0x0000000000000000000000000000000000000001';
9
+ /**
10
+ * Generate unique asset pairs, optionally filtered to pairs containing a required asset.
11
+ * @param assets - Full list of assets from a market config
12
+ * @param requiredAsset - If set, only pairs including this asset are returned
13
+ */
14
+ export function assetPairs(assets, requiredAsset) {
15
+ return assets
16
+ .flatMap((a, i) => assets.slice(i + 1).map((b) => [a, b]))
17
+ .filter(([a, b]) => !requiredAsset || a === requiredAsset || b === requiredAsset);
18
+ }
19
+ /**
20
+ * Sort two addresses for deterministic pool ID computation.
21
+ * @returns [lower, higher] addresses
22
+ */
23
+ export function sortAddressPair(addrA, addrB) {
24
+ return addrA.toLowerCase() < addrB.toLowerCase()
25
+ ? [addrA, addrB]
26
+ : [addrB, addrA];
27
+ }
28
+ /**
29
+ * Find a specific market by poolId across a set of configs.
30
+ * @param configs - Valid market configs to search
31
+ * @param chainId - Target chain
32
+ * @param poolId - Pool ID to match
33
+ * @param toMarkets - Provider-specific function that expands a config into SwapMarket[]
34
+ * @returns Matching market
35
+ * @throws If no matching market found
36
+ */
37
+ export function findMarket(configs, chainId, poolId, toMarkets) {
38
+ for (const config of configs) {
39
+ if (config.chainId !== undefined && config.chainId !== chainId)
40
+ continue;
41
+ const match = toMarkets(config, chainId).find((m) => m.marketId.poolId === poolId);
42
+ if (match)
43
+ return match;
44
+ }
45
+ throw new Error(`Market with poolId ${poolId} not found on chain ${chainId}`);
46
+ }
47
+ /**
48
+ * Expand market configs into concrete SwapMarket objects with optional filters.
49
+ * @param options.configs - Valid market configs
50
+ * @param options.filters - Optional chainId and asset filters
51
+ * @param options.supportedChainIds - All chain IDs this provider supports
52
+ * @param options.toMarkets - Provider-specific function that expands a config into SwapMarket[]
53
+ */
54
+ export function expandMarkets(options) {
55
+ const { configs, filters, supportedChainIds, toMarkets } = options;
56
+ return configs.flatMap((config) => {
57
+ const chainIds = filters.chainId
58
+ ? [filters.chainId]
59
+ : config.chainId
60
+ ? [config.chainId]
61
+ : supportedChainIds;
62
+ return chainIds.flatMap((chainId) => toMarkets(config, chainId, filters.asset));
63
+ });
64
+ }
65
+ //# sourceMappingURL=markets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markets.js","sourceRoot":"","sources":["../../../src/swap/core/markets.ts"],"names":[],"mappings":"AAUA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GACtC,4CAAuD,CAAA;AAEzD;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,MAAe,EACf,aAAqB;IAErB,OAAO,MAAM;SACV,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACzE,MAAM,CACL,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC,KAAK,aAAa,IAAI,CAAC,KAAK,aAAa,CACzE,CAAA;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,KAAa;IAEb,OAAO,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE;QAC9C,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC;QAChB,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACpB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CACxB,OAAY,EACZ,OAAyB,EACzB,MAAc,EACd,SAAiE;IAEjE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO;YAAE,SAAQ;QACxE,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,CACpC,CAAA;QACD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;IACzB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,uBAAuB,OAAO,EAAE,CAAC,CAAA;AAC/E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAA6B,OASzD;IACC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IAClE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO;YAC9B,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;YACnB,CAAC,CAAC,MAAM,CAAC,OAAO;gBACd,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBAClB,CAAC,CAAC,iBAAiB,CAAA;QAEvB,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAClC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAC1C,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { SwapProvider } from './core/SwapProvider.js';
2
+ export { ActionsSwapNamespace } from './namespaces/ActionsSwapNamespace.js';
3
+ export { BaseSwapNamespace } from './namespaces/BaseSwapNamespace.js';
4
+ export { WalletSwapNamespace } from './namespaces/WalletSwapNamespace.js';
5
+ export type { UniswapMarketConfig, UniswapSwapProviderConfig, } from './providers/uniswap/types.js';
6
+ export { UniswapSwapProvider } from './providers/uniswap/UniswapSwapProvider.js';
7
+ export type { VelodromeMarketConfig, VelodromeSwapProviderConfig, } from './providers/velodrome/types.js';
8
+ export { VelodromeSwapProvider } from './providers/velodrome/VelodromeSwapProvider.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/swap/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAG1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AAG9E,YAAY,EACV,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAA;AACrF,YAAY,EACV,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAA"}
@@ -0,0 +1,9 @@
1
+ // Core
2
+ export { SwapProvider } from './core/SwapProvider.js';
3
+ // Namespaces
4
+ export { ActionsSwapNamespace } from './namespaces/ActionsSwapNamespace.js';
5
+ export { BaseSwapNamespace } from './namespaces/BaseSwapNamespace.js';
6
+ export { WalletSwapNamespace } from './namespaces/WalletSwapNamespace.js';
7
+ export { UniswapSwapProvider } from './providers/uniswap/UniswapSwapProvider.js';
8
+ export { VelodromeSwapProvider } from './providers/velodrome/VelodromeSwapProvider.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/swap/index.ts"],"names":[],"mappings":"AAAA,OAAO;AACP,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE1D,aAAa;AACb,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AAO9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAA;AAKrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { BaseSwapNamespace } from './BaseSwapNamespace.js';
2
+ /**
3
+ * Actions swap namespace (read-only, no wallet required).
4
+ * Provides getQuote(), getMarket(), and getMarkets() for read-only access without a wallet.
5
+ */
6
+ export declare class ActionsSwapNamespace extends BaseSwapNamespace {
7
+ }
8
+ //# sourceMappingURL=ActionsSwapNamespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionsSwapNamespace.d.ts","sourceRoot":"","sources":["../../../src/swap/namespaces/ActionsSwapNamespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAE1E;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB;CAAG"}
@@ -0,0 +1,8 @@
1
+ import { BaseSwapNamespace } from './BaseSwapNamespace.js';
2
+ /**
3
+ * Actions swap namespace (read-only, no wallet required).
4
+ * Provides getQuote(), getMarket(), and getMarkets() for read-only access without a wallet.
5
+ */
6
+ export class ActionsSwapNamespace extends BaseSwapNamespace {
7
+ }
8
+ //# sourceMappingURL=ActionsSwapNamespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionsSwapNamespace.js","sourceRoot":"","sources":["../../../src/swap/namespaces/ActionsSwapNamespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAE1E;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,iBAAiB;CAAG"}