@eth-optimism/actions-sdk 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/dist/__mocks__/MockAssets.d.ts +17 -2
  2. package/dist/__mocks__/MockAssets.d.ts.map +1 -1
  3. package/dist/__mocks__/MockAssets.js +49 -4
  4. package/dist/__mocks__/MockAssets.js.map +1 -1
  5. package/dist/__tests__/actions.test.js +1 -5
  6. package/dist/__tests__/actions.test.js.map +1 -1
  7. package/dist/actions.d.ts +23 -9
  8. package/dist/actions.d.ts.map +1 -1
  9. package/dist/actions.js +68 -36
  10. package/dist/actions.js.map +1 -1
  11. package/dist/constants/assets.d.ts +217 -2
  12. package/dist/constants/assets.d.ts.map +1 -1
  13. package/dist/constants/assets.js +744 -6
  14. package/dist/constants/assets.js.map +1 -1
  15. package/dist/constants/contracts.d.ts +4 -0
  16. package/dist/constants/contracts.d.ts.map +1 -0
  17. package/dist/constants/contracts.js +3 -0
  18. package/dist/constants/contracts.js.map +1 -0
  19. package/dist/constants/providers.d.ts +6 -0
  20. package/dist/constants/providers.d.ts.map +1 -0
  21. package/dist/constants/providers.js +6 -0
  22. package/dist/constants/providers.js.map +1 -0
  23. package/dist/constants/supportedChains.d.ts +2 -2
  24. package/dist/constants/supportedChains.d.ts.map +1 -1
  25. package/dist/constants/supportedChains.js +12 -2
  26. package/dist/constants/supportedChains.js.map +1 -1
  27. package/dist/index.d.ts +4 -4
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/lend/__mocks__/MockLendProvider.d.ts +1 -1
  32. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -1
  33. package/dist/lend/__mocks__/MockLendProvider.js +7 -2
  34. package/dist/lend/__mocks__/MockLendProvider.js.map +1 -1
  35. package/dist/lend/core/LendProvider.d.ts +12 -14
  36. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  37. package/dist/lend/core/LendProvider.js +16 -31
  38. package/dist/lend/core/LendProvider.js.map +1 -1
  39. package/dist/lend/core/__tests__/LendProvider.test.js +2 -4
  40. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
  41. package/dist/lend/namespaces/BaseLendNamespace.d.ts +2 -6
  42. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -1
  43. package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -1
  44. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +7 -4
  45. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -1
  46. package/dist/lend/providers/aave/AaveLendProvider.d.ts +1 -6
  47. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
  48. package/dist/lend/providers/aave/AaveLendProvider.js +3 -6
  49. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
  50. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +14 -6
  51. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -1
  52. package/dist/lend/providers/aave/addresses.d.ts +13 -39
  53. package/dist/lend/providers/aave/addresses.d.ts.map +1 -1
  54. package/dist/lend/providers/aave/addresses.js +65 -60
  55. package/dist/lend/providers/aave/addresses.js.map +1 -1
  56. package/dist/lend/providers/aave/sdk.d.ts +2 -2
  57. package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
  58. package/dist/lend/providers/aave/sdk.js +6 -28
  59. package/dist/lend/providers/aave/sdk.js.map +1 -1
  60. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +1 -6
  61. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  62. package/dist/lend/providers/morpho/MorphoLendProvider.js +4 -13
  63. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  64. package/dist/lend/providers/morpho/__tests__/api.test.js +52 -43
  65. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
  66. package/dist/lend/providers/morpho/__tests__/sdk.test.js +41 -41
  67. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  68. package/dist/lend/providers/morpho/api.d.ts +3 -3
  69. package/dist/lend/providers/morpho/api.d.ts.map +1 -1
  70. package/dist/lend/providers/morpho/api.js +2 -2
  71. package/dist/lend/providers/morpho/api.js.map +1 -1
  72. package/dist/lend/providers/morpho/contracts.d.ts +11 -10
  73. package/dist/lend/providers/morpho/contracts.d.ts.map +1 -1
  74. package/dist/lend/providers/morpho/contracts.js +43 -10
  75. package/dist/lend/providers/morpho/contracts.js.map +1 -1
  76. package/dist/lend/providers/morpho/sdk.d.ts +7 -2
  77. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  78. package/dist/lend/providers/morpho/sdk.js +67 -54
  79. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  80. package/dist/nodeActionsFactory.d.ts +1 -1
  81. package/dist/reactActionsFactory.d.ts +1 -1
  82. package/dist/services/ChainManager.d.ts +8 -8
  83. package/dist/services/ChainManager.d.ts.map +1 -1
  84. package/dist/services/ChainManager.js.map +1 -1
  85. package/dist/services/__mocks__/MockChainManager.d.ts +4 -4
  86. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
  87. package/dist/services/__mocks__/MockChainManager.js.map +1 -1
  88. package/dist/services/tokenBalance.d.ts +1 -1
  89. package/dist/services/tokenBalance.d.ts.map +1 -1
  90. package/dist/services/tokenBalance.js +31 -30
  91. package/dist/services/tokenBalance.js.map +1 -1
  92. package/dist/services/tokenBalance.spec.js +20 -24
  93. package/dist/services/tokenBalance.spec.js.map +1 -1
  94. package/dist/swap/__mocks__/MockSwapProvider.d.ts +50 -0
  95. package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -0
  96. package/dist/swap/__mocks__/MockSwapProvider.js +161 -0
  97. package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -0
  98. package/dist/swap/core/SwapProvider.d.ts +145 -0
  99. package/dist/swap/core/SwapProvider.d.ts.map +1 -0
  100. package/dist/swap/core/SwapProvider.js +359 -0
  101. package/dist/swap/core/SwapProvider.js.map +1 -0
  102. package/dist/swap/core/__tests__/SwapProvider.test.d.ts +2 -0
  103. package/dist/swap/core/__tests__/SwapProvider.test.d.ts.map +1 -0
  104. package/dist/swap/core/__tests__/SwapProvider.test.js +435 -0
  105. package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -0
  106. package/dist/swap/core/markets.d.ts +47 -0
  107. package/dist/swap/core/markets.d.ts.map +1 -0
  108. package/dist/swap/core/markets.js +65 -0
  109. package/dist/swap/core/markets.js.map +1 -0
  110. package/dist/swap/index.d.ts +9 -0
  111. package/dist/swap/index.d.ts.map +1 -0
  112. package/dist/swap/index.js +9 -0
  113. package/dist/swap/index.js.map +1 -0
  114. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +8 -0
  115. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts.map +1 -0
  116. package/dist/swap/namespaces/ActionsSwapNamespace.js +8 -0
  117. package/dist/swap/namespaces/ActionsSwapNamespace.js.map +1 -0
  118. package/dist/swap/namespaces/BaseSwapNamespace.d.ts +73 -0
  119. package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -0
  120. package/dist/swap/namespaces/BaseSwapNamespace.js +181 -0
  121. package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -0
  122. package/dist/swap/namespaces/WalletSwapNamespace.d.ts +34 -0
  123. package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -0
  124. package/dist/swap/namespaces/WalletSwapNamespace.js +84 -0
  125. package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -0
  126. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts +2 -0
  127. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +1 -0
  128. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +245 -0
  129. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -0
  130. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts +2 -0
  131. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +1 -0
  132. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +209 -0
  133. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -0
  134. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +35 -0
  135. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -0
  136. package/dist/swap/providers/uniswap/UniswapSwapProvider.js +148 -0
  137. package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -0
  138. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts +2 -0
  139. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +1 -0
  140. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +258 -0
  141. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -0
  142. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts +2 -0
  143. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +1 -0
  144. package/dist/swap/providers/uniswap/__tests__/sdk.test.js +312 -0
  145. package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -0
  146. package/dist/swap/providers/uniswap/abis.d.ts +227 -0
  147. package/dist/swap/providers/uniswap/abis.d.ts.map +1 -0
  148. package/dist/swap/providers/uniswap/abis.js +138 -0
  149. package/dist/swap/providers/uniswap/abis.js.map +1 -0
  150. package/dist/swap/providers/uniswap/addresses.d.ts +26 -0
  151. package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -0
  152. package/dist/swap/providers/uniswap/addresses.js +81 -0
  153. package/dist/swap/providers/uniswap/addresses.js.map +1 -0
  154. package/dist/swap/providers/uniswap/encoding.d.ts +77 -0
  155. package/dist/swap/providers/uniswap/encoding.d.ts.map +1 -0
  156. package/dist/swap/providers/uniswap/encoding.js +233 -0
  157. package/dist/swap/providers/uniswap/encoding.js.map +1 -0
  158. package/dist/swap/providers/uniswap/markets.d.ts +19 -0
  159. package/dist/swap/providers/uniswap/markets.d.ts.map +1 -0
  160. package/dist/swap/providers/uniswap/markets.js +48 -0
  161. package/dist/swap/providers/uniswap/markets.js.map +1 -0
  162. package/dist/swap/providers/uniswap/types.d.ts +21 -0
  163. package/dist/swap/providers/uniswap/types.d.ts.map +1 -0
  164. package/dist/swap/providers/uniswap/types.js +2 -0
  165. package/dist/swap/providers/uniswap/types.js.map +1 -0
  166. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +49 -0
  167. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
  168. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js +140 -0
  169. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
  170. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +2 -0
  171. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
  172. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +255 -0
  173. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
  174. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +2 -0
  175. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
  176. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +166 -0
  177. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
  178. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +2 -0
  179. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
  180. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +419 -0
  181. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
  182. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts +2 -0
  183. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
  184. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js +51 -0
  185. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
  186. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts +14 -0
  187. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
  188. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js +13 -0
  189. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
  190. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts +2 -0
  191. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
  192. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js +173 -0
  193. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
  194. package/dist/swap/providers/velodrome/abis.d.ts +396 -0
  195. package/dist/swap/providers/velodrome/abis.d.ts.map +1 -0
  196. package/dist/swap/providers/velodrome/abis.js +257 -0
  197. package/dist/swap/providers/velodrome/abis.js.map +1 -0
  198. package/dist/swap/providers/velodrome/addresses.d.ts +39 -0
  199. package/dist/swap/providers/velodrome/addresses.d.ts.map +1 -0
  200. package/dist/swap/providers/velodrome/addresses.js +57 -0
  201. package/dist/swap/providers/velodrome/addresses.js.map +1 -0
  202. package/dist/swap/providers/velodrome/config.d.ts +22 -0
  203. package/dist/swap/providers/velodrome/config.d.ts.map +1 -0
  204. package/dist/swap/providers/velodrome/config.js +29 -0
  205. package/dist/swap/providers/velodrome/config.js.map +1 -0
  206. package/dist/swap/providers/velodrome/encoding/helpers.d.ts +37 -0
  207. package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
  208. package/dist/swap/providers/velodrome/encoding/helpers.js +60 -0
  209. package/dist/swap/providers/velodrome/encoding/helpers.js.map +1 -0
  210. package/dist/swap/providers/velodrome/encoding/index.d.ts +8 -0
  211. package/dist/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
  212. package/dist/swap/providers/velodrome/encoding/index.js +5 -0
  213. package/dist/swap/providers/velodrome/encoding/index.js.map +1 -0
  214. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts +39 -0
  215. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
  216. package/dist/swap/providers/velodrome/encoding/poolRouter.js +83 -0
  217. package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
  218. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +15 -0
  219. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +1 -0
  220. package/dist/swap/providers/velodrome/encoding/routers/approval.js +33 -0
  221. package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +1 -0
  222. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts +40 -0
  223. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
  224. package/dist/swap/providers/velodrome/encoding/routers/cl.js +80 -0
  225. package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
  226. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts +42 -0
  227. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
  228. package/dist/swap/providers/velodrome/encoding/routers/v2.js +166 -0
  229. package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
  230. package/dist/swap/providers/velodrome/markets.d.ts +21 -0
  231. package/dist/swap/providers/velodrome/markets.d.ts.map +1 -0
  232. package/dist/swap/providers/velodrome/markets.js +69 -0
  233. package/dist/swap/providers/velodrome/markets.js.map +1 -0
  234. package/dist/swap/providers/velodrome/types.d.ts +31 -0
  235. package/dist/swap/providers/velodrome/types.d.ts.map +1 -0
  236. package/dist/swap/providers/velodrome/types.js +2 -0
  237. package/dist/swap/providers/velodrome/types.js.map +1 -0
  238. package/dist/types/actions.d.ts +60 -11
  239. package/dist/types/actions.d.ts.map +1 -1
  240. package/dist/types/asset.d.ts +7 -9
  241. package/dist/types/asset.d.ts.map +1 -1
  242. package/dist/types/chain.d.ts +2 -2
  243. package/dist/types/chain.d.ts.map +1 -1
  244. package/dist/types/index.d.ts +2 -0
  245. package/dist/types/index.d.ts.map +1 -1
  246. package/dist/types/index.js +2 -0
  247. package/dist/types/index.js.map +1 -1
  248. package/dist/types/lend/base.d.ts +9 -19
  249. package/dist/types/lend/base.d.ts.map +1 -1
  250. package/dist/types/lend/base.js.map +1 -1
  251. package/dist/types/lend/contracts.d.ts +2 -1
  252. package/dist/types/lend/contracts.d.ts.map +1 -1
  253. package/dist/types/providers.d.ts +21 -0
  254. package/dist/types/providers.d.ts.map +1 -0
  255. package/dist/types/providers.js +2 -0
  256. package/dist/types/providers.js.map +1 -0
  257. package/dist/types/swap/base.d.ts +338 -0
  258. package/dist/types/swap/base.d.ts.map +1 -0
  259. package/dist/types/swap/base.js +4 -0
  260. package/dist/types/swap/base.js.map +1 -0
  261. package/dist/types/swap/index.d.ts +2 -0
  262. package/dist/types/swap/index.d.ts.map +1 -0
  263. package/dist/types/swap/index.js +2 -0
  264. package/dist/types/swap/index.js.map +1 -0
  265. package/dist/types/transaction.d.ts +14 -0
  266. package/dist/types/transaction.d.ts.map +1 -0
  267. package/dist/types/transaction.js +2 -0
  268. package/dist/types/transaction.js.map +1 -0
  269. package/dist/utils/approve.d.ts +82 -0
  270. package/dist/utils/approve.d.ts.map +1 -0
  271. package/dist/utils/approve.js +134 -0
  272. package/dist/utils/approve.js.map +1 -0
  273. package/dist/utils/approve.test.d.ts +2 -0
  274. package/dist/utils/approve.test.d.ts.map +1 -0
  275. package/dist/utils/approve.test.js +203 -0
  276. package/dist/utils/approve.test.js.map +1 -0
  277. package/dist/utils/assets.d.ts +10 -5
  278. package/dist/utils/assets.d.ts.map +1 -1
  279. package/dist/utils/assets.js +14 -11
  280. package/dist/utils/assets.js.map +1 -1
  281. package/dist/utils/assets.test.js +13 -1
  282. package/dist/utils/assets.test.js.map +1 -1
  283. package/dist/utils/validateAddresses.d.ts +32 -0
  284. package/dist/utils/validateAddresses.d.ts.map +1 -0
  285. package/dist/utils/validateAddresses.js +103 -0
  286. package/dist/utils/validateAddresses.js.map +1 -0
  287. package/dist/utils/validateAddresses.test.d.ts +2 -0
  288. package/dist/utils/validateAddresses.test.d.ts.map +1 -0
  289. package/dist/utils/validateAddresses.test.js +314 -0
  290. package/dist/utils/validateAddresses.test.js.map +1 -0
  291. package/dist/utils/validation.d.ts +12 -0
  292. package/dist/utils/validation.d.ts.map +1 -0
  293. package/dist/utils/validation.js +44 -0
  294. package/dist/utils/validation.js.map +1 -0
  295. package/dist/wallet/core/namespace/WalletNamespace.d.ts +21 -9
  296. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  297. package/dist/wallet/core/namespace/WalletNamespace.js +44 -15
  298. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  299. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
  300. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  301. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +4 -10
  302. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  303. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +2 -1
  304. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  305. package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -7
  306. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  307. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +5 -6
  308. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  309. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +5 -1
  310. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  311. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +2 -2
  312. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  313. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +12 -12
  314. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  315. package/dist/wallet/core/wallets/abstract/Wallet.js +9 -4
  316. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  317. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +10 -1
  318. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
  319. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +2 -2
  320. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
  321. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +12 -4
  322. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  323. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +5 -7
  324. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  325. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +6 -5
  326. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  327. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  328. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +4 -6
  329. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  330. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -1
  331. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  332. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +2 -4
  333. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  334. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +8 -9
  335. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  336. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +4 -4
  337. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  338. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +3 -6
  339. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  340. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +4 -2
  341. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  342. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +4 -6
  343. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  344. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +4 -3
  345. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  346. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -6
  347. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  348. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  349. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  350. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -6
  351. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  352. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +7 -2
  353. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  354. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +1 -0
  355. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  356. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +5 -6
  357. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  358. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +6 -2
  359. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  360. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -0
  361. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  362. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +5 -8
  363. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  364. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -4
  365. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  366. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +2 -4
  367. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
  368. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +11 -13
  369. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  370. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +6 -6
  371. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  372. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +7 -6
  373. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  374. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +5 -3
  375. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  376. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +2 -6
  377. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  378. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  379. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +5 -6
  380. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  381. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  382. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  383. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -6
  384. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  385. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  386. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  387. package/package.json +4 -3
  388. package/src/__mocks__/MockAssets.ts +54 -4
  389. package/src/__tests__/actions.test.ts +1 -5
  390. package/src/actions.ts +106 -71
  391. package/src/constants/assets.ts +792 -5
  392. package/src/constants/contracts.ts +5 -0
  393. package/src/constants/providers.ts +5 -0
  394. package/src/constants/supportedChains.ts +22 -2
  395. package/src/index.ts +76 -6
  396. package/src/lend/__mocks__/MockLendProvider.ts +8 -3
  397. package/src/lend/core/LendProvider.ts +28 -41
  398. package/src/lend/core/__tests__/LendProvider.test.ts +2 -5
  399. package/src/lend/namespaces/BaseLendNamespace.ts +2 -6
  400. package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +12 -5
  401. package/src/lend/providers/aave/AaveLendProvider.ts +3 -7
  402. package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +16 -7
  403. package/src/lend/providers/aave/addresses.ts +82 -64
  404. package/src/lend/providers/aave/sdk.ts +11 -36
  405. package/src/lend/providers/morpho/MorphoLendProvider.ts +4 -16
  406. package/src/lend/providers/morpho/__tests__/api.test.ts +65 -44
  407. package/src/lend/providers/morpho/__tests__/sdk.test.ts +43 -42
  408. package/src/lend/providers/morpho/api.ts +7 -4
  409. package/src/lend/providers/morpho/contracts.ts +62 -13
  410. package/src/lend/providers/morpho/sdk.ts +85 -54
  411. package/src/services/ChainManager.ts +12 -21
  412. package/src/services/__mocks__/MockChainManager.ts +4 -7
  413. package/src/services/tokenBalance.spec.ts +20 -24
  414. package/src/services/tokenBalance.ts +39 -33
  415. package/src/swap/__mocks__/MockSwapProvider.ts +251 -0
  416. package/src/swap/core/SwapProvider.ts +577 -0
  417. package/src/swap/core/__tests__/SwapProvider.test.ts +620 -0
  418. package/src/swap/core/markets.ts +104 -0
  419. package/src/swap/index.ts +19 -0
  420. package/src/swap/namespaces/ActionsSwapNamespace.ts +7 -0
  421. package/src/swap/namespaces/BaseSwapNamespace.ts +258 -0
  422. package/src/swap/namespaces/WalletSwapNamespace.ts +121 -0
  423. package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +365 -0
  424. package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +257 -0
  425. package/src/swap/providers/uniswap/UniswapSwapProvider.ts +217 -0
  426. package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +299 -0
  427. package/src/swap/providers/uniswap/__tests__/sdk.test.ts +369 -0
  428. package/src/swap/providers/uniswap/abis.ts +144 -0
  429. package/src/swap/providers/uniswap/addresses.ts +110 -0
  430. package/src/swap/providers/uniswap/encoding.ts +406 -0
  431. package/src/swap/providers/uniswap/markets.ts +84 -0
  432. package/src/swap/providers/uniswap/types.ts +25 -0
  433. package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +224 -0
  434. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +341 -0
  435. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +202 -0
  436. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +506 -0
  437. package/src/swap/providers/velodrome/__tests__/encoding.cl.test.ts +69 -0
  438. package/src/swap/providers/velodrome/__tests__/encoding.helpers.ts +20 -0
  439. package/src/swap/providers/velodrome/__tests__/encoding.v2.test.ts +235 -0
  440. package/src/swap/providers/velodrome/abis.ts +264 -0
  441. package/src/swap/providers/velodrome/addresses.ts +107 -0
  442. package/src/swap/providers/velodrome/config.ts +46 -0
  443. package/src/swap/providers/velodrome/encoding/helpers.ts +82 -0
  444. package/src/swap/providers/velodrome/encoding/index.ts +7 -0
  445. package/src/swap/providers/velodrome/encoding/poolRouter.ts +124 -0
  446. package/src/swap/providers/velodrome/encoding/routers/approval.ts +45 -0
  447. package/src/swap/providers/velodrome/encoding/routers/cl.ts +156 -0
  448. package/src/swap/providers/velodrome/encoding/routers/v2.ts +267 -0
  449. package/src/swap/providers/velodrome/markets.ts +100 -0
  450. package/src/swap/providers/velodrome/types.ts +30 -0
  451. package/src/types/actions.ts +68 -12
  452. package/src/types/asset.ts +12 -9
  453. package/src/types/chain.ts +2 -2
  454. package/src/types/index.ts +2 -0
  455. package/src/types/lend/base.ts +10 -20
  456. package/src/types/lend/contracts.ts +5 -1
  457. package/src/types/providers.ts +22 -0
  458. package/src/types/swap/base.ts +372 -0
  459. package/src/types/swap/index.ts +1 -0
  460. package/src/types/transaction.ts +14 -0
  461. package/src/utils/approve.test.ts +258 -0
  462. package/src/utils/approve.ts +197 -0
  463. package/src/utils/assets.test.ts +16 -1
  464. package/src/utils/assets.ts +27 -10
  465. package/src/utils/validateAddresses.test.ts +439 -0
  466. package/src/utils/validateAddresses.ts +153 -0
  467. package/src/utils/validation.ts +76 -0
  468. package/src/wallet/core/namespace/WalletNamespace.ts +70 -16
  469. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +8 -4
  470. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +6 -10
  471. package/src/wallet/core/providers/hosted/types/index.ts +9 -7
  472. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +10 -10
  473. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +2 -0
  474. package/src/wallet/core/wallets/abstract/Wallet.ts +23 -14
  475. package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +13 -1
  476. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +21 -5
  477. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +11 -14
  478. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
  479. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +11 -7
  480. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +16 -8
  481. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
  482. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +6 -7
  483. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +8 -11
  484. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +7 -11
  485. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +11 -7
  486. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +1 -0
  487. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +10 -7
  488. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -0
  489. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +10 -9
  490. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +38 -13
  491. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
  492. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +13 -11
  493. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
  494. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +11 -11
  495. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +11 -11
  496. package/dist/supported/tokens.d.ts +0 -25
  497. package/dist/supported/tokens.d.ts.map +0 -1
  498. package/dist/supported/tokens.js +0 -37
  499. package/dist/supported/tokens.js.map +0 -1
  500. package/src/supported/tokens.ts +0 -52
@@ -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
@@ -1,6 +1,8 @@
1
1
  import type { Address } from 'viem'
2
+ import { mainnet } from 'viem/chains'
2
3
  import { afterEach, describe, expect, it, vi } from 'vitest'
3
4
 
5
+ import { MORPHO, USDC } from '@/constants/assets.js'
4
6
  import { fetchRewards } from '@/lend/providers/morpho/api.js'
5
7
  import {
6
8
  calculateRewardsBreakdown,
@@ -8,6 +10,10 @@ import {
8
10
  } from '@/lend/providers/morpho/sdk.js'
9
11
  import { externalTest } from '@/utils/test.js'
10
12
 
13
+ const CHAIN_ID = mainnet.id
14
+ const USDC_ADDRESS = USDC.address[CHAIN_ID]!.toLowerCase()
15
+ const MORPHO_ADDRESS = MORPHO.address[CHAIN_ID]!.toLowerCase()
16
+
11
17
  /**
12
18
  * Mock API response for a vault with rewards
13
19
  */
@@ -18,20 +24,20 @@ const mockVaultWithRewards = {
18
24
  rewards: [
19
25
  {
20
26
  asset: {
21
- address: '0x078d782b760474a361dda0af3839290b0ef57ad6',
27
+ address: USDC_ADDRESS,
22
28
  name: 'USD Coin',
23
29
  symbol: 'USDC',
24
- chain: { id: 130 },
30
+ chain: { id: CHAIN_ID },
25
31
  },
26
32
  amountPerSuppliedToken: '1000000',
27
33
  supplyApr: 0.025, // 2.5% APR
28
34
  },
29
35
  {
30
36
  asset: {
31
- address: '0x9994e35db50125e0df82e4c2dde62496ce330999',
37
+ address: MORPHO_ADDRESS,
32
38
  name: 'Morpho Token',
33
39
  symbol: 'MORPHO',
34
- chain: { id: 130 },
40
+ chain: { id: CHAIN_ID },
35
41
  },
36
42
  amountPerSuppliedToken: '500000',
37
43
  supplyApr: 0.01, // 1% APR
@@ -50,7 +56,7 @@ const mockVaultWithRewards = {
50
56
  asset: {
51
57
  address: '0xunknown',
52
58
  symbol: 'UNKNOWN',
53
- chain: { id: 130 },
59
+ chain: { id: CHAIN_ID },
54
60
  },
55
61
  },
56
62
  ],
@@ -70,7 +76,7 @@ const mockVaultWithRewards = {
70
76
  },
71
77
  ],
72
78
  },
73
- chain: { id: 130 },
79
+ chain: { id: CHAIN_ID },
74
80
  }
75
81
 
76
82
  /**
@@ -83,7 +89,7 @@ const mockVaultNoRewards = {
83
89
  rewards: [],
84
90
  allocation: [],
85
91
  },
86
- chain: { id: 130 },
92
+ chain: { id: CHAIN_ID },
87
93
  }
88
94
 
89
95
  describe('Morpho API Integration', () => {
@@ -107,7 +113,7 @@ describe('Morpho API Integration', () => {
107
113
  }),
108
114
  )
109
115
 
110
- const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT)
116
+ const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT, CHAIN_ID)
111
117
 
112
118
  expect(vaultData).toBeDefined()
113
119
  expect(vaultData).not.toBeNull()
@@ -129,7 +135,7 @@ describe('Morpho API Integration', () => {
129
135
  }),
130
136
  )
131
137
 
132
- const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT)
138
+ const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT, CHAIN_ID)
133
139
  expect(vaultData).toBeNull()
134
140
  })
135
141
 
@@ -139,7 +145,7 @@ describe('Morpho API Integration', () => {
139
145
  vi.fn().mockRejectedValue(new Error('Network error')),
140
146
  )
141
147
 
142
- const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT)
148
+ const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT, CHAIN_ID)
143
149
  expect(vaultData).toBeNull()
144
150
  })
145
151
 
@@ -153,17 +159,17 @@ describe('Morpho API Integration', () => {
153
159
  }),
154
160
  )
155
161
 
156
- const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT)
162
+ const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT, CHAIN_ID)
157
163
  expect(vaultData).toBeNull()
158
164
  })
159
165
  })
160
166
 
161
167
  describe('calculateRewardsBreakdown', () => {
162
- it('should calculate rewards from vault-level rewards', () => {
163
- const rewards = calculateRewardsBreakdown(mockVaultWithRewards)
168
+ it('should calculate rewards from vault-level rewards keyed by address', () => {
169
+ const rewards = calculateRewardsBreakdown(mockVaultWithRewards, CHAIN_ID)
164
170
 
165
- expect(rewards.usdc).toBe(0.025)
166
- expect(rewards.morpho).toBe(0.01)
171
+ expect(rewards[USDC_ADDRESS]).toBe(0.025)
172
+ expect(rewards[MORPHO_ADDRESS]).toBe(0.01)
167
173
  expect(rewards.totalRewards).toBeCloseTo(
168
174
  0.025 + 0.01 + 0.005 * (1000000 / 1500000),
169
175
  6,
@@ -171,21 +177,21 @@ describe('Morpho API Integration', () => {
171
177
  })
172
178
 
173
179
  it('should return zeros for vault with no rewards', () => {
174
- const rewards = calculateRewardsBreakdown(mockVaultNoRewards)
180
+ const rewards = calculateRewardsBreakdown(mockVaultNoRewards, CHAIN_ID)
175
181
 
176
- expect(rewards.usdc).toBe(0)
177
- expect(rewards.morpho).toBe(0)
182
+ expect(rewards[USDC_ADDRESS]).toBe(0)
183
+ expect(rewards[MORPHO_ADDRESS]).toBe(0)
178
184
  expect(rewards.other).toBe(0)
179
185
  expect(rewards.totalRewards).toBe(0)
180
186
  })
181
187
 
182
- it('should categorize unknown tokens as other', () => {
188
+ it('should categorize unknown token addresses as other', () => {
183
189
  const vaultWithUnknown = {
184
190
  ...mockVaultNoRewards,
185
191
  state: {
186
192
  rewards: [
187
193
  {
188
- asset: { symbol: 'RARE_TOKEN' },
194
+ asset: { address: '0xunknowntoken', symbol: 'RARE_TOKEN' },
189
195
  supplyApr: 0.05,
190
196
  },
191
197
  ],
@@ -193,7 +199,7 @@ describe('Morpho API Integration', () => {
193
199
  },
194
200
  }
195
201
 
196
- const rewards = calculateRewardsBreakdown(vaultWithUnknown)
202
+ const rewards = calculateRewardsBreakdown(vaultWithUnknown, CHAIN_ID)
197
203
 
198
204
  expect(rewards.other).toBe(0.05)
199
205
  })
@@ -207,7 +213,12 @@ describe('Morpho API Integration', () => {
207
213
  {
208
214
  market: {
209
215
  state: {
210
- rewards: [{ asset: { symbol: 'USDC' }, supplyApr: 0.1 }],
216
+ rewards: [
217
+ {
218
+ asset: { address: USDC_ADDRESS, symbol: 'USDC' },
219
+ supplyApr: 0.1,
220
+ },
221
+ ],
211
222
  },
212
223
  },
213
224
  supplyAssetsUsd: 750000, // 75% of total
@@ -215,7 +226,12 @@ describe('Morpho API Integration', () => {
215
226
  {
216
227
  market: {
217
228
  state: {
218
- rewards: [{ asset: { symbol: 'USDC' }, supplyApr: 0.02 }],
229
+ rewards: [
230
+ {
231
+ asset: { address: USDC_ADDRESS, symbol: 'USDC' },
232
+ supplyApr: 0.02,
233
+ },
234
+ ],
219
235
  },
220
236
  },
221
237
  supplyAssetsUsd: 250000, // 25% of total
@@ -224,10 +240,13 @@ describe('Morpho API Integration', () => {
224
240
  },
225
241
  }
226
242
 
227
- const rewards = calculateRewardsBreakdown(vaultWithMarketRewards)
243
+ const rewards = calculateRewardsBreakdown(
244
+ vaultWithMarketRewards,
245
+ CHAIN_ID,
246
+ )
228
247
 
229
248
  // Expected: 0.1 * 0.75 + 0.02 * 0.25 = 0.075 + 0.005 = 0.08
230
- expect(rewards.usdc).toBeCloseTo(0.08, 6)
249
+ expect(rewards[USDC_ADDRESS]).toBeCloseTo(0.08, 6)
231
250
  })
232
251
  })
233
252
 
@@ -244,15 +263,18 @@ describe('Morpho API Integration', () => {
244
263
  }),
245
264
  )
246
265
 
247
- const rewards = await fetchAndCalculateRewards(GAUNTLET_USDC_VAULT)
266
+ const rewards = await fetchAndCalculateRewards(
267
+ GAUNTLET_USDC_VAULT,
268
+ CHAIN_ID,
269
+ )
248
270
 
249
271
  expect(rewards).toBeDefined()
250
- expect(typeof rewards.usdc).toBe('number')
251
- expect(typeof rewards.morpho).toBe('number')
272
+ expect(typeof rewards[USDC_ADDRESS]).toBe('number')
273
+ expect(typeof rewards[MORPHO_ADDRESS]).toBe('number')
252
274
  expect(typeof rewards.other).toBe('number')
253
275
  expect(typeof rewards.totalRewards).toBe('number')
254
- expect(rewards.usdc).toBeGreaterThan(0)
255
- expect(rewards.morpho).toBeGreaterThan(0)
276
+ expect(rewards[USDC_ADDRESS]).toBeGreaterThan(0)
277
+ expect(rewards[MORPHO_ADDRESS]).toBeGreaterThan(0)
256
278
  })
257
279
 
258
280
  it('should return empty rewards when vault not found', async () => {
@@ -267,10 +289,13 @@ describe('Morpho API Integration', () => {
267
289
  }),
268
290
  )
269
291
 
270
- const rewards = await fetchAndCalculateRewards(GAUNTLET_USDC_VAULT)
292
+ const rewards = await fetchAndCalculateRewards(
293
+ GAUNTLET_USDC_VAULT,
294
+ CHAIN_ID,
295
+ )
271
296
 
272
- expect(rewards.usdc).toBe(0)
273
- expect(rewards.morpho).toBe(0)
297
+ expect(rewards[USDC_ADDRESS]).toBe(0)
298
+ expect(rewards[MORPHO_ADDRESS]).toBe(0)
274
299
  expect(rewards.other).toBe(0)
275
300
  expect(rewards.totalRewards).toBe(0)
276
301
  })
@@ -279,7 +304,7 @@ describe('Morpho API Integration', () => {
279
304
  // External tests that make real network requests (only run with EXTERNAL_TEST=true)
280
305
  describe.runIf(externalTest())('External API Tests', () => {
281
306
  it('should fetch raw vault data from Morpho GraphQL API', async () => {
282
- const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT)
307
+ const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT, CHAIN_ID)
283
308
 
284
309
  expect(vaultData).toBeDefined()
285
310
  expect(vaultData).not.toBeNull()
@@ -290,33 +315,29 @@ describe('Morpho API Integration', () => {
290
315
  }, 30000)
291
316
 
292
317
  it('should fetch and calculate rewards breakdown', async () => {
293
- const rewards = await fetchAndCalculateRewards(GAUNTLET_USDC_VAULT)
318
+ const rewards = await fetchAndCalculateRewards(
319
+ GAUNTLET_USDC_VAULT,
320
+ CHAIN_ID,
321
+ )
294
322
 
295
323
  expect(rewards).toBeDefined()
296
- expect(typeof rewards.usdc).toBe('number')
297
- expect(typeof rewards.morpho).toBe('number')
298
324
  expect(typeof rewards.other).toBe('number')
299
325
  expect(typeof rewards.totalRewards).toBe('number')
300
326
 
301
- expect(rewards.usdc).toBeGreaterThanOrEqual(0)
302
- expect(rewards.morpho).toBeGreaterThanOrEqual(0)
303
327
  expect(rewards.other).toBeGreaterThanOrEqual(0)
304
328
  expect(rewards.totalRewards).toBeGreaterThanOrEqual(0)
305
-
306
- const expectedTotal = rewards.usdc + rewards.morpho + rewards.other
307
- expect(rewards.totalRewards).toBeCloseTo(expectedTotal, 6)
308
329
  }, 30000)
309
330
 
310
331
  it('should handle non-existent vault gracefully', async () => {
311
332
  const nonExistentVault =
312
333
  '0x0000000000000000000000000000000000000000' as Address
313
334
 
314
- const vaultData = await fetchRewards(nonExistentVault)
335
+ const vaultData = await fetchRewards(nonExistentVault, CHAIN_ID)
315
336
  expect(vaultData).toBeNull()
316
337
  }, 30000)
317
338
 
318
339
  it('should validate GraphQL response structure', async () => {
319
- const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT)
340
+ const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT, CHAIN_ID)
320
341
 
321
342
  expect(vaultData).toMatchObject({
322
343
  address: expect.any(String),
@@ -1,10 +1,16 @@
1
+ import { mainnet } from 'viem/chains'
1
2
  import { describe, expect, it } from 'vitest'
2
3
 
4
+ import { MORPHO, USDC } from '@/constants/assets.js'
3
5
  import {
4
6
  calculateBaseApy,
5
7
  calculateRewardsBreakdown,
6
8
  } from '@/lend/providers/morpho/sdk.js'
7
9
 
10
+ const CHAIN_ID = mainnet.id
11
+ const USDC_ADDRESS = USDC.address[CHAIN_ID]!.toLowerCase()
12
+ const MORPHO_ADDRESS = MORPHO.address[CHAIN_ID]!.toLowerCase()
13
+
8
14
  describe('Vault Utilities', () => {
9
15
  describe('calculateBaseApy', () => {
10
16
  it('should return 0 for vault with no assets', () => {
@@ -157,39 +163,34 @@ describe('Vault Utilities', () => {
157
163
  },
158
164
  }
159
165
 
160
- const result = calculateRewardsBreakdown(apiVault)
161
-
162
- expect(result).toEqual({
163
- usdc: 0,
164
- usdc_demo: 0,
165
- morpho: 0,
166
- eth: 0,
167
- weth: 0,
168
- other: 0,
169
- totalRewards: 0,
170
- })
166
+ const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
167
+
168
+ expect(result[USDC_ADDRESS]).toBe(0)
169
+ expect(result[MORPHO_ADDRESS]).toBe(0)
170
+ expect(result.other).toBe(0)
171
+ expect(result.totalRewards).toBe(0)
171
172
  })
172
173
 
173
- it('should categorize vault-level rewards by chain ID', () => {
174
+ it('should categorize vault-level rewards by address', () => {
174
175
  const apiVault = {
175
176
  state: {
176
177
  rewards: [
177
178
  {
178
179
  supplyApr: 0.03, // 3% USDC rewards
179
180
  asset: {
180
- address: '0x078d782b760474a361dda0af3839290b0ef57ad6',
181
+ address: USDC_ADDRESS,
181
182
  name: 'USDC',
182
183
  symbol: 'USDC',
183
- chain: { id: 130 }, // Unichain = USDC rewards
184
+ chain: { id: CHAIN_ID },
184
185
  },
185
186
  },
186
187
  {
187
188
  supplyApr: 0.015, // 1.5% MORPHO rewards
188
189
  asset: {
189
- address: '0x58D97B57BB95320F9a05dC918Aef65434969c2B2',
190
+ address: MORPHO_ADDRESS,
190
191
  name: 'MORPHO',
191
192
  symbol: 'MORPHO',
192
- chain: { id: 1 }, // Ethereum = MORPHO rewards
193
+ chain: { id: CHAIN_ID },
193
194
  },
194
195
  },
195
196
  ],
@@ -197,10 +198,10 @@ describe('Vault Utilities', () => {
197
198
  },
198
199
  }
199
200
 
200
- const result = calculateRewardsBreakdown(apiVault)
201
+ const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
201
202
 
202
- expect(result.usdc).toBeCloseTo(0.03, 4)
203
- expect(result.morpho).toBeCloseTo(0.015, 4)
203
+ expect(result[USDC_ADDRESS]).toBeCloseTo(0.03, 4)
204
+ expect(result[MORPHO_ADDRESS]).toBeCloseTo(0.015, 4)
204
205
  expect(result.other).toBe(0)
205
206
  expect(result.totalRewards).toBeCloseTo(0.045, 4)
206
207
  })
@@ -219,9 +220,9 @@ describe('Vault Utilities', () => {
219
220
  {
220
221
  supplyApr: 0.02, // 2% reward
221
222
  asset: {
222
- address: '0x078d782b760474a361dda0af3839290b0ef57ad6',
223
+ address: USDC_ADDRESS,
223
224
  symbol: 'USDC',
224
- chain: { id: 130 }, // USDC reward
225
+ chain: { id: CHAIN_ID },
225
226
  },
226
227
  },
227
228
  ],
@@ -237,9 +238,9 @@ describe('Vault Utilities', () => {
237
238
  {
238
239
  supplyApr: 0.05, // 5% reward
239
240
  asset: {
240
- address: '0x58D97B57BB95320F9a05dC918Aef65434969c2B2',
241
+ address: MORPHO_ADDRESS,
241
242
  symbol: 'MORPHO',
242
- chain: { id: 1 }, // MORPHO reward
243
+ chain: { id: CHAIN_ID },
243
244
  },
244
245
  },
245
246
  ],
@@ -250,13 +251,13 @@ describe('Vault Utilities', () => {
250
251
  },
251
252
  }
252
253
 
253
- const result = calculateRewardsBreakdown(apiVault)
254
+ const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
254
255
 
255
256
  // Expected calculation:
256
257
  // USDC: 2% * (600k / 1M) = 1.2%
257
258
  // MORPHO: 5% * (400k / 1M) = 2%
258
- expect(result.usdc).toBeCloseTo(0.012, 4)
259
- expect(result.morpho).toBeCloseTo(0.02, 4)
259
+ expect(result[USDC_ADDRESS]).toBeCloseTo(0.012, 4)
260
+ expect(result[MORPHO_ADDRESS]).toBeCloseTo(0.02, 4)
260
261
  expect(result.other).toBe(0)
261
262
  expect(result.totalRewards).toBeCloseTo(0.032, 4)
262
263
  })
@@ -268,9 +269,9 @@ describe('Vault Utilities', () => {
268
269
  {
269
270
  supplyApr: 0.01, // 1% vault-level USDC reward
270
271
  asset: {
271
- address: '0xBAa5CC21fd487B8Fcc2F632f3F4E8D37262a0842',
272
+ address: USDC_ADDRESS,
272
273
  symbol: 'USDC',
273
- chain: { id: 130 },
274
+ chain: { id: CHAIN_ID },
274
275
  },
275
276
  },
276
277
  ],
@@ -284,9 +285,9 @@ describe('Vault Utilities', () => {
284
285
  {
285
286
  supplyApr: 0.015, // 1.5% market-level MORPHO reward
286
287
  asset: {
287
- address: '0x58D97B57BB95320F9a05dC918Aef65434969c2B2',
288
+ address: MORPHO_ADDRESS,
288
289
  symbol: 'MORPHO',
289
- chain: { id: 1 },
290
+ chain: { id: CHAIN_ID },
290
291
  },
291
292
  },
292
293
  ],
@@ -297,14 +298,14 @@ describe('Vault Utilities', () => {
297
298
  },
298
299
  }
299
300
 
300
- const result = calculateRewardsBreakdown(apiVault)
301
+ const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
301
302
 
302
- expect(result.usdc).toBeCloseTo(0.01, 4) // Vault-level
303
- expect(result.morpho).toBeCloseTo(0.015, 4) // Market-level (100% weight)
303
+ expect(result[USDC_ADDRESS]).toBeCloseTo(0.01, 4) // Vault-level
304
+ expect(result[MORPHO_ADDRESS]).toBeCloseTo(0.015, 4) // Market-level (100% weight)
304
305
  expect(result.totalRewards).toBeCloseTo(0.025, 4)
305
306
  })
306
307
 
307
- it('should categorize unknown tokens as other rewards', () => {
308
+ it('should categorize unknown token addresses as other', () => {
308
309
  const apiVault = {
309
310
  state: {
310
311
  rewards: [
@@ -314,7 +315,7 @@ describe('Vault Utilities', () => {
314
315
  address: '0x1234567890123456789012345678901234567890',
315
316
  name: 'UNKNOWN',
316
317
  symbol: 'UNKNOWN',
317
- chain: { id: 42 }, // Unknown chain
318
+ chain: { id: CHAIN_ID },
318
319
  },
319
320
  },
320
321
  ],
@@ -322,10 +323,10 @@ describe('Vault Utilities', () => {
322
323
  },
323
324
  }
324
325
 
325
- const result = calculateRewardsBreakdown(apiVault)
326
+ const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
326
327
 
327
- expect(result.usdc).toBe(0)
328
- expect(result.morpho).toBe(0)
328
+ expect(result[USDC_ADDRESS]).toBe(0)
329
+ expect(result[MORPHO_ADDRESS]).toBe(0)
329
330
  expect(result.other).toBeCloseTo(0.005, 4)
330
331
  expect(result.totalRewards).toBeCloseTo(0.005, 4)
331
332
  })
@@ -344,9 +345,9 @@ describe('Vault Utilities', () => {
344
345
  {
345
346
  supplyApr: 0.1, // High reward but no weight
346
347
  asset: {
347
- address: '0xBAa5CC21fd487B8Fcc2F632f3F4E8D37262a0842',
348
+ address: USDC_ADDRESS,
348
349
  symbol: 'USDC',
349
- chain: { id: 130 },
350
+ chain: { id: CHAIN_ID },
350
351
  },
351
352
  },
352
353
  ],
@@ -357,10 +358,10 @@ describe('Vault Utilities', () => {
357
358
  },
358
359
  }
359
360
 
360
- const result = calculateRewardsBreakdown(apiVault)
361
+ const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
361
362
 
362
363
  // Should be zero because total supply is zero (weight = 0)
363
- expect(result.usdc).toBe(0)
364
+ expect(result[USDC_ADDRESS]).toBe(0)
364
365
  expect(result.totalRewards).toBe(0)
365
366
  })
366
367
  })
@@ -3,8 +3,8 @@ import type { Address } from 'viem'
3
3
  const MORPHO_API_ENDPOINT = 'https://api.morpho.org/graphql'
4
4
 
5
5
  export interface RewardsBreakdown {
6
- usdc: number
7
- morpho: number
6
+ /** Reward APR per token, keyed by lowercase token address. 'other' for unrecognized tokens. */
7
+ [tokenAddress: string]: number
8
8
  other: number
9
9
  totalRewards: number
10
10
  }
@@ -14,7 +14,10 @@ export interface RewardsBreakdown {
14
14
  * @param vaultAddress - Vault address
15
15
  * @returns Promise resolving to raw vault data or null if not found
16
16
  */
17
- export async function fetchRewards(vaultAddress: Address): Promise<any | null> {
17
+ export async function fetchRewards(
18
+ vaultAddress: Address,
19
+ chainId: number,
20
+ ): Promise<any | null> {
18
21
  const vaultQuery = {
19
22
  query: `
20
23
  query VaultByAddress($address: String!, $chainId: Int) {
@@ -63,7 +66,7 @@ export async function fetchRewards(vaultAddress: Address): Promise<any | null> {
63
66
  `,
64
67
  variables: {
65
68
  address: vaultAddress.toLowerCase(),
66
- chainId: 130,
69
+ chainId,
67
70
  },
68
71
  }
69
72