@eth-optimism/actions-sdk 0.3.0 → 0.5.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 (479) 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 +17 -13
  8. package/dist/actions.d.ts.map +1 -1
  9. package/dist/actions.js +46 -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/ens/EnsNamespace.d.ts +57 -0
  24. package/dist/ens/EnsNamespace.d.ts.map +1 -0
  25. package/dist/ens/EnsNamespace.js +158 -0
  26. package/dist/ens/EnsNamespace.js.map +1 -0
  27. package/dist/ens/EnsNamespace.spec.d.ts +2 -0
  28. package/dist/ens/EnsNamespace.spec.d.ts.map +1 -0
  29. package/dist/ens/EnsNamespace.spec.js +144 -0
  30. package/dist/ens/EnsNamespace.spec.js.map +1 -0
  31. package/dist/ens/errors.d.ts +24 -0
  32. package/dist/ens/errors.d.ts.map +1 -0
  33. package/dist/ens/errors.js +35 -0
  34. package/dist/ens/errors.js.map +1 -0
  35. package/dist/ens/index.d.ts +4 -0
  36. package/dist/ens/index.d.ts.map +1 -0
  37. package/dist/ens/index.js +4 -0
  38. package/dist/ens/index.js.map +1 -0
  39. package/dist/ens/types.d.ts +63 -0
  40. package/dist/ens/types.d.ts.map +1 -0
  41. package/dist/ens/types.js +14 -0
  42. package/dist/ens/types.js.map +1 -0
  43. package/dist/index.d.ts +6 -5
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +5 -4
  46. package/dist/index.js.map +1 -1
  47. package/dist/lend/__mocks__/MockLendProvider.d.ts +1 -1
  48. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -1
  49. package/dist/lend/__mocks__/MockLendProvider.js +7 -2
  50. package/dist/lend/__mocks__/MockLendProvider.js.map +1 -1
  51. package/dist/lend/core/LendProvider.d.ts +12 -8
  52. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  53. package/dist/lend/core/LendProvider.js +15 -21
  54. package/dist/lend/core/LendProvider.js.map +1 -1
  55. package/dist/lend/namespaces/BaseLendNamespace.d.ts +2 -6
  56. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -1
  57. package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -1
  58. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +7 -4
  59. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -1
  60. package/dist/lend/providers/aave/AaveLendProvider.d.ts +1 -6
  61. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
  62. package/dist/lend/providers/aave/AaveLendProvider.js +3 -6
  63. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
  64. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +14 -6
  65. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -1
  66. package/dist/lend/providers/aave/addresses.d.ts +13 -39
  67. package/dist/lend/providers/aave/addresses.d.ts.map +1 -1
  68. package/dist/lend/providers/aave/addresses.js +65 -60
  69. package/dist/lend/providers/aave/addresses.js.map +1 -1
  70. package/dist/lend/providers/aave/sdk.d.ts +2 -2
  71. package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
  72. package/dist/lend/providers/aave/sdk.js +6 -28
  73. package/dist/lend/providers/aave/sdk.js.map +1 -1
  74. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +1 -6
  75. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  76. package/dist/lend/providers/morpho/MorphoLendProvider.js +4 -13
  77. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  78. package/dist/lend/providers/morpho/__tests__/api.test.js +52 -43
  79. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
  80. package/dist/lend/providers/morpho/__tests__/sdk.test.js +41 -42
  81. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  82. package/dist/lend/providers/morpho/api.d.ts +3 -7
  83. package/dist/lend/providers/morpho/api.d.ts.map +1 -1
  84. package/dist/lend/providers/morpho/api.js +2 -2
  85. package/dist/lend/providers/morpho/api.js.map +1 -1
  86. package/dist/lend/providers/morpho/contracts.d.ts +11 -10
  87. package/dist/lend/providers/morpho/contracts.d.ts.map +1 -1
  88. package/dist/lend/providers/morpho/contracts.js +43 -10
  89. package/dist/lend/providers/morpho/contracts.js.map +1 -1
  90. package/dist/lend/providers/morpho/sdk.d.ts +7 -2
  91. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  92. package/dist/lend/providers/morpho/sdk.js +67 -63
  93. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  94. package/dist/nodeActionsFactory.d.ts +1 -1
  95. package/dist/reactActionsFactory.d.ts +1 -1
  96. package/dist/services/ChainManager.d.ts +15 -8
  97. package/dist/services/ChainManager.d.ts.map +1 -1
  98. package/dist/services/ChainManager.js +9 -0
  99. package/dist/services/ChainManager.js.map +1 -1
  100. package/dist/services/__mocks__/MockChainManager.d.ts +5 -4
  101. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
  102. package/dist/services/__mocks__/MockChainManager.js +5 -0
  103. package/dist/services/__mocks__/MockChainManager.js.map +1 -1
  104. package/dist/services/tokenBalance.d.ts +1 -1
  105. package/dist/services/tokenBalance.d.ts.map +1 -1
  106. package/dist/services/tokenBalance.js +31 -30
  107. package/dist/services/tokenBalance.js.map +1 -1
  108. package/dist/services/tokenBalance.spec.js +20 -24
  109. package/dist/services/tokenBalance.spec.js.map +1 -1
  110. package/dist/swap/__mocks__/MockSwapProvider.d.ts +20 -8
  111. package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -1
  112. package/dist/swap/__mocks__/MockSwapProvider.js +52 -29
  113. package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -1
  114. package/dist/swap/core/SwapProvider.d.ts +105 -16
  115. package/dist/swap/core/SwapProvider.d.ts.map +1 -1
  116. package/dist/swap/core/SwapProvider.js +215 -37
  117. package/dist/swap/core/SwapProvider.js.map +1 -1
  118. package/dist/swap/core/__tests__/SwapProvider.test.js +115 -9
  119. package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -1
  120. package/dist/swap/core/markets.d.ts +47 -0
  121. package/dist/swap/core/markets.d.ts.map +1 -0
  122. package/dist/swap/core/markets.js +65 -0
  123. package/dist/swap/core/markets.js.map +1 -0
  124. package/dist/swap/index.d.ts +2 -0
  125. package/dist/swap/index.d.ts.map +1 -1
  126. package/dist/swap/index.js +1 -0
  127. package/dist/swap/index.js.map +1 -1
  128. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +2 -2
  129. package/dist/swap/namespaces/ActionsSwapNamespace.js +2 -2
  130. package/dist/swap/namespaces/BaseSwapNamespace.d.ts +50 -8
  131. package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -1
  132. package/dist/swap/namespaces/BaseSwapNamespace.js +144 -16
  133. package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -1
  134. package/dist/swap/namespaces/WalletSwapNamespace.d.ts +20 -7
  135. package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -1
  136. package/dist/swap/namespaces/WalletSwapNamespace.js +44 -15
  137. package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -1
  138. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +150 -11
  139. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -1
  140. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +85 -8
  141. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -1
  142. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +10 -42
  143. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -1
  144. package/dist/swap/providers/uniswap/UniswapSwapProvider.js +81 -139
  145. package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -1
  146. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +10 -9
  147. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -1
  148. package/dist/swap/providers/uniswap/__tests__/sdk.test.js +17 -17
  149. package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -1
  150. package/dist/swap/providers/uniswap/addresses.d.ts +5 -0
  151. package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -1
  152. package/dist/swap/providers/uniswap/addresses.js +1 -1
  153. package/dist/swap/providers/uniswap/addresses.js.map +1 -1
  154. package/dist/swap/providers/uniswap/encoding.d.ts +4 -4
  155. package/dist/swap/providers/uniswap/encoding.js +17 -17
  156. package/dist/swap/providers/uniswap/markets.d.ts +19 -0
  157. package/dist/swap/providers/uniswap/markets.d.ts.map +1 -0
  158. package/dist/swap/providers/uniswap/markets.js +48 -0
  159. package/dist/swap/providers/uniswap/markets.js.map +1 -0
  160. package/dist/swap/providers/uniswap/types.d.ts +4 -3
  161. package/dist/swap/providers/uniswap/types.d.ts.map +1 -1
  162. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +50 -0
  163. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
  164. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js +140 -0
  165. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
  166. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +2 -0
  167. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
  168. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +255 -0
  169. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
  170. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +2 -0
  171. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
  172. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +166 -0
  173. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
  174. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +2 -0
  175. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
  176. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +420 -0
  177. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
  178. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts +2 -0
  179. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
  180. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js +51 -0
  181. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
  182. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts +14 -0
  183. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
  184. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js +13 -0
  185. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
  186. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts +2 -0
  187. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
  188. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js +173 -0
  189. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
  190. package/dist/swap/providers/velodrome/abis.d.ts +396 -0
  191. package/dist/swap/providers/velodrome/abis.d.ts.map +1 -0
  192. package/dist/swap/providers/velodrome/abis.js +257 -0
  193. package/dist/swap/providers/velodrome/abis.js.map +1 -0
  194. package/dist/swap/providers/velodrome/addresses.d.ts +39 -0
  195. package/dist/swap/providers/velodrome/addresses.d.ts.map +1 -0
  196. package/dist/swap/providers/velodrome/addresses.js +57 -0
  197. package/dist/swap/providers/velodrome/addresses.js.map +1 -0
  198. package/dist/swap/providers/velodrome/config.d.ts +22 -0
  199. package/dist/swap/providers/velodrome/config.d.ts.map +1 -0
  200. package/dist/swap/providers/velodrome/config.js +29 -0
  201. package/dist/swap/providers/velodrome/config.js.map +1 -0
  202. package/dist/swap/providers/velodrome/encoding/helpers.d.ts +37 -0
  203. package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
  204. package/dist/swap/providers/velodrome/encoding/helpers.js +60 -0
  205. package/dist/swap/providers/velodrome/encoding/helpers.js.map +1 -0
  206. package/dist/swap/providers/velodrome/encoding/index.d.ts +8 -0
  207. package/dist/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
  208. package/dist/swap/providers/velodrome/encoding/index.js +5 -0
  209. package/dist/swap/providers/velodrome/encoding/index.js.map +1 -0
  210. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts +39 -0
  211. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
  212. package/dist/swap/providers/velodrome/encoding/poolRouter.js +83 -0
  213. package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
  214. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +15 -0
  215. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +1 -0
  216. package/dist/swap/providers/velodrome/encoding/routers/approval.js +33 -0
  217. package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +1 -0
  218. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts +40 -0
  219. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
  220. package/dist/swap/providers/velodrome/encoding/routers/cl.js +80 -0
  221. package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
  222. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts +42 -0
  223. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
  224. package/dist/swap/providers/velodrome/encoding/routers/v2.js +166 -0
  225. package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
  226. package/dist/swap/providers/velodrome/markets.d.ts +21 -0
  227. package/dist/swap/providers/velodrome/markets.d.ts.map +1 -0
  228. package/dist/swap/providers/velodrome/markets.js +69 -0
  229. package/dist/swap/providers/velodrome/markets.js.map +1 -0
  230. package/dist/swap/providers/velodrome/types.d.ts +31 -0
  231. package/dist/swap/providers/velodrome/types.d.ts.map +1 -0
  232. package/dist/swap/providers/velodrome/types.js +2 -0
  233. package/dist/swap/providers/velodrome/types.js.map +1 -0
  234. package/dist/types/actions.d.ts +44 -9
  235. package/dist/types/actions.d.ts.map +1 -1
  236. package/dist/types/asset.d.ts +7 -9
  237. package/dist/types/asset.d.ts.map +1 -1
  238. package/dist/types/chain.d.ts +2 -2
  239. package/dist/types/chain.d.ts.map +1 -1
  240. package/dist/types/lend/base.d.ts +6 -6
  241. package/dist/types/lend/base.d.ts.map +1 -1
  242. package/dist/types/lend/base.js.map +1 -1
  243. package/dist/types/lend/contracts.d.ts +2 -1
  244. package/dist/types/lend/contracts.d.ts.map +1 -1
  245. package/dist/types/providers.d.ts +21 -0
  246. package/dist/types/providers.d.ts.map +1 -0
  247. package/dist/types/providers.js +2 -0
  248. package/dist/types/providers.js.map +1 -0
  249. package/dist/types/swap/base.d.ts +136 -35
  250. package/dist/types/swap/base.d.ts.map +1 -1
  251. package/dist/types/swap/base.js.map +1 -1
  252. package/dist/utils/approve.d.ts +82 -0
  253. package/dist/utils/approve.d.ts.map +1 -0
  254. package/dist/utils/{permit2.js → approve.js} +48 -14
  255. package/dist/utils/approve.js.map +1 -0
  256. package/dist/utils/approve.test.d.ts +2 -0
  257. package/dist/utils/approve.test.d.ts.map +1 -0
  258. package/dist/utils/{permit2.test.js → approve.test.js} +95 -2
  259. package/dist/utils/approve.test.js.map +1 -0
  260. package/dist/utils/assets.d.ts +6 -0
  261. package/dist/utils/assets.d.ts.map +1 -1
  262. package/dist/utils/assets.js +10 -0
  263. package/dist/utils/assets.js.map +1 -1
  264. package/dist/utils/ens.d.ts +25 -0
  265. package/dist/utils/ens.d.ts.map +1 -0
  266. package/dist/utils/ens.js +53 -0
  267. package/dist/utils/ens.js.map +1 -0
  268. package/dist/utils/ens.test.d.ts +2 -0
  269. package/dist/utils/ens.test.d.ts.map +1 -0
  270. package/dist/utils/ens.test.js +75 -0
  271. package/dist/utils/ens.test.js.map +1 -0
  272. package/dist/utils/validateAddresses.d.ts +32 -0
  273. package/dist/utils/validateAddresses.d.ts.map +1 -0
  274. package/dist/utils/validateAddresses.js +103 -0
  275. package/dist/utils/validateAddresses.js.map +1 -0
  276. package/dist/utils/validateAddresses.test.d.ts +2 -0
  277. package/dist/utils/validateAddresses.test.d.ts.map +1 -0
  278. package/dist/utils/validateAddresses.test.js +314 -0
  279. package/dist/utils/validateAddresses.test.js.map +1 -0
  280. package/dist/utils/validation.d.ts +5 -0
  281. package/dist/utils/validation.d.ts.map +1 -1
  282. package/dist/utils/validation.js +10 -0
  283. package/dist/utils/validation.js.map +1 -1
  284. package/dist/wallet/core/namespace/WalletNamespace.d.ts +21 -9
  285. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  286. package/dist/wallet/core/namespace/WalletNamespace.js +44 -15
  287. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  288. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
  289. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  290. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +4 -16
  291. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  292. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  293. package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -11
  294. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  295. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +2 -9
  296. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  297. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  298. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +6 -17
  299. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  300. package/dist/wallet/core/wallets/abstract/Wallet.js +7 -6
  301. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  302. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +10 -1
  303. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
  304. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +2 -2
  305. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
  306. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +12 -4
  307. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  308. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +3 -10
  309. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  310. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  311. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  312. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +3 -10
  313. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  314. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  315. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +2 -4
  316. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  317. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +6 -8
  318. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  319. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +4 -4
  320. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  321. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +2 -9
  322. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  323. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  324. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +3 -10
  325. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  326. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  327. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -10
  328. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  329. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  330. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +3 -9
  331. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  332. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -2
  333. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  334. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +3 -9
  335. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  336. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -2
  337. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  338. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +3 -9
  339. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  340. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -2
  341. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  342. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +2 -4
  343. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
  344. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +11 -13
  345. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  346. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +6 -6
  347. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  348. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +5 -10
  349. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  350. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +3 -3
  351. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  352. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +2 -6
  353. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  354. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  355. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +5 -10
  356. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  357. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  358. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  359. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -10
  360. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  361. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  362. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  363. package/package.json +3 -2
  364. package/src/__mocks__/MockAssets.ts +54 -6
  365. package/src/__tests__/actions.test.ts +1 -1
  366. package/src/actions.ts +73 -61
  367. package/src/constants/assets.ts +781 -10
  368. package/src/constants/providers.ts +5 -0
  369. package/src/constants/supportedChains.ts +22 -2
  370. package/src/ens/EnsNamespace.spec.ts +171 -0
  371. package/src/ens/EnsNamespace.ts +210 -0
  372. package/src/ens/errors.ts +45 -0
  373. package/src/ens/index.ts +12 -0
  374. package/src/ens/types.ts +76 -0
  375. package/src/index.ts +59 -8
  376. package/src/lend/__mocks__/MockLendProvider.ts +8 -3
  377. package/src/lend/core/LendProvider.ts +27 -28
  378. package/src/lend/namespaces/BaseLendNamespace.ts +2 -6
  379. package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +12 -5
  380. package/src/lend/providers/aave/AaveLendProvider.ts +3 -7
  381. package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +16 -7
  382. package/src/lend/providers/aave/addresses.ts +82 -64
  383. package/src/lend/providers/aave/sdk.ts +11 -36
  384. package/src/lend/providers/morpho/MorphoLendProvider.ts +4 -16
  385. package/src/lend/providers/morpho/__tests__/api.test.ts +65 -44
  386. package/src/lend/providers/morpho/__tests__/sdk.test.ts +43 -43
  387. package/src/lend/providers/morpho/api.ts +7 -8
  388. package/src/lend/providers/morpho/contracts.ts +62 -13
  389. package/src/lend/providers/morpho/sdk.ts +85 -63
  390. package/src/services/ChainManager.ts +22 -21
  391. package/src/services/__mocks__/MockChainManager.ts +12 -7
  392. package/src/services/tokenBalance.spec.ts +20 -24
  393. package/src/services/tokenBalance.ts +39 -33
  394. package/src/swap/__mocks__/MockSwapProvider.ts +77 -42
  395. package/src/swap/core/SwapProvider.ts +309 -50
  396. package/src/swap/core/__tests__/SwapProvider.test.ts +151 -9
  397. package/src/swap/core/markets.ts +104 -0
  398. package/src/swap/index.ts +5 -0
  399. package/src/swap/namespaces/ActionsSwapNamespace.ts +2 -2
  400. package/src/swap/namespaces/BaseSwapNamespace.ts +215 -18
  401. package/src/swap/namespaces/WalletSwapNamespace.ts +61 -14
  402. package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +245 -14
  403. package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +103 -8
  404. package/src/swap/providers/uniswap/UniswapSwapProvider.ts +110 -195
  405. package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +12 -12
  406. package/src/swap/providers/uniswap/__tests__/sdk.test.ts +19 -20
  407. package/src/swap/providers/uniswap/addresses.ts +3 -1
  408. package/src/swap/providers/uniswap/encoding.ts +22 -22
  409. package/src/swap/providers/uniswap/markets.ts +84 -0
  410. package/src/swap/providers/uniswap/types.ts +4 -3
  411. package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +226 -0
  412. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +341 -0
  413. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +202 -0
  414. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +507 -0
  415. package/src/swap/providers/velodrome/__tests__/encoding.cl.test.ts +69 -0
  416. package/src/swap/providers/velodrome/__tests__/encoding.helpers.ts +20 -0
  417. package/src/swap/providers/velodrome/__tests__/encoding.v2.test.ts +235 -0
  418. package/src/swap/providers/velodrome/abis.ts +264 -0
  419. package/src/swap/providers/velodrome/addresses.ts +107 -0
  420. package/src/swap/providers/velodrome/config.ts +46 -0
  421. package/src/swap/providers/velodrome/encoding/helpers.ts +82 -0
  422. package/src/swap/providers/velodrome/encoding/index.ts +7 -0
  423. package/src/swap/providers/velodrome/encoding/poolRouter.ts +124 -0
  424. package/src/swap/providers/velodrome/encoding/routers/approval.ts +45 -0
  425. package/src/swap/providers/velodrome/encoding/routers/cl.ts +156 -0
  426. package/src/swap/providers/velodrome/encoding/routers/v2.ts +267 -0
  427. package/src/swap/providers/velodrome/markets.ts +100 -0
  428. package/src/swap/providers/velodrome/types.ts +30 -0
  429. package/src/types/actions.ts +49 -9
  430. package/src/types/asset.ts +12 -9
  431. package/src/types/chain.ts +2 -2
  432. package/src/types/lend/base.ts +6 -6
  433. package/src/types/lend/contracts.ts +5 -1
  434. package/src/types/providers.ts +22 -0
  435. package/src/types/swap/base.ts +150 -36
  436. package/src/utils/{permit2.test.ts → approve.test.ts} +117 -1
  437. package/src/utils/{permit2.ts → approve.ts} +67 -14
  438. package/src/utils/assets.ts +14 -0
  439. package/src/utils/ens.test.ts +104 -0
  440. package/src/utils/ens.ts +85 -0
  441. package/src/utils/validateAddresses.test.ts +439 -0
  442. package/src/utils/validateAddresses.ts +153 -0
  443. package/src/utils/validation.ts +11 -0
  444. package/src/wallet/core/namespace/WalletNamespace.ts +70 -16
  445. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +8 -4
  446. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +5 -17
  447. package/src/wallet/core/providers/hosted/types/index.ts +9 -11
  448. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +5 -17
  449. package/src/wallet/core/wallets/abstract/Wallet.ts +18 -22
  450. package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +13 -1
  451. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +21 -5
  452. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +5 -17
  453. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
  454. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +3 -10
  455. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +8 -8
  456. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
  457. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +3 -10
  458. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +5 -17
  459. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +5 -17
  460. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +7 -11
  461. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +7 -11
  462. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +7 -11
  463. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +23 -10
  464. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
  465. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +10 -18
  466. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
  467. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +10 -18
  468. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +10 -18
  469. package/dist/supported/tokens.d.ts +0 -25
  470. package/dist/supported/tokens.d.ts.map +0 -1
  471. package/dist/supported/tokens.js +0 -44
  472. package/dist/supported/tokens.js.map +0 -1
  473. package/dist/utils/permit2.d.ts +0 -46
  474. package/dist/utils/permit2.d.ts.map +0 -1
  475. package/dist/utils/permit2.js.map +0 -1
  476. package/dist/utils/permit2.test.d.ts +0 -2
  477. package/dist/utils/permit2.test.d.ts.map +0 -1
  478. package/dist/utils/permit2.test.js.map +0 -1
  479. package/src/supported/tokens.ts +0 -66
@@ -0,0 +1,100 @@
1
+ import type { Address } from 'viem'
2
+ import { concat, keccak256 } from 'viem'
3
+
4
+ import { VELODROME } from '@/constants/providers.js'
5
+ import type { SupportedChainId } from '@/constants/supportedChains.js'
6
+ import { assetPairs } from '@/swap/core/markets.js'
7
+ import type { Asset } from '@/types/asset.js'
8
+ import type { SwapMarket } from '@/types/swap/index.js'
9
+
10
+ import type { ResolvedPoolConfig, VelodromeMarketConfig } from './types.js'
11
+
12
+ /**
13
+ * Resolve a VelodromeMarketConfig to a discriminated ResolvedPoolConfig.
14
+ * Exactly one of stable or tickSpacing must be set.
15
+ * @param config - Raw market config
16
+ * @returns Resolved pool config with discriminated type
17
+ * @throws If both or neither of stable/tickSpacing are set
18
+ */
19
+ export function resolvePoolConfig(
20
+ config: VelodromeMarketConfig,
21
+ ): ResolvedPoolConfig {
22
+ const hasStable = config.stable !== undefined
23
+ const hasTick = config.tickSpacing !== undefined
24
+ if (hasStable && hasTick) {
25
+ throw new Error(
26
+ 'stable and tickSpacing are mutually exclusive — set one, not both',
27
+ )
28
+ }
29
+ if (!hasStable && !hasTick) {
30
+ throw new Error(
31
+ 'Either stable (v2 AMM) or tickSpacing (CL) must be configured',
32
+ )
33
+ }
34
+ if (hasTick) {
35
+ return { type: 'cl', tickSpacing: config.tickSpacing! }
36
+ }
37
+ return { type: 'v2', stable: config.stable! }
38
+ }
39
+
40
+ /**
41
+ * Expand a single VelodromeMarketConfig into SwapMarket objects for a given chain.
42
+ * Used as the `toMarkets` callback for shared findMarket/expandMarkets.
43
+ * @param config - Market config with pool parameters
44
+ * @param chainId - Target chain
45
+ * @param asset - If provided, only return markets containing this asset
46
+ */
47
+ export function configToMarkets(
48
+ config: VelodromeMarketConfig,
49
+ chainId: SupportedChainId,
50
+ asset?: Asset,
51
+ ): SwapMarket[] {
52
+ const poolConfig = resolvePoolConfig(config)
53
+ return assetPairs(config.assets, asset)
54
+ .map(([a, b]) => pairToMarket(a, b, chainId, poolConfig))
55
+ .filter((m): m is SwapMarket => m !== null)
56
+ }
57
+
58
+ /**
59
+ * Build a SwapMarket from two assets and Velodrome pool parameters.
60
+ * For v2: poolId = keccak256(sortedA, sortedB, stable)
61
+ * For CL: poolId = keccak256(sortedA, sortedB, tickSpacing as int24)
62
+ * @returns SwapMarket, or null if either asset lacks an address on this chain
63
+ */
64
+ function pairToMarket(
65
+ assetA: Asset,
66
+ assetB: Asset,
67
+ chainId: SupportedChainId,
68
+ poolConfig: ResolvedPoolConfig,
69
+ ): SwapMarket | null {
70
+ const addrA = assetA.address[chainId]
71
+ const addrB = assetB.address[chainId]
72
+ if (!addrA || addrA === 'native' || !addrB || addrB === 'native') return null
73
+
74
+ const [sortedA, sortedB] =
75
+ addrA.toLowerCase() < addrB.toLowerCase() ? [addrA, addrB] : [addrB, addrA]
76
+
77
+ let poolId: string
78
+ if (poolConfig.type === 'cl') {
79
+ const tickBytes =
80
+ `0x${(poolConfig.tickSpacing & 0xffffff).toString(16).padStart(6, '0')}` as `0x${string}`
81
+ poolId = keccak256(
82
+ concat([sortedA as Address, sortedB as Address, tickBytes]),
83
+ )
84
+ } else {
85
+ poolId = keccak256(
86
+ concat([
87
+ sortedA as Address,
88
+ sortedB as Address,
89
+ poolConfig.stable ? '0x01' : '0x00',
90
+ ]),
91
+ )
92
+ }
93
+
94
+ return {
95
+ marketId: { poolId, chainId },
96
+ assets: [assetA, assetB],
97
+ fee: 0,
98
+ provider: VELODROME,
99
+ }
100
+ }
@@ -0,0 +1,30 @@
1
+ import type {
2
+ SwapMarketConfig,
3
+ SwapProviderConfig,
4
+ } from '@/types/swap/index.js'
5
+
6
+ /**
7
+ * Velodrome/Aerodrome market config.
8
+ * Exactly one of `stable` (v2 AMM) or `tickSpacing` (CL/Slipstream) must be set.
9
+ */
10
+ export interface VelodromeMarketConfig extends SwapMarketConfig {
11
+ /** true = stable pool (correlated assets), false = volatile pool. For v2 AMM pools. */
12
+ stable?: boolean
13
+ /** Tick spacing for CL/Slipstream pools. Mutually exclusive with stable. */
14
+ tickSpacing?: number
15
+ }
16
+
17
+ /** Resolved v2 AMM pool config */
18
+ export type ResolvedV2Config = { type: 'v2'; stable: boolean }
19
+ /** Resolved CL/Slipstream pool config */
20
+ export type ResolvedCLConfig = { type: 'cl'; tickSpacing: number }
21
+ /** Discriminated union of resolved pool configs */
22
+ export type ResolvedPoolConfig = ResolvedV2Config | ResolvedCLConfig
23
+
24
+ /**
25
+ * Velodrome/Aerodrome swap provider configuration
26
+ */
27
+ export interface VelodromeSwapProviderConfig extends SwapProviderConfig {
28
+ marketAllowlist?: VelodromeMarketConfig[]
29
+ marketBlocklist?: VelodromeMarketConfig[]
30
+ }
@@ -1,12 +1,16 @@
1
1
  import type { UniswapSwapProviderConfig } from '@/swap/providers/uniswap/types.js'
2
+ import type { VelodromeSwapProviderConfig } from '@/swap/providers/velodrome/types.js'
2
3
  import type { Asset } from '@/types/asset.js'
3
4
  import type { ChainConfig } from '@/types/chain.js'
4
5
  import type { LendProviderConfig } from '@/types/lend/index.js'
6
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
5
7
  import type { SwapProviderConfig } from '@/types/swap/index.js'
6
8
  import type { ProviderSpec } from '@/wallet/core/providers/hosted/types/index.js'
7
9
 
8
10
  // Re-export provider configs for convenience
9
11
  export type { LendProviderConfig, SwapProviderConfig }
12
+ // Re-export centralized provider maps
13
+ export type { LendProviders, SwapProviders } from '@/types/providers.js'
10
14
 
11
15
  /** Require at least one property to be defined */
12
16
  type RequireAtLeastOne<T> = {
@@ -17,19 +21,54 @@ type RequireAtLeastOne<T> = {
17
21
  * Lending configuration — at least one provider must be configured
18
22
  */
19
23
  export type LendConfig = RequireAtLeastOne<{
20
- /** Morpho lending provider configuration */
21
- morpho?: LendProviderConfig
22
- /** Aave lending provider configuration */
23
- aave?: LendProviderConfig
24
+ [K in keyof LendProviders]: LendProviderConfig
24
25
  }>
25
26
 
27
+ /** Names of available swap providers — derived from SwapProviders registry */
28
+ export type SwapProviderName = keyof SwapProviders
29
+
30
+ /** Names of available lend providers — derived from LendProviders registry */
31
+ export type LendProviderName = keyof LendProviders
32
+
33
+ /** Routing strategy for selecting a provider when multiple are configured. */
34
+ export type SwapRoutingStrategy = 'price'
35
+
26
36
  /**
27
- * Swap configuration at least one provider must be configured
37
+ * Shared swap settings applied across all providers.
38
+ * Provider-level values override these when set.
39
+ */
40
+ export interface SwapSettings {
41
+ /** Default slippage tolerance (e.g., 0.005 for 0.5%). Defaults to 0.005. */
42
+ defaultSlippage?: number
43
+ /** Maximum allowed slippage (e.g., 0.5 for 50%). Defaults to 0.5. */
44
+ maxSlippage?: number
45
+ /** Quote expiration in seconds from now. Defaults to 60. */
46
+ quoteExpirationSeconds?: number
47
+ /** Permit2 sub-approval expiration in seconds from now. Defaults to 2592000 (30 days). */
48
+ permit2ExpirationSeconds?: number
49
+ /**
50
+ * Routing strategy for multi-provider selection.
51
+ * 'price' fetches quotes from all eligible providers and returns the best price.
52
+ * Omit to fall back to market-matching heuristics.
53
+ */
54
+ routing?: SwapRoutingStrategy
55
+ /** Provider to prefer when routing produces a tie, or to always use when no routing strategy is set. */
56
+ defaultProvider?: SwapProviderName
57
+ }
58
+
59
+ /**
60
+ * Swap configuration — at least one provider must be configured.
61
+ * Shared settings go in `config`; per-provider settings go under the provider key.
28
62
  */
29
63
  export type SwapConfig = RequireAtLeastOne<{
30
64
  /** Uniswap swap provider configuration */
31
65
  uniswap?: UniswapSwapProviderConfig
32
- }>
66
+ /** Velodrome/Aerodrome swap provider configuration */
67
+ velodrome?: VelodromeSwapProviderConfig
68
+ }> & {
69
+ /** Shared settings applied across all providers */
70
+ settings?: SwapSettings
71
+ }
33
72
 
34
73
  /**
35
74
  * Network configuration for lending providers
@@ -42,12 +81,13 @@ export interface LendNetworkConfig {
42
81
 
43
82
  /**
44
83
  * Assets configuration
45
- * @description Configuration for supported assets
84
+ * @description Configuration for supported assets. Import token constants from the SDK
85
+ * or define your own Asset objects.
46
86
  */
47
87
  export interface AssetsConfig {
48
- /** Allowlist of assets to support (optional - defaults to all SUPPORTED_TOKENS) */
88
+ /** Allowlist of assets to support. No default developers must explicitly configure. */
49
89
  allow?: Asset[]
50
- /** Blocklist of assets to exclude (optional) */
90
+ /** Blocklist of assets to exclude from the allow list. Only effective when allow is also set. For future use with runtime asset fetching. */
51
91
  block?: Asset[]
52
92
  }
53
93
 
@@ -22,13 +22,16 @@ export interface Asset {
22
22
  * Detailed token balance information
23
23
  */
24
24
  export interface TokenBalance {
25
- symbol: string
26
- totalBalance: bigint
27
- totalFormattedBalance: string
28
- chainBalances: Array<{
29
- chainId: SupportedChainId
30
- balance: bigint
31
- tokenAddress: Address | 'native'
32
- formattedBalance: string
33
- }>
25
+ asset: Asset
26
+ totalBalance: number
27
+ totalBalanceRaw: bigint
28
+ chains: Partial<
29
+ Record<
30
+ SupportedChainId,
31
+ {
32
+ balance: number
33
+ balanceRaw: bigint
34
+ }
35
+ >
36
+ >
34
37
  }
@@ -1,4 +1,4 @@
1
- import type { SUPPORTED_CHAIN_IDS } from '@/constants/supportedChains.js'
1
+ import type { SupportedChainId } from '@/constants/supportedChains.js'
2
2
 
3
3
  /**
4
4
  * Chain configuration
@@ -6,7 +6,7 @@ import type { SUPPORTED_CHAIN_IDS } from '@/constants/supportedChains.js'
6
6
  */
7
7
  export interface ChainConfig {
8
8
  /** Chain ID */
9
- chainId: (typeof SUPPORTED_CHAIN_IDS)[number]
9
+ chainId: SupportedChainId
10
10
  /** RPC URL for the chain */
11
11
  rpcUrls?: string[]
12
12
  /** Bundler configuration */
@@ -1,6 +1,7 @@
1
1
  import type { Address } from 'viem'
2
2
 
3
3
  import type { SupportedChainId } from '@/constants/supportedChains.js'
4
+ import type { LendProviderName } from '@/types/actions.js'
4
5
  import type { Asset } from '@/types/asset.js'
5
6
  // Import and re-export shared transaction type for backwards compatibility
6
7
  import type { TransactionData } from '@/types/transaction.js'
@@ -33,7 +34,7 @@ export type LendMarketConfigMetadata = {
33
34
  /** Asset information for this market */
34
35
  asset: Asset
35
36
  /** Lending provider type */
36
- lendProvider: 'morpho' | 'aave'
37
+ lendProvider: LendProviderName
37
38
  }
38
39
 
39
40
  /**
@@ -135,7 +136,8 @@ export interface LendMarketInfo extends LendMarketBase {
135
136
 
136
137
  /**
137
138
  * APY breakdown for detailed display
138
- * @description Breakdown of APY components following Morpho's official methodology
139
+ * @description Breakdown of APY components following Morpho's official methodology.
140
+ * Individual token reward APRs are keyed by lowercase token address.
139
141
  */
140
142
  export interface ApyBreakdown {
141
143
  /** Total net APY after all components and fees */
@@ -144,12 +146,10 @@ export interface ApyBreakdown {
144
146
  native: number
145
147
  /** Total rewards APR from all sources */
146
148
  totalRewards: number
147
- /** Individual token rewards APRs (dynamically populated) */
148
- usdc?: number
149
- morpho?: number
150
- other?: number
151
149
  /** Performance/management fee rate */
152
150
  performanceFee: number
151
+ /** Individual token reward APRs keyed by address, plus 'other' for unrecognized */
152
+ [key: string]: number | undefined
153
153
  }
154
154
 
155
155
  /**
@@ -1,5 +1,7 @@
1
1
  import type { Address } from 'viem'
2
2
 
3
+ import type { SupportedChainId } from '@/constants/supportedChains.js'
4
+
3
5
  /**
4
6
  * Morpho contract addresses needed per chain
5
7
  */
@@ -15,4 +17,6 @@ export interface MorphoContracts {
15
17
  /**
16
18
  * Registry mapping chainId to Morpho contracts
17
19
  */
18
- export type MorphoContractsRegistry = Record<number, MorphoContracts>
20
+ export type MorphoContractsRegistry = Partial<
21
+ Record<SupportedChainId, MorphoContracts>
22
+ >
@@ -0,0 +1,22 @@
1
+ import type { LendProvider } from '@/lend/core/LendProvider.js'
2
+ import type { SwapProvider } from '@/swap/core/SwapProvider.js'
3
+ import type { LendProviderConfig } from '@/types/lend/index.js'
4
+ import type { SwapProviderConfig } from '@/types/swap/index.js'
5
+
6
+ /**
7
+ * Map of available lend providers keyed by provider name.
8
+ * Add new lend providers here — this is the single source of truth.
9
+ */
10
+ export type LendProviders = {
11
+ morpho?: LendProvider<LendProviderConfig>
12
+ aave?: LendProvider<LendProviderConfig>
13
+ }
14
+
15
+ /**
16
+ * Map of available swap providers keyed by provider name.
17
+ * Add new swap providers here — this is the single source of truth.
18
+ */
19
+ export type SwapProviders = {
20
+ uniswap?: SwapProvider<SwapProviderConfig>
21
+ velodrome?: SwapProvider<SwapProviderConfig>
22
+ }
@@ -1,7 +1,8 @@
1
- import type { Address } from 'viem'
1
+ import type { Address, Hex } from 'viem'
2
2
 
3
3
  import type { SupportedChainId } from '@/constants/supportedChains.js'
4
- import type { SwapProvider } from '@/swap/core/SwapProvider.js'
4
+ import type { EnsName } from '@/ens/types.js'
5
+ import type { SwapProviderName } from '@/types/actions.js'
5
6
  import type { Asset } from '@/types/asset.js'
6
7
  import type { TransactionData } from '@/types/transaction.js'
7
8
  import type {
@@ -12,23 +13,19 @@ import type {
12
13
  export { SwapProvider } from '@/swap/core/SwapProvider.js'
13
14
  export { ActionsSwapNamespace } from '@/swap/namespaces/ActionsSwapNamespace.js'
14
15
  export { WalletSwapNamespace } from '@/swap/namespaces/WalletSwapNamespace.js'
16
+ export type { SwapProviders } from '@/types/providers.js'
15
17
 
16
18
  /**
17
- * Map of available swap providers keyed by provider name
18
- */
19
- export type SwapProviders = {
20
- uniswap?: SwapProvider<SwapProviderConfig>
21
- }
22
-
23
- /**
24
- * Swap provider configuration
25
- * @description Configuration for a single swap provider (mirrors LendProviderConfig pattern)
19
+ * Per-provider swap configuration.
20
+ * Provider-level values override the shared SwapGlobalConfig defaults.
26
21
  */
27
22
  export interface SwapProviderConfig {
28
- /** Default slippage tolerance (e.g., 0.005 for 0.5%) */
23
+ /** Slippage tolerance override for this provider (e.g., 0.005 for 0.5%) */
29
24
  defaultSlippage?: number
30
- /** Maximum allowed slippage (e.g., 0.5 for 50%). Defaults to 0.5. */
25
+ /** Maximum allowed slippage override for this provider (e.g., 0.5 for 50%) */
31
26
  maxSlippage?: number
27
+ /** Quote expiration override for this provider, in seconds from now */
28
+ quoteExpirationSeconds?: number
32
29
  /** Allowlist of swap markets (optional - defaults to all supported assets) */
33
30
  marketAllowlist?: SwapMarketConfig[]
34
31
  /** Blocklist of swap markets to exclude */
@@ -92,8 +89,10 @@ export interface WalletSwapParams {
92
89
  slippage?: number
93
90
  /** Transaction deadline as Unix timestamp. Defaults to now + 1 minute. */
94
91
  deadline?: number
95
- /** Recipient address. Defaults to wallet address. */
96
- recipient?: Address
92
+ /** Recipient address or ENS name (e.g. "vitalik.eth"). Defaults to wallet address. */
93
+ recipient?: Address | EnsName
94
+ /** Explicitly select a swap provider. Overrides routing config. */
95
+ provider?: SwapProviderName
97
96
  }
98
97
 
99
98
  /**
@@ -105,12 +104,12 @@ export interface SwapExecuteParams extends WalletSwapParams {
105
104
  }
106
105
 
107
106
  /**
108
- * Fully resolved swap parameters with defaults applied and amounts in wei.
107
+ * Fully resolved swap parameters with defaults applied and amounts as raw bigint.
109
108
  * Passed to provider _execute() implementations.
110
109
  */
111
110
  export interface ResolvedSwapParams {
112
- amountInWei?: bigint
113
- amountOutWei?: bigint
111
+ amountInRaw?: bigint
112
+ amountOutRaw?: bigint
114
113
  assetIn: Asset
115
114
  assetOut: Asset
116
115
  slippage: number
@@ -136,6 +135,121 @@ export interface SwapPriceParams {
136
135
  amountOut?: number
137
136
  /** Chain to get price on */
138
137
  chainId: SupportedChainId
138
+ /** Explicitly select a swap provider. Overrides routing config. */
139
+ provider?: SwapProviderName
140
+ }
141
+
142
+ /**
143
+ * Parameters for getting a swap quote with pre-built execution data.
144
+ */
145
+ export interface SwapQuoteParams {
146
+ /** Token to sell */
147
+ assetIn: Asset
148
+ /** Token to buy (required) */
149
+ assetOut: Asset
150
+ /** Amount of input token (human-readable). Mutually exclusive with amountOut. */
151
+ amountIn?: number
152
+ /** Amount of output token (human-readable). Mutually exclusive with amountIn. */
153
+ amountOut?: number
154
+ /** Chain to execute swap on */
155
+ chainId: SupportedChainId
156
+ /** Slippage tolerance baked into the quote */
157
+ slippage?: number
158
+ /** Transaction deadline as Unix timestamp */
159
+ deadline?: number
160
+ /** Recipient address or ENS name (e.g. "vitalik.eth"). Defaults to wallet address. */
161
+ recipient?: Address | EnsName
162
+ /** Explicitly select a swap provider */
163
+ provider?: SwapProviderName
164
+ }
165
+
166
+ /**
167
+ * Pre-built execution data from a quote, ready to submit on-chain.
168
+ */
169
+ export interface SwapQuoteExecution {
170
+ /** Encoded swap calldata */
171
+ swapCalldata: Hex
172
+ /** Router/contract to send the swap transaction to */
173
+ routerAddress: Address
174
+ /** Native ETH value for ETH-in swaps, else 0n */
175
+ value: bigint
176
+ /** Opaque provider-specific context (e.g. stable flag, factory address) */
177
+ providerContext?: Record<string, unknown>
178
+ }
179
+
180
+ /**
181
+ * A complete swap quote: pricing, amounts, and pre-built execution data.
182
+ * Pass to execute() to skip re-quoting.
183
+ *
184
+ * **Precision note:** `Raw` fields (bigint) are the on-chain source of truth.
185
+ * Number fields (`amountIn`, `amountOut`, `price`, etc.) are display approximations
186
+ * derived via `formatUnits` → `parseFloat`. For tokens with many significant digits,
187
+ * numbers may lose precision. Use `Raw` fields for any math that matters.
188
+ */
189
+ export interface SwapQuote {
190
+ // ── What you're swapping ──
191
+ /** Token being sold */
192
+ assetIn: Asset
193
+ /** Token being bought */
194
+ assetOut: Asset
195
+ /** Chain to execute on */
196
+ chainId: SupportedChainId
197
+
198
+ // ── Amounts (Raw = on-chain precision, number = display approximation) ──
199
+ /** Human-readable input amount (display only — use amountInRaw for precision) */
200
+ amountIn: number
201
+ /** Input amount as raw bigint (native decimals). Source of truth. */
202
+ amountInRaw: bigint
203
+ /** Human-readable expected output (display only — use amountOutRaw for precision) */
204
+ amountOut: number
205
+ /** Expected output as raw bigint. Source of truth. */
206
+ amountOutRaw: bigint
207
+ /** Human-readable minimum output after slippage (display only) */
208
+ amountOutMin: number
209
+ /** Minimum output as raw bigint after slippage. Source of truth for on-chain execution. */
210
+ amountOutMinRaw: bigint
211
+
212
+ // ── Price (display approximations derived from number amounts) ──
213
+ /** Exchange rate: amountOut / amountIn. Display approximation. */
214
+ price: number
215
+ /** Inverse exchange rate: amountIn / amountOut. Display approximation. */
216
+ priceInverse: number
217
+ /** Price impact as decimal (0.03 = 3%) */
218
+ priceImpact: number
219
+
220
+ // ── Route ──
221
+ /** Route taken for the swap */
222
+ route: SwapRoute
223
+
224
+ // ── Execution ──
225
+ /** Pre-built transaction data. Pass quote to execute() to use. */
226
+ execution: SwapQuoteExecution
227
+
228
+ // ── Metadata ──
229
+ /** Provider that generated this quote */
230
+ provider: SwapProviderName
231
+ /** Slippage tolerance applied to this quote */
232
+ slippage: number
233
+ /** Transaction deadline (Unix seconds) */
234
+ deadline: number
235
+ /** When the quote was generated (Unix seconds) */
236
+ quotedAt: number
237
+ /** When the quote expires (Unix seconds) */
238
+ expiresAt: number
239
+ /** Estimated gas cost as raw bigint (native decimals) */
240
+ gasEstimate?: bigint
241
+ /**
242
+ * Wallet address that will execute this quote.
243
+ * Set by WalletSwapNamespace before execution — not available on price-only quotes.
244
+ * Used to check existing on-chain allowances and skip redundant approvals.
245
+ */
246
+ recipient?: Address
247
+ /**
248
+ * The recipient address baked into execution.swapCalldata at quote time.
249
+ * If recipient differs from quotedRecipient at execute time, calldata is re-encoded
250
+ * with the correct recipient to prevent tokens from being sent to the wrong address.
251
+ */
252
+ quotedRecipient: Address
139
253
  }
140
254
 
141
255
  /**
@@ -172,15 +286,15 @@ export interface SwapPrice {
172
286
  amountIn: number
173
287
  /** Human-readable output amount */
174
288
  amountOut: number
175
- /** Input amount in wei */
176
- amountInWei: bigint
177
- /** Expected output amount in wei */
178
- amountOutWei: bigint
289
+ /** Input amount as raw bigint (native decimals) */
290
+ amountInRaw: bigint
291
+ /** Expected output amount as raw bigint (native decimals) */
292
+ amountOutRaw: bigint
179
293
  /** Price impact as decimal (0.03 = 3%). Derived from pool mid-price vs execution price. */
180
294
  priceImpact: number
181
295
  /** Route taken for the swap */
182
296
  route: SwapRoute
183
- /** Estimated gas cost in wei */
297
+ /** Estimated gas cost as raw bigint (native decimals) */
184
298
  gasEstimate?: bigint
185
299
  }
186
300
 
@@ -204,16 +318,16 @@ export interface SwapTransaction {
204
318
  amountIn: number
205
319
  /** Human-readable output amount */
206
320
  amountOut: number
207
- /** Input amount in wei */
208
- amountInWei: bigint
209
- /** Output amount in wei (expected) */
210
- amountOutWei: bigint
321
+ /** Input amount as raw bigint (native decimals) */
322
+ amountInRaw: bigint
323
+ /** Output amount as raw bigint (native decimals) (expected) */
324
+ amountOutRaw: bigint
211
325
  /** Input asset */
212
326
  assetIn: Asset
213
327
  /** Output asset */
214
328
  assetOut: Asset
215
- /** Execution price */
216
- price: string
329
+ /** Exchange rate: amountOut / amountIn */
330
+ price: number
217
331
  /** Price impact as decimal (0.03 = 3%) */
218
332
  priceImpact: number
219
333
  /** Transaction data for execution */
@@ -230,16 +344,16 @@ export interface SwapReceipt {
230
344
  amountIn: number
231
345
  /** Human-readable output amount */
232
346
  amountOut: number
233
- /** Actual input amount in wei */
234
- amountInWei: bigint
235
- /** Actual output amount in wei */
236
- amountOutWei: bigint
347
+ /** Actual input amount as raw bigint (native decimals) */
348
+ amountInRaw: bigint
349
+ /** Actual output amount as raw bigint (native decimals) */
350
+ amountOutRaw: bigint
237
351
  /** Input asset */
238
352
  assetIn: Asset
239
353
  /** Output asset */
240
354
  assetOut: Asset
241
- /** Execution price as human-readable string */
242
- price: string
355
+ /** Exchange rate: amountOut / amountIn */
356
+ price: number
243
357
  /** Price impact as decimal (0.03 = 3%) */
244
358
  priceImpact: number
245
359
  }
@@ -255,5 +369,5 @@ export interface SwapMarket {
255
369
  /** Fee tier in pips (500 = 0.05%) */
256
370
  fee: number
257
371
  /** Provider name */
258
- provider: 'uniswap'
372
+ provider: SwapProviderName
259
373
  }