@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
@@ -14,11 +14,11 @@ import type {
14
14
  } from 'viem/account-abstraction'
15
15
  import { beforeEach, describe, expect, it, vi } from 'vitest'
16
16
 
17
+ import { getRandomAddress } from '@/__mocks__/utils.js'
17
18
  import type { SupportedChainId } from '@/constants/supportedChains.js'
19
+ import { createMockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
20
+ import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
18
21
  import type { ChainManager } from '@/services/ChainManager.js'
19
- import { MockChainManager } from '@/test/MockChainManager.js'
20
- import { createMockLendProvider } from '@/test/MockLendProvider.js'
21
- import { getRandomAddress } from '@/test/utils.js'
22
22
  import { DefaultSmartWalletProvider } from '@/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js'
23
23
  import { createMock as createDefaultSmartWalletMock } from '@/wallet/core/wallets/smart/default/__mocks__/DefaultSmartWallet.js'
24
24
  import {
@@ -35,6 +35,7 @@ const mockSigner: LocalAccount = {
35
35
  address: getRandomAddress(),
36
36
  type: 'local',
37
37
  } as unknown as LocalAccount
38
+ const supportedAssets = undefined
38
39
 
39
40
  describe('DefaultSmartWalletProvider', () => {
40
41
  const mockWallet: ReturnType<typeof createDefaultSmartWalletMock> =
@@ -75,10 +76,9 @@ describe('DefaultSmartWalletProvider', () => {
75
76
  })
76
77
 
77
78
  it('should create a wallet and return deployment results', async () => {
78
- const provider = new DefaultSmartWalletProvider(
79
- mockChainManager,
80
- mockLendProvider,
81
- )
79
+ const provider = new DefaultSmartWalletProvider(mockChainManager, {
80
+ morpho: mockLendProvider,
81
+ })
82
82
  const signers = [mockSigner.address, getRandomAddress()]
83
83
  const nonce = BigInt(123)
84
84
 
@@ -117,10 +117,9 @@ describe('DefaultSmartWalletProvider', () => {
117
117
  })
118
118
 
119
119
  it('should report deployment successes across multiple chains', async () => {
120
- const provider = new DefaultSmartWalletProvider(
121
- mockChainManager,
122
- mockLendProvider,
123
- )
120
+ const provider = new DefaultSmartWalletProvider(mockChainManager, {
121
+ morpho: mockLendProvider,
122
+ })
124
123
  const signers = [mockSigner.address, getRandomAddress()]
125
124
  const nonce = BigInt(123)
126
125
 
@@ -159,17 +158,15 @@ describe('DefaultSmartWalletProvider', () => {
159
158
  })
160
159
 
161
160
  it('should report deployment failures', async () => {
162
- const provider = new DefaultSmartWalletProvider(
163
- mockChainManager,
164
- mockLendProvider,
165
- )
161
+ const provider = new DefaultSmartWalletProvider(mockChainManager, {
162
+ morpho: mockLendProvider,
163
+ })
166
164
  const signers = [mockSigner.address, getRandomAddress()]
167
165
  const nonce = BigInt(123)
168
166
 
169
167
  // Mock deploy to fail for all chains
170
- const { SmartWalletDeploymentError } = await import(
171
- '@/wallet/core/wallets/smart/error/errors.js'
172
- )
168
+ const { SmartWalletDeploymentError } =
169
+ await import('@/wallet/core/wallets/smart/error/errors.js')
173
170
  vi.mocked(mockWallet.deploy)
174
171
  .mockRejectedValueOnce(
175
172
  new SmartWalletDeploymentError('Deployment failed', 1),
@@ -205,16 +202,14 @@ describe('DefaultSmartWalletProvider', () => {
205
202
  })
206
203
 
207
204
  it('should handle mixed deployment successes and failures', async () => {
208
- const provider = new DefaultSmartWalletProvider(
209
- mockChainManager,
210
- mockLendProvider,
211
- )
205
+ const provider = new DefaultSmartWalletProvider(mockChainManager, {
206
+ morpho: mockLendProvider,
207
+ })
212
208
  const signers = [mockSigner.address, getRandomAddress()]
213
209
  const nonce = BigInt(123)
214
210
 
215
- const { SmartWalletDeploymentError } = await import(
216
- '@/wallet/core/wallets/smart/error/errors.js'
217
- )
211
+ const { SmartWalletDeploymentError } =
212
+ await import('@/wallet/core/wallets/smart/error/errors.js')
218
213
 
219
214
  // Mock deploy to succeed for chain 1, fail for chain 130
220
215
  vi.mocked(mockWallet.deploy)
@@ -255,10 +250,9 @@ describe('DefaultSmartWalletProvider', () => {
255
250
  })
256
251
 
257
252
  it('should respect deploymentChainIds parameter', async () => {
258
- const provider = new DefaultSmartWalletProvider(
259
- mockChainManager,
260
- mockLendProvider,
261
- )
253
+ const provider = new DefaultSmartWalletProvider(mockChainManager, {
254
+ morpho: mockLendProvider,
255
+ })
262
256
  const signers = [mockSigner.address, getRandomAddress()]
263
257
  const nonce = BigInt(123)
264
258
  const deploymentChainIds: SupportedChainId[] = [1]
@@ -286,10 +280,9 @@ describe('DefaultSmartWalletProvider', () => {
286
280
  })
287
281
 
288
282
  it('should throw error for non-SmartWalletDeploymentError failures', async () => {
289
- const provider = new DefaultSmartWalletProvider(
290
- mockChainManager,
291
- mockLendProvider,
292
- )
283
+ const provider = new DefaultSmartWalletProvider(mockChainManager, {
284
+ morpho: mockLendProvider,
285
+ })
293
286
  const signers = [mockSigner.address, getRandomAddress()]
294
287
  const nonce = BigInt(123)
295
288
 
@@ -306,10 +299,9 @@ describe('DefaultSmartWalletProvider', () => {
306
299
  })
307
300
 
308
301
  it('should get wallet address with correct contract call', async () => {
309
- const provider = new DefaultSmartWalletProvider(
310
- mockChainManager,
311
- mockLendProvider,
312
- )
302
+ const provider = new DefaultSmartWalletProvider(mockChainManager, {
303
+ morpho: mockLendProvider,
304
+ })
313
305
  const signers = [mockSigner.address, getRandomAddress()]
314
306
  const nonce = BigInt(456)
315
307
  const mockAddress = getRandomAddress()
@@ -329,10 +321,9 @@ describe('DefaultSmartWalletProvider', () => {
329
321
  })
330
322
 
331
323
  it('should get wallet address with default nonce', async () => {
332
- const provider = new DefaultSmartWalletProvider(
333
- mockChainManager,
334
- mockLendProvider,
335
- )
324
+ const provider = new DefaultSmartWalletProvider(mockChainManager, {
325
+ morpho: mockLendProvider,
326
+ })
336
327
  const signers = [getRandomAddress()]
337
328
  const mockAddress = getRandomAddress()
338
329
 
@@ -351,10 +342,9 @@ describe('DefaultSmartWalletProvider', () => {
351
342
  })
352
343
 
353
344
  it('should handle WebAuthn accounts in wallet address calculation', async () => {
354
- const provider = new DefaultSmartWalletProvider(
355
- mockChainManager,
356
- mockLendProvider,
357
- )
345
+ const provider = new DefaultSmartWalletProvider(mockChainManager, {
346
+ morpho: mockLendProvider,
347
+ })
358
348
  const webAuthnAccount: WebAuthnAccount = {
359
349
  type: 'webAuthn',
360
350
  publicKey: '0x123456789abcdef',
@@ -380,10 +370,9 @@ describe('DefaultSmartWalletProvider', () => {
380
370
  })
381
371
 
382
372
  it('should throw error for invalid signer type', async () => {
383
- const provider = new DefaultSmartWalletProvider(
384
- mockChainManager,
385
- mockLendProvider,
386
- )
373
+ const provider = new DefaultSmartWalletProvider(mockChainManager, {
374
+ morpho: mockLendProvider,
375
+ })
387
376
  const invalidSigner = { type: 'invalid' } as unknown as Address
388
377
  const signers = [invalidSigner]
389
378
 
@@ -393,10 +382,9 @@ describe('DefaultSmartWalletProvider', () => {
393
382
  })
394
383
 
395
384
  it('should get existing wallet', async () => {
396
- const provider = new DefaultSmartWalletProvider(
397
- mockChainManager,
398
- mockLendProvider,
399
- )
385
+ const provider = new DefaultSmartWalletProvider(mockChainManager, {
386
+ morpho: mockLendProvider,
387
+ })
400
388
  const walletAddress = getRandomAddress()
401
389
 
402
390
  const wallet = await provider.getWallet({
@@ -424,7 +412,8 @@ describe('DefaultSmartWalletProvider', () => {
424
412
  DefaultSmartWalletProvider.computeAttributionSuffix(attributionSeed)
425
413
  const provider = new DefaultSmartWalletProvider(
426
414
  mockChainManager,
427
- mockLendProvider,
415
+ { morpho: mockLendProvider },
416
+ supportedAssets,
428
417
  attributionSeed,
429
418
  )
430
419
 
@@ -450,7 +439,8 @@ describe('DefaultSmartWalletProvider', () => {
450
439
  DefaultSmartWalletProvider.computeAttributionSuffix(attributionSeed)
451
440
  const provider = new DefaultSmartWalletProvider(
452
441
  mockChainManager,
453
- mockLendProvider,
442
+ { morpho: mockLendProvider },
443
+ supportedAssets,
454
444
  attributionSeed,
455
445
  )
456
446
 
@@ -1,17 +1,14 @@
1
1
  import type { Address, LocalAccount } from 'viem'
2
2
 
3
3
  import type { SupportedChainId } from '@/constants/supportedChains.js'
4
+ import type { LendProvider } from '@/lend/core/LendProvider.js'
4
5
  import { WalletLendNamespace } from '@/lend/namespaces/WalletLendNamespace.js'
5
6
  import type { ChainManager } from '@/services/ChainManager.js'
6
7
  import { fetchERC20Balance, fetchETHBalance } from '@/services/tokenBalance.js'
7
8
  import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
8
- import type { TokenBalance } from '@/types/asset.js'
9
- import type {
10
- BaseLendConfig,
11
- LendConfig,
12
- LendProvider,
13
- TransactionData,
14
- } from '@/types/lend/index.js'
9
+ import type { LendProviderConfig } from '@/types/actions.js'
10
+ import type { Asset, TokenBalance } from '@/types/asset.js'
11
+ import type { TransactionData } from '@/types/lend/index.js'
15
12
  import type {
16
13
  BatchTransactionReturnType,
17
14
  TransactionReturnType,
@@ -24,11 +21,16 @@ import type {
24
21
  */
25
22
  export abstract class Wallet {
26
23
  /** Lend namespace with all lending operations */
27
- lend?: WalletLendNamespace<BaseLendConfig>
28
- /** Provider for lending market operations */
29
- protected lendProvider?: LendProvider<LendConfig>
24
+ lend?: WalletLendNamespace
25
+ /** Providers for lending market operations */
26
+ protected lendProviders: {
27
+ morpho?: LendProvider<LendProviderConfig>
28
+ aave?: LendProvider<LendProviderConfig>
29
+ }
30
30
  /** Manages supported blockchain networks and RPC clients */
31
31
  protected chainManager: ChainManager
32
+ /** List of supported assets for this wallet */
33
+ protected supportedAssets: Asset[]
32
34
  /** Promise to initialize the wallet */
33
35
  private initPromise?: Promise<void>
34
36
 
@@ -50,27 +52,33 @@ export abstract class Wallet {
50
52
  /**
51
53
  * Create a new wallet
52
54
  * @param chainManager - Chain manager for the wallet
53
- * @param lendProvider - Lend provider for the wallet
55
+ * @param lendProviders - Lend providers for the wallet
56
+ * @param supportedAssets - List of supported assets (defaults to all SUPPORTED_TOKENS)
54
57
  */
55
58
  protected constructor(
56
59
  chainManager: ChainManager,
57
- lendProvider?: LendProvider<LendConfig>,
60
+ lendProviders?: {
61
+ morpho?: LendProvider<LendProviderConfig>
62
+ aave?: LendProvider<LendProviderConfig>
63
+ },
64
+ supportedAssets?: Asset[],
58
65
  ) {
59
66
  this.chainManager = chainManager
60
- this.lendProvider = lendProvider
61
- if (this.lendProvider) {
62
- this.lend = new WalletLendNamespace(this.lendProvider, this)
67
+ this.lendProviders = lendProviders || {}
68
+ this.supportedAssets = supportedAssets || SUPPORTED_TOKENS
69
+ if (this.lendProviders.morpho || this.lendProviders.aave) {
70
+ this.lend = new WalletLendNamespace(this.lendProviders, this)
63
71
  }
64
72
  }
65
73
 
66
74
  /**
67
75
  * Get asset balances across all supported chains
68
76
  * @description Fetches ETH and ERC20 token balances for this wallet across all supported networks.
77
+ * Uses the configured supported assets from ActionsConfig.assets if provided.
69
78
  * @returns Promise resolving to array of token balances with chain breakdown
70
79
  */
71
80
  async getBalance(): Promise<TokenBalance[]> {
72
- // TEMPORARY - will use optimism token list eventually
73
- const tokenBalancePromises = SUPPORTED_TOKENS.map(async (asset) => {
81
+ const tokenBalancePromises = this.supportedAssets.map(async (asset) => {
74
82
  return fetchERC20Balance(this.chainManager, this.address, asset)
75
83
  })
76
84
  const ethBalancePromise = fetchETHBalance(this.chainManager, this.address)
@@ -2,12 +2,12 @@ import type { LocalAccount } from 'viem'
2
2
  import { unichain } from 'viem/chains'
3
3
  import { beforeEach, describe, expect, it, vi } from 'vitest'
4
4
 
5
+ import { getRandomAddress } from '@/__mocks__/utils.js'
5
6
  import type { WalletLendNamespace } from '@/lend/namespaces/WalletLendNamespace.js'
7
+ import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
6
8
  import type { ChainManager } from '@/services/ChainManager.js'
7
9
  import { fetchERC20Balance, fetchETHBalance } from '@/services/tokenBalance.js'
8
10
  import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
9
- import { MockChainManager } from '@/test/MockChainManager.js'
10
- import { getRandomAddress } from '@/test/utils.js'
11
11
  import { TestWallet } from '@/wallet/core/wallets/abstract/__mocks__/TestWallet.js'
12
12
 
13
13
  vi.mock('@/services/tokenBalance.js', async () => {
@@ -10,9 +10,9 @@ import { createWalletClient } from 'viem'
10
10
  import { unichain } from 'viem/chains'
11
11
  import { beforeEach, describe, expect, it, vi } from 'vitest'
12
12
 
13
+ import { getRandomAddress } from '@/__mocks__/utils.js'
14
+ import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
13
15
  import type { ChainManager } from '@/services/ChainManager.js'
14
- import { MockChainManager } from '@/test/MockChainManager.js'
15
- import { getRandomAddress } from '@/test/utils.js'
16
16
  import type { TransactionData } from '@/types/lend/index.js'
17
17
  import type { EOATransactionReceipt } from '@/wallet/core/wallets/abstract/types/index.js'
18
18
  import { EOAWallet } from '@/wallet/core/wallets/eoa/EOAWallet.js'
@@ -13,13 +13,11 @@ import { toCoinbaseSmartAccount } from 'viem/account-abstraction'
13
13
  import type { SupportedChainId } from '@/constants/supportedChains.js'
14
14
  import { TransactionConfirmedButRevertedError } from '@/core/error/errors.js'
15
15
  import { retryOnStaleRead } from '@/core/utils/retryOnStaleRead.js'
16
+ import type { LendProvider } from '@/lend/core/LendProvider.js'
16
17
  import type { ChainManager } from '@/services/ChainManager.js'
18
+ import type { LendProviderConfig } from '@/types/actions.js'
17
19
  import type { Asset } from '@/types/asset.js'
18
- import type {
19
- LendConfig,
20
- LendProvider,
21
- TransactionData,
22
- } from '@/types/lend/index.js'
20
+ import type { TransactionData } from '@/types/lend/index.js'
23
21
  import { parseAssetAmount } from '@/utils/assets.js'
24
22
  import { SmartWallet } from '@/wallet/core/wallets/smart/abstract/SmartWallet.js'
25
23
  import type { Signer } from '@/wallet/core/wallets/smart/abstract/types/index.js'
@@ -60,7 +58,7 @@ export class DefaultSmartWallet extends SmartWallet {
60
58
  * @param owners - Array of wallet owners (addresses or WebAuthn accounts)
61
59
  * @param signer - Local account for signing transactions
62
60
  * @param chainManager - Network management service
63
- * @param lendProvider - Lending operations provider
61
+ * @param lendProviders - Lending operations providers
64
62
  * @param deploymentAddress - Known wallet address (if already deployed)
65
63
  * @param ownerIndex - Index of signer in owners array
66
64
  * @param nonce - Nonce for address generation
@@ -69,12 +67,16 @@ export class DefaultSmartWallet extends SmartWallet {
69
67
  signers: Signer[],
70
68
  signer: LocalAccount,
71
69
  chainManager: ChainManager,
72
- lendProvider?: LendProvider<LendConfig>,
70
+ lendProviders?: {
71
+ morpho?: LendProvider<LendProviderConfig>
72
+ aave?: LendProvider<LendProviderConfig>
73
+ },
74
+ supportedAssets?: Asset[],
73
75
  deploymentAddress?: Address,
74
76
  nonce?: bigint,
75
77
  attributionSuffix?: Hex,
76
78
  ) {
77
- super(chainManager, lendProvider)
79
+ super(chainManager, lendProviders, supportedAssets)
78
80
 
79
81
  const { signersWithLocalAccount, signerIndex } =
80
82
  DefaultSmartWallet.ensureLocalAccountSigner(signers, signer)
@@ -115,7 +117,11 @@ export class DefaultSmartWallet extends SmartWallet {
115
117
  signer: LocalAccount
116
118
  chainManager: ChainManager
117
119
  signers?: Signer[]
118
- lendProvider?: LendProvider<LendConfig>
120
+ lendProviders?: {
121
+ morpho?: LendProvider<LendProviderConfig>
122
+ aave?: LendProvider<LendProviderConfig>
123
+ }
124
+ supportedAssets?: Asset[]
119
125
  deploymentAddress?: Address
120
126
  nonce?: bigint
121
127
  attributionSuffix?: Hex
@@ -125,7 +131,8 @@ export class DefaultSmartWallet extends SmartWallet {
125
131
  signers,
126
132
  params.signer,
127
133
  params.chainManager,
128
- params.lendProvider,
134
+ params.lendProviders,
135
+ params.supportedAssets,
129
136
  params.deploymentAddress,
130
137
  params.nonce,
131
138
  params.attributionSuffix,
@@ -8,16 +8,13 @@ import { toCoinbaseSmartAccount } from 'viem/account-abstraction'
8
8
  import { baseSepolia, unichain } from 'viem/chains'
9
9
  import { beforeEach, describe, expect, it, vi } from 'vitest'
10
10
 
11
+ import { getRandomAddress } from '@/__mocks__/utils.js'
12
+ import { createMockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
13
+ import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
11
14
  import type { ChainManager } from '@/services/ChainManager.js'
12
15
  import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
13
- import { MockChainManager } from '@/test/MockChainManager.js'
14
- import { createMockLendProvider } from '@/test/MockLendProvider.js'
15
- import { getRandomAddress } from '@/test/utils.js'
16
- import type {
17
- LendConfig,
18
- LendProvider,
19
- TransactionData,
20
- } from '@/types/lend/index.js'
16
+ import type { LendProviderConfig } from '@/types/actions.js'
17
+ import type { LendProvider, TransactionData } from '@/types/lend/index.js'
21
18
  import {
22
19
  smartWalletAbi,
23
20
  smartWalletFactoryAbi,
@@ -754,7 +751,7 @@ async function createAndInitDefaultSmartWallet(
754
751
  signers?: Address[]
755
752
  signer?: LocalAccount
756
753
  chainManager?: ChainManager
757
- lendProvider?: LendProvider<LendConfig>
754
+ lendProvider?: LendProvider<LendProviderConfig>
758
755
  deploymentAddress?: Address
759
756
  nonce?: bigint
760
757
  attributionSuffix?: Hex
@@ -773,7 +770,7 @@ async function createAndInitDefaultSmartWallet(
773
770
  signers,
774
771
  signer,
775
772
  chainManager,
776
- lendProvider,
773
+ lendProviders: lendProvider ? { morpho: lendProvider } : undefined,
777
774
  deploymentAddress,
778
775
  nonce,
779
776
  attributionSuffix,
@@ -3,7 +3,7 @@ import { pad } from 'viem'
3
3
  import type { WebAuthnAccount } from 'viem/account-abstraction'
4
4
  import { describe, expect, it } from 'vitest'
5
5
 
6
- import { getRandomAddress } from '@/test/utils.js'
6
+ import { getRandomAddress } from '@/__mocks__/utils.js'
7
7
  import { findSignerInArray } from '@/wallet/core/wallets/smart/default/utils/findSignerInArray.js'
8
8
 
9
9
  describe('findSignerInArray', () => {
@@ -2,7 +2,7 @@ import type { Address, Hex, LocalAccount } from 'viem'
2
2
  import type { WebAuthnAccount } from 'viem/account-abstraction'
3
3
  import { describe, expect, it } from 'vitest'
4
4
 
5
- import { getRandomAddress } from '@/test/utils.js'
5
+ import { getRandomAddress } from '@/__mocks__/utils.js'
6
6
  import { getSignerPublicKey } from '@/wallet/core/wallets/smart/default/utils/getSignerPublicKey.js'
7
7
 
8
8
  describe('getSignerPublicKey', () => {
@@ -2,8 +2,10 @@ import type { AuthorizationContext, PrivyClient } from '@privy-io/node'
2
2
  import type { LocalAccount } from 'viem'
3
3
  import { getAddress } from 'viem'
4
4
 
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 { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
8
10
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
9
11
  import type {
@@ -29,7 +31,8 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
29
31
  * @param params - Configuration parameters
30
32
  * @param params.privyClient - Privy client instance
31
33
  * @param params.chainManager - Chain manager for multi-chain operations
32
- * @param params.lendProvider - Optional lend provider for DeFi operations
34
+ * @param params.lendProviders - Optional lend providers for DeFi operations
35
+ * @param params.supportedAssets - Optional list of supported assets
33
36
  * @param params.authorizationContext - Optional authorization context for the Privy client.
34
37
  * Used when Privy needs to sign requests.
35
38
  * See https://docs.privy.io/controls/authorization-keys/using-owners/sign/automatic#using-the-authorization-context
@@ -38,10 +41,14 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
38
41
  constructor(params: {
39
42
  privyClient: PrivyClient
40
43
  chainManager: ChainManager
41
- lendProvider?: LendProvider<LendConfig>
44
+ lendProviders?: {
45
+ morpho?: LendProvider<LendProviderConfig>
46
+ aave?: LendProvider<LendProviderConfig>
47
+ }
48
+ supportedAssets?: Asset[]
42
49
  authorizationContext?: AuthorizationContext
43
50
  }) {
44
- super(params.chainManager, params.lendProvider)
51
+ super(params.chainManager, params.lendProviders, params.supportedAssets)
45
52
  this.privyClient = params.privyClient
46
53
  this.authorizationContext = params.authorizationContext
47
54
  }
@@ -55,7 +62,8 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
55
62
  walletId: params.walletId,
56
63
  address: getAddress(params.address),
57
64
  chainManager: this.chainManager,
58
- lendProvider: this.lendProvider,
65
+ lendProviders: this.lendProviders,
66
+ supportedAssets: this.supportedAssets,
59
67
  })
60
68
  }
61
69
 
@@ -3,15 +3,15 @@ import { getAddress } from 'viem'
3
3
  import { unichain } from 'viem/chains'
4
4
  import { describe, expect, it, vi } from 'vitest'
5
5
 
6
- import type { ChainManager } from '@/services/ChainManager.js'
7
- import { MockChainManager } from '@/test/MockChainManager.js'
8
6
  import {
9
7
  createMockPrivyClient,
10
8
  createMockPrivyWallet,
11
9
  getMockAuthorizationContext,
12
- } from '@/test/MockPrivyClient.js'
13
- import { getRandomAddress } from '@/test/utils.js'
14
- import type { LendConfig, LendProvider } from '@/types/lend/index.js'
10
+ } from '@/__mocks__/MockPrivyClient.js'
11
+ import { getRandomAddress } from '@/__mocks__/utils.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 { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
16
16
  import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
17
17
  import { PrivyWallet } from '@/wallet/node/wallets/hosted/privy/PrivyWallet.js'
@@ -83,12 +83,12 @@ describe('PrivyHostedWalletProvider', () => {
83
83
 
84
84
  it('forwards lendProvider when provided to constructor', async () => {
85
85
  const privy = createMockPrivyClient('app', 'secret')
86
- const mockLendProvider = {} as LendProvider<LendConfig>
86
+ const mockLendProvider = createMockLendProvider()
87
87
  const provider = new PrivyHostedWalletProvider({
88
88
  privyClient: privy,
89
89
  authorizationContext: getMockAuthorizationContext(),
90
90
  chainManager: mockChainManager,
91
- lendProvider: mockLendProvider,
91
+ lendProviders: { morpho: mockLendProvider },
92
92
  })
93
93
  const spy = vi.spyOn(PrivyWallet, 'create')
94
94
 
@@ -102,7 +102,7 @@ describe('PrivyHostedWalletProvider', () => {
102
102
 
103
103
  expect(spy).toHaveBeenCalledWith(
104
104
  expect.objectContaining({
105
- lendProvider: mockLendProvider,
105
+ lendProviders: { morpho: mockLendProvider },
106
106
  }),
107
107
  )
108
108
  })
@@ -28,11 +28,12 @@ export class NodeHostedWalletProviderRegistry extends HostedWalletProviderRegist
28
28
  validateOptions(options): options is NodeOptionsMap['privy'] {
29
29
  return Boolean((options as NodeOptionsMap['privy'])?.privyClient)
30
30
  },
31
- create({ chainManager, lendProvider }, options) {
31
+ create({ chainManager, lendProviders, supportedAssets }, options) {
32
32
  return new PrivyHostedWalletProvider({
33
33
  privyClient: options.privyClient,
34
34
  chainManager,
35
- lendProvider,
35
+ lendProviders,
36
+ supportedAssets,
36
37
  authorizationContext: options.authorizationContext,
37
38
  })
38
39
  },
@@ -44,11 +45,12 @@ export class NodeHostedWalletProviderRegistry extends HostedWalletProviderRegist
44
45
  const o = options as NodeOptionsMap['turnkey']
45
46
  return Boolean(o?.client)
46
47
  },
47
- create({ chainManager, lendProvider }, options) {
48
+ create({ chainManager, lendProviders, supportedAssets }, options) {
48
49
  return new TurnkeyHostedWalletProvider(
49
50
  options.client,
50
51
  chainManager,
51
- lendProvider,
52
+ lendProviders,
53
+ supportedAssets,
52
54
  )
53
55
  },
54
56
  })
@@ -3,12 +3,12 @@ import type { TurnkeyClient } from '@turnkey/http'
3
3
  import { unichain } from 'viem/chains'
4
4
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
5
5
 
6
- import type { ChainManager } from '@/services/ChainManager.js'
7
- import { MockChainManager } from '@/test/MockChainManager.js'
8
6
  import {
9
7
  createMockPrivyClient,
10
8
  getMockAuthorizationContext,
11
- } from '@/test/MockPrivyClient.js'
9
+ } from '@/__mocks__/MockPrivyClient.js'
10
+ import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
11
+ import type { ChainManager } from '@/services/ChainManager.js'
12
12
  import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
13
13
  import { NodeHostedWalletProviderRegistry } from '@/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js'
14
14
  import { TurnkeyHostedWalletProvider } from '@/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js'
@@ -3,8 +3,10 @@ import type { TurnkeyClient as TurnkeyHttpClient } from '@turnkey/http'
3
3
  import type { TurnkeyServerClient } from '@turnkey/sdk-server'
4
4
  import type { LocalAccount } from 'viem'
5
5
 
6
+ import type { LendProvider } from '@/lend/core/LendProvider.js'
6
7
  import type { ChainManager } from '@/services/ChainManager.js'
7
- import type { LendConfig, LendProvider } from '@/types/lend/index.js'
8
+ import type { LendProviderConfig } from '@/types/actions.js'
9
+ import type { Asset } from '@/types/asset.js'
8
10
  import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
9
11
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
10
12
  import type { NodeToActionsOptionsMap } from '@/wallet/node/providers/hosted/types/index.js'
@@ -26,6 +28,8 @@ export class TurnkeyHostedWalletProvider extends HostedWalletProvider<
26
28
  * Create a new Turnkey wallet provider
27
29
  * @param client - Turnkey client instance (HTTP, server, or core SDK base)
28
30
  * @param chainManager - Chain manager used to resolve chains and RPC transports
31
+ * @param lendProviders - Optional lend providers for DeFi operations
32
+ * @param supportedAssets - Optional list of supported assets
29
33
  */
30
34
  constructor(
31
35
  private readonly client:
@@ -33,9 +37,13 @@ export class TurnkeyHostedWalletProvider extends HostedWalletProvider<
33
37
  | TurnkeyServerClient
34
38
  | TurnkeySDKClientBase,
35
39
  chainManager: ChainManager,
36
- lendProvider?: LendProvider<LendConfig>,
40
+ lendProviders?: {
41
+ morpho?: LendProvider<LendProviderConfig>
42
+ aave?: LendProvider<LendProviderConfig>
43
+ },
44
+ supportedAssets?: Asset[],
37
45
  ) {
38
- super(chainManager, lendProvider)
46
+ super(chainManager, lendProviders, supportedAssets)
39
47
  }
40
48
 
41
49
  /**
@@ -56,7 +64,8 @@ export class TurnkeyHostedWalletProvider extends HostedWalletProvider<
56
64
  signWith: params.signWith,
57
65
  ethereumAddress: params.ethereumAddress,
58
66
  chainManager: this.chainManager,
59
- lendProvider: this.lendProvider,
67
+ lendProviders: this.lendProviders,
68
+ supportedAssets: this.supportedAssets,
60
69
  })
61
70
  }
62
71