@eth-optimism/actions-sdk 0.3.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 (436) 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 -6
  4. package/dist/__mocks__/MockAssets.js.map +1 -1
  5. package/dist/__tests__/actions.test.js +1 -1
  6. package/dist/__tests__/actions.test.js.map +1 -1
  7. package/dist/actions.d.ts +8 -13
  8. package/dist/actions.d.ts.map +1 -1
  9. package/dist/actions.js +35 -27
  10. package/dist/actions.js.map +1 -1
  11. package/dist/constants/assets.d.ts +215 -4
  12. package/dist/constants/assets.d.ts.map +1 -1
  13. package/dist/constants/assets.js +734 -11
  14. package/dist/constants/assets.js.map +1 -1
  15. package/dist/constants/providers.d.ts +6 -0
  16. package/dist/constants/providers.d.ts.map +1 -0
  17. package/dist/constants/providers.js +6 -0
  18. package/dist/constants/providers.js.map +1 -0
  19. package/dist/constants/supportedChains.d.ts +2 -2
  20. package/dist/constants/supportedChains.d.ts.map +1 -1
  21. package/dist/constants/supportedChains.js +12 -2
  22. package/dist/constants/supportedChains.js.map +1 -1
  23. package/dist/index.d.ts +4 -5
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +3 -4
  26. package/dist/index.js.map +1 -1
  27. package/dist/lend/__mocks__/MockLendProvider.d.ts +1 -1
  28. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -1
  29. package/dist/lend/__mocks__/MockLendProvider.js +7 -2
  30. package/dist/lend/__mocks__/MockLendProvider.js.map +1 -1
  31. package/dist/lend/core/LendProvider.d.ts +12 -8
  32. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  33. package/dist/lend/core/LendProvider.js +15 -21
  34. package/dist/lend/core/LendProvider.js.map +1 -1
  35. package/dist/lend/namespaces/BaseLendNamespace.d.ts +2 -6
  36. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -1
  37. package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -1
  38. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +7 -4
  39. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -1
  40. package/dist/lend/providers/aave/AaveLendProvider.d.ts +1 -6
  41. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
  42. package/dist/lend/providers/aave/AaveLendProvider.js +3 -6
  43. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
  44. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +14 -6
  45. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -1
  46. package/dist/lend/providers/aave/addresses.d.ts +13 -39
  47. package/dist/lend/providers/aave/addresses.d.ts.map +1 -1
  48. package/dist/lend/providers/aave/addresses.js +65 -60
  49. package/dist/lend/providers/aave/addresses.js.map +1 -1
  50. package/dist/lend/providers/aave/sdk.d.ts +2 -2
  51. package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
  52. package/dist/lend/providers/aave/sdk.js +6 -28
  53. package/dist/lend/providers/aave/sdk.js.map +1 -1
  54. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +1 -6
  55. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  56. package/dist/lend/providers/morpho/MorphoLendProvider.js +4 -13
  57. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  58. package/dist/lend/providers/morpho/__tests__/api.test.js +52 -43
  59. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
  60. package/dist/lend/providers/morpho/__tests__/sdk.test.js +41 -42
  61. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  62. package/dist/lend/providers/morpho/api.d.ts +3 -7
  63. package/dist/lend/providers/morpho/api.d.ts.map +1 -1
  64. package/dist/lend/providers/morpho/api.js +2 -2
  65. package/dist/lend/providers/morpho/api.js.map +1 -1
  66. package/dist/lend/providers/morpho/contracts.d.ts +11 -10
  67. package/dist/lend/providers/morpho/contracts.d.ts.map +1 -1
  68. package/dist/lend/providers/morpho/contracts.js +43 -10
  69. package/dist/lend/providers/morpho/contracts.js.map +1 -1
  70. package/dist/lend/providers/morpho/sdk.d.ts +7 -2
  71. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  72. package/dist/lend/providers/morpho/sdk.js +67 -63
  73. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  74. package/dist/nodeActionsFactory.d.ts +1 -1
  75. package/dist/reactActionsFactory.d.ts +1 -1
  76. package/dist/services/ChainManager.d.ts +8 -8
  77. package/dist/services/ChainManager.d.ts.map +1 -1
  78. package/dist/services/ChainManager.js.map +1 -1
  79. package/dist/services/__mocks__/MockChainManager.d.ts +4 -4
  80. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
  81. package/dist/services/__mocks__/MockChainManager.js.map +1 -1
  82. package/dist/services/tokenBalance.d.ts +1 -1
  83. package/dist/services/tokenBalance.d.ts.map +1 -1
  84. package/dist/services/tokenBalance.js +31 -30
  85. package/dist/services/tokenBalance.js.map +1 -1
  86. package/dist/services/tokenBalance.spec.js +20 -24
  87. package/dist/services/tokenBalance.spec.js.map +1 -1
  88. package/dist/swap/__mocks__/MockSwapProvider.d.ts +20 -8
  89. package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -1
  90. package/dist/swap/__mocks__/MockSwapProvider.js +52 -29
  91. package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -1
  92. package/dist/swap/core/SwapProvider.d.ts +105 -16
  93. package/dist/swap/core/SwapProvider.d.ts.map +1 -1
  94. package/dist/swap/core/SwapProvider.js +218 -36
  95. package/dist/swap/core/SwapProvider.js.map +1 -1
  96. package/dist/swap/core/__tests__/SwapProvider.test.js +115 -9
  97. package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -1
  98. package/dist/swap/core/markets.d.ts +47 -0
  99. package/dist/swap/core/markets.d.ts.map +1 -0
  100. package/dist/swap/core/markets.js +65 -0
  101. package/dist/swap/core/markets.js.map +1 -0
  102. package/dist/swap/index.d.ts +2 -0
  103. package/dist/swap/index.d.ts.map +1 -1
  104. package/dist/swap/index.js +1 -0
  105. package/dist/swap/index.js.map +1 -1
  106. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +2 -2
  107. package/dist/swap/namespaces/ActionsSwapNamespace.js +2 -2
  108. package/dist/swap/namespaces/BaseSwapNamespace.d.ts +48 -8
  109. package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -1
  110. package/dist/swap/namespaces/BaseSwapNamespace.js +139 -16
  111. package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -1
  112. package/dist/swap/namespaces/WalletSwapNamespace.d.ts +19 -7
  113. package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -1
  114. package/dist/swap/namespaces/WalletSwapNamespace.js +39 -15
  115. package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -1
  116. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +150 -11
  117. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -1
  118. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +85 -8
  119. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -1
  120. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +9 -42
  121. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -1
  122. package/dist/swap/providers/uniswap/UniswapSwapProvider.js +81 -139
  123. package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -1
  124. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +10 -9
  125. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -1
  126. package/dist/swap/providers/uniswap/__tests__/sdk.test.js +17 -17
  127. package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -1
  128. package/dist/swap/providers/uniswap/addresses.d.ts +5 -0
  129. package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -1
  130. package/dist/swap/providers/uniswap/addresses.js +1 -1
  131. package/dist/swap/providers/uniswap/addresses.js.map +1 -1
  132. package/dist/swap/providers/uniswap/encoding.d.ts +4 -4
  133. package/dist/swap/providers/uniswap/encoding.js +17 -17
  134. package/dist/swap/providers/uniswap/markets.d.ts +19 -0
  135. package/dist/swap/providers/uniswap/markets.d.ts.map +1 -0
  136. package/dist/swap/providers/uniswap/markets.js +48 -0
  137. package/dist/swap/providers/uniswap/markets.js.map +1 -0
  138. package/dist/swap/providers/uniswap/types.d.ts +4 -3
  139. package/dist/swap/providers/uniswap/types.d.ts.map +1 -1
  140. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +49 -0
  141. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
  142. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js +140 -0
  143. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
  144. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +2 -0
  145. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
  146. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +255 -0
  147. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
  148. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +2 -0
  149. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
  150. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +166 -0
  151. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
  152. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +2 -0
  153. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
  154. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +419 -0
  155. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
  156. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts +2 -0
  157. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
  158. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js +51 -0
  159. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
  160. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts +14 -0
  161. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
  162. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js +13 -0
  163. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
  164. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts +2 -0
  165. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
  166. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js +173 -0
  167. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
  168. package/dist/swap/providers/velodrome/abis.d.ts +396 -0
  169. package/dist/swap/providers/velodrome/abis.d.ts.map +1 -0
  170. package/dist/swap/providers/velodrome/abis.js +257 -0
  171. package/dist/swap/providers/velodrome/abis.js.map +1 -0
  172. package/dist/swap/providers/velodrome/addresses.d.ts +39 -0
  173. package/dist/swap/providers/velodrome/addresses.d.ts.map +1 -0
  174. package/dist/swap/providers/velodrome/addresses.js +57 -0
  175. package/dist/swap/providers/velodrome/addresses.js.map +1 -0
  176. package/dist/swap/providers/velodrome/config.d.ts +22 -0
  177. package/dist/swap/providers/velodrome/config.d.ts.map +1 -0
  178. package/dist/swap/providers/velodrome/config.js +29 -0
  179. package/dist/swap/providers/velodrome/config.js.map +1 -0
  180. package/dist/swap/providers/velodrome/encoding/helpers.d.ts +37 -0
  181. package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
  182. package/dist/swap/providers/velodrome/encoding/helpers.js +60 -0
  183. package/dist/swap/providers/velodrome/encoding/helpers.js.map +1 -0
  184. package/dist/swap/providers/velodrome/encoding/index.d.ts +8 -0
  185. package/dist/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
  186. package/dist/swap/providers/velodrome/encoding/index.js +5 -0
  187. package/dist/swap/providers/velodrome/encoding/index.js.map +1 -0
  188. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts +39 -0
  189. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
  190. package/dist/swap/providers/velodrome/encoding/poolRouter.js +83 -0
  191. package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
  192. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +15 -0
  193. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +1 -0
  194. package/dist/swap/providers/velodrome/encoding/routers/approval.js +33 -0
  195. package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +1 -0
  196. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts +40 -0
  197. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
  198. package/dist/swap/providers/velodrome/encoding/routers/cl.js +80 -0
  199. package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
  200. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts +42 -0
  201. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
  202. package/dist/swap/providers/velodrome/encoding/routers/v2.js +166 -0
  203. package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
  204. package/dist/swap/providers/velodrome/markets.d.ts +21 -0
  205. package/dist/swap/providers/velodrome/markets.d.ts.map +1 -0
  206. package/dist/swap/providers/velodrome/markets.js +69 -0
  207. package/dist/swap/providers/velodrome/markets.js.map +1 -0
  208. package/dist/swap/providers/velodrome/types.d.ts +31 -0
  209. package/dist/swap/providers/velodrome/types.d.ts.map +1 -0
  210. package/dist/swap/providers/velodrome/types.js +2 -0
  211. package/dist/swap/providers/velodrome/types.js.map +1 -0
  212. package/dist/types/actions.d.ts +44 -9
  213. package/dist/types/actions.d.ts.map +1 -1
  214. package/dist/types/asset.d.ts +7 -9
  215. package/dist/types/asset.d.ts.map +1 -1
  216. package/dist/types/chain.d.ts +2 -2
  217. package/dist/types/chain.d.ts.map +1 -1
  218. package/dist/types/lend/base.d.ts +6 -6
  219. package/dist/types/lend/base.d.ts.map +1 -1
  220. package/dist/types/lend/base.js.map +1 -1
  221. package/dist/types/lend/contracts.d.ts +2 -1
  222. package/dist/types/lend/contracts.d.ts.map +1 -1
  223. package/dist/types/providers.d.ts +21 -0
  224. package/dist/types/providers.d.ts.map +1 -0
  225. package/dist/types/providers.js +2 -0
  226. package/dist/types/providers.js.map +1 -0
  227. package/dist/types/swap/base.d.ts +133 -33
  228. package/dist/types/swap/base.d.ts.map +1 -1
  229. package/dist/utils/approve.d.ts +82 -0
  230. package/dist/utils/approve.d.ts.map +1 -0
  231. package/dist/utils/{permit2.js → approve.js} +48 -14
  232. package/dist/utils/approve.js.map +1 -0
  233. package/dist/utils/approve.test.d.ts +2 -0
  234. package/dist/utils/approve.test.d.ts.map +1 -0
  235. package/dist/utils/{permit2.test.js → approve.test.js} +95 -2
  236. package/dist/utils/approve.test.js.map +1 -0
  237. package/dist/utils/assets.d.ts +6 -0
  238. package/dist/utils/assets.d.ts.map +1 -1
  239. package/dist/utils/assets.js +10 -0
  240. package/dist/utils/assets.js.map +1 -1
  241. package/dist/utils/validateAddresses.d.ts +32 -0
  242. package/dist/utils/validateAddresses.d.ts.map +1 -0
  243. package/dist/utils/validateAddresses.js +103 -0
  244. package/dist/utils/validateAddresses.js.map +1 -0
  245. package/dist/utils/validateAddresses.test.d.ts +2 -0
  246. package/dist/utils/validateAddresses.test.d.ts.map +1 -0
  247. package/dist/utils/validateAddresses.test.js +314 -0
  248. package/dist/utils/validateAddresses.test.js.map +1 -0
  249. package/dist/wallet/core/namespace/WalletNamespace.d.ts +21 -9
  250. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  251. package/dist/wallet/core/namespace/WalletNamespace.js +44 -15
  252. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  253. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
  254. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  255. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +4 -16
  256. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  257. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  258. package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -11
  259. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  260. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +2 -9
  261. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  262. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  263. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +6 -17
  264. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  265. package/dist/wallet/core/wallets/abstract/Wallet.js +5 -6
  266. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  267. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +10 -1
  268. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
  269. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +2 -2
  270. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
  271. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +12 -4
  272. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  273. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +3 -10
  274. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  275. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  276. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  277. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +3 -10
  278. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  279. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  280. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +2 -4
  281. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  282. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +6 -8
  283. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  284. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +4 -4
  285. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  286. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +2 -9
  287. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  288. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  289. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +3 -10
  290. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  291. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  292. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -10
  293. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  294. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  295. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +3 -9
  296. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  297. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -2
  298. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  299. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +3 -9
  300. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  301. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -2
  302. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  303. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +3 -9
  304. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  305. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -2
  306. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  307. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +2 -4
  308. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
  309. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +11 -13
  310. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  311. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +6 -6
  312. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  313. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +5 -10
  314. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  315. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +3 -3
  316. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  317. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +2 -6
  318. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  319. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  320. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +5 -10
  321. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  322. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  323. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  324. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -10
  325. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  326. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  327. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  328. package/package.json +3 -2
  329. package/src/__mocks__/MockAssets.ts +54 -6
  330. package/src/__tests__/actions.test.ts +1 -1
  331. package/src/actions.ts +58 -61
  332. package/src/constants/assets.ts +781 -10
  333. package/src/constants/providers.ts +5 -0
  334. package/src/constants/supportedChains.ts +22 -2
  335. package/src/index.ts +50 -8
  336. package/src/lend/__mocks__/MockLendProvider.ts +8 -3
  337. package/src/lend/core/LendProvider.ts +27 -28
  338. package/src/lend/namespaces/BaseLendNamespace.ts +2 -6
  339. package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +12 -5
  340. package/src/lend/providers/aave/AaveLendProvider.ts +3 -7
  341. package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +16 -7
  342. package/src/lend/providers/aave/addresses.ts +82 -64
  343. package/src/lend/providers/aave/sdk.ts +11 -36
  344. package/src/lend/providers/morpho/MorphoLendProvider.ts +4 -16
  345. package/src/lend/providers/morpho/__tests__/api.test.ts +65 -44
  346. package/src/lend/providers/morpho/__tests__/sdk.test.ts +43 -43
  347. package/src/lend/providers/morpho/api.ts +7 -8
  348. package/src/lend/providers/morpho/contracts.ts +62 -13
  349. package/src/lend/providers/morpho/sdk.ts +85 -63
  350. package/src/services/ChainManager.ts +12 -21
  351. package/src/services/__mocks__/MockChainManager.ts +4 -7
  352. package/src/services/tokenBalance.spec.ts +20 -24
  353. package/src/services/tokenBalance.ts +39 -33
  354. package/src/swap/__mocks__/MockSwapProvider.ts +77 -42
  355. package/src/swap/core/SwapProvider.ts +307 -49
  356. package/src/swap/core/__tests__/SwapProvider.test.ts +151 -9
  357. package/src/swap/core/markets.ts +104 -0
  358. package/src/swap/index.ts +5 -0
  359. package/src/swap/namespaces/ActionsSwapNamespace.ts +2 -2
  360. package/src/swap/namespaces/BaseSwapNamespace.ts +199 -18
  361. package/src/swap/namespaces/WalletSwapNamespace.ts +53 -14
  362. package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +241 -14
  363. package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +103 -8
  364. package/src/swap/providers/uniswap/UniswapSwapProvider.ts +108 -195
  365. package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +12 -12
  366. package/src/swap/providers/uniswap/__tests__/sdk.test.ts +19 -20
  367. package/src/swap/providers/uniswap/addresses.ts +3 -1
  368. package/src/swap/providers/uniswap/encoding.ts +22 -22
  369. package/src/swap/providers/uniswap/markets.ts +84 -0
  370. package/src/swap/providers/uniswap/types.ts +4 -3
  371. package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +224 -0
  372. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +341 -0
  373. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +202 -0
  374. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +506 -0
  375. package/src/swap/providers/velodrome/__tests__/encoding.cl.test.ts +69 -0
  376. package/src/swap/providers/velodrome/__tests__/encoding.helpers.ts +20 -0
  377. package/src/swap/providers/velodrome/__tests__/encoding.v2.test.ts +235 -0
  378. package/src/swap/providers/velodrome/abis.ts +264 -0
  379. package/src/swap/providers/velodrome/addresses.ts +107 -0
  380. package/src/swap/providers/velodrome/config.ts +46 -0
  381. package/src/swap/providers/velodrome/encoding/helpers.ts +82 -0
  382. package/src/swap/providers/velodrome/encoding/index.ts +7 -0
  383. package/src/swap/providers/velodrome/encoding/poolRouter.ts +124 -0
  384. package/src/swap/providers/velodrome/encoding/routers/approval.ts +45 -0
  385. package/src/swap/providers/velodrome/encoding/routers/cl.ts +156 -0
  386. package/src/swap/providers/velodrome/encoding/routers/v2.ts +267 -0
  387. package/src/swap/providers/velodrome/markets.ts +100 -0
  388. package/src/swap/providers/velodrome/types.ts +30 -0
  389. package/src/types/actions.ts +49 -9
  390. package/src/types/asset.ts +12 -9
  391. package/src/types/chain.ts +2 -2
  392. package/src/types/lend/base.ts +6 -6
  393. package/src/types/lend/contracts.ts +5 -1
  394. package/src/types/providers.ts +22 -0
  395. package/src/types/swap/base.ts +147 -34
  396. package/src/utils/{permit2.test.ts → approve.test.ts} +117 -1
  397. package/src/utils/{permit2.ts → approve.ts} +67 -14
  398. package/src/utils/assets.ts +14 -0
  399. package/src/utils/validateAddresses.test.ts +439 -0
  400. package/src/utils/validateAddresses.ts +153 -0
  401. package/src/wallet/core/namespace/WalletNamespace.ts +70 -16
  402. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +8 -4
  403. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +5 -17
  404. package/src/wallet/core/providers/hosted/types/index.ts +9 -11
  405. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +5 -17
  406. package/src/wallet/core/wallets/abstract/Wallet.ts +15 -22
  407. package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +13 -1
  408. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +21 -5
  409. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +5 -17
  410. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
  411. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +3 -10
  412. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +8 -8
  413. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
  414. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +3 -10
  415. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +5 -17
  416. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +5 -17
  417. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +7 -11
  418. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +7 -11
  419. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +7 -11
  420. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +23 -10
  421. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
  422. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +10 -18
  423. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
  424. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +10 -18
  425. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +10 -18
  426. package/dist/supported/tokens.d.ts +0 -25
  427. package/dist/supported/tokens.d.ts.map +0 -1
  428. package/dist/supported/tokens.js +0 -44
  429. package/dist/supported/tokens.js.map +0 -1
  430. package/dist/utils/permit2.d.ts +0 -46
  431. package/dist/utils/permit2.d.ts.map +0 -1
  432. package/dist/utils/permit2.js.map +0 -1
  433. package/dist/utils/permit2.test.d.ts +0 -2
  434. package/dist/utils/permit2.test.d.ts.map +0 -1
  435. package/dist/utils/permit2.test.js.map +0 -1
  436. package/src/supported/tokens.ts +0 -66
@@ -1,8 +1,9 @@
1
- import { type Address, encodeAbiParameters, formatUnits, keccak256 } from 'viem'
1
+ import { formatUnits } from 'viem'
2
2
 
3
+ import { UNISWAP } from '@/constants/providers.js'
3
4
  import type { SupportedChainId } from '@/constants/supportedChains.js'
5
+ import { expandMarkets, findMarket } from '@/swap/core/markets.js'
4
6
  import { SwapProvider } from '@/swap/core/SwapProvider.js'
5
- import { POOL_KEY_ABI_TYPE } from '@/swap/providers/uniswap/abis.js'
6
7
  import {
7
8
  getSupportedChainIds,
8
9
  getUniswapAddresses,
@@ -11,6 +12,10 @@ import {
11
12
  encodeUniversalRouterSwap,
12
13
  getQuote,
13
14
  } from '@/swap/providers/uniswap/encoding.js'
15
+ import {
16
+ configToMarkets,
17
+ getValidMarketConfigs,
18
+ } from '@/swap/providers/uniswap/markets.js'
14
19
  import type {
15
20
  UniswapMarketConfig,
16
21
  UniswapSwapProviderConfig,
@@ -21,40 +26,79 @@ import type {
21
26
  GetSwapMarketsParams,
22
27
  ResolvedSwapParams,
23
28
  SwapMarket,
24
- SwapPrice,
25
- SwapPriceParams,
29
+ SwapQuote,
30
+ SwapQuoteParams,
26
31
  SwapTransaction,
27
32
  } from '@/types/swap/index.js'
28
- import type { TransactionData } from '@/types/transaction.js'
29
33
  import { isNativeAsset, parseAssetAmount } from '@/utils/assets.js'
30
34
 
31
35
  /**
32
36
  * Uniswap V4 swap provider using Universal Router and Permit2 approvals.
33
37
  */
34
38
  export class UniswapSwapProvider extends SwapProvider<UniswapSwapProviderConfig> {
35
- /** @returns Chain IDs where Uniswap V4 contracts are deployed */
36
- supportedChainIds(): SupportedChainId[] {
39
+ protocolSupportedChainIds(): SupportedChainId[] {
37
40
  return getSupportedChainIds()
38
41
  }
39
42
 
40
- /**
41
- * Build a swap transaction with quote, calldata, and any required approvals.
42
- * @param params - Resolved swap parameters (amounts in wei, defaults applied)
43
- * @returns Transaction data ready for wallet execution
44
- */
45
43
  protected async _execute(
46
44
  params: ResolvedSwapParams,
47
45
  ): Promise<SwapTransaction> {
46
+ const swapQuote = await this._getQuote({
47
+ assetIn: params.assetIn,
48
+ assetOut: params.assetOut,
49
+ amountIn: params.amountInRaw
50
+ ? parseFloat(
51
+ formatUnits(params.amountInRaw, params.assetIn.metadata.decimals),
52
+ )
53
+ : undefined,
54
+ amountOut: params.amountOutRaw
55
+ ? parseFloat(
56
+ formatUnits(params.amountOutRaw, params.assetOut.metadata.decimals),
57
+ )
58
+ : undefined,
59
+ chainId: params.chainId,
60
+ slippage: params.slippage,
61
+ deadline: params.deadline,
62
+ recipient: params.recipient,
63
+ })
64
+ return this.buildSwapTransactions(swapQuote)
65
+ }
66
+
67
+ protected async _buildApprovals(quote: SwapQuote) {
68
+ const addresses = getUniswapAddresses(quote.chainId)
69
+
70
+ return this.buildPermit2Approvals(
71
+ {
72
+ assetIn: quote.assetIn,
73
+ assetOut: quote.assetOut,
74
+ slippage: quote.slippage,
75
+ deadline: quote.deadline,
76
+ recipient: quote.recipient!,
77
+ walletAddress: quote.recipient!,
78
+ chainId: quote.chainId,
79
+ amountInRaw: quote.amountInRaw,
80
+ },
81
+ quote.amountInRaw,
82
+ addresses.permit2,
83
+ addresses.universalRouter,
84
+ )
85
+ }
86
+
87
+ protected async _getQuote(params: SwapQuoteParams): Promise<SwapQuote> {
48
88
  const { chainId, assetIn, assetOut } = params
49
89
  const addresses = getUniswapAddresses(chainId)
50
90
  const publicClient = this.chainManager.getPublicClient(chainId)
51
91
  const marketConfig = this.resolveUniswapConfig(assetIn, assetOut, chainId)
52
92
 
93
+ const { slippage, now, deadline, recipient, amountInRaw } =
94
+ this.resolveQuoteDefaults(params)
95
+ const amountOutRaw = parseAssetAmount(assetOut, params.amountOut)
96
+
53
97
  const quote = await getQuote({
54
98
  assetIn,
55
99
  assetOut,
56
- amountInWei: params.amountInWei,
57
- amountOutWei: params.amountOutWei,
100
+ amountInRaw: amountOutRaw ? undefined : amountInRaw,
101
+ amountOutRaw,
58
102
  chainId,
59
103
  publicClient,
60
104
  quoterAddress: addresses.quoter,
@@ -64,13 +108,13 @@ export class UniswapSwapProvider extends SwapProvider<UniswapSwapProviderConfig>
64
108
  })
65
109
 
66
110
  const swapCalldata = encodeUniversalRouterSwap({
67
- amountInWei: params.amountInWei,
68
- amountOutWei: params.amountOutWei,
111
+ amountInRaw: amountOutRaw ? undefined : amountInRaw,
112
+ amountOutRaw,
69
113
  assetIn,
70
114
  assetOut,
71
- slippage: params.slippage,
72
- deadline: params.deadline,
73
- recipient: params.recipient,
115
+ slippage,
116
+ deadline,
117
+ recipient,
74
118
  chainId,
75
119
  quote,
76
120
  universalRouterAddress: addresses.universalRouter,
@@ -78,70 +122,48 @@ export class UniswapSwapProvider extends SwapProvider<UniswapSwapProviderConfig>
78
122
  tickSpacing: marketConfig.tickSpacing,
79
123
  })
80
124
 
81
- const amountInWei = params.amountInWei ?? quote.amountInWei
82
- const { tokenApproval, permit2Approval } = await this.buildPermit2Approvals(
83
- params,
84
- amountInWei,
85
- addresses.permit2,
86
- addresses.universalRouter,
87
- this._config.permit2ExpirySeconds,
88
- )
125
+ const finalAmountInRaw = amountOutRaw ? quote.amountInRaw : amountInRaw
89
126
 
90
- const swapTx: TransactionData = {
91
- to: addresses.universalRouter,
92
- data: swapCalldata,
93
- value: isNativeAsset(assetIn) ? (params.amountInWei ?? 0n) : 0n,
94
- }
127
+ const { amountOutMinRaw, amountOutMin } = this.computeSlippageBounds(
128
+ quote.amountOutRaw,
129
+ slippage,
130
+ assetOut,
131
+ )
95
132
 
96
133
  return {
97
- amountIn: parseFloat(formatUnits(amountInWei, assetIn.metadata.decimals)),
98
- amountOut: parseFloat(
99
- formatUnits(quote.amountOutWei, assetOut.metadata.decimals),
100
- ),
101
- amountInWei,
102
- amountOutWei: quote.amountOutWei,
103
134
  assetIn,
104
135
  assetOut,
105
- price: quote.price,
136
+ chainId,
137
+ amountIn: quote.amountIn,
138
+ amountInRaw: finalAmountInRaw,
139
+ amountOut: quote.amountOut,
140
+ amountOutRaw: quote.amountOutRaw,
141
+ amountOutMin,
142
+ amountOutMinRaw,
143
+ price: quote.amountOut / quote.amountIn,
144
+ priceInverse: quote.amountIn / quote.amountOut,
106
145
  priceImpact: quote.priceImpact,
107
- transactionData: { tokenApproval, permit2Approval, swap: swapTx },
146
+ route: quote.route,
147
+ execution: {
148
+ swapCalldata,
149
+ routerAddress: addresses.universalRouter,
150
+ value: isNativeAsset(assetIn) ? (amountInRaw ?? 0n) : 0n,
151
+ providerContext: {
152
+ fee: marketConfig.fee,
153
+ tickSpacing: marketConfig.tickSpacing,
154
+ permit2Address: addresses.permit2,
155
+ },
156
+ },
157
+ provider: UNISWAP,
158
+ slippage,
159
+ deadline,
160
+ quotedAt: now,
161
+ expiresAt: deadline,
162
+ gasEstimate: quote.gasEstimate,
163
+ quotedRecipient: recipient,
108
164
  }
109
165
  }
110
166
 
111
- /**
112
- * Get a price quote for a swap pair.
113
- * @param params - Price query with assets, optional amounts, and chain
114
- * @returns Quote with price, amounts, price impact, and route
115
- */
116
- protected async _getPrice(params: SwapPriceParams): Promise<SwapPrice> {
117
- const { chainId, assetIn, assetOut } = params
118
- const addresses = getUniswapAddresses(chainId)
119
- const publicClient = this.chainManager.getPublicClient(chainId)
120
-
121
- if (!assetOut) {
122
- throw new Error('assetOut is required')
123
- }
124
-
125
- const marketConfig = this.resolveUniswapConfig(assetIn, assetOut, chainId)
126
-
127
- // Default to 1 unit for price quotes when no amount specified
128
- const amountInWei = parseAssetAmount(assetIn, params.amountIn ?? 1)
129
- const amountOutWei = parseAssetAmount(assetOut, params.amountOut)
130
-
131
- return getQuote({
132
- assetIn,
133
- assetOut,
134
- amountInWei: amountOutWei ? undefined : amountInWei,
135
- amountOutWei,
136
- chainId,
137
- publicClient,
138
- quoterAddress: addresses.quoter,
139
- poolManagerAddress: addresses.poolManager,
140
- fee: marketConfig.fee,
141
- tickSpacing: marketConfig.tickSpacing,
142
- })
143
- }
144
-
145
167
  /**
146
168
  * Find a specific market by poolId from the allowlist.
147
169
  * @param params - Pool ID and chain to look up
@@ -149,53 +171,32 @@ export class UniswapSwapProvider extends SwapProvider<UniswapSwapProviderConfig>
149
171
  * @throws If no matching market found in config
150
172
  */
151
173
  protected async _getMarket(params: GetSwapMarketParams): Promise<SwapMarket> {
152
- const { poolId, chainId } = params
153
-
154
- for (const config of this.validConfigs()) {
155
- if (config.chainId !== undefined && config.chainId !== chainId) continue
156
- const match = this.marketsFromConfig(config, chainId).find(
157
- (m) => m.marketId.poolId === poolId,
158
- )
159
- if (match) return match
160
- }
161
-
162
- throw new Error(
163
- `Market with poolId ${poolId} not found on chain ${chainId}`,
174
+ return findMarket(
175
+ getValidMarketConfigs(this._config.marketAllowlist),
176
+ params.chainId,
177
+ params.poolId,
178
+ configToMarkets,
164
179
  )
165
180
  }
166
181
 
167
182
  /**
168
183
  * Expand the market allowlist into concrete SwapMarket objects.
169
- * Derives poolId from each asset pair's pool key — no RPC calls needed.
170
- * @param params - Optional chain and asset filters
184
+ * @param params - Optional filters (chainId, asset)
171
185
  * @returns All configured markets matching the filters
172
186
  */
173
187
  protected async _getMarkets(
174
188
  params: GetSwapMarketsParams,
175
189
  ): Promise<SwapMarket[]> {
176
- return this.validConfigs().flatMap((config) => {
177
- const chainIds = params.chainId
178
- ? [params.chainId]
179
- : config.chainId
180
- ? [config.chainId]
181
- : this.supportedChainIds()
182
-
183
- return chainIds.flatMap((chainId) =>
184
- this.marketsFromConfig(config, chainId, params.asset),
185
- )
190
+ return expandMarkets({
191
+ configs: getValidMarketConfigs(this._config.marketAllowlist),
192
+ filters: params,
193
+ supportedChainIds: this.supportedChainIds(),
194
+ toMarkets: configToMarkets,
186
195
  })
187
196
  }
188
197
 
189
- // ─────────────────────────────────────────────────────────────────────────────
190
- // Private helpers
191
- // ─────────────────────────────────────────────────────────────────────────────
192
-
193
198
  /**
194
- * Look up the Uniswap-specific market config for a pair, validating fee/tickSpacing.
195
- * @param assetIn - Input asset
196
- * @param assetOut - Output asset
197
- * @param chainId - Target chain
198
- * @returns Market config with guaranteed fee and tickSpacing
199
+ * Resolve and validate Uniswap market config for a pair.
199
200
  * @throws If pair not in allowlist or missing fee/tickSpacing
200
201
  */
201
202
  private resolveUniswapConfig(
@@ -213,92 +214,4 @@ export class UniswapSwapProvider extends SwapProvider<UniswapSwapProviderConfig>
213
214
  }
214
215
  return config as UniswapMarketConfig & { fee: number; tickSpacing: number }
215
216
  }
216
-
217
- /** @returns Allowlist entries that have the required fee and tickSpacing set */
218
- private validConfigs(): Array<
219
- UniswapMarketConfig & { fee: number; tickSpacing: number }
220
- > {
221
- return (this._config.marketAllowlist ?? []).filter(
222
- (f): f is UniswapMarketConfig & { fee: number; tickSpacing: number } =>
223
- f.fee !== undefined && f.tickSpacing !== undefined,
224
- )
225
- }
226
-
227
- /**
228
- * Generate all SwapMarket objects from a single config entry on a given chain.
229
- * @param config - Market config with fee/tickSpacing
230
- * @param chainId - Target chain
231
- * @param asset - If provided, only return markets containing this asset
232
- */
233
- private marketsFromConfig(
234
- config: UniswapMarketConfig & { fee: number; tickSpacing: number },
235
- chainId: SupportedChainId,
236
- asset?: Asset,
237
- ): SwapMarket[] {
238
- return this.assetPairs(config.assets, asset)
239
- .map(([a, b]) =>
240
- this.configToMarket(a, b, chainId, config.fee, config.tickSpacing),
241
- )
242
- .filter((m): m is SwapMarket => m !== null)
243
- }
244
-
245
- /**
246
- * Generate unique asset pairs, optionally scoped to pairs containing a required asset.
247
- * @param assets - Full list of assets from a market config
248
- * @param requiredAsset - If set, only pairs including this asset are returned
249
- */
250
- private assetPairs(
251
- assets: Asset[],
252
- requiredAsset?: Asset,
253
- ): Array<[Asset, Asset]> {
254
- return assets
255
- .flatMap((a, i) => assets.slice(i + 1).map((b): [Asset, Asset] => [a, b]))
256
- .filter(
257
- ([a, b]) =>
258
- !requiredAsset || a === requiredAsset || b === requiredAsset,
259
- )
260
- }
261
-
262
- /**
263
- * Build a SwapMarket from two assets and V4 pool parameters.
264
- * Computes a deterministic poolId from the sorted pool key.
265
- * @returns SwapMarket, or null if either asset lacks an address on this chain
266
- */
267
- private configToMarket(
268
- assetA: Asset,
269
- assetB: Asset,
270
- chainId: SupportedChainId,
271
- fee: number,
272
- tickSpacing: number,
273
- ): SwapMarket | null {
274
- const addrA = assetA.address[chainId]
275
- const addrB = assetB.address[chainId]
276
- if (!addrA || addrA === 'native' || !addrB || addrB === 'native')
277
- return null
278
-
279
- // V4 requires currency0 < currency1 for deterministic pool keys
280
- const [currency0, currency1] =
281
- addrA.toLowerCase() < addrB.toLowerCase()
282
- ? [addrA, addrB]
283
- : [addrB, addrA]
284
-
285
- // PoolId = keccak256(abi.encode(PoolKey)) per V4's PoolIdLibrary
286
- // @see https://github.com/Uniswap/v4-core/blob/main/src/types/PoolId.sol
287
- const poolId = keccak256(
288
- encodeAbiParameters(POOL_KEY_ABI_TYPE, [
289
- currency0 as Address,
290
- currency1 as Address,
291
- fee,
292
- tickSpacing,
293
- '0x0000000000000000000000000000000000000000' as Address,
294
- ]),
295
- )
296
-
297
- return {
298
- marketId: { poolId, chainId },
299
- assets: [assetA, assetB],
300
- fee,
301
- provider: 'uniswap',
302
- }
303
- }
304
217
  }
@@ -5,11 +5,10 @@ import { describe, expect, it, vi } from 'vitest'
5
5
  import { MockWETHAsset } from '@/__mocks__/MockAssets.js'
6
6
  import type { SupportedChainId } from '@/constants/supportedChains.js'
7
7
  import type { ChainManager } from '@/services/ChainManager.js'
8
+ import type { UniswapSwapProviderConfig } from '@/swap/providers/uniswap/types.js'
9
+ import { UniswapSwapProvider } from '@/swap/providers/uniswap/UniswapSwapProvider.js'
8
10
  import type { Asset } from '@/types/asset.js'
9
11
 
10
- import type { UniswapSwapProviderConfig } from '../types.js'
11
- import { UniswapSwapProvider } from '../UniswapSwapProvider.js'
12
-
13
12
  const CHAIN_ID = baseSepolia.id as SupportedChainId
14
13
 
15
14
  const USDC: Asset = {
@@ -127,32 +126,33 @@ describe('UniswapSwapProvider', () => {
127
126
  })
128
127
  })
129
128
 
130
- describe('getPrice', () => {
131
- it('returns price quote', async () => {
129
+ describe('getQuote', () => {
130
+ it('returns swap quote', async () => {
132
131
  const provider = createProvider()
133
- const price = await provider.getPrice({
132
+ const quote = await provider.getQuote({
134
133
  assetIn: USDC,
135
134
  assetOut: OP,
136
135
  amountIn: 100,
137
136
  chainId: CHAIN_ID,
138
137
  })
139
138
 
140
- expect(price.price).toBeDefined()
141
- expect(price.amountIn).toBeDefined()
142
- expect(price.amountOut).toBeDefined()
143
- expect(price.route.path).toEqual([USDC, OP])
139
+ expect(quote.price).toBeTypeOf('number')
140
+ expect(quote.amountIn).toBeDefined()
141
+ expect(quote.amountOut).toBeDefined()
142
+ expect(quote.route.path).toEqual([USDC, OP])
143
+ expect(quote.execution).toBeDefined()
144
144
  })
145
145
 
146
146
  it('defaults to 1 unit when no amount specified', async () => {
147
147
  const provider = createProvider()
148
- const price = await provider.getPrice({
148
+ const quote = await provider.getQuote({
149
149
  assetIn: USDC,
150
150
  assetOut: OP,
151
151
  chainId: CHAIN_ID,
152
152
  })
153
153
 
154
154
  // 1 USDC = 1000000 (6 decimals)
155
- expect(price.amountInWei).toBe(1000000n)
155
+ expect(quote.amountInRaw).toBe(1000000n)
156
156
  })
157
157
  })
158
158
 
@@ -2,13 +2,12 @@ import { type Address, type PublicClient, zeroAddress } from 'viem'
2
2
  import { describe, expect, it, vi } from 'vitest'
3
3
 
4
4
  import type { SupportedChainId } from '@/constants/supportedChains.js'
5
- import type { Asset } from '@/types/asset.js'
6
-
7
5
  import {
8
6
  calculatePriceImpact,
9
7
  encodeUniversalRouterSwap,
10
8
  getQuote,
11
- } from '../encoding.js'
9
+ } from '@/swap/providers/uniswap/encoding.js'
10
+ import type { Asset } from '@/types/asset.js'
12
11
 
13
12
  const USDC: Asset = {
14
13
  type: 'erc20',
@@ -58,7 +57,7 @@ describe('getQuote', () => {
58
57
  const quote = await getQuote({
59
58
  assetIn: USDC,
60
59
  assetOut: WETH,
61
- amountInWei: 100000000n, // 100 USDC
60
+ amountInRaw: 100000000n, // 100 USDC
62
61
  chainId: CHAIN_ID,
63
62
  publicClient,
64
63
  quoterAddress: QUOTER,
@@ -69,8 +68,8 @@ describe('getQuote', () => {
69
68
 
70
69
  expect(quote.amountIn).toBe(100)
71
70
  expect(quote.amountOut).toBe(0.5)
72
- expect(quote.amountInWei).toBe(100000000n)
73
- expect(quote.amountOutWei).toBe(500000000000000000n)
71
+ expect(quote.amountInRaw).toBe(100000000n)
72
+ expect(quote.amountOutRaw).toBe(500000000000000000n)
74
73
  expect(quote.price).toBeDefined()
75
74
  expect(quote.priceInverse).toBeDefined()
76
75
  expect(typeof quote.priceImpact).toBe('number')
@@ -98,7 +97,7 @@ describe('getQuote', () => {
98
97
  const quote = await getQuote({
99
98
  assetIn: USDC,
100
99
  assetOut: WETH,
101
- amountOutWei: 500000000000000000n, // 0.5 WETH
100
+ amountOutRaw: 500000000000000000n, // 0.5 WETH
102
101
  chainId: CHAIN_ID,
103
102
  publicClient,
104
103
  quoterAddress: QUOTER,
@@ -107,8 +106,8 @@ describe('getQuote', () => {
107
106
  tickSpacing: TICK_SPACING,
108
107
  })
109
108
 
110
- expect(quote.amountInWei).toBe(100000000n)
111
- expect(quote.amountOutWei).toBe(500000000000000000n)
109
+ expect(quote.amountInRaw).toBe(100000000n)
110
+ expect(quote.amountOutRaw).toBe(500000000000000000n)
112
111
 
113
112
  expect(publicClient.simulateContract).toHaveBeenCalledWith(
114
113
  expect.objectContaining({
@@ -122,7 +121,7 @@ describe('getQuote', () => {
122
121
  await getQuote({
123
122
  assetIn: WETH, // higher address
124
123
  assetOut: USDC, // lower address
125
- amountInWei: 1000000000000000000n,
124
+ amountInRaw: 1000000000000000000n,
126
125
  chainId: CHAIN_ID,
127
126
  publicClient,
128
127
  quoterAddress: QUOTER,
@@ -145,7 +144,7 @@ describe('getQuote', () => {
145
144
  await getQuote({
146
145
  assetIn: ETH,
147
146
  assetOut: USDC,
148
- amountInWei: 1000000000000000000n,
147
+ amountInRaw: 1000000000000000000n,
149
148
  chainId: CHAIN_ID,
150
149
  publicClient,
151
150
  quoterAddress: QUOTER,
@@ -165,7 +164,7 @@ describe('getQuote', () => {
165
164
  await getQuote({
166
165
  assetIn: USDC,
167
166
  assetOut: ETH,
168
- amountInWei: 100000000n,
167
+ amountInRaw: 100000000n,
169
168
  chainId: CHAIN_ID,
170
169
  publicClient,
171
170
  quoterAddress: QUOTER,
@@ -258,8 +257,8 @@ describe('encodeUniversalRouterSwap', () => {
258
257
  priceInverse: '200',
259
258
  amountIn: 100,
260
259
  amountOut: 0.5,
261
- amountInWei: 100000000n,
262
- amountOutWei: 500000000000000000n,
260
+ amountInRaw: 100000000n,
261
+ amountOutRaw: 500000000000000000n,
263
262
  priceImpact: 0.001,
264
263
  route: { path: [USDC, WETH], pools: [] },
265
264
  gasEstimate: 150000n,
@@ -267,7 +266,7 @@ describe('encodeUniversalRouterSwap', () => {
267
266
 
268
267
  it('encodes exact-in swap calldata', () => {
269
268
  const calldata = encodeUniversalRouterSwap({
270
- amountInWei: 100000000n,
269
+ amountInRaw: 100000000n,
271
270
  assetIn: USDC,
272
271
  assetOut: WETH,
273
272
  slippage: 0.005,
@@ -286,7 +285,7 @@ describe('encodeUniversalRouterSwap', () => {
286
285
 
287
286
  it('encodes exact-out swap calldata', () => {
288
287
  const calldata = encodeUniversalRouterSwap({
289
- amountOutWei: 500000000000000000n,
288
+ amountOutRaw: 500000000000000000n,
290
289
  assetIn: USDC,
291
290
  assetOut: WETH,
292
291
  slippage: 0.005,
@@ -305,7 +304,7 @@ describe('encodeUniversalRouterSwap', () => {
305
304
 
306
305
  it('produces different calldata for exact-in vs exact-out', () => {
307
306
  const exactIn = encodeUniversalRouterSwap({
308
- amountInWei: 100000000n,
307
+ amountInRaw: 100000000n,
309
308
  assetIn: USDC,
310
309
  assetOut: WETH,
311
310
  slippage: 0.005,
@@ -319,7 +318,7 @@ describe('encodeUniversalRouterSwap', () => {
319
318
  })
320
319
 
321
320
  const exactOut = encodeUniversalRouterSwap({
322
- amountOutWei: 500000000000000000n,
321
+ amountOutRaw: 500000000000000000n,
323
322
  assetIn: USDC,
324
323
  assetOut: WETH,
325
324
  slippage: 0.005,
@@ -337,7 +336,7 @@ describe('encodeUniversalRouterSwap', () => {
337
336
 
338
337
  it('applies slippage to minimum output for exact-in', () => {
339
338
  const noSlippage = encodeUniversalRouterSwap({
340
- amountInWei: 100000000n,
339
+ amountInRaw: 100000000n,
341
340
  assetIn: USDC,
342
341
  assetOut: WETH,
343
342
  slippage: 0,
@@ -351,7 +350,7 @@ describe('encodeUniversalRouterSwap', () => {
351
350
  })
352
351
 
353
352
  const withSlippage = encodeUniversalRouterSwap({
354
- amountInWei: 100000000n,
353
+ amountInRaw: 100000000n,
355
354
  assetIn: USDC,
356
355
  assetOut: WETH,
357
356
  slippage: 0.05, // 5%
@@ -28,7 +28,9 @@ export interface UniswapAddresses {
28
28
  * Uniswap V4 contract addresses per chain
29
29
  * @see https://docs.uniswap.org/contracts/v4/deployments
30
30
  */
31
- const UNISWAP_ADDRESSES: Partial<Record<SupportedChainId, UniswapAddresses>> = {
31
+ export const UNISWAP_ADDRESSES: Partial<
32
+ Record<SupportedChainId, UniswapAddresses>
33
+ > = {
32
34
  [mainnet.id]: {
33
35
  poolManager: '0x000000000004444c5dc75cB358380D2e3dE08A90',
34
36
  positionManager: '0xbd216513d74c8cf14cf4747e6aaa6420ff64ee9e',