@eth-optimism/actions-sdk 0.1.0 → 0.2.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 (283) hide show
  1. package/LICENSE +1 -1
  2. package/dist/__mocks__/MockAssets.d.ts.map +1 -0
  3. package/dist/__mocks__/MockAssets.js.map +1 -0
  4. package/dist/__mocks__/MockPrivyClient.d.ts.map +1 -0
  5. package/dist/__mocks__/MockPrivyClient.js.map +1 -0
  6. package/dist/__mocks__/utils.d.ts.map +1 -0
  7. package/dist/__mocks__/utils.js.map +1 -0
  8. package/dist/__tests__/actions.test.d.ts.map +1 -0
  9. package/dist/{actions.test.js → __tests__/actions.test.js} +5 -5
  10. package/dist/__tests__/actions.test.js.map +1 -0
  11. package/dist/constants/assets.d.ts +19 -0
  12. package/dist/constants/assets.d.ts.map +1 -1
  13. package/dist/constants/assets.js +84 -6
  14. package/dist/constants/assets.js.map +1 -1
  15. package/dist/constants/supportedChains.d.ts +1 -1
  16. package/dist/constants/supportedChains.d.ts.map +1 -1
  17. package/dist/constants/supportedChains.js +7 -3
  18. package/dist/constants/supportedChains.js.map +1 -1
  19. package/dist/core/asset/__mocks__/mockAsset.js +1 -1
  20. package/dist/core/asset/__mocks__/mockAsset.js.map +1 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/{test → lend/__mocks__}/MockLendProvider.d.ts +7 -6
  26. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -0
  27. package/dist/{test → lend/__mocks__}/MockLendProvider.js +20 -21
  28. package/dist/lend/__mocks__/MockLendProvider.js.map +1 -0
  29. package/dist/{test → lend/__mocks__}/MockMarkets.d.ts +1 -1
  30. package/dist/lend/__mocks__/MockMarkets.d.ts.map +1 -0
  31. package/dist/{test → lend/__mocks__}/MockMarkets.js +1 -1
  32. package/dist/lend/__mocks__/MockMarkets.js.map +1 -0
  33. package/dist/lend/__mocks__/mockLendTransaction.d.ts +3 -12
  34. package/dist/lend/__mocks__/mockLendTransaction.d.ts.map +1 -1
  35. package/dist/lend/__mocks__/mockLendTransaction.js +3 -19
  36. package/dist/lend/__mocks__/mockLendTransaction.js.map +1 -1
  37. package/dist/lend/core/LendProvider.d.ts +14 -2
  38. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  39. package/dist/lend/core/LendProvider.js +23 -2
  40. package/dist/lend/core/LendProvider.js.map +1 -1
  41. package/dist/lend/core/__tests__/LendProvider.test.js +2 -2
  42. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
  43. package/dist/lend/namespaces/ActionsLendNamespace.d.ts +2 -36
  44. package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -1
  45. package/dist/lend/namespaces/ActionsLendNamespace.js +2 -48
  46. package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -1
  47. package/dist/lend/namespaces/BaseLendNamespace.d.ts +47 -0
  48. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -0
  49. package/dist/lend/namespaces/BaseLendNamespace.js +58 -0
  50. package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -0
  51. package/dist/lend/namespaces/WalletLendNamespace.d.ts +8 -36
  52. package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -1
  53. package/dist/lend/namespaces/WalletLendNamespace.js +14 -69
  54. package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -1
  55. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +2 -2
  56. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -1
  57. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts +2 -0
  58. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts.map +1 -0
  59. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +110 -0
  60. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -0
  61. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +8 -10
  62. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -1
  63. package/dist/lend/providers/aave/AaveLendProvider.d.ts +19 -27
  64. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
  65. package/dist/lend/providers/aave/AaveLendProvider.js +124 -180
  66. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
  67. package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts +11 -0
  68. package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts.map +1 -0
  69. package/dist/lend/providers/aave/__mocks__/mockReserve.js +80 -0
  70. package/dist/lend/providers/aave/__mocks__/mockReserve.js.map +1 -0
  71. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts +2 -0
  72. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts.map +1 -0
  73. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +315 -0
  74. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -0
  75. package/dist/lend/providers/aave/abis/pool.d.ts +153 -0
  76. package/dist/lend/providers/aave/abis/pool.d.ts.map +1 -0
  77. package/dist/lend/providers/aave/abis/pool.js +79 -0
  78. package/dist/lend/providers/aave/abis/pool.js.map +1 -0
  79. package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
  80. package/dist/lend/providers/aave/sdk.js +6 -65
  81. package/dist/lend/providers/aave/sdk.js.map +1 -1
  82. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +0 -1
  83. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  84. package/dist/lend/providers/morpho/MorphoLendProvider.js +13 -28
  85. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  86. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +5 -24
  87. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -1
  88. package/dist/lend/providers/morpho/__tests__/api.test.js +248 -54
  89. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
  90. package/dist/lend/providers/morpho/contracts.d.ts +19 -0
  91. package/dist/lend/providers/morpho/contracts.d.ts.map +1 -0
  92. package/dist/lend/providers/morpho/contracts.js +32 -0
  93. package/dist/lend/providers/morpho/contracts.js.map +1 -0
  94. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  95. package/dist/lend/providers/morpho/sdk.js +168 -71
  96. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  97. package/dist/services/ChainManager.d.ts +1 -1
  98. package/dist/{test → services/__mocks__}/MockChainManager.d.ts +1 -1
  99. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -0
  100. package/dist/services/__mocks__/MockChainManager.js.map +1 -0
  101. package/dist/services/tokenBalance.d.ts.map +1 -1
  102. package/dist/services/tokenBalance.js +4 -5
  103. package/dist/services/tokenBalance.js.map +1 -1
  104. package/dist/services/tokenBalance.spec.js +2 -2
  105. package/dist/services/tokenBalance.spec.js.map +1 -1
  106. package/dist/supported/tokens.d.ts +4 -4
  107. package/dist/supported/tokens.d.ts.map +1 -1
  108. package/dist/supported/tokens.js +5 -72
  109. package/dist/supported/tokens.js.map +1 -1
  110. package/dist/types/asset.d.ts +3 -3
  111. package/dist/types/asset.d.ts.map +1 -1
  112. package/dist/types/lend/base.d.ts +4 -9
  113. package/dist/types/lend/base.d.ts.map +1 -1
  114. package/dist/types/lend/contracts.d.ts +17 -0
  115. package/dist/types/lend/contracts.d.ts.map +1 -0
  116. package/dist/types/lend/contracts.js +2 -0
  117. package/dist/types/lend/contracts.js.map +1 -0
  118. package/dist/types/lend/index.d.ts +1 -0
  119. package/dist/types/lend/index.d.ts.map +1 -1
  120. package/dist/types/lend/index.js +1 -0
  121. package/dist/types/lend/index.js.map +1 -1
  122. package/dist/utils/assets.d.ts +7 -1
  123. package/dist/utils/assets.d.ts.map +1 -1
  124. package/dist/utils/assets.js +12 -1
  125. package/dist/utils/assets.js.map +1 -1
  126. package/dist/utils/assets.test.js +1 -1
  127. package/dist/utils/assets.test.js.map +1 -1
  128. package/dist/utils/constants.d.ts +5 -0
  129. package/dist/utils/constants.d.ts.map +1 -0
  130. package/dist/utils/constants.js +5 -0
  131. package/dist/utils/constants.js.map +1 -0
  132. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  133. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  134. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
  135. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  136. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +4 -4
  137. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
  138. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js +2 -2
  139. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js.map +1 -1
  140. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +3 -3
  141. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  142. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +2 -2
  143. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  144. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js +2 -2
  145. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js.map +1 -1
  146. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +3 -3
  147. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  148. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js +1 -1
  149. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js.map +1 -1
  150. package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js +1 -1
  151. package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js.map +1 -1
  152. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +4 -4
  153. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  154. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +2 -2
  155. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  156. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +2 -2
  157. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  158. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +3 -3
  159. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
  160. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +2 -2
  161. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
  162. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -2
  163. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
  164. package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +1 -1
  165. package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -1
  166. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.d.ts.map +1 -1
  167. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js +1 -1
  168. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js.map +1 -1
  169. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +5 -2
  170. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  171. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.d.ts.map +1 -1
  172. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js +1 -1
  173. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js.map +1 -1
  174. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +2 -2
  175. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  176. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +2 -2
  177. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  178. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +1 -1
  179. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  180. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js +2 -2
  181. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js.map +1 -1
  182. package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js +1 -1
  183. package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js.map +1 -1
  184. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +2 -2
  185. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
  186. package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +1 -1
  187. package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
  188. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -2
  189. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
  190. package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +1 -1
  191. package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -1
  192. package/package.json +1 -1
  193. package/src/{test → __mocks__}/MockPrivyClient.ts +1 -1
  194. package/src/{actions.test.ts → __tests__/actions.test.ts} +2 -2
  195. package/src/constants/assets.ts +92 -8
  196. package/src/constants/supportedChains.ts +10 -2
  197. package/src/core/asset/__mocks__/mockAsset.ts +1 -1
  198. package/src/index.ts +1 -1
  199. package/src/{test → lend/__mocks__}/MockLendProvider.ts +20 -23
  200. package/src/{test → lend/__mocks__}/MockMarkets.ts +1 -1
  201. package/src/lend/__mocks__/mockLendTransaction.ts +4 -26
  202. package/src/lend/core/LendProvider.ts +34 -2
  203. package/src/lend/core/__tests__/LendProvider.test.ts +2 -2
  204. package/src/lend/namespaces/ActionsLendNamespace.ts +2 -85
  205. package/src/lend/namespaces/BaseLendNamespace.ts +89 -0
  206. package/src/lend/namespaces/WalletLendNamespace.ts +25 -121
  207. package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +10 -9
  208. package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +137 -0
  209. package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +19 -22
  210. package/src/lend/providers/aave/AaveLendProvider.ts +163 -231
  211. package/src/lend/providers/aave/__mocks__/mockReserve.ts +84 -0
  212. package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +419 -0
  213. package/src/lend/providers/aave/abis/pool.ts +81 -0
  214. package/src/lend/providers/aave/sdk.ts +7 -69
  215. package/src/lend/providers/morpho/MorphoLendProvider.ts +20 -41
  216. package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +8 -32
  217. package/src/lend/providers/morpho/__tests__/api.test.ts +277 -51
  218. package/src/lend/providers/morpho/contracts.ts +37 -0
  219. package/src/lend/providers/morpho/sdk.ts +232 -84
  220. package/src/services/tokenBalance.spec.ts +2 -2
  221. package/src/services/tokenBalance.ts +6 -7
  222. package/src/supported/tokens.ts +6 -79
  223. package/src/types/asset.ts +3 -3
  224. package/src/types/lend/base.ts +8 -11
  225. package/src/types/lend/contracts.ts +18 -0
  226. package/src/types/lend/index.ts +1 -0
  227. package/src/utils/assets.test.ts +1 -1
  228. package/src/utils/assets.ts +15 -1
  229. package/src/utils/constants.ts +4 -0
  230. package/src/wallet/core/namespace/WalletNamespace.ts +2 -4
  231. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +6 -6
  232. package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +6 -6
  233. package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +3 -3
  234. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +7 -9
  235. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +2 -2
  236. package/src/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.ts +2 -2
  237. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +3 -3
  238. package/src/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.ts +1 -1
  239. package/src/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.ts +1 -1
  240. package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +5 -5
  241. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +3 -3
  242. package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +2 -2
  243. package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +4 -4
  244. package/src/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +2 -2
  245. package/src/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -2
  246. package/src/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +1 -1
  247. package/src/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.ts +1 -1
  248. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +8 -5
  249. package/src/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.ts +1 -1
  250. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +4 -5
  251. package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +2 -2
  252. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +5 -7
  253. package/src/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.ts +2 -2
  254. package/src/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.ts +1 -1
  255. package/src/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +2 -2
  256. package/src/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +1 -1
  257. package/src/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -2
  258. package/src/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +1 -1
  259. package/dist/actions.test.d.ts.map +0 -1
  260. package/dist/actions.test.js.map +0 -1
  261. package/dist/test/MockAssets.d.ts.map +0 -1
  262. package/dist/test/MockAssets.js.map +0 -1
  263. package/dist/test/MockChainManager.d.ts.map +0 -1
  264. package/dist/test/MockChainManager.js.map +0 -1
  265. package/dist/test/MockLendProvider.d.ts.map +0 -1
  266. package/dist/test/MockLendProvider.js.map +0 -1
  267. package/dist/test/MockMarkets.d.ts.map +0 -1
  268. package/dist/test/MockMarkets.js.map +0 -1
  269. package/dist/test/MockPrivyClient.d.ts.map +0 -1
  270. package/dist/test/MockPrivyClient.js.map +0 -1
  271. package/dist/test/utils.d.ts.map +0 -1
  272. package/dist/test/utils.js.map +0 -1
  273. /package/dist/{test → __mocks__}/MockAssets.d.ts +0 -0
  274. /package/dist/{test → __mocks__}/MockAssets.js +0 -0
  275. /package/dist/{test → __mocks__}/MockPrivyClient.d.ts +0 -0
  276. /package/dist/{test → __mocks__}/MockPrivyClient.js +0 -0
  277. /package/dist/{test → __mocks__}/utils.d.ts +0 -0
  278. /package/dist/{test → __mocks__}/utils.js +0 -0
  279. /package/dist/{actions.test.d.ts → __tests__/actions.test.d.ts} +0 -0
  280. /package/dist/{test → services/__mocks__}/MockChainManager.js +0 -0
  281. /package/src/{test → __mocks__}/MockAssets.ts +0 -0
  282. /package/src/{test → __mocks__}/utils.ts +0 -0
  283. /package/src/{test → services/__mocks__}/MockChainManager.ts +0 -0
@@ -0,0 +1,84 @@
1
+ import type { Address } from 'viem'
2
+
3
+ import type { LendMarket } from '@/types/lend/index.js'
4
+
5
+ /**
6
+ * Creates mock Aave reserve data for testing
7
+ */
8
+ export function createMockAaveReserve(): LendMarket {
9
+ return {
10
+ marketId: {
11
+ address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' as Address, // USDC on Base
12
+ chainId: 8453,
13
+ },
14
+ name: 'Aave USDC Base',
15
+ asset: {
16
+ metadata: {
17
+ name: 'USD Coin',
18
+ symbol: 'USDC',
19
+ decimals: 6,
20
+ },
21
+ address: {
22
+ 8453: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' as Address,
23
+ },
24
+ type: 'erc20',
25
+ },
26
+ supply: {
27
+ totalAssets: BigInt(10000000e6),
28
+ totalShares: BigInt(10000000e6),
29
+ },
30
+ apy: {
31
+ total: 0.0325, // 3.25%
32
+ native: 0.0325,
33
+ totalRewards: 0,
34
+ performanceFee: 0,
35
+ },
36
+ metadata: {
37
+ owner: '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5' as Address,
38
+ curator: '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5' as Address,
39
+ fee: 0,
40
+ lastUpdate: Math.floor(Date.now() / 1000),
41
+ },
42
+ }
43
+ }
44
+
45
+ /**
46
+ * Creates mock ETH reserve data for testing (native asset)
47
+ * @description Uses type: 'native' to test native ETH handling via WETHGateway
48
+ */
49
+ export function createMockWETHReserve(): LendMarket {
50
+ return {
51
+ marketId: {
52
+ address: '0x4200000000000000000000000000000000000006' as Address, // WETH on OP Stack
53
+ chainId: 8453,
54
+ },
55
+ name: 'Aave ETH Base',
56
+ asset: {
57
+ metadata: {
58
+ name: 'Ethereum',
59
+ symbol: 'ETH',
60
+ decimals: 18,
61
+ },
62
+ address: {
63
+ 8453: 'native',
64
+ },
65
+ type: 'native',
66
+ },
67
+ supply: {
68
+ totalAssets: BigInt(5000e18),
69
+ totalShares: BigInt(5000e18),
70
+ },
71
+ apy: {
72
+ total: 0.018, // 1.8%
73
+ native: 0.018,
74
+ totalRewards: 0,
75
+ performanceFee: 0,
76
+ },
77
+ metadata: {
78
+ owner: '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5' as Address,
79
+ curator: '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5' as Address,
80
+ fee: 0,
81
+ lastUpdate: Math.floor(Date.now() / 1000),
82
+ },
83
+ }
84
+ }
@@ -0,0 +1,419 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
2
+
3
+ import { MockReceiverAddress } from '@/lend/__mocks__/MockMarkets.js'
4
+ import {
5
+ createMockAaveReserve,
6
+ createMockWETHReserve,
7
+ } from '@/lend/providers/aave/__mocks__/mockReserve.js'
8
+ import { AaveLendProvider } from '@/lend/providers/aave/AaveLendProvider.js'
9
+ import * as aaveSdk from '@/lend/providers/aave/sdk.js'
10
+ import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
11
+ import type { ChainManager } from '@/services/ChainManager.js'
12
+ import type { LendProviderConfig } from '@/types/actions.js'
13
+ import type { Asset, LendMarketConfig } from '@/types/index.js'
14
+
15
+ // Mock the Aave SDK modules
16
+ vi.mock('@/lend/providers/aave/sdk.js', () => ({
17
+ getReserve: vi.fn(),
18
+ getReserves: vi.fn(),
19
+ getATokenAddress: vi.fn(),
20
+ }))
21
+
22
+ // Mock assets for Aave tests (using Base chain ID 8453)
23
+ const MockAaveUSDCAsset: Asset = {
24
+ address: {
25
+ 8453: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
26
+ },
27
+ metadata: {
28
+ decimals: 6,
29
+ name: 'USD Coin',
30
+ symbol: 'USDC',
31
+ },
32
+ type: 'erc20',
33
+ }
34
+
35
+ const MockAaveETHAsset: Asset = {
36
+ address: {
37
+ 8453: 'native',
38
+ },
39
+ metadata: {
40
+ decimals: 18,
41
+ name: 'Ethereum',
42
+ symbol: 'ETH',
43
+ },
44
+ type: 'native',
45
+ }
46
+
47
+ // Mock market configurations for Aave
48
+ const MockAaveUSDCMarket: LendMarketConfig = {
49
+ address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
50
+ chainId: 8453, // Base
51
+ name: 'Aave USDC Base',
52
+ asset: MockAaveUSDCAsset,
53
+ lendProvider: 'aave',
54
+ }
55
+
56
+ const MockAaveETHMarket: LendMarketConfig = {
57
+ address: '0x4200000000000000000000000000000000000006', // WETH predeploy (market uses WETH internally)
58
+ chainId: 8453,
59
+ name: 'Aave ETH Base',
60
+ asset: MockAaveETHAsset,
61
+ lendProvider: 'aave',
62
+ }
63
+
64
+ describe('AaveLendProvider', () => {
65
+ let provider: AaveLendProvider
66
+ let mockConfig: LendProviderConfig
67
+ let mockChainManager: ChainManager
68
+
69
+ beforeEach(() => {
70
+ mockConfig = {
71
+ marketAllowlist: [MockAaveUSDCMarket, MockAaveETHMarket],
72
+ }
73
+
74
+ mockChainManager = new MockChainManager({
75
+ supportedChains: [8453],
76
+ }) as unknown as ChainManager
77
+
78
+ provider = new AaveLendProvider(mockConfig, mockChainManager)
79
+ })
80
+
81
+ afterEach(() => {
82
+ vi.clearAllMocks()
83
+ })
84
+
85
+ describe('constructor', () => {
86
+ it('should initialize with provided config', () => {
87
+ expect(provider).toBeInstanceOf(AaveLendProvider)
88
+ })
89
+ })
90
+
91
+ describe('supportedChainIds', () => {
92
+ it('should return array of supported chain IDs', () => {
93
+ const chainIds = provider.supportedChainIds()
94
+
95
+ expect(chainIds).toHaveLength(4)
96
+ expect(chainIds).toContain(10) // Optimism
97
+ expect(chainIds).toContain(8453) // Base
98
+ expect(chainIds).toContain(11155420) // Optimism Sepolia
99
+ expect(chainIds).toContain(84532) // Base Sepolia
100
+ })
101
+
102
+ it('should return unique chain IDs', () => {
103
+ const chainIds = provider.supportedChainIds()
104
+ const uniqueIds = [...new Set(chainIds)]
105
+
106
+ expect(chainIds.length).toBe(uniqueIds.length)
107
+ })
108
+ })
109
+
110
+ describe('openPosition', () => {
111
+ beforeEach(() => {
112
+ const mockReserve = createMockAaveReserve()
113
+ vi.mocked(aaveSdk.getReserve).mockResolvedValue(mockReserve)
114
+ })
115
+
116
+ it('should successfully create a lending transaction for ERC20', async () => {
117
+ const amount = 1000
118
+ const asset = MockAaveUSDCAsset
119
+ const marketId = {
120
+ address: MockAaveUSDCMarket.address,
121
+ chainId: MockAaveUSDCMarket.chainId,
122
+ }
123
+
124
+ const lendTransaction = await provider.openPosition({
125
+ amount,
126
+ asset,
127
+ marketId,
128
+ walletAddress: MockReceiverAddress,
129
+ })
130
+
131
+ expect(lendTransaction).toHaveProperty('amount', BigInt('1000000000'))
132
+ expect(lendTransaction).toHaveProperty(
133
+ 'asset',
134
+ asset.address[marketId.chainId],
135
+ )
136
+ expect(lendTransaction).toHaveProperty('marketId', marketId.address)
137
+ expect(lendTransaction).toHaveProperty('apy')
138
+ expect(lendTransaction).toHaveProperty('transactionData')
139
+ expect(lendTransaction.transactionData).toHaveProperty('approval')
140
+ expect(lendTransaction.transactionData).toHaveProperty('position')
141
+ expect(typeof lendTransaction.apy).toBe('number')
142
+ expect(lendTransaction.apy).toBeGreaterThan(0)
143
+ })
144
+
145
+ it('should create native ETH deposit without approval', async () => {
146
+ const mockETHReserve = createMockWETHReserve()
147
+ vi.mocked(aaveSdk.getReserve).mockResolvedValue(mockETHReserve)
148
+
149
+ const amount = 1
150
+ const asset = MockAaveETHAsset
151
+ const marketId = {
152
+ address: MockAaveETHMarket.address,
153
+ chainId: MockAaveETHMarket.chainId,
154
+ }
155
+
156
+ const lendTransaction = await provider.openPosition({
157
+ amount,
158
+ asset,
159
+ marketId,
160
+ walletAddress: MockReceiverAddress,
161
+ })
162
+
163
+ expect(lendTransaction).toHaveProperty(
164
+ 'amount',
165
+ BigInt('1000000000000000000'),
166
+ )
167
+ expect(lendTransaction.transactionData).not.toHaveProperty('approval')
168
+ expect(lendTransaction.transactionData).toHaveProperty('position')
169
+ // Native ETH deposits send ETH as msg.value via WETHGateway
170
+ expect(lendTransaction.transactionData.position.value).toBe(
171
+ BigInt('1000000000000000000'),
172
+ )
173
+ })
174
+
175
+ it('should handle lending errors', async () => {
176
+ vi.mocked(aaveSdk.getReserve).mockRejectedValueOnce(
177
+ new Error('Market fetch failed'),
178
+ )
179
+
180
+ const asset = MockAaveUSDCAsset
181
+ const amount = 1000
182
+ const marketId = {
183
+ address: MockAaveUSDCMarket.address,
184
+ chainId: MockAaveUSDCMarket.chainId,
185
+ }
186
+
187
+ await expect(
188
+ provider.openPosition({
189
+ amount,
190
+ asset,
191
+ marketId,
192
+ walletAddress: MockReceiverAddress,
193
+ }),
194
+ ).rejects.toThrow('Failed to open position')
195
+ })
196
+ })
197
+
198
+ describe('closePosition', () => {
199
+ beforeEach(() => {
200
+ const mockReserve = createMockAaveReserve()
201
+ vi.mocked(aaveSdk.getReserve).mockResolvedValue(mockReserve)
202
+ })
203
+
204
+ it('should successfully create a withdrawal transaction for ERC20', async () => {
205
+ const amount = 500
206
+ const asset = MockAaveUSDCAsset
207
+ const marketId = {
208
+ address: MockAaveUSDCMarket.address,
209
+ chainId: MockAaveUSDCMarket.chainId,
210
+ }
211
+ const walletAddress = MockReceiverAddress
212
+
213
+ const withdrawTransaction = await provider.closePosition({
214
+ amount,
215
+ asset,
216
+ marketId,
217
+ walletAddress,
218
+ })
219
+
220
+ expect(withdrawTransaction).toHaveProperty('amount', BigInt('500000000'))
221
+ expect(withdrawTransaction).toHaveProperty(
222
+ 'asset',
223
+ asset.address[marketId.chainId],
224
+ )
225
+ expect(withdrawTransaction).toHaveProperty('marketId', marketId.address)
226
+ expect(withdrawTransaction).toHaveProperty('apy')
227
+ expect(withdrawTransaction).toHaveProperty('transactionData')
228
+ expect(withdrawTransaction.transactionData).toHaveProperty('position')
229
+ expect(withdrawTransaction.transactionData).not.toHaveProperty('approval')
230
+ expect(typeof withdrawTransaction.apy).toBe('number')
231
+ expect(withdrawTransaction.apy).toBeGreaterThan(0)
232
+ })
233
+
234
+ it('should create native ETH withdrawal with approval', async () => {
235
+ const mockETHReserve = createMockWETHReserve()
236
+ vi.mocked(aaveSdk.getReserve).mockResolvedValue(mockETHReserve)
237
+ vi.mocked(aaveSdk.getATokenAddress).mockResolvedValue(
238
+ '0xD4a0e0b9149BCee3C920d2E00b5dE09138fd8bb7',
239
+ )
240
+
241
+ const amount = 1
242
+ const asset = MockAaveETHAsset
243
+ const marketId = {
244
+ address: MockAaveETHMarket.address,
245
+ chainId: MockAaveETHMarket.chainId,
246
+ }
247
+
248
+ const withdrawTransaction = await provider.closePosition({
249
+ amount,
250
+ asset,
251
+ marketId,
252
+ walletAddress: MockReceiverAddress,
253
+ })
254
+
255
+ expect(withdrawTransaction).toHaveProperty(
256
+ 'amount',
257
+ BigInt('1000000000000000000'),
258
+ )
259
+ // Native ETH withdrawals require approving aWETH to WETHGateway
260
+ expect(withdrawTransaction.transactionData).toHaveProperty('approval')
261
+ expect(withdrawTransaction.transactionData).toHaveProperty('position')
262
+ })
263
+
264
+ it('should handle withdrawal errors', async () => {
265
+ vi.mocked(aaveSdk.getReserve).mockRejectedValueOnce(
266
+ new Error('Market fetch failed'),
267
+ )
268
+
269
+ const amount = 500
270
+ const asset = MockAaveUSDCAsset
271
+ const marketId = {
272
+ address: MockAaveUSDCMarket.address,
273
+ chainId: MockAaveUSDCMarket.chainId,
274
+ }
275
+ const walletAddress = MockReceiverAddress
276
+
277
+ await expect(
278
+ provider.closePosition({
279
+ amount,
280
+ asset,
281
+ marketId,
282
+ walletAddress,
283
+ }),
284
+ ).rejects.toThrow('Market fetch failed')
285
+ })
286
+ })
287
+
288
+ describe('market allowlist configuration', () => {
289
+ it('should work without market allowlist', () => {
290
+ const configWithoutAllowlist: LendProviderConfig = {}
291
+
292
+ const providerWithoutAllowlist = new AaveLendProvider(
293
+ configWithoutAllowlist,
294
+ mockChainManager,
295
+ )
296
+
297
+ expect(providerWithoutAllowlist.config.marketAllowlist).toBeUndefined()
298
+ })
299
+
300
+ it('should store market allowlist when provided', () => {
301
+ const configWithAllowlist: LendProviderConfig = {
302
+ marketAllowlist: [MockAaveUSDCMarket],
303
+ }
304
+
305
+ const providerWithAllowlist = new AaveLendProvider(
306
+ configWithAllowlist,
307
+ mockChainManager,
308
+ )
309
+
310
+ const allowlist = providerWithAllowlist.config.marketAllowlist
311
+ expect(allowlist).toBeDefined()
312
+ expect(allowlist).toHaveLength(1)
313
+ expect(allowlist![0].address).toBe(MockAaveUSDCMarket.address)
314
+ expect(allowlist![0].name).toBe(MockAaveUSDCMarket.name)
315
+ })
316
+
317
+ it('should handle multiple markets in allowlist', () => {
318
+ const configWithMultipleMarkets: LendProviderConfig = {
319
+ marketAllowlist: [MockAaveUSDCMarket, MockAaveETHMarket],
320
+ }
321
+
322
+ const providerInstance = new AaveLendProvider(
323
+ configWithMultipleMarkets,
324
+ mockChainManager,
325
+ )
326
+
327
+ const allowlist = providerInstance.config.marketAllowlist
328
+ expect(allowlist).toBeDefined()
329
+ expect(allowlist).toHaveLength(2)
330
+ expect(allowlist![0].name).toBe(MockAaveUSDCMarket.name)
331
+ expect(allowlist![1].name).toBe(MockAaveETHMarket.name)
332
+ })
333
+ })
334
+
335
+ describe('ETH/WETH market configuration', () => {
336
+ it('should detect native asset type for ETH market', () => {
337
+ // Market is configured with ETH (type: native) but uses WETH address internally
338
+ expect(MockAaveETHMarket.asset.type).toBe('native')
339
+ expect(MockAaveETHMarket.asset.address[8453]).toBe('native')
340
+ // Market address points to WETH for Aave's internal operations
341
+ expect(MockAaveETHMarket.address).toBe(
342
+ '0x4200000000000000000000000000000000000006',
343
+ )
344
+ })
345
+
346
+ it('should use WETHGateway for ETH deposits when asset type is native', async () => {
347
+ const mockETHReserve = createMockWETHReserve()
348
+ vi.mocked(aaveSdk.getReserve).mockResolvedValue(mockETHReserve)
349
+
350
+ const lendTransaction = await provider.openPosition({
351
+ amount: 1,
352
+ asset: MockAaveETHAsset,
353
+ marketId: {
354
+ address: MockAaveETHMarket.address,
355
+ chainId: MockAaveETHMarket.chainId,
356
+ },
357
+ walletAddress: MockReceiverAddress,
358
+ })
359
+
360
+ // Native ETH deposits should have msg.value set (WETHGateway flow)
361
+ expect(lendTransaction.transactionData.position.value).toBe(
362
+ BigInt('1000000000000000000'),
363
+ )
364
+ // Should not require approval for native ETH
365
+ expect(lendTransaction.transactionData.approval).toBeUndefined()
366
+ })
367
+
368
+ it('should allow developer to configure ETH market without knowing about WETH internals', () => {
369
+ // Developer configures market with ETH asset
370
+ // SDK handles WETH internally via WETHGateway
371
+ const marketConfig: LendMarketConfig = {
372
+ address: '0x4200000000000000000000000000000000000006', // WETH address
373
+ chainId: 8453,
374
+ name: 'Aave ETH',
375
+ asset: MockAaveETHAsset, // Uses ETH (native) asset
376
+ lendProvider: 'aave',
377
+ }
378
+
379
+ // Verify the market uses native asset
380
+ expect(marketConfig.asset.type).toBe('native')
381
+ // Developer doesn't need to create a separate WETH asset
382
+ })
383
+ })
384
+
385
+ describe('unsupported chain handling', () => {
386
+ it('should throw error for unsupported chain', async () => {
387
+ // Use type assertion to test runtime behavior with unsupported chain
388
+ const unsupportedChainId = 999999 as 8453
389
+ const unsupportedMarket: LendMarketConfig = {
390
+ address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
391
+ chainId: unsupportedChainId,
392
+ name: 'Unsupported Market',
393
+ asset: MockAaveUSDCAsset,
394
+ lendProvider: 'aave',
395
+ }
396
+
397
+ const configWithUnsupported: LendProviderConfig = {
398
+ marketAllowlist: [unsupportedMarket],
399
+ }
400
+
401
+ const providerWithUnsupported = new AaveLendProvider(
402
+ configWithUnsupported,
403
+ mockChainManager,
404
+ )
405
+
406
+ await expect(
407
+ providerWithUnsupported.openPosition({
408
+ amount: 100,
409
+ asset: MockAaveUSDCAsset,
410
+ marketId: {
411
+ address: unsupportedMarket.address,
412
+ chainId: unsupportedMarket.chainId,
413
+ },
414
+ walletAddress: MockReceiverAddress,
415
+ }),
416
+ ).rejects.toThrow('not supported')
417
+ })
418
+ })
419
+ })
@@ -0,0 +1,81 @@
1
+ import { parseAbi } from 'viem'
2
+
3
+ /**
4
+ * Aave Pool ABI - supply and withdraw functions
5
+ */
6
+ export const POOL_ABI = parseAbi([
7
+ 'function supply(address asset, uint256 amount, address onBehalfOf, uint16 referralCode)',
8
+ 'function withdraw(address asset, uint256 amount, address to) returns (uint256)',
9
+ ])
10
+
11
+ /**
12
+ * Aave Pool ABI - getReserveData for fetching reserve info including aToken addresses
13
+ */
14
+ export const POOL_GET_RESERVE_DATA_ABI = [
15
+ {
16
+ inputs: [{ name: 'asset', type: 'address', internalType: 'address' }],
17
+ name: 'getReserveData',
18
+ outputs: [
19
+ {
20
+ components: [
21
+ { name: 'data', type: 'uint256', internalType: 'uint256' },
22
+ ],
23
+ name: 'configuration',
24
+ type: 'tuple',
25
+ internalType: 'struct DataTypes.ReserveConfigurationMap',
26
+ },
27
+ { name: 'liquidityIndex', type: 'uint128', internalType: 'uint128' },
28
+ {
29
+ name: 'currentLiquidityRate',
30
+ type: 'uint128',
31
+ internalType: 'uint128',
32
+ },
33
+ { name: 'variableBorrowIndex', type: 'uint128', internalType: 'uint128' },
34
+ {
35
+ name: 'currentVariableBorrowRate',
36
+ type: 'uint128',
37
+ internalType: 'uint128',
38
+ },
39
+ {
40
+ name: 'currentStableBorrowRate',
41
+ type: 'uint128',
42
+ internalType: 'uint128',
43
+ },
44
+ { name: 'lastUpdateTimestamp', type: 'uint40', internalType: 'uint40' },
45
+ { name: 'id', type: 'uint16', internalType: 'uint16' },
46
+ { name: 'aTokenAddress', type: 'address', internalType: 'address' },
47
+ {
48
+ name: 'stableDebtTokenAddress',
49
+ type: 'address',
50
+ internalType: 'address',
51
+ },
52
+ {
53
+ name: 'variableDebtTokenAddress',
54
+ type: 'address',
55
+ internalType: 'address',
56
+ },
57
+ {
58
+ name: 'interestRateStrategyAddress',
59
+ type: 'address',
60
+ internalType: 'address',
61
+ },
62
+ { name: 'accruedToTreasury', type: 'uint128', internalType: 'uint128' },
63
+ { name: 'unbacked', type: 'uint128', internalType: 'uint128' },
64
+ {
65
+ name: 'isolationModeTotalDebt',
66
+ type: 'uint128',
67
+ internalType: 'uint128',
68
+ },
69
+ ],
70
+ stateMutability: 'view',
71
+ type: 'function',
72
+ },
73
+ ] as const
74
+
75
+ /**
76
+ * Aave WETHGateway ABI - for native ETH deposits/withdrawals
77
+ */
78
+ export const WETH_GATEWAY_ABI = parseAbi([
79
+ 'function depositETH(address pool, address onBehalfOf, uint16 referralCode) payable',
80
+ 'function withdrawETH(address pool, uint256 amount, address to)',
81
+ ])
@@ -4,7 +4,9 @@ import { providers } from 'ethers'
4
4
  import type { Address } from 'viem'
5
5
  import { base, baseSepolia, optimism, optimismSepolia } from 'viem/chains'
6
6
 
7
+ import { WETH } from '@/constants/assets.js'
7
8
  import type { SUPPORTED_CHAIN_IDS } from '@/constants/supportedChains.js'
9
+ import { POOL_GET_RESERVE_DATA_ABI } from '@/lend/providers/aave/abis/pool.js'
8
10
  import { getPoolAddress } from '@/lend/providers/aave/addresses.js'
9
11
  import type { ChainManager } from '@/services/ChainManager.js'
10
12
  import type { LendProviderConfig } from '@/types/actions.js'
@@ -163,10 +165,11 @@ export async function getReserve(
163
165
  })
164
166
 
165
167
  // Find the specific reserve for this asset
166
- const assetAddress = getAssetAddress(
167
- marketConfig.asset,
168
- params.marketId.chainId,
169
- )
168
+ // For native ETH assets, use WETH address since Aave uses WETH internally
169
+ const assetAddress =
170
+ marketConfig.asset.type === 'native'
171
+ ? getAssetAddress(WETH, params.marketId.chainId)
172
+ : getAssetAddress(marketConfig.asset, params.marketId.chainId)
170
173
 
171
174
  const reserve = reservesData.reservesData.find(
172
175
  (r) => r.underlyingAsset.toLowerCase() === assetAddress.toLowerCase(),
@@ -253,71 +256,6 @@ export async function getReserves(
253
256
  }
254
257
  }
255
258
 
256
- /**
257
- * Aave V3 Pool ABI for getReserveData
258
- * @description Minimal ABI for querying reserve data from Aave V3 Pool
259
- */
260
- const POOL_GET_RESERVE_DATA_ABI = [
261
- {
262
- inputs: [{ name: 'asset', type: 'address', internalType: 'address' }],
263
- name: 'getReserveData',
264
- outputs: [
265
- {
266
- components: [
267
- { name: 'data', type: 'uint256', internalType: 'uint256' },
268
- ],
269
- name: 'configuration',
270
- type: 'tuple',
271
- internalType: 'struct DataTypes.ReserveConfigurationMap',
272
- },
273
- { name: 'liquidityIndex', type: 'uint128', internalType: 'uint128' },
274
- {
275
- name: 'currentLiquidityRate',
276
- type: 'uint128',
277
- internalType: 'uint128',
278
- },
279
- { name: 'variableBorrowIndex', type: 'uint128', internalType: 'uint128' },
280
- {
281
- name: 'currentVariableBorrowRate',
282
- type: 'uint128',
283
- internalType: 'uint128',
284
- },
285
- {
286
- name: 'currentStableBorrowRate',
287
- type: 'uint128',
288
- internalType: 'uint128',
289
- },
290
- { name: 'lastUpdateTimestamp', type: 'uint40', internalType: 'uint40' },
291
- { name: 'id', type: 'uint16', internalType: 'uint16' },
292
- { name: 'aTokenAddress', type: 'address', internalType: 'address' },
293
- {
294
- name: 'stableDebtTokenAddress',
295
- type: 'address',
296
- internalType: 'address',
297
- },
298
- {
299
- name: 'variableDebtTokenAddress',
300
- type: 'address',
301
- internalType: 'address',
302
- },
303
- {
304
- name: 'interestRateStrategyAddress',
305
- type: 'address',
306
- internalType: 'address',
307
- },
308
- { name: 'accruedToTreasury', type: 'uint128', internalType: 'uint128' },
309
- { name: 'unbacked', type: 'uint128', internalType: 'uint128' },
310
- {
311
- name: 'isolationModeTotalDebt',
312
- type: 'uint128',
313
- internalType: 'uint128',
314
- },
315
- ],
316
- stateMutability: 'view',
317
- type: 'function',
318
- },
319
- ] as const
320
-
321
259
  /**
322
260
  * Get aToken address for a given underlying asset
323
261
  * @param params - Parameters including asset address, chain ID, and chain manager