@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
@@ -30,7 +30,7 @@ export type LendMarketConfigMetadata = {
30
30
  /** Asset information for this market */
31
31
  asset: Asset
32
32
  /** Lending provider type */
33
- lendProvider: 'morpho'
33
+ lendProvider: 'morpho' | 'aave'
34
34
  }
35
35
 
36
36
  /**
@@ -83,16 +83,13 @@ export interface LendTransaction {
83
83
  marketId: string
84
84
  /** Estimated APY at time of lending */
85
85
  apy: number
86
- /** Transaction data for execution (optional) */
87
- transactionData?: {
86
+ /** Transaction data for execution */
87
+ transactionData: {
88
88
  /** Approval transaction (if needed) */
89
89
  approval?: TransactionData
90
- /** Main operation transaction (openPosition or closePosition) */
91
- openPosition?: TransactionData
92
- closePosition?: TransactionData
90
+ /** Main position transaction */
91
+ position: TransactionData
93
92
  }
94
- /** Slippage tolerance used */
95
- slippage?: number
96
93
  }
97
94
 
98
95
  /**
@@ -204,8 +201,6 @@ export interface LendMarket {
204
201
  * @description Configuration options for lending operations
205
202
  */
206
203
  export interface LendOptions {
207
- /** Maximum slippage tolerance (basis points) */
208
- slippage?: number
209
204
  /** Deadline for transaction (timestamp) */
210
205
  deadline?: number
211
206
  /** Gas limit override */
@@ -215,32 +210,16 @@ export interface LendOptions {
215
210
  }
216
211
 
217
212
  /**
218
- * Base lending provider configuration
219
- * @description Base configuration shared by all lending providers
213
+ * Individual lending provider configuration
214
+ * @description Configuration for a single lending provider
220
215
  */
221
- export interface BaseLendConfig {
222
- /** Default slippage tolerance (basis points) */
223
- defaultSlippage?: number
216
+ export interface LendProviderConfig {
224
217
  /** Allowlist of markets available for lending */
225
218
  marketAllowlist?: LendMarketConfig[]
219
+ /** Blocklist of markets to exclude from lending */
220
+ marketBlocklist?: LendMarketConfig[]
226
221
  }
227
222
 
228
- /**
229
- * Morpho lending provider configuration
230
- * @description Configuration specific to Morpho lending provider
231
- */
232
- export interface MorphoLendConfig extends BaseLendConfig {
233
- /** Lending provider name */
234
- provider: 'morpho'
235
- // Morpho-specific fields can be added here in the future
236
- }
237
-
238
- /**
239
- * Lending provider configuration
240
- * @description Union of all possible lending provider configurations
241
- */
242
- export type LendConfig = MorphoLendConfig
243
-
244
223
  /**
245
224
  * Market position information
246
225
  * @description Position details for a user in a lending market
@@ -284,8 +263,10 @@ export interface LendOpenPositionParams extends LendOpenPositionBaseParams {
284
263
  /**
285
264
  * Internal parameters for provider _openPosition method with amount already converted to wei
286
265
  */
287
- export interface LendOpenPositionInternalParams
288
- extends Omit<LendOpenPositionBaseParams, 'walletAddress'> {
266
+ export interface LendOpenPositionInternalParams extends Omit<
267
+ LendOpenPositionBaseParams,
268
+ 'walletAddress'
269
+ > {
289
270
  /** Amount to lend in wei */
290
271
  amountWei: bigint
291
272
  /** Wallet address for receiving shares and as owner (required in internal params) */
@@ -0,0 +1,18 @@
1
+ import type { Address } from 'viem'
2
+
3
+ /**
4
+ * Morpho contract addresses needed per chain
5
+ */
6
+ export interface MorphoContracts {
7
+ /** Morpho Blue core contract - market state, positions, supply/withdraw */
8
+ morphoBlue: Address
9
+ /** Interest Rate Model contract - borrow rate calculation for APY */
10
+ irm: Address
11
+ /** MetaMorpho vault factory (optional, only for vault creation) */
12
+ metaMorphoFactory?: Address
13
+ }
14
+
15
+ /**
16
+ * Registry mapping chainId to Morpho contracts
17
+ */
18
+ export type MorphoContractsRegistry = Record<number, MorphoContracts>
@@ -1,2 +1,3 @@
1
1
  export * from '@/types/lend/base.js'
2
+ export * from '@/types/lend/contracts.js'
2
3
  export * from '@/types/lend/morpho.js'
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, it } from 'vitest'
2
2
 
3
- import { MockUSDCAsset, MockWETHAsset } from '@/test/MockAssets.js'
3
+ import { MockUSDCAsset, MockWETHAsset } from '@/__mocks__/MockAssets.js'
4
4
  import { isAssetSupportedOnChain } from '@/utils/assets.js'
5
5
 
6
6
  describe('Asset Utilities', () => {
@@ -37,6 +37,15 @@ export function formatAssetAmount(amount: bigint, decimals: number): number {
37
37
  return parseFloat(result)
38
38
  }
39
39
 
40
+ /**
41
+ * Check if asset is a native asset (e.g. ETH)
42
+ * @param asset - Asset definition
43
+ * @returns Whether the asset is native
44
+ */
45
+ export function isNativeAsset(asset: Asset): boolean {
46
+ return asset.type === 'native'
47
+ }
48
+
40
49
  /**
41
50
  * Check if asset is supported on a specific chain
42
51
  * @param asset - Asset definition
@@ -55,7 +64,7 @@ export function isAssetSupportedOnChain(
55
64
  * @param asset - Asset definition
56
65
  * @param chainId - Chain ID
57
66
  * @returns Asset address on the specified chain
58
- * @throws Error if asset is not supported on the chain
67
+ * @throws Error if asset is not supported on the chain or is a native asset
59
68
  */
60
69
  export function getAssetAddress(
61
70
  asset: Asset,
@@ -67,5 +76,10 @@ export function getAssetAddress(
67
76
  `Asset ${asset.metadata.symbol} is not supported on chain ${chainId}`,
68
77
  )
69
78
  }
79
+ if (address === 'native') {
80
+ throw new Error(
81
+ `Asset ${asset.metadata.symbol} is a native asset and has no contract address.`,
82
+ )
83
+ }
70
84
  return address
71
85
  }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Seconds per year for APY calculations (365 days)
3
+ */
4
+ export const SECONDS_PER_YEAR = 31536000n
@@ -18,10 +18,8 @@ import type { SmartWallet } from '@/wallet/core/wallets/smart/abstract/SmartWall
18
18
  export class WalletNamespace<
19
19
  THostedProviderType extends string,
20
20
  TToActionsMap extends Record<THostedProviderType, unknown>,
21
- H extends HostedWalletProvider<
22
- THostedProviderType,
23
- TToActionsMap
24
- > = HostedWalletProvider<THostedProviderType, TToActionsMap>,
21
+ H extends HostedWalletProvider<THostedProviderType, TToActionsMap> =
22
+ HostedWalletProvider<THostedProviderType, TToActionsMap>,
25
23
  S extends SmartWalletProvider = SmartWalletProvider,
26
24
  > {
27
25
  private provider: WalletProvider<THostedProviderType, TToActionsMap, H, S>
@@ -3,16 +3,16 @@ import { getAddress } from 'viem'
3
3
  import { unichain } from 'viem/chains'
4
4
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
5
5
 
6
- import type { SupportedChainId } from '@/constants/supportedChains.js'
7
- import type { ChainManager } from '@/services/ChainManager.js'
8
- import { MockChainManager } from '@/test/MockChainManager.js'
9
- import { createMockLendProvider } from '@/test/MockLendProvider.js'
10
6
  import {
11
7
  createMockPrivyClient,
12
8
  createMockPrivyWallet,
13
9
  getMockAuthorizationContext,
14
- } from '@/test/MockPrivyClient.js'
15
- import { getRandomAddress } from '@/test/utils.js'
10
+ } from '@/__mocks__/MockPrivyClient.js'
11
+ import { getRandomAddress } from '@/__mocks__/utils.js'
12
+ import type { SupportedChainId } from '@/constants/supportedChains.js'
13
+ import { createMockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
14
+ import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
15
+ import type { ChainManager } from '@/services/ChainManager.js'
16
16
  import { WalletNamespace } from '@/wallet/core/namespace/WalletNamespace.js'
17
17
  import { DefaultSmartWalletProvider } from '@/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js'
18
18
  import { WalletProvider } from '@/wallet/core/providers/WalletProvider.js'
@@ -46,7 +46,7 @@ describe('WalletNamespace', () => {
46
46
  })
47
47
  const smartWalletProvider = new DefaultSmartWalletProvider(
48
48
  mockChainManager,
49
- mockLendProvider,
49
+ { morpho: mockLendProvider },
50
50
  )
51
51
  const walletProvider = new WalletProvider(
52
52
  hostedWalletProvider,
@@ -71,7 +71,7 @@ describe('WalletNamespace', () => {
71
71
  })
72
72
  const smartWalletProvider = new DefaultSmartWalletProvider(
73
73
  mockChainManager,
74
- mockLendProvider,
74
+ { morpho: mockLendProvider },
75
75
  )
76
76
  const walletProvider = new WalletProvider(
77
77
  hostedWalletProvider,
@@ -92,7 +92,7 @@ describe('WalletNamespace', () => {
92
92
  })
93
93
  const smartWalletProvider = new DefaultSmartWalletProvider(
94
94
  mockChainManager,
95
- mockLendProvider,
95
+ { morpho: mockLendProvider },
96
96
  )
97
97
  const walletProvider = new WalletProvider(
98
98
  hostedWalletProvider,
@@ -133,7 +133,7 @@ describe('WalletNamespace', () => {
133
133
  })
134
134
  const smartWalletProvider = new DefaultSmartWalletProvider(
135
135
  mockChainManager,
136
- mockLendProvider,
136
+ { morpho: mockLendProvider },
137
137
  )
138
138
  const walletProvider = new WalletProvider(
139
139
  hostedWalletProvider,
@@ -217,7 +217,7 @@ describe('WalletNamespace', () => {
217
217
  })
218
218
  const smartWalletProvider = new DefaultSmartWalletProvider(
219
219
  mockChainManager,
220
- mockLendProvider,
220
+ { morpho: mockLendProvider },
221
221
  )
222
222
  const walletProvider = new WalletProvider(
223
223
  hostedWalletProvider,
@@ -259,7 +259,7 @@ describe('WalletNamespace', () => {
259
259
  })
260
260
  const smartWalletProvider = new DefaultSmartWalletProvider(
261
261
  mockChainManager,
262
- mockLendProvider,
262
+ { morpho: mockLendProvider },
263
263
  )
264
264
  const walletProvider = new WalletProvider(
265
265
  hostedWalletProvider,
@@ -295,7 +295,7 @@ describe('WalletNamespace', () => {
295
295
  })
296
296
  const smartWalletProvider = new DefaultSmartWalletProvider(
297
297
  mockChainManager,
298
- mockLendProvider,
298
+ { morpho: mockLendProvider },
299
299
  )
300
300
  const walletProvider = new WalletProvider(
301
301
  hostedWalletProvider,
@@ -338,7 +338,7 @@ describe('WalletNamespace', () => {
338
338
  })
339
339
  const smartWalletProvider = new DefaultSmartWalletProvider(
340
340
  mockChainManager,
341
- mockLendProvider,
341
+ { morpho: mockLendProvider },
342
342
  )
343
343
  const walletProvider = new WalletProvider(
344
344
  hostedWalletProvider,
@@ -368,7 +368,7 @@ describe('WalletNamespace', () => {
368
368
  })
369
369
  const smartWalletProvider = new DefaultSmartWalletProvider(
370
370
  mockChainManager,
371
- mockLendProvider,
371
+ { morpho: mockLendProvider },
372
372
  )
373
373
  const walletProvider = new WalletProvider(
374
374
  hostedWalletProvider,
@@ -2,16 +2,16 @@ import type { WaitForUserOperationReceiptReturnType } from 'viem/account-abstrac
2
2
  import { unichain } from 'viem/chains'
3
3
  import { beforeEach, describe, expect, it, vi } from 'vitest'
4
4
 
5
- import type { SupportedChainId } from '@/constants/supportedChains.js'
6
- import type { ChainManager } from '@/services/ChainManager.js'
7
- import { MockChainManager } from '@/test/MockChainManager.js'
8
- import { createMockLendProvider } from '@/test/MockLendProvider.js'
9
5
  import {
10
6
  createMockPrivyClient,
11
7
  createMockPrivyWallet,
12
8
  getMockAuthorizationContext,
13
- } from '@/test/MockPrivyClient.js'
14
- import { getRandomAddress } from '@/test/utils.js'
9
+ } from '@/__mocks__/MockPrivyClient.js'
10
+ import { getRandomAddress } from '@/__mocks__/utils.js'
11
+ import type { SupportedChainId } from '@/constants/supportedChains.js'
12
+ import { createMockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
13
+ import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
14
+ import type { ChainManager } from '@/services/ChainManager.js'
15
15
  import { DefaultSmartWalletProvider } from '@/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js'
16
16
  import { WalletProvider } from '@/wallet/core/providers/WalletProvider.js'
17
17
  import { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
@@ -42,7 +42,7 @@ describe('WalletProvider', () => {
42
42
  })
43
43
  const smartWalletProvider = new DefaultSmartWalletProvider(
44
44
  mockChainManager,
45
- mockLendProvider,
45
+ { morpho: mockLendProvider },
46
46
  )
47
47
  const walletProvider = new WalletProvider(
48
48
  hostedWalletProvider,
@@ -96,7 +96,7 @@ describe('WalletProvider', () => {
96
96
  })
97
97
  const smartWalletProvider = new DefaultSmartWalletProvider(
98
98
  mockChainManager,
99
- mockLendProvider,
99
+ { morpho: mockLendProvider },
100
100
  )
101
101
  const walletProvider = new WalletProvider(
102
102
  hostedWalletProvider,
@@ -151,7 +151,7 @@ describe('WalletProvider', () => {
151
151
  })
152
152
  const smartWalletProvider = new DefaultSmartWalletProvider(
153
153
  mockChainManager,
154
- mockLendProvider,
154
+ { morpho: mockLendProvider },
155
155
  )
156
156
  const walletProvider = new WalletProvider(
157
157
  hostedWalletProvider,
@@ -204,7 +204,7 @@ describe('WalletProvider', () => {
204
204
  })
205
205
  const smartWalletProvider = new DefaultSmartWalletProvider(
206
206
  mockChainManager,
207
- mockLendProvider,
207
+ { morpho: mockLendProvider },
208
208
  )
209
209
  const walletProvider = new WalletProvider(
210
210
  hostedWalletProvider,
@@ -237,7 +237,7 @@ describe('WalletProvider', () => {
237
237
  })
238
238
  const smartWalletProvider = new DefaultSmartWalletProvider(
239
239
  mockChainManager,
240
- mockLendProvider,
240
+ { morpho: mockLendProvider },
241
241
  )
242
242
  const mockWalletAddress = getRandomAddress()
243
243
  const getWalletAddressSpy = vi
@@ -284,7 +284,7 @@ describe('WalletProvider', () => {
284
284
  })
285
285
  const smartWalletProvider = new DefaultSmartWalletProvider(
286
286
  mockChainManager,
287
- mockLendProvider,
287
+ { morpho: mockLendProvider },
288
288
  )
289
289
  const walletProvider = new WalletProvider(
290
290
  hostedWalletProvider,
@@ -318,7 +318,7 @@ describe('WalletProvider', () => {
318
318
  })
319
319
  const smartWalletProvider = new DefaultSmartWalletProvider(
320
320
  mockChainManager,
321
- mockLendProvider,
321
+ { morpho: mockLendProvider },
322
322
  )
323
323
  const walletProvider = new WalletProvider(
324
324
  hostedWalletProvider,
@@ -358,7 +358,7 @@ describe('WalletProvider', () => {
358
358
  })
359
359
  const smartWalletProvider = new DefaultSmartWalletProvider(
360
360
  mockChainManager,
361
- mockLendProvider,
361
+ { morpho: mockLendProvider },
362
362
  )
363
363
  const walletProvider = new WalletProvider(
364
364
  hostedWalletProvider,
@@ -1,7 +1,9 @@
1
1
  import type { LocalAccount } from 'viem'
2
2
 
3
+ import type { LendProvider } from '@/lend/core/LendProvider.js'
3
4
  import type { ChainManager } from '@/services/ChainManager.js'
4
- import type { LendConfig, LendProvider } from '@/types/lend/index.js'
5
+ import type { LendProviderConfig } from '@/types/actions.js'
6
+ import type { Asset } from '@/types/asset.js'
5
7
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
6
8
 
7
9
  /**
@@ -15,14 +17,23 @@ export abstract class HostedWalletProvider<
15
17
  TOptionsMap extends Record<TType, unknown>,
16
18
  > {
17
19
  protected chainManager: ChainManager
18
- protected lendProvider?: LendProvider<LendConfig>
20
+ protected lendProviders: {
21
+ morpho?: LendProvider<LendProviderConfig>
22
+ aave?: LendProvider<LendProviderConfig>
23
+ }
24
+ protected supportedAssets?: Asset[]
19
25
 
20
26
  protected constructor(
21
27
  chainManager: ChainManager,
22
- lendProvider?: LendProvider<LendConfig>,
28
+ lendProviders?: {
29
+ morpho?: LendProvider<LendProviderConfig>
30
+ aave?: LendProvider<LendProviderConfig>
31
+ },
32
+ supportedAssets?: Asset[],
23
33
  ) {
24
34
  this.chainManager = chainManager
25
- this.lendProvider = lendProvider
35
+ this.lendProviders = lendProviders || {}
36
+ this.supportedAssets = supportedAssets
26
37
  }
27
38
  /**
28
39
  * Convert a hosted wallet to an Actions wallet
@@ -2,12 +2,12 @@ import type { PrivyClient } from '@privy-io/node'
2
2
  import { unichain } from 'viem/chains'
3
3
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
4
4
 
5
- import type { ChainManager } from '@/services/ChainManager.js'
6
- import { MockChainManager } from '@/test/MockChainManager.js'
7
5
  import {
8
6
  createMockPrivyClient,
9
7
  getMockAuthorizationContext,
10
- } from '@/test/MockPrivyClient.js'
8
+ } from '@/__mocks__/MockPrivyClient.js'
9
+ import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
10
+ import type { ChainManager } from '@/services/ChainManager.js'
11
11
  import { HostedWalletProviderRegistry } from '@/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js'
12
12
  import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
13
13
  import type { NodeOptionsMap } from '@/wallet/node/providers/hosted/types/index.js'
@@ -1,5 +1,7 @@
1
+ import type { LendProvider } from '@/lend/core/LendProvider.js'
1
2
  import type { ChainManager } from '@/services/ChainManager.js'
2
- import type { LendConfig, LendProvider } from '@/types/lend/index.js'
3
+ import type { LendProviderConfig } from '@/types/actions.js'
4
+ import type { Asset } from '@/types/asset.js'
3
5
  import type { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
4
6
 
5
7
  /**
@@ -10,7 +12,11 @@ import type { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstra
10
12
  */
11
13
  export interface HostedProviderDeps {
12
14
  chainManager: ChainManager
13
- lendProvider?: LendProvider<LendConfig>
15
+ lendProviders?: {
16
+ morpho?: LendProvider<LendProviderConfig>
17
+ aave?: LendProvider<LendProviderConfig>
18
+ }
19
+ supportedAssets?: Asset[]
14
20
  }
15
21
 
16
22
  /**
@@ -2,8 +2,10 @@ import type { Address, Hex, LocalAccount } from 'viem'
2
2
  import { keccak256, slice, toHex } from 'viem'
3
3
 
4
4
  import type { SupportedChainId } from '@/constants/supportedChains.js'
5
+ import type { LendProvider } from '@/lend/core/LendProvider.js'
5
6
  import type { ChainManager } from '@/services/ChainManager.js'
6
- import type { LendConfig, LendProvider } from '@/types/lend/index.js'
7
+ import type { LendProviderConfig } from '@/types/actions.js'
8
+ import type { Asset } from '@/types/asset.js'
7
9
  import { SmartWalletProvider } from '@/wallet/core/providers/smart/abstract/SmartWalletProvider.js'
8
10
  import type { SmartWalletCreationResult } from '@/wallet/core/providers/smart/abstract/types/index.js'
9
11
  import type { Signer } from '@/wallet/core/wallets/smart/abstract/types/index.js'
@@ -24,25 +26,36 @@ import { SmartWalletDeploymentError } from '@/wallet/core/wallets/smart/error/er
24
26
  export class DefaultSmartWalletProvider extends SmartWalletProvider {
25
27
  /** Manages supported blockchain networks */
26
28
  private chainManager: ChainManager
27
- /** Provider for lending market operations */
28
- private lendProvider?: LendProvider<LendConfig>
29
+ /** Providers for lending market operations */
30
+ private lendProviders: {
31
+ morpho?: LendProvider<LendProviderConfig>
32
+ aave?: LendProvider<LendProviderConfig>
33
+ }
34
+ /** Supported assets for this wallet provider */
35
+ private supportedAssets?: Asset[]
29
36
  /** Optional 16-byte attribution suffix appended to callData */
30
37
  private attributionSuffix?: Hex
31
38
 
32
39
  /**
33
40
  * Initialize the Smart Wallet Provider
34
41
  * @param chainManager - Manages supported blockchain networks
35
- * @param paymasterAndBundlerUrl - URL for ERC-4337 bundler and paymaster services
36
- * @param lendProvider - Provider for lending market operations
42
+ * @param lendProviders - Providers for lending market operations
43
+ * @param supportedAssets - Optional list of supported assets
44
+ * @param attributionSuffix - Optional attribution suffix
37
45
  */
38
46
  constructor(
39
47
  chainManager: ChainManager,
40
- lendProvider?: LendProvider<LendConfig>,
48
+ lendProviders?: {
49
+ morpho?: LendProvider<LendProviderConfig>
50
+ aave?: LendProvider<LendProviderConfig>
51
+ },
52
+ supportedAssets?: Asset[],
41
53
  attributionSuffix?: string,
42
54
  ) {
43
55
  super()
44
56
  this.chainManager = chainManager
45
- this.lendProvider = lendProvider
57
+ this.lendProviders = lendProviders || {}
58
+ this.supportedAssets = supportedAssets
46
59
  if (attributionSuffix) {
47
60
  this.attributionSuffix =
48
61
  DefaultSmartWalletProvider.computeAttributionSuffix(attributionSuffix)
@@ -79,7 +92,8 @@ export class DefaultSmartWalletProvider extends SmartWalletProvider {
79
92
  signers,
80
93
  signer,
81
94
  chainManager: this.chainManager,
82
- lendProvider: this.lendProvider,
95
+ lendProviders: this.lendProviders,
96
+ supportedAssets: this.supportedAssets,
83
97
  nonce,
84
98
  attributionSuffix: this.attributionSuffix,
85
99
  })
@@ -167,7 +181,8 @@ export class DefaultSmartWalletProvider extends SmartWalletProvider {
167
181
  signers,
168
182
  signer,
169
183
  chainManager: this.chainManager,
170
- lendProvider: this.lendProvider,
184
+ lendProviders: this.lendProviders,
185
+ supportedAssets: this.supportedAssets,
171
186
  deploymentAddress: walletAddress,
172
187
  attributionSuffix: this.attributionSuffix,
173
188
  })