@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
@@ -1,7 +1,8 @@
1
1
  import type { Address } from 'viem'
2
- import { encodeFunctionData, erc20Abi, parseUnits } from 'viem'
2
+ import { parseUnits } from 'viem'
3
3
 
4
4
  import type { SupportedChainId } from '@/constants/supportedChains.js'
5
+ import { ACTIONS_SUPPORTED_CHAIN_IDS } from '@/constants/supportedChains.js'
5
6
  import type { ChainManager } from '@/services/ChainManager.js'
6
7
  import type { LendProviderConfig } from '@/types/actions.js'
7
8
  import type { Asset } from '@/types/asset.js'
@@ -20,6 +21,7 @@ import type {
20
21
  LendTransaction,
21
22
  TransactionData,
22
23
  } from '@/types/lend/index.js'
24
+ import { buildErc20ApprovalTx } from '@/utils/approve.js'
23
25
  import { validateMarketAsset } from '@/utils/markets.js'
24
26
  import { validateChainSupported } from '@/utils/validation.js'
25
27
 
@@ -36,12 +38,6 @@ export abstract class LendProvider<
36
38
  /** Chain manager for blockchain interactions */
37
39
  protected readonly chainManager: ChainManager
38
40
 
39
- /**
40
- * Supported chain IDs
41
- * @description Array of chain IDs that this provider supports
42
- */
43
- protected abstract readonly SUPPORTED_CHAIN_IDS: readonly number[]
44
-
45
41
  /**
46
42
  * Create a new lending provider
47
43
  * @param config - Provider-specific lending configuration
@@ -57,12 +53,27 @@ export abstract class LendProvider<
57
53
  }
58
54
 
59
55
  /**
60
- * Get supported chain IDs
61
- * @description Returns an array of chain IDs that this provider supports
62
- * @returns Array of supported chain IDs
56
+ * Chain IDs supported by the underlying protocol.
57
+ * @description Each provider implements this to declare the chains its protocol
58
+ * is deployed on, without any SDK-level or developer-config filtering.
59
+ * @returns Array of chain IDs the protocol natively supports
60
+ */
61
+ abstract protocolSupportedChainIds(): number[]
62
+
63
+ /**
64
+ * Effective supported chain IDs.
65
+ * @description Intersection of the protocol's supported chains,
66
+ * the Actions SDK's known chains, and the developer's ActionsConfig.chains.
67
+ * All validation in public methods uses this set.
68
+ * @returns Array of chain IDs usable through this provider instance
63
69
  */
64
70
  supportedChainIds(): number[] {
65
- return [...this.SUPPORTED_CHAIN_IDS]
71
+ const configuredChains = this.chainManager.getSupportedChains()
72
+ return this.protocolSupportedChainIds().filter(
73
+ (id) =>
74
+ (ACTIONS_SUPPORTED_CHAIN_IDS as readonly number[]).includes(id) &&
75
+ (configuredChains as number[]).includes(id),
76
+ )
66
77
  }
67
78
 
68
79
  /**
@@ -78,7 +89,6 @@ export abstract class LendProvider<
78
89
  throw new Error('walletAddress is required')
79
90
  }
80
91
 
81
- validateChainSupported(params.marketId.chainId, this.SUPPORTED_CHAIN_IDS)
82
92
  this.validateConfigSupported(params.marketId)
83
93
 
84
94
  // Convert human-readable amount to wei using the asset's decimals
@@ -106,7 +116,6 @@ export abstract class LendProvider<
106
116
  chainId: params.chainId,
107
117
  }
108
118
 
109
- validateChainSupported(params.chainId, this.SUPPORTED_CHAIN_IDS)
110
119
  this.validateConfigSupported(marketId)
111
120
  return this._getMarket(marketId)
112
121
  }
@@ -118,7 +127,7 @@ export abstract class LendProvider<
118
127
  */
119
128
  async getMarkets(params: GetLendMarketsParams = {}): Promise<LendMarket[]> {
120
129
  if (params.chainId !== undefined)
121
- validateChainSupported(params.chainId, this.SUPPORTED_CHAIN_IDS)
130
+ validateChainSupported(params.chainId, this.supportedChainIds())
122
131
 
123
132
  const filteredMarkets = this.filterMarketConfigs(
124
133
  params.chainId,
@@ -157,7 +166,6 @@ export abstract class LendProvider<
157
166
  )
158
167
  }
159
168
 
160
- validateChainSupported(marketId.chainId, this.SUPPORTED_CHAIN_IDS)
161
169
  this.validateConfigSupported(marketId)
162
170
 
163
171
  return this._getPosition({ marketId, walletAddress })
@@ -177,7 +185,6 @@ export abstract class LendProvider<
177
185
  throw new Error('walletAddress is required')
178
186
  }
179
187
 
180
- validateChainSupported(params.marketId.chainId, this.SUPPORTED_CHAIN_IDS)
181
188
  this.validateConfigSupported(params.marketId)
182
189
 
183
190
  const market = await this.getMarket({
@@ -215,7 +222,7 @@ export abstract class LendProvider<
215
222
  * @returns true if chain is supported, false otherwise
216
223
  */
217
224
  protected isChainSupported(chainId: number): boolean {
218
- return this.SUPPORTED_CHAIN_IDS.includes(chainId)
225
+ return this.supportedChainIds().includes(chainId)
219
226
  }
220
227
 
221
228
  /**
@@ -224,6 +231,8 @@ export abstract class LendProvider<
224
231
  * @throws Error if market allowlist is configured but market is not in it
225
232
  */
226
233
  protected validateConfigSupported(marketId: LendMarketId): void {
234
+ validateChainSupported(marketId.chainId, this.supportedChainIds())
235
+
227
236
  if (
228
237
  !this._config.marketAllowlist ||
229
238
  this._config.marketAllowlist.length === 0
@@ -275,17 +284,7 @@ export abstract class LendProvider<
275
284
  spender: Address,
276
285
  amount: bigint,
277
286
  ): TransactionData {
278
- const approvalCallData = encodeFunctionData({
279
- abi: erc20Abi,
280
- functionName: 'approve',
281
- args: [spender, amount],
282
- })
283
-
284
- return {
285
- to: tokenAddress,
286
- data: approvalCallData,
287
- value: 0n,
288
- }
287
+ return buildErc20ApprovalTx(tokenAddress, spender, amount)
289
288
  }
290
289
 
291
290
  /**
@@ -1,18 +1,14 @@
1
- import type { LendProvider } from '@/lend/core/LendProvider.js'
2
1
  import type { AaveLendProvider } from '@/lend/providers/aave/AaveLendProvider.js'
3
2
  import type { MorphoLendProvider } from '@/lend/providers/morpho/MorphoLendProvider.js'
4
- import type { LendProviderConfig } from '@/types/actions.js'
5
3
  import type {
6
4
  GetLendMarketParams,
7
5
  GetLendMarketsParams,
8
6
  LendMarket,
9
7
  LendMarketId,
10
8
  } from '@/types/lend/index.js'
9
+ import type { LendProviders } from '@/types/providers.js'
11
10
 
12
- export type LendProviders = {
13
- morpho?: LendProvider<LendProviderConfig>
14
- aave?: LendProvider<LendProviderConfig>
15
- }
11
+ export type { LendProviders } from '@/types/providers.js'
16
12
 
17
13
  /**
18
14
  * Base Lend Namespace
@@ -3,8 +3,13 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'
3
3
 
4
4
  import { getRandomAddress } from '@/__mocks__/utils.js'
5
5
  import type { MockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
6
- import { createMockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
6
+ import {
7
+ createMockLendProvider,
8
+ MockLendProvider as MockLendProviderClass,
9
+ } from '@/lend/__mocks__/MockLendProvider.js'
7
10
  import { BaseLendNamespace } from '@/lend/namespaces/BaseLendNamespace.js'
11
+ import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
12
+ import type { ChainManager } from '@/services/ChainManager.js'
8
13
 
9
14
  // Concrete implementation for testing
10
15
  class TestLendNamespace extends BaseLendNamespace {}
@@ -109,10 +114,12 @@ describe('BaseLendNamespace', () => {
109
114
 
110
115
  describe('supportedChainIds', () => {
111
116
  it('should return unique chain IDs from all providers', () => {
112
- const namespace = new TestLendNamespace({
113
- morpho: mockMorphoProvider,
114
- aave: mockAaveProvider,
115
- })
117
+ const chainManager = new MockChainManager({
118
+ supportedChains: [1, 130, 8453, 84532],
119
+ }) as unknown as ChainManager
120
+ const morpho = new MockLendProviderClass({}, undefined, chainManager)
121
+ const aave = new MockLendProviderClass({}, undefined, chainManager)
122
+ const namespace = new TestLendNamespace({ morpho, aave })
116
123
 
117
124
  const chainIds = namespace.supportedChainIds()
118
125
 
@@ -25,18 +25,14 @@ import {
25
25
  } from './addresses.js'
26
26
  import { getATokenAddress, getReserve, getReserves } from './sdk.js'
27
27
 
28
- /**
29
- * Supported chain IDs for Aave lending
30
- * @description Array of chain IDs where Aave V3 is available on Optimism Superchain
31
- */
32
- export const SUPPORTED_CHAIN_IDS = getSupportedChainIds() as readonly number[]
33
-
34
28
  /**
35
29
  * Aave lending provider implementation
36
30
  * @description Lending provider implementation using Aave V3 protocol
37
31
  */
38
32
  export class AaveLendProvider extends LendProvider<LendProviderConfig> {
39
- protected readonly SUPPORTED_CHAIN_IDS = SUPPORTED_CHAIN_IDS
33
+ protocolSupportedChainIds(): number[] {
34
+ return getSupportedChainIds()
35
+ }
40
36
 
41
37
  /**
42
38
  * Create a new Aave lending provider
@@ -88,22 +88,31 @@ describe('AaveLendProvider', () => {
88
88
  })
89
89
  })
90
90
 
91
- describe('supportedChainIds', () => {
92
- it('should return array of supported chain IDs', () => {
93
- const chainIds = provider.supportedChainIds()
91
+ describe('protocolSupportedChainIds', () => {
92
+ it('should return all Aave V3 deployment chains', () => {
93
+ const chainIds = provider.protocolSupportedChainIds()
94
94
 
95
- expect(chainIds).toHaveLength(4)
95
+ expect(chainIds).toHaveLength(6)
96
96
  expect(chainIds).toContain(10) // Optimism
97
97
  expect(chainIds).toContain(8453) // Base
98
+ expect(chainIds).toContain(1868) // Soneium
99
+ expect(chainIds).toContain(57073) // Ink
98
100
  expect(chainIds).toContain(11155420) // Optimism Sepolia
99
101
  expect(chainIds).toContain(84532) // Base Sepolia
100
102
  })
103
+ })
101
104
 
102
- it('should return unique chain IDs', () => {
105
+ describe('supportedChainIds', () => {
106
+ it('should return only chains present in ActionsConfig', () => {
107
+ // mockChainManager is configured with supportedChains: [8453]
103
108
  const chainIds = provider.supportedChainIds()
104
- const uniqueIds = [...new Set(chainIds)]
105
109
 
106
- expect(chainIds.length).toBe(uniqueIds.length)
110
+ expect(chainIds).toEqual([8453])
111
+ })
112
+
113
+ it('should return unique chain IDs', () => {
114
+ const chainIds = provider.supportedChainIds()
115
+ expect(chainIds.length).toBe(new Set(chainIds).size)
107
116
  })
108
117
  })
109
118
 
@@ -1,95 +1,113 @@
1
1
  import type { Address } from 'viem'
2
- import { base, baseSepolia, optimism, optimismSepolia } from 'viem/chains'
2
+ import {
3
+ base,
4
+ baseSepolia,
5
+ ink,
6
+ optimism,
7
+ optimismSepolia,
8
+ soneium,
9
+ } from 'viem/chains'
3
10
 
4
- /**
5
- * Aave V3 Pool addresses for Optimism Superchain networks
6
- * @description Hardcoded Pool contract addresses for each supported chain
7
- */
11
+ import type { SupportedChainId } from '@/constants/supportedChains.js'
8
12
 
9
13
  /**
10
- * Mainnet Pool addresses
14
+ * Aave V3 contract addresses per chain
11
15
  */
12
- export const POOL_ADDRESSES_MAINNET: Record<number, Address> = {
13
- [optimism.id]: '0x794a61358D6845594F94dc1DB02A252b5b4814aD',
14
- [base.id]: '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5',
15
- } as const
16
+ export interface AaveAddresses {
17
+ pool: Address
18
+ wethGateway: Address
19
+ uiPoolDataProvider: Address
20
+ poolAddressesProvider: Address
21
+ }
16
22
 
17
23
  /**
18
- * Testnet Pool addresses
24
+ * Aave V3 contract addresses for OP Stack chains
25
+ * @see https://github.com/bgd-labs/aave-address-book
19
26
  */
20
- export const POOL_ADDRESSES_TESTNET: Record<number, Address> = {
21
- [optimismSepolia.id]: '0xb50201558b00496a145fe76f7424749556e326d8',
22
- [baseSepolia.id]: '0x8bAB6d1b75f19e9eD9fCe8b9BD338844fF79aE27',
23
- } as const
27
+ const AAVE_ADDRESSES: Partial<Record<SupportedChainId, AaveAddresses>> = {
28
+ [optimism.id]: {
29
+ pool: '0x794a61358D6845594F94dc1DB02A252b5b4814aD',
30
+ wethGateway: '0x5f2508cAE9923b02316254026CD43d7902866725',
31
+ uiPoolDataProvider: '0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654',
32
+ poolAddressesProvider: '0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb',
33
+ },
34
+ [base.id]: {
35
+ pool: '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5',
36
+ wethGateway: '0xa0d9C1E9E48Ca30c8d8C3B5D69FF5dc1f6DFfC24',
37
+ uiPoolDataProvider: '0xd82a47fdebB5bf5329b09441C3DaB4b5df2153Ad',
38
+ poolAddressesProvider: '0xe20fCBdBfFC4Dd138cE8b2E6FBb6CB49777ad64D',
39
+ },
40
+ [soneium.id]: {
41
+ pool: '0xDd3d7A7d03D9fD9ef45f3E587287922eF65CA38B',
42
+ wethGateway: '0x6376D4df995f32f308f2d5049a7a320943023232',
43
+ uiPoolDataProvider: '0xc69299Ddd3a704F6954c8Ae1AD00e0892d77Aee4',
44
+ poolAddressesProvider: '0x82405D1a189bd6cE4667809C35B37fBE136A4c5B',
45
+ },
46
+ [ink.id]: {
47
+ pool: '0x2816cf15F6d2A220E789aA011D5EE4eB6c47FEbA',
48
+ wethGateway: '0xDe090EfCD6ef4b86792e2D84E55a5fa8d49D25D2',
49
+ uiPoolDataProvider: '0xF1485fb7DBFa5db0B368FeA808FD6ff945c36064',
50
+ poolAddressesProvider: '0x4172E6aAEC070ACB31aaCE343A58c93E4C70f44D',
51
+ },
52
+ [optimismSepolia.id]: {
53
+ pool: '0xb50201558b00496a145fe76f7424749556e326d8',
54
+ wethGateway: '0x589750BA8aF186cE5B55391B0b7148cAD43a1619',
55
+ uiPoolDataProvider: '0x86E2938daE289763D4e09a7e42c5cCcA62Cf9809',
56
+ poolAddressesProvider: '0x36616cf17557639614c1cdDb356b1B83fc0B2132',
57
+ },
58
+ [baseSepolia.id]: {
59
+ pool: '0x8bAB6d1b75f19e9eD9fCe8b9BD338844fF79aE27',
60
+ wethGateway: '0x0568130e794429D2eEBC4dafE18f25Ff1a1ed8b6',
61
+ uiPoolDataProvider: '0xBc9f5b7E248451CdD7cA54e717a2BFe1F32b566b',
62
+ poolAddressesProvider: '0xE4C23309117Aa30342BFaae6c95c6478e0A4Ad00',
63
+ },
64
+ }
24
65
 
25
66
  /**
26
- * All Pool addresses (mainnet + testnet)
67
+ * Get all Aave addresses for a chain
27
68
  */
28
- export const POOL_ADDRESSES: Record<number, Address> = {
29
- ...POOL_ADDRESSES_MAINNET,
30
- ...POOL_ADDRESSES_TESTNET,
31
- } as const
69
+ export function getAaveAddresses(chainId: number): AaveAddresses | undefined {
70
+ return AAVE_ADDRESSES[chainId as SupportedChainId]
71
+ }
32
72
 
33
73
  /**
34
74
  * Get Pool address for a given chain ID
35
- * @param chainId - Chain ID
36
- * @returns Pool address if supported, undefined otherwise
37
75
  */
38
76
  export function getPoolAddress(chainId: number): Address | undefined {
39
- return POOL_ADDRESSES[chainId]
77
+ return getAaveAddresses(chainId)?.pool
40
78
  }
41
79
 
42
80
  /**
43
- * Check if a chain ID has Aave V3 deployed
44
- * @param chainId - Chain ID to check
45
- * @returns true if Aave V3 is deployed on this chain
81
+ * Get WETHGateway address for a given chain ID
46
82
  */
47
- export function isAaveChainSupported(chainId: number): boolean {
48
- return chainId in POOL_ADDRESSES
83
+ export function getWETHGatewayAddress(chainId: number): Address | undefined {
84
+ return getAaveAddresses(chainId)?.wethGateway
49
85
  }
50
86
 
51
87
  /**
52
88
  * Get all supported chain IDs
53
- * @returns Array of chain IDs with Aave V3 deployed
54
89
  */
55
90
  export function getSupportedChainIds(): number[] {
56
- return Object.keys(POOL_ADDRESSES).map(Number)
91
+ return Object.keys(AAVE_ADDRESSES).map(Number)
57
92
  }
58
93
 
59
- /**
60
- * Aave V3 WETHGateway addresses for Optimism Superchain networks
61
- * @description Gateway contracts that handle native ETH wrapping and depositing
62
- */
63
-
64
- /**
65
- * Mainnet WETHGateway addresses
66
- */
94
+ export const POOL_ADDRESSES_MAINNET: Record<number, Address> = {
95
+ [optimism.id]: AAVE_ADDRESSES[optimism.id]!.pool,
96
+ [base.id]: AAVE_ADDRESSES[base.id]!.pool,
97
+ [soneium.id]: AAVE_ADDRESSES[soneium.id]!.pool,
98
+ [ink.id]: AAVE_ADDRESSES[ink.id]!.pool,
99
+ }
100
+ export const POOL_ADDRESSES_TESTNET: Record<number, Address> = {
101
+ [optimismSepolia.id]: AAVE_ADDRESSES[optimismSepolia.id]!.pool,
102
+ [baseSepolia.id]: AAVE_ADDRESSES[baseSepolia.id]!.pool,
103
+ }
67
104
  export const WETH_GATEWAY_ADDRESSES_MAINNET: Record<number, Address> = {
68
- [optimism.id]: '0x5f2508cAE9923b02316254026CD43d7902866725',
69
- [base.id]: '0xa0d9C1E9E48Ca30c8d8C3B5D69FF5dc1f6DFfC24',
70
- } as const
71
-
72
- /**
73
- * Testnet WETHGateway addresses
74
- */
105
+ [optimism.id]: AAVE_ADDRESSES[optimism.id]!.wethGateway,
106
+ [base.id]: AAVE_ADDRESSES[base.id]!.wethGateway,
107
+ [soneium.id]: AAVE_ADDRESSES[soneium.id]!.wethGateway,
108
+ [ink.id]: AAVE_ADDRESSES[ink.id]!.wethGateway,
109
+ }
75
110
  export const WETH_GATEWAY_ADDRESSES_TESTNET: Record<number, Address> = {
76
- [optimismSepolia.id]: '0x589750BA8aF186cE5B55391B0b7148cAD43a1619',
77
- [baseSepolia.id]: '0x0568130e794429D2eEBC4dafE18f25Ff1a1ed8b6',
78
- } as const
79
-
80
- /**
81
- * All WETHGateway addresses (mainnet + testnet)
82
- */
83
- export const WETH_GATEWAY_ADDRESSES: Record<number, Address> = {
84
- ...WETH_GATEWAY_ADDRESSES_MAINNET,
85
- ...WETH_GATEWAY_ADDRESSES_TESTNET,
86
- } as const
87
-
88
- /**
89
- * Get WETHGateway address for a given chain ID
90
- * @param chainId - Chain ID
91
- * @returns WETHGateway address if supported, undefined otherwise
92
- */
93
- export function getWETHGatewayAddress(chainId: number): Address | undefined {
94
- return WETH_GATEWAY_ADDRESSES[chainId]
111
+ [optimismSepolia.id]: AAVE_ADDRESSES[optimismSepolia.id]!.wethGateway,
112
+ [baseSepolia.id]: AAVE_ADDRESSES[baseSepolia.id]!.wethGateway,
95
113
  }
@@ -2,12 +2,14 @@ import { UiPoolDataProvider } from '@aave/contract-helpers'
2
2
  import { formatReserves } from '@aave/math-utils'
3
3
  import { providers } from 'ethers'
4
4
  import type { Address } from 'viem'
5
- import { base, baseSepolia, optimism, optimismSepolia } from 'viem/chains'
6
5
 
7
6
  import { WETH } from '@/constants/assets.js'
8
- import type { SUPPORTED_CHAIN_IDS } from '@/constants/supportedChains.js'
7
+ import type { SupportedChainId } from '@/constants/supportedChains.js'
9
8
  import { POOL_GET_RESERVE_DATA_ABI } from '@/lend/providers/aave/abis/pool.js'
10
- import { getPoolAddress } from '@/lend/providers/aave/addresses.js'
9
+ import {
10
+ getAaveAddresses,
11
+ getPoolAddress,
12
+ } from '@/lend/providers/aave/addresses.js'
11
13
  import type { ChainManager } from '@/services/ChainManager.js'
12
14
  import type { LendProviderConfig } from '@/types/actions.js'
13
15
  import type {
@@ -18,27 +20,6 @@ import type {
18
20
  } from '@/types/lend/index.js'
19
21
  import { getAssetAddress } from '@/utils/assets.js'
20
22
 
21
- /**
22
- * UI Pool Data Provider addresses for each chain
23
- * @description Contract addresses for UiPoolDataProvider on each supported chain
24
- */
25
- const UI_POOL_DATA_PROVIDER_ADDRESSES: Record<number, Address> = {
26
- [optimism.id]: '0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654',
27
- [base.id]: '0xd82a47fdebB5bf5329b09441C3DaB4b5df2153Ad',
28
- [optimismSepolia.id]: '0x86E2938daE289763D4e09a7e42c5cCcA62Cf9809',
29
- [baseSepolia.id]: '0xBc9f5b7E248451CdD7cA54e717a2BFe1F32b566b',
30
- } as const
31
-
32
- /**
33
- * Pool Addresses Provider addresses for each chain
34
- */
35
- const POOL_ADDRESSES_PROVIDER: Record<number, Address> = {
36
- [optimism.id]: '0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb',
37
- [base.id]: '0xe20fCBdBfFC4Dd138cE8b2E6FBb6CB49777ad64D',
38
- [optimismSepolia.id]: '0x36616cf17557639614c1cdDb356b1B83fc0B2132',
39
- [baseSepolia.id]: '0xE4C23309117Aa30342BFaae6c95c6478e0A4Ad00',
40
- } as const
41
-
42
23
  /**
43
24
  * Parameters for getReserve function
44
25
  */
@@ -119,20 +100,14 @@ export async function getReserve(
119
100
  )
120
101
  }
121
102
 
122
- const poolAddress = getPoolAddress(params.marketId.chainId)
123
- if (!poolAddress) {
103
+ const addresses = getAaveAddresses(params.marketId.chainId)
104
+ if (!addresses) {
124
105
  throw new Error(`Aave V3 not deployed on chain ${params.marketId.chainId}`)
125
106
  }
126
107
 
127
- const uiPoolDataProviderAddress =
128
- UI_POOL_DATA_PROVIDER_ADDRESSES[params.marketId.chainId]
129
- const poolAddressesProvider = POOL_ADDRESSES_PROVIDER[params.marketId.chainId]
130
-
131
- if (!uiPoolDataProviderAddress || !poolAddressesProvider) {
132
- throw new Error(
133
- `UiPoolDataProvider not configured for chain ${params.marketId.chainId}`,
134
- )
135
- }
108
+ const poolAddress = addresses.pool
109
+ const uiPoolDataProviderAddress = addresses.uiPoolDataProvider
110
+ const poolAddressesProvider = addresses.poolAddressesProvider
136
111
 
137
112
  try {
138
113
  // Get viem public client for this chain
@@ -264,7 +239,7 @@ export async function getReserves(
264
239
  */
265
240
  export async function getATokenAddress(params: {
266
241
  underlyingAsset: Address
267
- chainId: (typeof SUPPORTED_CHAIN_IDS)[number]
242
+ chainId: SupportedChainId
268
243
  chainManager: ChainManager
269
244
  }): Promise<Address> {
270
245
  const poolAddress = getPoolAddress(params.chainId)
@@ -1,9 +1,8 @@
1
- import { ChainId } from '@morpho-org/blue-sdk'
2
1
  import { MetaMorphoAction } from '@morpho-org/blue-sdk-viem'
3
2
  import { erc20Abi, formatUnits } from 'viem'
4
3
 
5
- import { SUPPORTED_CHAIN_IDS as ACTIONS_SUPPORTED_CHAIN_IDS } from '@/constants/supportedChains.js'
6
4
  import { LendProvider } from '@/lend/core/LendProvider.js'
5
+ import { getSupportedChainIds as getMorphoSupportedChainIds } from '@/lend/providers/morpho/contracts.js'
7
6
  import { getVault, getVaults } from '@/lend/providers/morpho/sdk.js'
8
7
  import type { ChainManager } from '@/services/ChainManager.js'
9
8
  import type { LendProviderConfig } from '@/types/actions.js'
@@ -19,25 +18,14 @@ import type {
19
18
  } from '@/types/lend/index.js'
20
19
  import { getAssetAddress } from '@/utils/assets.js'
21
20
 
22
- /**
23
- * Supported chain IDs for Morpho lending
24
- * @description Array of chain IDs where Morpho is available
25
- */
26
- export const SUPPORTED_CHAIN_IDS = [
27
- ...new Set([
28
- ...Object.values(ChainId).filter(
29
- (value): value is number => typeof value === 'number',
30
- ),
31
- ...ACTIONS_SUPPORTED_CHAIN_IDS,
32
- ]),
33
- ] as readonly number[]
34
-
35
21
  /**
36
22
  * Morpho lending provider implementation
37
23
  * @description Lending provider implementation using Morpho protocol
38
24
  */
39
25
  export class MorphoLendProvider extends LendProvider<LendProviderConfig> {
40
- protected readonly SUPPORTED_CHAIN_IDS = SUPPORTED_CHAIN_IDS
26
+ protocolSupportedChainIds(): number[] {
27
+ return getMorphoSupportedChainIds()
28
+ }
41
29
 
42
30
  /**
43
31
  * Create a new Morpho lending provider