@eth-optimism/actions-sdk 0.0.4 → 0.1.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 (201) hide show
  1. package/dist/actions.d.ts +19 -7
  2. package/dist/actions.d.ts.map +1 -1
  3. package/dist/actions.js +49 -19
  4. package/dist/actions.js.map +1 -1
  5. package/dist/actions.test.js +30 -80
  6. package/dist/actions.test.js.map +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/lend/core/LendProvider.d.ts +3 -2
  11. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  12. package/dist/lend/core/LendProvider.js.map +1 -1
  13. package/dist/lend/core/__tests__/LendProvider.test.js +18 -48
  14. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
  15. package/dist/lend/index.d.ts +1 -0
  16. package/dist/lend/index.d.ts.map +1 -1
  17. package/dist/lend/index.js +1 -0
  18. package/dist/lend/index.js.map +1 -1
  19. package/dist/lend/namespaces/ActionsLendNamespace.d.ts +35 -8
  20. package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -1
  21. package/dist/lend/namespaces/ActionsLendNamespace.js +45 -8
  22. package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -1
  23. package/dist/lend/namespaces/WalletLendNamespace.d.ts +35 -8
  24. package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -1
  25. package/dist/lend/namespaces/WalletLendNamespace.js +59 -11
  26. package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -1
  27. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +23 -15
  28. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -1
  29. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +29 -11
  30. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -1
  31. package/dist/lend/providers/aave/AaveLendProvider.d.ts +82 -0
  32. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -0
  33. package/dist/lend/providers/aave/AaveLendProvider.js +346 -0
  34. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -0
  35. package/dist/lend/providers/aave/addresses.d.ts +57 -0
  36. package/dist/lend/providers/aave/addresses.d.ts.map +1 -0
  37. package/dist/lend/providers/aave/addresses.js +83 -0
  38. package/dist/lend/providers/aave/addresses.js.map +1 -0
  39. package/dist/lend/providers/aave/sdk.d.ts +57 -0
  40. package/dist/lend/providers/aave/sdk.d.ts.map +1 -0
  41. package/dist/lend/providers/aave/sdk.js +260 -0
  42. package/dist/lend/providers/aave/sdk.js.map +1 -0
  43. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +4 -3
  44. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  45. package/dist/lend/providers/morpho/MorphoLendProvider.js +2 -2
  46. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  47. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +1 -33
  48. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -1
  49. package/dist/lend/providers/morpho/__tests__/sdk.test.js +1 -0
  50. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  51. package/dist/lend/providers/morpho/sdk.d.ts +4 -3
  52. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  53. package/dist/supported/tokens.d.ts.map +1 -1
  54. package/dist/supported/tokens.js +18 -2
  55. package/dist/supported/tokens.js.map +1 -1
  56. package/dist/test/MockLendProvider.d.ts +5 -4
  57. package/dist/test/MockLendProvider.d.ts.map +1 -1
  58. package/dist/test/MockLendProvider.js +5 -5
  59. package/dist/test/MockLendProvider.js.map +1 -1
  60. package/dist/types/actions.d.ts +26 -2
  61. package/dist/types/actions.d.ts.map +1 -1
  62. package/dist/types/lend/base.d.ts +6 -19
  63. package/dist/types/lend/base.d.ts.map +1 -1
  64. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +9 -9
  65. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  66. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +8 -8
  67. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
  68. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +12 -3
  69. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  70. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +3 -2
  71. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  72. package/dist/wallet/core/providers/hosted/types/index.d.ts +8 -2
  73. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  74. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +14 -6
  75. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  76. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +10 -6
  77. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  78. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +36 -13
  79. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  80. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +19 -7
  81. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  82. package/dist/wallet/core/wallets/abstract/Wallet.js +9 -7
  83. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  84. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +9 -3
  85. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  86. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +4 -4
  87. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  88. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +1 -1
  89. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  90. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +10 -3
  91. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  92. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +5 -3
  93. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  94. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +4 -3
  95. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  96. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  97. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +5 -4
  98. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  99. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +9 -2
  100. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  101. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -3
  102. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  103. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +4 -3
  104. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  105. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +10 -3
  106. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  107. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +5 -4
  108. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  109. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +8 -2
  110. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  111. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  112. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  113. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -2
  114. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  115. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -3
  116. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  117. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +19 -7
  118. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  119. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +6 -2
  120. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  121. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -3
  122. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  123. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +7 -3
  124. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  125. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +6 -2
  126. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  127. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -3
  128. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  129. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +6 -3
  130. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  131. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +6 -6
  132. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  133. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +6 -2
  134. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  135. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +3 -3
  136. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  137. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +6 -0
  138. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  139. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  140. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +6 -2
  141. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  142. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  143. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  144. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +6 -2
  145. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  146. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  147. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  148. package/package.json +4 -1
  149. package/src/actions.test.ts +32 -93
  150. package/src/actions.ts +82 -26
  151. package/src/index.ts +1 -2
  152. package/src/lend/core/LendProvider.ts +6 -5
  153. package/src/lend/core/__tests__/LendProvider.test.ts +19 -61
  154. package/src/lend/index.ts +1 -0
  155. package/src/lend/namespaces/ActionsLendNamespace.ts +77 -13
  156. package/src/lend/namespaces/WalletLendNamespace.ts +98 -18
  157. package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +24 -18
  158. package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +49 -11
  159. package/src/lend/providers/aave/AaveLendProvider.ts +463 -0
  160. package/src/lend/providers/aave/addresses.ts +95 -0
  161. package/src/lend/providers/aave/sdk.ts +369 -0
  162. package/src/lend/providers/morpho/MorphoLendProvider.ts +5 -5
  163. package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +5 -53
  164. package/src/lend/providers/morpho/__tests__/sdk.test.ts +1 -0
  165. package/src/lend/providers/morpho/sdk.ts +3 -3
  166. package/src/supported/tokens.ts +24 -2
  167. package/src/test/MockLendProvider.ts +9 -9
  168. package/src/types/actions.ts +30 -2
  169. package/src/types/lend/base.ts +6 -22
  170. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +9 -9
  171. package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +8 -8
  172. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +15 -4
  173. package/src/wallet/core/providers/hosted/types/index.ts +8 -2
  174. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +24 -9
  175. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +38 -46
  176. package/src/wallet/core/wallets/abstract/Wallet.ts +25 -17
  177. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +17 -10
  178. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +4 -7
  179. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +13 -5
  180. package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +4 -4
  181. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +6 -4
  182. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +13 -4
  183. package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +4 -4
  184. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +18 -6
  185. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +16 -5
  186. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +8 -4
  187. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +25 -14
  188. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +8 -4
  189. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +7 -7
  190. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +8 -4
  191. package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +6 -7
  192. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +6 -6
  193. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +12 -5
  194. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +6 -0
  195. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +12 -5
  196. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +12 -5
  197. package/dist/constants/config.d.ts +0 -10
  198. package/dist/constants/config.d.ts.map +0 -1
  199. package/dist/constants/config.js +0 -10
  200. package/dist/constants/config.js.map +0 -1
  201. package/src/constants/config.ts +0 -9
@@ -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,
@@ -13,11 +13,8 @@ import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
13
13
  import { MockChainManager } from '@/test/MockChainManager.js'
14
14
  import { createMockLendProvider } from '@/test/MockLendProvider.js'
15
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,
@@ -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
 
@@ -5,13 +5,13 @@ import { describe, expect, it, vi } from 'vitest'
5
5
 
6
6
  import type { ChainManager } from '@/services/ChainManager.js'
7
7
  import { MockChainManager } from '@/test/MockChainManager.js'
8
+ import { createMockLendProvider } from '@/test/MockLendProvider.js'
8
9
  import {
9
10
  createMockPrivyClient,
10
11
  createMockPrivyWallet,
11
12
  getMockAuthorizationContext,
12
13
  } from '@/test/MockPrivyClient.js'
13
14
  import { getRandomAddress } from '@/test/utils.js'
14
- import type { LendConfig, LendProvider } from '@/types/lend/index.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,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
 
@@ -5,7 +5,7 @@ import { describe, expect, it, vi } from 'vitest'
5
5
 
6
6
  import type { ChainManager } from '@/services/ChainManager.js'
7
7
  import { MockChainManager } from '@/test/MockChainManager.js'
8
- import type { LendConfig, LendProvider } from '@/types/lend/index.js'
8
+ import { createMockLendProvider } from '@/test/MockLendProvider.js'
9
9
  import { TurnkeyHostedWalletProvider } from '@/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js'
10
10
  import { TurnkeyWallet } from '@/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js'
11
11
  import * as createSignerUtil from '@/wallet/node/wallets/hosted/turnkey/utils/createSigner.js'
@@ -94,11 +94,11 @@ describe('TurnkeyHostedWalletProvider', () => {
94
94
 
95
95
  it('forwards lendProvider when provided to constructor', async () => {
96
96
  const turnkeyClient = {} as unknown as TurnkeyClient
97
- const mockLendProvider = {} as LendProvider<LendConfig>
97
+ const mockLendProvider = createMockLendProvider()
98
98
  const provider = new TurnkeyHostedWalletProvider(
99
99
  turnkeyClient,
100
100
  mockChainManager,
101
- mockLendProvider,
101
+ { morpho: mockLendProvider },
102
102
  )
103
103
  const spyTurnkeyWalletCreate = vi
104
104
  .spyOn(TurnkeyWallet, 'create')
@@ -113,7 +113,7 @@ describe('TurnkeyHostedWalletProvider', () => {
113
113
 
114
114
  expect(spyTurnkeyWalletCreate).toHaveBeenCalledWith(
115
115
  expect.objectContaining({
116
- lendProvider: mockLendProvider,
116
+ lendProviders: { morpho: mockLendProvider },
117
117
  }),
118
118
  )
119
119
  })
@@ -1,8 +1,10 @@
1
1
  import type { AuthorizationContext, PrivyClient } from '@privy-io/node'
2
2
  import { type Address, type LocalAccount } from 'viem'
3
3
 
4
+ import type { LendProvider } from '@/lend/core/LendProvider.js'
4
5
  import type { ChainManager } from '@/services/ChainManager.js'
5
- import type { LendConfig, LendProvider } from '@/types/lend/index.js'
6
+ import type { LendProviderConfig } from '@/types/actions.js'
7
+ import type { Asset } from '@/types/asset.js'
6
8
  import { EOAWallet } from '@/wallet/core/wallets/eoa/EOAWallet.js'
7
9
  import { createSigner } from '@/wallet/node/wallets/hosted/privy/utils/createSigner.js'
8
10
 
@@ -23,17 +25,22 @@ export class PrivyWallet extends EOAWallet {
23
25
  * @param walletId - Privy wallet identifier
24
26
  * @param address - Ethereum address of the wallet
25
27
  * @param chainManager - Chain manager for multi-chain operations
26
- * @param lendProvider - Optional lend provider for DeFi operations
28
+ * @param lendProviders - Optional lend providers for DeFi operations
29
+ * @param supportedAssets - Optional list of supported assets
27
30
  */
28
31
  private constructor(
29
32
  privyClient: PrivyClient,
30
33
  walletId: string,
31
34
  address: Address,
32
35
  chainManager: ChainManager,
33
- lendProvider?: LendProvider<LendConfig>,
36
+ lendProviders?: {
37
+ morpho?: LendProvider<LendProviderConfig>
38
+ aave?: LendProvider<LendProviderConfig>
39
+ },
40
+ supportedAssets?: Asset[],
34
41
  authorizationContext?: AuthorizationContext,
35
42
  ) {
36
- super(chainManager, lendProvider)
43
+ super(chainManager, lendProviders, supportedAssets)
37
44
  this.privyClient = privyClient
38
45
  this.authorizationContext = authorizationContext
39
46
  this.walletId = walletId
@@ -46,14 +53,19 @@ export class PrivyWallet extends EOAWallet {
46
53
  walletId: string
47
54
  address: Address
48
55
  chainManager: ChainManager
49
- lendProvider?: LendProvider<LendConfig>
56
+ lendProviders?: {
57
+ morpho?: LendProvider<LendProviderConfig>
58
+ aave?: LendProvider<LendProviderConfig>
59
+ }
60
+ supportedAssets?: Asset[]
50
61
  }): Promise<PrivyWallet> {
51
62
  const wallet = new PrivyWallet(
52
63
  params.privyClient,
53
64
  params.walletId,
54
65
  params.address,
55
66
  params.chainManager,
56
- params.lendProvider,
67
+ params.lendProviders,
68
+ params.supportedAssets,
57
69
  params.authorizationContext,
58
70
  )
59
71
  await wallet.initialize()
@@ -3,8 +3,10 @@ import type { TurnkeyClient } from '@turnkey/http'
3
3
  import type { TurnkeyServerClient } from '@turnkey/sdk-server'
4
4
  import type { Address, 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 { EOAWallet } from '@/wallet/core/wallets/eoa/EOAWallet.js'
9
11
  import { createSigner } from '@/wallet/node/wallets/hosted/turnkey/utils/createSigner.js'
10
12
 
@@ -44,7 +46,11 @@ export class TurnkeyWallet extends EOAWallet {
44
46
  organizationId: string
45
47
  signWith: string
46
48
  ethereumAddress?: string
47
- lendProvider?: LendProvider<LendConfig>
49
+ lendProviders?: {
50
+ morpho?: LendProvider<LendProviderConfig>
51
+ aave?: LendProvider<LendProviderConfig>
52
+ }
53
+ supportedAssets?: Asset[]
48
54
  }) {
49
55
  const {
50
56
  chainManager,
@@ -52,9 +58,10 @@ export class TurnkeyWallet extends EOAWallet {
52
58
  organizationId,
53
59
  signWith,
54
60
  ethereumAddress,
55
- lendProvider,
61
+ lendProviders,
62
+ supportedAssets,
56
63
  } = params
57
- super(chainManager, lendProvider)
64
+ super(chainManager, lendProviders, supportedAssets)
58
65
  this.client = client
59
66
  this.organizationId = organizationId
60
67
  this.signWith = signWith
@@ -67,7 +74,11 @@ export class TurnkeyWallet extends EOAWallet {
67
74
  organizationId: string
68
75
  signWith: string
69
76
  ethereumAddress?: string
70
- lendProvider?: LendProvider<LendConfig>
77
+ lendProviders?: {
78
+ morpho?: LendProvider<LendProviderConfig>
79
+ aave?: LendProvider<LendProviderConfig>
80
+ }
81
+ supportedAssets?: Asset[]
71
82
  }): Promise<TurnkeyWallet> {
72
83
  const wallet = new TurnkeyWallet(params)
73
84
  await wallet.initialize()
@@ -1,7 +1,8 @@
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'
5
6
  import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
6
7
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
7
8
  import type { ReactToActionsOptionsMap } from '@/wallet/react/providers/hosted/types/index.js'
@@ -21,9 +22,12 @@ export class DynamicHostedWalletProvider extends HostedWalletProvider<
21
22
  */
22
23
  constructor(
23
24
  chainManager: ChainManager,
24
- lendProvider?: LendProvider<LendConfig>,
25
+ lendProviders?: {
26
+ morpho?: LendProvider<LendProviderConfig>
27
+ aave?: LendProvider<LendProviderConfig>
28
+ },
25
29
  ) {
26
- super(chainManager, lendProvider)
30
+ super(chainManager, lendProviders)
27
31
  }
28
32
 
29
33
  async toActionsWallet(
@@ -32,7 +36,7 @@ export class DynamicHostedWalletProvider extends HostedWalletProvider<
32
36
  return DynamicWallet.create({
33
37
  dynamicWallet: params.wallet,
34
38
  chainManager: this.chainManager,
35
- lendProvider: this.lendProvider,
39
+ lendProviders: this.lendProviders,
36
40
  })
37
41
  }
38
42
 
@@ -1,13 +1,9 @@
1
- import type { LocalAccount } from 'viem'
2
1
  import { describe, expect, it, vi } from 'vitest'
3
2
 
4
- import type { ChainManager } from '@/services/ChainManager.js'
5
- import { MockChainManager } from '@/test/MockChainManager.js'
6
- import type { LendConfig, LendProvider } from '@/types/lend/index.js'
7
- import { DynamicHostedWalletProvider } from '@/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js'
8
- import type { DynamicHostedWalletToActionsWalletOptions } from '@/wallet/react/providers/hosted/types/index.js'
9
- import { DynamicWallet } from '@/wallet/react/wallets/hosted/dynamic/DynamicWallet.js'
10
- import * as createSignerUtil from '@/wallet/react/wallets/hosted/dynamic/utils/createSigner.js'
3
+ // Mock @dynamic-labs packages to avoid import syntax errors
4
+ vi.mock('@dynamic-labs/wallet-connector-core', () => ({
5
+ Wallet: class {},
6
+ }))
11
7
 
12
8
  // Mock DynamicWallet to avoid importing browser-related deps
13
9
  vi.mock('@/wallet/react/wallets/hosted/dynamic/DynamicWallet.js', async () => {
@@ -17,6 +13,21 @@ vi.mock('@/wallet/react/wallets/hosted/dynamic/DynamicWallet.js', async () => {
17
13
  return { DynamicWallet: DynamicWalletMock }
18
14
  })
19
15
 
16
+ // Mock createSigner to avoid importing @dynamic-labs
17
+ vi.mock('@/wallet/react/wallets/hosted/dynamic/utils/createSigner.js')
18
+
19
+ /* eslint-disable import/first */
20
+ import type { LocalAccount } from 'viem'
21
+
22
+ import type { ChainManager } from '@/services/ChainManager.js'
23
+ import { MockChainManager } from '@/test/MockChainManager.js'
24
+ import { createMockLendProvider } from '@/test/MockLendProvider.js'
25
+ import { DynamicHostedWalletProvider } from '@/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js'
26
+ import type { DynamicHostedWalletToActionsWalletOptions } from '@/wallet/react/providers/hosted/types/index.js'
27
+ import { DynamicWallet } from '@/wallet/react/wallets/hosted/dynamic/DynamicWallet.js'
28
+ import * as createSignerUtil from '@/wallet/react/wallets/hosted/dynamic/utils/createSigner.js'
29
+ /* eslint-enable import/first */
30
+
20
31
  describe('DynamicHostedWalletProvider', () => {
21
32
  describe('toActionsWallet', () => {
22
33
  it('toActionsWallet delegates to DynamicWallet.create with correct args', async () => {
@@ -41,6 +52,7 @@ describe('DynamicHostedWalletProvider', () => {
41
52
  expect(DynamicWallet.create).toHaveBeenCalledWith({
42
53
  dynamicWallet: mockDynamicWallet,
43
54
  chainManager: mockChainManager,
55
+ lendProviders: {},
44
56
  })
45
57
  expect(result).toBe(mockResult)
46
58
  })
@@ -49,11 +61,10 @@ describe('DynamicHostedWalletProvider', () => {
49
61
  const mockChainManager = new MockChainManager({
50
62
  supportedChains: [1],
51
63
  }) as unknown as ChainManager
52
- const mockLendProvider = {} as any
53
- const provider = new DynamicHostedWalletProvider(
54
- mockChainManager,
55
- mockLendProvider as LendProvider<LendConfig>,
56
- )
64
+ const mockLendProvider = createMockLendProvider()
65
+ const provider = new DynamicHostedWalletProvider(mockChainManager, {
66
+ morpho: mockLendProvider,
67
+ })
57
68
 
58
69
  const mockDynamicWallet = {
59
70
  __brand: 'dynamic-wallet',
@@ -69,7 +80,7 @@ describe('DynamicHostedWalletProvider', () => {
69
80
 
70
81
  expect(DynamicWallet.create).toHaveBeenCalledWith(
71
82
  expect.objectContaining({
72
- lendProvider: mockLendProvider,
83
+ lendProviders: { morpho: mockLendProvider },
73
84
  }),
74
85
  )
75
86
  })
@@ -1,7 +1,8 @@
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'
5
6
  import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
6
7
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
7
8
  import type { ReactToActionsOptionsMap } from '@/wallet/react/providers/hosted/types/index.js'
@@ -21,9 +22,12 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
21
22
  */
22
23
  constructor(
23
24
  chainManager: ChainManager,
24
- lendProvider?: LendProvider<LendConfig>,
25
+ lendProviders?: {
26
+ morpho?: LendProvider<LendProviderConfig>
27
+ aave?: LendProvider<LendProviderConfig>
28
+ },
25
29
  ) {
26
- super(chainManager, lendProvider)
30
+ super(chainManager, lendProviders)
27
31
  }
28
32
 
29
33
  async toActionsWallet(
@@ -33,7 +37,7 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
33
37
  const wallet = await PrivyWallet.create({
34
38
  chainManager: this.chainManager,
35
39
  connectedWallet,
36
- lendProvider: this.lendProvider,
40
+ lendProviders: this.lendProviders,
37
41
  })
38
42
  return wallet
39
43
  }
@@ -4,7 +4,7 @@ import { describe, expect, it, vi } from 'vitest'
4
4
 
5
5
  import type { ChainManager } from '@/services/ChainManager.js'
6
6
  import { MockChainManager } from '@/test/MockChainManager.js'
7
- import type { LendConfig, LendProvider } from '@/types/lend/index.js'
7
+ import { createMockLendProvider } from '@/test/MockLendProvider.js'
8
8
  import { PrivyHostedWalletProvider } from '@/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js'
9
9
  import { PrivyWallet } from '@/wallet/react/wallets/hosted/privy/PrivyWallet.js'
10
10
  import * as createSignerUtil from '@/wallet/react/wallets/hosted/privy/utils/createSigner.js'
@@ -40,6 +40,7 @@ describe('PrivyHostedWalletProvider (React)', () => {
40
40
  expect(PrivyWallet.create).toHaveBeenCalledWith({
41
41
  chainManager: mockChainManager,
42
42
  connectedWallet: mockConnectedWallet,
43
+ lendProviders: {},
43
44
  })
44
45
  expect(result).toBe(mockActionsWallet)
45
46
  })
@@ -48,11 +49,10 @@ describe('PrivyHostedWalletProvider (React)', () => {
48
49
  const mockChainManager = new MockChainManager({
49
50
  supportedChains: [1],
50
51
  }) as unknown as ChainManager
51
- const mockLendProvider = {} as any
52
- const provider = new PrivyHostedWalletProvider(
53
- mockChainManager,
54
- mockLendProvider as LendProvider<LendConfig>,
55
- )
52
+ const mockLendProvider = createMockLendProvider()
53
+ const provider = new PrivyHostedWalletProvider(mockChainManager, {
54
+ morpho: mockLendProvider,
55
+ })
56
56
  const mockActionsWallet = {
57
57
  __brand: 'actions-wallet',
58
58
  } as unknown as PrivyWallet
@@ -67,7 +67,7 @@ describe('PrivyHostedWalletProvider (React)', () => {
67
67
 
68
68
  expect(PrivyWallet.create).toHaveBeenCalledWith(
69
69
  expect.objectContaining({
70
- lendProvider: mockLendProvider,
70
+ lendProviders: { morpho: mockLendProvider },
71
71
  }),
72
72
  )
73
73
  })
@@ -1,7 +1,8 @@
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'
5
6
  import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
6
7
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
7
8
  import type { ReactToActionsOptionsMap } from '@/wallet/react/providers/hosted/types/index.js'
@@ -27,9 +28,12 @@ export class TurnkeyHostedWalletProvider extends HostedWalletProvider<
27
28
  */
28
29
  constructor(
29
30
  chainManager: ChainManager,
30
- lendProvider?: LendProvider<LendConfig>,
31
+ lendProviders?: {
32
+ morpho?: LendProvider<LendProviderConfig>
33
+ aave?: LendProvider<LendProviderConfig>
34
+ },
31
35
  ) {
32
- super(chainManager, lendProvider)
36
+ super(chainManager, lendProviders)
33
37
  }
34
38
 
35
39
  /**
@@ -53,7 +57,7 @@ export class TurnkeyHostedWalletProvider extends HostedWalletProvider<
53
57
  signWith,
54
58
  ethereumAddress,
55
59
  chainManager: this.chainManager,
56
- lendProvider: this.lendProvider,
60
+ lendProviders: this.lendProviders,
57
61
  })
58
62
  }
59
63