@eth-optimism/actions-sdk 0.0.4 → 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 (395) 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} +35 -85
  10. package/dist/__tests__/actions.test.js.map +1 -0
  11. package/dist/actions.d.ts +19 -7
  12. package/dist/actions.d.ts.map +1 -1
  13. package/dist/actions.js +49 -19
  14. package/dist/actions.js.map +1 -1
  15. package/dist/constants/assets.d.ts +19 -0
  16. package/dist/constants/assets.d.ts.map +1 -1
  17. package/dist/constants/assets.js +84 -6
  18. package/dist/constants/assets.js.map +1 -1
  19. package/dist/constants/supportedChains.d.ts +1 -1
  20. package/dist/constants/supportedChains.d.ts.map +1 -1
  21. package/dist/constants/supportedChains.js +7 -3
  22. package/dist/constants/supportedChains.js.map +1 -1
  23. package/dist/core/asset/__mocks__/mockAsset.js +1 -1
  24. package/dist/core/asset/__mocks__/mockAsset.js.map +1 -1
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +1 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/{test → lend/__mocks__}/MockLendProvider.d.ts +9 -7
  30. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -0
  31. package/dist/{test → lend/__mocks__}/MockLendProvider.js +20 -21
  32. package/dist/lend/__mocks__/MockLendProvider.js.map +1 -0
  33. package/dist/{test → lend/__mocks__}/MockMarkets.d.ts +1 -1
  34. package/dist/lend/__mocks__/MockMarkets.d.ts.map +1 -0
  35. package/dist/{test → lend/__mocks__}/MockMarkets.js +1 -1
  36. package/dist/lend/__mocks__/MockMarkets.js.map +1 -0
  37. package/dist/lend/__mocks__/mockLendTransaction.d.ts +3 -12
  38. package/dist/lend/__mocks__/mockLendTransaction.d.ts.map +1 -1
  39. package/dist/lend/__mocks__/mockLendTransaction.js +3 -19
  40. package/dist/lend/__mocks__/mockLendTransaction.js.map +1 -1
  41. package/dist/lend/core/LendProvider.d.ts +16 -3
  42. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  43. package/dist/lend/core/LendProvider.js +23 -2
  44. package/dist/lend/core/LendProvider.js.map +1 -1
  45. package/dist/lend/core/__tests__/LendProvider.test.js +20 -50
  46. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
  47. package/dist/lend/index.d.ts +1 -0
  48. package/dist/lend/index.d.ts.map +1 -1
  49. package/dist/lend/index.js +1 -0
  50. package/dist/lend/index.js.map +1 -1
  51. package/dist/lend/namespaces/ActionsLendNamespace.d.ts +2 -9
  52. package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -1
  53. package/dist/lend/namespaces/ActionsLendNamespace.js +2 -11
  54. package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -1
  55. package/dist/lend/namespaces/BaseLendNamespace.d.ts +47 -0
  56. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -0
  57. package/dist/lend/namespaces/BaseLendNamespace.js +58 -0
  58. package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -0
  59. package/dist/lend/namespaces/WalletLendNamespace.d.ts +8 -9
  60. package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -1
  61. package/dist/lend/namespaces/WalletLendNamespace.js +24 -31
  62. package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -1
  63. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +25 -17
  64. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -1
  65. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts +2 -0
  66. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts.map +1 -0
  67. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +110 -0
  68. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -0
  69. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +37 -21
  70. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -1
  71. package/dist/lend/providers/aave/AaveLendProvider.d.ts +74 -0
  72. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -0
  73. package/dist/lend/providers/aave/AaveLendProvider.js +290 -0
  74. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -0
  75. package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts +11 -0
  76. package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts.map +1 -0
  77. package/dist/lend/providers/aave/__mocks__/mockReserve.js +80 -0
  78. package/dist/lend/providers/aave/__mocks__/mockReserve.js.map +1 -0
  79. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts +2 -0
  80. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts.map +1 -0
  81. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +315 -0
  82. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -0
  83. package/dist/lend/providers/aave/abis/pool.d.ts +153 -0
  84. package/dist/lend/providers/aave/abis/pool.d.ts.map +1 -0
  85. package/dist/lend/providers/aave/abis/pool.js +79 -0
  86. package/dist/lend/providers/aave/abis/pool.js.map +1 -0
  87. package/dist/lend/providers/aave/addresses.d.ts +57 -0
  88. package/dist/lend/providers/aave/addresses.d.ts.map +1 -0
  89. package/dist/lend/providers/aave/addresses.js +83 -0
  90. package/dist/lend/providers/aave/addresses.js.map +1 -0
  91. package/dist/lend/providers/aave/sdk.d.ts +57 -0
  92. package/dist/lend/providers/aave/sdk.d.ts.map +1 -0
  93. package/dist/lend/providers/aave/sdk.js +201 -0
  94. package/dist/lend/providers/aave/sdk.js.map +1 -0
  95. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +4 -4
  96. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  97. package/dist/lend/providers/morpho/MorphoLendProvider.js +13 -28
  98. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  99. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +6 -57
  100. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -1
  101. package/dist/lend/providers/morpho/__tests__/api.test.js +248 -54
  102. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
  103. package/dist/lend/providers/morpho/__tests__/sdk.test.js +1 -0
  104. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  105. package/dist/lend/providers/morpho/contracts.d.ts +19 -0
  106. package/dist/lend/providers/morpho/contracts.d.ts.map +1 -0
  107. package/dist/lend/providers/morpho/contracts.js +32 -0
  108. package/dist/lend/providers/morpho/contracts.js.map +1 -0
  109. package/dist/lend/providers/morpho/sdk.d.ts +4 -3
  110. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  111. package/dist/lend/providers/morpho/sdk.js +168 -71
  112. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  113. package/dist/services/ChainManager.d.ts +1 -1
  114. package/dist/{test → services/__mocks__}/MockChainManager.d.ts +1 -1
  115. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -0
  116. package/dist/services/__mocks__/MockChainManager.js.map +1 -0
  117. package/dist/services/tokenBalance.d.ts.map +1 -1
  118. package/dist/services/tokenBalance.js +4 -5
  119. package/dist/services/tokenBalance.js.map +1 -1
  120. package/dist/services/tokenBalance.spec.js +2 -2
  121. package/dist/services/tokenBalance.spec.js.map +1 -1
  122. package/dist/supported/tokens.d.ts +4 -4
  123. package/dist/supported/tokens.d.ts.map +1 -1
  124. package/dist/supported/tokens.js +5 -56
  125. package/dist/supported/tokens.js.map +1 -1
  126. package/dist/types/actions.d.ts +26 -2
  127. package/dist/types/actions.d.ts.map +1 -1
  128. package/dist/types/asset.d.ts +3 -3
  129. package/dist/types/asset.d.ts.map +1 -1
  130. package/dist/types/lend/base.d.ts +10 -28
  131. package/dist/types/lend/base.d.ts.map +1 -1
  132. package/dist/types/lend/contracts.d.ts +17 -0
  133. package/dist/types/lend/contracts.d.ts.map +1 -0
  134. package/dist/types/lend/contracts.js +2 -0
  135. package/dist/types/lend/contracts.js.map +1 -0
  136. package/dist/types/lend/index.d.ts +1 -0
  137. package/dist/types/lend/index.d.ts.map +1 -1
  138. package/dist/types/lend/index.js +1 -0
  139. package/dist/types/lend/index.js.map +1 -1
  140. package/dist/utils/assets.d.ts +7 -1
  141. package/dist/utils/assets.d.ts.map +1 -1
  142. package/dist/utils/assets.js +12 -1
  143. package/dist/utils/assets.js.map +1 -1
  144. package/dist/utils/assets.test.js +1 -1
  145. package/dist/utils/assets.test.js.map +1 -1
  146. package/dist/utils/constants.d.ts +5 -0
  147. package/dist/utils/constants.d.ts.map +1 -0
  148. package/dist/utils/constants.js +5 -0
  149. package/dist/utils/constants.js.map +1 -0
  150. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  151. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  152. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +13 -13
  153. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  154. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +12 -12
  155. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
  156. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +12 -3
  157. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  158. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +3 -2
  159. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  160. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js +2 -2
  161. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js.map +1 -1
  162. package/dist/wallet/core/providers/hosted/types/index.d.ts +8 -2
  163. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  164. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +14 -6
  165. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  166. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +10 -6
  167. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  168. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +39 -16
  169. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  170. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +19 -7
  171. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  172. package/dist/wallet/core/wallets/abstract/Wallet.js +9 -7
  173. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  174. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +2 -2
  175. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  176. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js +2 -2
  177. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js.map +1 -1
  178. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +9 -3
  179. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  180. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +4 -4
  181. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  182. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +4 -4
  183. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  184. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js +1 -1
  185. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js.map +1 -1
  186. package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js +1 -1
  187. package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js.map +1 -1
  188. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +10 -3
  189. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  190. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +5 -3
  191. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  192. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +7 -6
  193. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  194. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  195. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +5 -4
  196. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  197. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +2 -2
  198. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  199. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +9 -2
  200. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  201. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -3
  202. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  203. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +5 -4
  204. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  205. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +10 -3
  206. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  207. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +5 -4
  208. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  209. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +3 -3
  210. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
  211. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +2 -2
  212. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
  213. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +8 -2
  214. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  215. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  216. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  217. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -2
  218. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
  219. package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +1 -1
  220. package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -1
  221. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -2
  222. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  223. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -3
  224. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  225. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.d.ts.map +1 -1
  226. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js +1 -1
  227. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js.map +1 -1
  228. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +22 -7
  229. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  230. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +6 -2
  231. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  232. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -3
  233. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  234. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.d.ts.map +1 -1
  235. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js +1 -1
  236. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js.map +1 -1
  237. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +8 -4
  238. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  239. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +6 -2
  240. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  241. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -3
  242. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  243. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +7 -4
  244. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  245. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +6 -6
  246. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  247. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +1 -1
  248. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  249. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +6 -2
  250. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  251. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +3 -3
  252. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  253. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +6 -0
  254. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  255. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  256. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js +2 -2
  257. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js.map +1 -1
  258. package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js +1 -1
  259. package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js.map +1 -1
  260. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +6 -2
  261. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  262. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  263. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  264. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +2 -2
  265. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
  266. package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +1 -1
  267. package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
  268. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +6 -2
  269. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  270. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  271. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  272. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -2
  273. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
  274. package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +1 -1
  275. package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -1
  276. package/package.json +4 -1
  277. package/src/{test → __mocks__}/MockPrivyClient.ts +1 -1
  278. package/src/{actions.test.ts → __tests__/actions.test.ts} +34 -95
  279. package/src/actions.ts +82 -26
  280. package/src/constants/assets.ts +92 -8
  281. package/src/constants/supportedChains.ts +10 -2
  282. package/src/core/asset/__mocks__/mockAsset.ts +1 -1
  283. package/src/index.ts +2 -3
  284. package/src/{test → lend/__mocks__}/MockLendProvider.ts +24 -27
  285. package/src/{test → lend/__mocks__}/MockMarkets.ts +1 -1
  286. package/src/lend/__mocks__/mockLendTransaction.ts +4 -26
  287. package/src/lend/core/LendProvider.ts +40 -7
  288. package/src/lend/core/__tests__/LendProvider.test.ts +21 -63
  289. package/src/lend/index.ts +1 -0
  290. package/src/lend/namespaces/ActionsLendNamespace.ts +2 -21
  291. package/src/lend/namespaces/BaseLendNamespace.ts +89 -0
  292. package/src/lend/namespaces/WalletLendNamespace.ts +39 -55
  293. package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +29 -22
  294. package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +137 -0
  295. package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +61 -26
  296. package/src/lend/providers/aave/AaveLendProvider.ts +395 -0
  297. package/src/lend/providers/aave/__mocks__/mockReserve.ts +84 -0
  298. package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +419 -0
  299. package/src/lend/providers/aave/abis/pool.ts +81 -0
  300. package/src/lend/providers/aave/addresses.ts +95 -0
  301. package/src/lend/providers/aave/sdk.ts +307 -0
  302. package/src/lend/providers/morpho/MorphoLendProvider.ts +23 -44
  303. package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +13 -85
  304. package/src/lend/providers/morpho/__tests__/api.test.ts +277 -51
  305. package/src/lend/providers/morpho/__tests__/sdk.test.ts +1 -0
  306. package/src/lend/providers/morpho/contracts.ts +37 -0
  307. package/src/lend/providers/morpho/sdk.ts +235 -87
  308. package/src/services/tokenBalance.spec.ts +2 -2
  309. package/src/services/tokenBalance.ts +6 -7
  310. package/src/supported/tokens.ts +6 -57
  311. package/src/types/actions.ts +30 -2
  312. package/src/types/asset.ts +3 -3
  313. package/src/types/lend/base.ts +14 -33
  314. package/src/types/lend/contracts.ts +18 -0
  315. package/src/types/lend/index.ts +1 -0
  316. package/src/utils/assets.test.ts +1 -1
  317. package/src/utils/assets.ts +15 -1
  318. package/src/utils/constants.ts +4 -0
  319. package/src/wallet/core/namespace/WalletNamespace.ts +2 -4
  320. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +15 -15
  321. package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +14 -14
  322. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +15 -4
  323. package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +3 -3
  324. package/src/wallet/core/providers/hosted/types/index.ts +8 -2
  325. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +24 -9
  326. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +45 -55
  327. package/src/wallet/core/wallets/abstract/Wallet.ts +25 -17
  328. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +2 -2
  329. package/src/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.ts +2 -2
  330. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +17 -10
  331. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +7 -10
  332. package/src/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.ts +1 -1
  333. package/src/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.ts +1 -1
  334. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +13 -5
  335. package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +8 -8
  336. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +6 -4
  337. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +3 -3
  338. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +13 -4
  339. package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +5 -5
  340. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +18 -6
  341. package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +4 -4
  342. package/src/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +2 -2
  343. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +16 -5
  344. package/src/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -2
  345. package/src/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +1 -1
  346. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +8 -4
  347. package/src/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.ts +1 -1
  348. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +31 -17
  349. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +8 -4
  350. package/src/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.ts +1 -1
  351. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +10 -11
  352. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +8 -4
  353. package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +7 -8
  354. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +6 -6
  355. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +5 -7
  356. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +12 -5
  357. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +6 -0
  358. package/src/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.ts +2 -2
  359. package/src/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.ts +1 -1
  360. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +12 -5
  361. package/src/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +2 -2
  362. package/src/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +1 -1
  363. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +12 -5
  364. package/src/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -2
  365. package/src/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +1 -1
  366. package/dist/actions.test.d.ts.map +0 -1
  367. package/dist/actions.test.js.map +0 -1
  368. package/dist/constants/config.d.ts +0 -10
  369. package/dist/constants/config.d.ts.map +0 -1
  370. package/dist/constants/config.js +0 -10
  371. package/dist/constants/config.js.map +0 -1
  372. package/dist/test/MockAssets.d.ts.map +0 -1
  373. package/dist/test/MockAssets.js.map +0 -1
  374. package/dist/test/MockChainManager.d.ts.map +0 -1
  375. package/dist/test/MockChainManager.js.map +0 -1
  376. package/dist/test/MockLendProvider.d.ts.map +0 -1
  377. package/dist/test/MockLendProvider.js.map +0 -1
  378. package/dist/test/MockMarkets.d.ts.map +0 -1
  379. package/dist/test/MockMarkets.js.map +0 -1
  380. package/dist/test/MockPrivyClient.d.ts.map +0 -1
  381. package/dist/test/MockPrivyClient.js.map +0 -1
  382. package/dist/test/utils.d.ts.map +0 -1
  383. package/dist/test/utils.js.map +0 -1
  384. package/src/constants/config.ts +0 -9
  385. /package/dist/{test → __mocks__}/MockAssets.d.ts +0 -0
  386. /package/dist/{test → __mocks__}/MockAssets.js +0 -0
  387. /package/dist/{test → __mocks__}/MockPrivyClient.d.ts +0 -0
  388. /package/dist/{test → __mocks__}/MockPrivyClient.js +0 -0
  389. /package/dist/{test → __mocks__}/utils.d.ts +0 -0
  390. /package/dist/{test → __mocks__}/utils.js +0 -0
  391. /package/dist/{actions.test.d.ts → __tests__/actions.test.d.ts} +0 -0
  392. /package/dist/{test → services/__mocks__}/MockChainManager.js +0 -0
  393. /package/src/{test → __mocks__}/MockAssets.ts +0 -0
  394. /package/src/{test → __mocks__}/utils.ts +0 -0
  395. /package/src/{test → services/__mocks__}/MockChainManager.ts +0 -0
@@ -0,0 +1,395 @@
1
+ import type { Address } from 'viem'
2
+ import { encodeFunctionData, erc20Abi, formatUnits } from 'viem'
3
+
4
+ import { WETH } from '@/constants/assets.js'
5
+ import { LendProvider } from '@/lend/core/LendProvider.js'
6
+ import type { ChainManager } from '@/services/ChainManager.js'
7
+ import type { LendProviderConfig } from '@/types/actions.js'
8
+ import type {
9
+ GetLendMarketsParams,
10
+ GetMarketBalanceParams,
11
+ LendClosePositionParams,
12
+ LendMarket,
13
+ LendMarketId,
14
+ LendMarketPosition,
15
+ LendOpenPositionInternalParams,
16
+ LendTransaction,
17
+ } from '@/types/lend/index.js'
18
+ import { getAssetAddress, isNativeAsset } from '@/utils/assets.js'
19
+
20
+ import { POOL_ABI, WETH_GATEWAY_ABI } from './abis/pool.js'
21
+ import {
22
+ getPoolAddress,
23
+ getSupportedChainIds,
24
+ getWETHGatewayAddress,
25
+ } from './addresses.js'
26
+ import { getATokenAddress, getReserve, getReserves } from './sdk.js'
27
+
28
+ /**
29
+ * Supported chain IDs for Aave lending
30
+ * @description Array of chain IDs where Aave V3 is available on Optimism Superchain
31
+ */
32
+ export const SUPPORTED_CHAIN_IDS = getSupportedChainIds() as readonly number[]
33
+
34
+ /**
35
+ * Aave lending provider implementation
36
+ * @description Lending provider implementation using Aave V3 protocol
37
+ */
38
+ export class AaveLendProvider extends LendProvider<LendProviderConfig> {
39
+ protected readonly SUPPORTED_CHAIN_IDS = SUPPORTED_CHAIN_IDS
40
+
41
+ /**
42
+ * Create a new Aave lending provider
43
+ * @param config - Aave lending configuration
44
+ * @param chainManager - Chain manager for blockchain interactions
45
+ */
46
+ constructor(config: LendProviderConfig, chainManager: ChainManager) {
47
+ super(config, chainManager)
48
+ }
49
+
50
+ /**
51
+ * Open a lending position in an Aave market
52
+ * @description Opens a lending position by supplying assets to an Aave reserve
53
+ * @param params - Position opening parameters
54
+ * @returns Promise resolving to lending transaction details
55
+ */
56
+ protected async _openPosition(
57
+ params: LendOpenPositionInternalParams,
58
+ ): Promise<LendTransaction> {
59
+ try {
60
+ // Get Pool address for this chain
61
+ const poolAddress = getPoolAddress(params.marketId.chainId)
62
+ if (!poolAddress) {
63
+ throw new Error(
64
+ `Aave V3 not deployed on chain ${params.marketId.chainId}`,
65
+ )
66
+ }
67
+
68
+ // Get market information for APY
69
+ const marketInfo = await this.getMarket({
70
+ address: params.marketId.address,
71
+ chainId: params.marketId.chainId,
72
+ })
73
+
74
+ // Check if this is a native ETH market
75
+ if (isNativeAsset(params.asset)) {
76
+ return this._openETHPosition(params, poolAddress, marketInfo)
77
+ }
78
+
79
+ // Standard ERC-20 flow
80
+ return this._openERC20Position(params, poolAddress, marketInfo)
81
+ } catch {
82
+ throw new Error(
83
+ `Failed to open position with ${params.amountWei} of ${params.asset.metadata.symbol}`,
84
+ )
85
+ }
86
+ }
87
+
88
+ /**
89
+ * Close a position in an Aave market
90
+ * @description Withdraws assets from an Aave reserve
91
+ * @param params - Position closing operation parameters
92
+ * @returns Promise resolving to withdrawal transaction details
93
+ */
94
+ protected async _closePosition(
95
+ params: LendClosePositionParams,
96
+ ): Promise<LendTransaction> {
97
+ try {
98
+ // Get Pool address for this chain
99
+ const poolAddress = getPoolAddress(params.marketId.chainId)
100
+ if (!poolAddress) {
101
+ throw new Error(
102
+ `Aave V3 not deployed on chain ${params.marketId.chainId}`,
103
+ )
104
+ }
105
+
106
+ const marketInfo = await this.getMarket({
107
+ address: params.marketId.address,
108
+ chainId: params.marketId.chainId,
109
+ })
110
+
111
+ // Check if this is a native ETH market
112
+ if (isNativeAsset(marketInfo.asset)) {
113
+ return this._closeETHPosition(params, poolAddress, marketInfo)
114
+ }
115
+
116
+ // Standard ERC-20 flow
117
+ return this._closeERC20Position(params, poolAddress, marketInfo)
118
+ } catch {
119
+ throw new Error('Failed to close position')
120
+ }
121
+ }
122
+
123
+ /**
124
+ * Get detailed market information
125
+ * @param marketId - Market identifier containing address and chainId
126
+ * @returns Promise resolving to market information
127
+ */
128
+ protected async _getMarket(marketId: LendMarketId): Promise<LendMarket> {
129
+ return getReserve({
130
+ marketId,
131
+ chainManager: this.chainManager,
132
+ lendConfig: this._config,
133
+ })
134
+ }
135
+
136
+ /**
137
+ * Get list of available lending markets
138
+ * @param params - Filtering parameters
139
+ * @returns Promise resolving to array of market information
140
+ */
141
+ protected async _getMarkets(
142
+ params: GetLendMarketsParams,
143
+ ): Promise<LendMarket[]> {
144
+ const marketConfigs = params.markets || []
145
+
146
+ return getReserves({
147
+ chainManager: this.chainManager,
148
+ lendConfig: this._config,
149
+ markets: marketConfigs,
150
+ })
151
+ }
152
+
153
+ /**
154
+ * Get position for a specific wallet address
155
+ * @param params - Parameters for fetching position
156
+ * @returns Promise resolving to position information
157
+ */
158
+ protected async _getPosition(
159
+ params: GetMarketBalanceParams,
160
+ ): Promise<LendMarketPosition> {
161
+ try {
162
+ const publicClient = this.chainManager.getPublicClient(
163
+ params.marketId.chainId,
164
+ )
165
+ const market = await this._getMarket(params.marketId)
166
+ const poolAddress = getPoolAddress(params.marketId.chainId)
167
+
168
+ if (!poolAddress) {
169
+ throw new Error(
170
+ `Aave V3 not deployed on chain ${params.marketId.chainId}`,
171
+ )
172
+ }
173
+
174
+ // Get the aToken address from Pool.getReserveData
175
+ // For native assets, use WETH address since Aave uses WETH internally
176
+ const assetAddress = isNativeAsset(market.asset)
177
+ ? getAssetAddress(WETH, params.marketId.chainId)
178
+ : getAssetAddress(market.asset, params.marketId.chainId)
179
+
180
+ const aTokenAddress = await getATokenAddress({
181
+ underlyingAsset: assetAddress,
182
+ chainId: params.marketId.chainId,
183
+ chainManager: this.chainManager,
184
+ })
185
+
186
+ const balance = await publicClient.readContract({
187
+ address: aTokenAddress,
188
+ abi: erc20Abi,
189
+ functionName: 'balanceOf',
190
+ args: [params.walletAddress],
191
+ })
192
+
193
+ const balanceFormatted = formatUnits(
194
+ balance,
195
+ market.asset.metadata.decimals,
196
+ )
197
+
198
+ return {
199
+ balance,
200
+ balanceFormatted,
201
+ shares: balance, // In Aave, aTokens are 1:1 with underlying
202
+ sharesFormatted: balanceFormatted,
203
+ marketId: params.marketId,
204
+ }
205
+ } catch {
206
+ throw new Error(
207
+ `Failed to get market balance for ${params.walletAddress} in market ${params.marketId.address}`,
208
+ )
209
+ }
210
+ }
211
+
212
+ /**
213
+ * Open position for native ETH using WETHGateway
214
+ * @description Deposits native ETH via WETHGateway which wraps and deposits in one tx
215
+ */
216
+ private async _openETHPosition(
217
+ params: LendOpenPositionInternalParams,
218
+ poolAddress: Address,
219
+ marketInfo: LendMarket,
220
+ ): Promise<LendTransaction> {
221
+ const gatewayAddress = getWETHGatewayAddress(params.marketId.chainId)
222
+ if (!gatewayAddress) {
223
+ throw new Error(
224
+ `WETHGateway not available on chain ${params.marketId.chainId}`,
225
+ )
226
+ }
227
+
228
+ // Generate depositETH transaction
229
+ const depositCallData = encodeFunctionData({
230
+ abi: WETH_GATEWAY_ABI,
231
+ functionName: 'depositETH',
232
+ args: [
233
+ poolAddress, // pool address
234
+ params.walletAddress, // onBehalfOf (receives aWETH)
235
+ 0, // referralCode (0 = no referral)
236
+ ],
237
+ })
238
+
239
+ const wethAddress = getAssetAddress(WETH, params.marketId.chainId)
240
+
241
+ return {
242
+ amount: params.amountWei,
243
+ asset: wethAddress,
244
+ marketId: params.marketId.address,
245
+ apy: marketInfo.apy.total,
246
+ transactionData: {
247
+ position: {
248
+ to: gatewayAddress,
249
+ data: depositCallData,
250
+ value: params.amountWei, // Send ETH as msg.value
251
+ },
252
+ },
253
+ }
254
+ }
255
+
256
+ /**
257
+ * Open position for standard ERC-20 tokens
258
+ * @description Standard approve + supply flow for non-WETH assets
259
+ */
260
+ private async _openERC20Position(
261
+ params: LendOpenPositionInternalParams,
262
+ poolAddress: Address,
263
+ marketInfo: LendMarket,
264
+ ): Promise<LendTransaction> {
265
+ // Get asset address for the chain (throws for native assets)
266
+ const assetAddress = getAssetAddress(params.asset, params.marketId.chainId)
267
+
268
+ // Generate supply transaction
269
+ const supplyCallData = encodeFunctionData({
270
+ abi: POOL_ABI,
271
+ functionName: 'supply',
272
+ args: [
273
+ assetAddress, // asset
274
+ params.amountWei, // amount
275
+ params.walletAddress, // onBehalfOf
276
+ 0, // referralCode
277
+ ],
278
+ })
279
+
280
+ return {
281
+ amount: params.amountWei,
282
+ asset: assetAddress,
283
+ marketId: params.marketId.address,
284
+ apy: marketInfo.apy.total,
285
+ transactionData: {
286
+ approval: this.buildApprovalTx(
287
+ assetAddress,
288
+ poolAddress,
289
+ params.amountWei,
290
+ ),
291
+ position: {
292
+ to: poolAddress,
293
+ data: supplyCallData,
294
+ value: 0n,
295
+ },
296
+ },
297
+ }
298
+ }
299
+
300
+ /**
301
+ * Close position for native ETH using WETHGateway
302
+ * @description Withdraws aWETH, unwraps to ETH, and sends to user
303
+ */
304
+ private async _closeETHPosition(
305
+ params: LendClosePositionParams,
306
+ poolAddress: Address,
307
+ marketInfo: LendMarket,
308
+ ): Promise<LendTransaction> {
309
+ const gatewayAddress = getWETHGatewayAddress(params.marketId.chainId)
310
+ if (!gatewayAddress) {
311
+ throw new Error(
312
+ `WETHGateway not available on chain ${params.marketId.chainId}`,
313
+ )
314
+ }
315
+
316
+ const wethAddress = getAssetAddress(WETH, params.marketId.chainId)
317
+
318
+ // Get the aToken address for the underlying WETH asset
319
+ const aWETHAddress = await getATokenAddress({
320
+ underlyingAsset: wethAddress,
321
+ chainId: params.marketId.chainId,
322
+ chainManager: this.chainManager,
323
+ })
324
+
325
+ // Call withdrawETH on gateway
326
+ const withdrawCallData = encodeFunctionData({
327
+ abi: WETH_GATEWAY_ABI,
328
+ functionName: 'withdrawETH',
329
+ args: [
330
+ poolAddress, // pool
331
+ params.amount, // amount
332
+ params.walletAddress, // to (receives native ETH)
333
+ ],
334
+ })
335
+
336
+ return {
337
+ amount: params.amount,
338
+ asset: wethAddress,
339
+ marketId: params.marketId.address,
340
+ apy: marketInfo.apy.total,
341
+ transactionData: {
342
+ approval: this.buildApprovalTx(
343
+ aWETHAddress,
344
+ gatewayAddress,
345
+ params.amount,
346
+ ),
347
+ position: {
348
+ to: gatewayAddress,
349
+ data: withdrawCallData,
350
+ value: 0n,
351
+ },
352
+ },
353
+ }
354
+ }
355
+
356
+ /**
357
+ * Close position for standard ERC-20 tokens
358
+ */
359
+ private async _closeERC20Position(
360
+ params: LendClosePositionParams,
361
+ poolAddress: Address,
362
+ marketInfo: LendMarket,
363
+ ): Promise<LendTransaction> {
364
+ // Get asset address for the market's chain
365
+ const assetAddress = getAssetAddress(
366
+ marketInfo.asset,
367
+ params.marketId.chainId,
368
+ )
369
+
370
+ // Generate withdraw transaction
371
+ const withdrawCallData = encodeFunctionData({
372
+ abi: POOL_ABI,
373
+ functionName: 'withdraw',
374
+ args: [
375
+ assetAddress, // asset
376
+ params.amount, // amount
377
+ params.walletAddress, // to
378
+ ],
379
+ })
380
+
381
+ return {
382
+ amount: params.amount,
383
+ asset: assetAddress,
384
+ marketId: params.marketId.address,
385
+ apy: marketInfo.apy.total,
386
+ transactionData: {
387
+ position: {
388
+ to: poolAddress,
389
+ data: withdrawCallData,
390
+ value: 0n,
391
+ },
392
+ },
393
+ }
394
+ }
395
+ }
@@ -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
+ }