@eth-optimism/actions-sdk 0.0.3 → 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 (243) 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 +51 -81
  6. package/dist/actions.test.js.map +1 -1
  7. package/dist/constants/assets.d.ts.map +1 -1
  8. package/dist/constants/assets.js +2 -1
  9. package/dist/constants/assets.js.map +1 -1
  10. package/dist/constants/supportedChains.d.ts +1 -1
  11. package/dist/constants/supportedChains.d.ts.map +1 -1
  12. package/dist/constants/supportedChains.js +2 -1
  13. package/dist/constants/supportedChains.js.map +1 -1
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/lend/core/LendProvider.d.ts +3 -2
  18. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  19. package/dist/lend/core/LendProvider.js.map +1 -1
  20. package/dist/lend/core/__tests__/LendProvider.test.js +18 -48
  21. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
  22. package/dist/lend/index.d.ts +1 -0
  23. package/dist/lend/index.d.ts.map +1 -1
  24. package/dist/lend/index.js +1 -0
  25. package/dist/lend/index.js.map +1 -1
  26. package/dist/lend/namespaces/ActionsLendNamespace.d.ts +35 -8
  27. package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -1
  28. package/dist/lend/namespaces/ActionsLendNamespace.js +45 -8
  29. package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -1
  30. package/dist/lend/namespaces/WalletLendNamespace.d.ts +43 -10
  31. package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -1
  32. package/dist/lend/namespaces/WalletLendNamespace.js +67 -13
  33. package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -1
  34. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +23 -15
  35. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -1
  36. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +29 -11
  37. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -1
  38. package/dist/lend/providers/aave/AaveLendProvider.d.ts +82 -0
  39. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -0
  40. package/dist/lend/providers/aave/AaveLendProvider.js +346 -0
  41. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -0
  42. package/dist/lend/providers/aave/addresses.d.ts +57 -0
  43. package/dist/lend/providers/aave/addresses.d.ts.map +1 -0
  44. package/dist/lend/providers/aave/addresses.js +83 -0
  45. package/dist/lend/providers/aave/addresses.js.map +1 -0
  46. package/dist/lend/providers/aave/sdk.d.ts +57 -0
  47. package/dist/lend/providers/aave/sdk.d.ts.map +1 -0
  48. package/dist/lend/providers/aave/sdk.js +260 -0
  49. package/dist/lend/providers/aave/sdk.js.map +1 -0
  50. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +4 -3
  51. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  52. package/dist/lend/providers/morpho/MorphoLendProvider.js +2 -2
  53. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  54. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +1 -33
  55. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -1
  56. package/dist/lend/providers/morpho/__tests__/sdk.test.js +1 -0
  57. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  58. package/dist/lend/providers/morpho/sdk.d.ts +4 -3
  59. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  60. package/dist/lend/providers/morpho/sdk.js +0 -1
  61. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  62. package/dist/services/ChainManager.d.ts +1 -1
  63. package/dist/supported/tokens.d.ts.map +1 -1
  64. package/dist/supported/tokens.js +18 -2
  65. package/dist/supported/tokens.js.map +1 -1
  66. package/dist/test/MockLendProvider.d.ts +5 -4
  67. package/dist/test/MockLendProvider.d.ts.map +1 -1
  68. package/dist/test/MockLendProvider.js +5 -5
  69. package/dist/test/MockLendProvider.js.map +1 -1
  70. package/dist/test/MockPrivyClient.d.ts +10 -49
  71. package/dist/test/MockPrivyClient.d.ts.map +1 -1
  72. package/dist/test/MockPrivyClient.js +13 -72
  73. package/dist/test/MockPrivyClient.js.map +1 -1
  74. package/dist/types/actions.d.ts +26 -2
  75. package/dist/types/actions.d.ts.map +1 -1
  76. package/dist/types/lend/base.d.ts +6 -19
  77. package/dist/types/lend/base.d.ts.map +1 -1
  78. package/dist/wallet/core/namespace/WalletNamespace.d.ts +13 -13
  79. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  80. package/dist/wallet/core/namespace/WalletNamespace.js +13 -13
  81. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  82. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +64 -42
  83. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  84. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +51 -23
  85. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
  86. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +12 -3
  87. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  88. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +3 -2
  89. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  90. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js +14 -4
  91. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js.map +1 -1
  92. package/dist/wallet/core/providers/hosted/types/index.d.ts +8 -2
  93. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  94. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +14 -6
  95. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  96. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +10 -6
  97. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  98. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +36 -13
  99. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  100. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +19 -7
  101. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  102. package/dist/wallet/core/wallets/abstract/Wallet.js +9 -7
  103. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  104. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +9 -3
  105. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  106. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +4 -4
  107. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  108. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +1 -1
  109. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  110. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +24 -4
  111. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  112. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +21 -6
  113. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  114. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +34 -14
  115. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  116. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  117. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +10 -4
  118. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  119. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +9 -1
  120. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  121. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +9 -2
  122. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  123. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -3
  124. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  125. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +4 -3
  126. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  127. package/dist/wallet/node/providers/hosted/types/index.d.ts +6 -1
  128. package/dist/wallet/node/providers/hosted/types/index.d.ts.map +1 -1
  129. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +19 -7
  130. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  131. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +13 -7
  132. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  133. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +26 -28
  134. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
  135. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +12 -12
  136. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
  137. package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.d.ts +6 -2
  138. package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.d.ts.map +1 -1
  139. package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.js +10 -7
  140. package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.js.map +1 -1
  141. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +8 -2
  142. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  143. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  144. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  145. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -2
  146. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  147. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -3
  148. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  149. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +19 -7
  150. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  151. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +6 -2
  152. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  153. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -3
  154. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  155. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +7 -3
  156. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  157. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +6 -2
  158. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  159. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -3
  160. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  161. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +6 -3
  162. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  163. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +6 -6
  164. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  165. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +6 -2
  166. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  167. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +3 -3
  168. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  169. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +6 -0
  170. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  171. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  172. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +6 -2
  173. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  174. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  175. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  176. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +6 -2
  177. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  178. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  179. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  180. package/package.json +5 -2
  181. package/src/actions.test.ts +55 -96
  182. package/src/actions.ts +82 -26
  183. package/src/constants/assets.ts +8 -1
  184. package/src/constants/supportedChains.ts +8 -1
  185. package/src/index.ts +1 -2
  186. package/src/lend/core/LendProvider.ts +6 -5
  187. package/src/lend/core/__tests__/LendProvider.test.ts +19 -61
  188. package/src/lend/index.ts +1 -0
  189. package/src/lend/namespaces/ActionsLendNamespace.ts +77 -13
  190. package/src/lend/namespaces/WalletLendNamespace.ts +106 -20
  191. package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +24 -18
  192. package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +49 -11
  193. package/src/lend/providers/aave/AaveLendProvider.ts +463 -0
  194. package/src/lend/providers/aave/addresses.ts +95 -0
  195. package/src/lend/providers/aave/sdk.ts +369 -0
  196. package/src/lend/providers/morpho/MorphoLendProvider.ts +5 -5
  197. package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +5 -53
  198. package/src/lend/providers/morpho/__tests__/sdk.test.ts +1 -0
  199. package/src/lend/providers/morpho/sdk.ts +3 -4
  200. package/src/supported/tokens.ts +24 -2
  201. package/src/test/MockLendProvider.ts +9 -9
  202. package/src/test/MockPrivyClient.ts +24 -91
  203. package/src/types/actions.ts +30 -2
  204. package/src/types/lend/base.ts +6 -22
  205. package/src/wallet/core/namespace/WalletNamespace.ts +13 -13
  206. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +69 -70
  207. package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +55 -47
  208. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +15 -4
  209. package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +20 -7
  210. package/src/wallet/core/providers/hosted/types/index.ts +8 -2
  211. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +24 -9
  212. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +38 -46
  213. package/src/wallet/core/wallets/abstract/Wallet.ts +25 -17
  214. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +17 -10
  215. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +4 -7
  216. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +37 -11
  217. package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +43 -24
  218. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +10 -7
  219. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +17 -2
  220. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +13 -4
  221. package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +4 -4
  222. package/src/wallet/node/providers/hosted/types/index.ts +9 -2
  223. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +31 -11
  224. package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +35 -40
  225. package/src/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +18 -14
  226. package/src/wallet/node/wallets/hosted/privy/utils/createSigner.ts +11 -9
  227. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +16 -5
  228. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +8 -4
  229. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +25 -14
  230. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +8 -4
  231. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +7 -7
  232. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +8 -4
  233. package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +6 -7
  234. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +6 -6
  235. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +12 -5
  236. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +6 -0
  237. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +12 -5
  238. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +12 -5
  239. package/dist/constants/config.d.ts +0 -10
  240. package/dist/constants/config.d.ts.map +0 -1
  241. package/dist/constants/config.js +0 -10
  242. package/dist/constants/config.js.map +0 -1
  243. package/src/constants/config.ts +0 -9
@@ -1,5 +1,5 @@
1
- import type { PrivyClient } from '@privy-io/server-auth'
2
- import { createViemAccount } from '@privy-io/server-auth/viem'
1
+ import type { AuthorizationContext } from '@privy-io/node'
2
+ import { createViemAccount } from '@privy-io/node/viem'
3
3
  import {
4
4
  type Address,
5
5
  createWalletClient,
@@ -8,11 +8,15 @@ import {
8
8
  type WalletClient,
9
9
  } from 'viem'
10
10
  import { unichain } from 'viem/chains'
11
- import { describe, expect, it, vi } from 'vitest'
11
+ import { beforeEach, describe, expect, it, vi } from 'vitest'
12
12
 
13
13
  import type { ChainManager } from '@/services/ChainManager.js'
14
14
  import { MockChainManager } from '@/test/MockChainManager.js'
15
- import { createMockPrivyClient } from '@/test/MockPrivyClient.js'
15
+ import {
16
+ createMockPrivyClient,
17
+ createMockPrivyWallet,
18
+ getMockAuthorizationContext,
19
+ } from '@/test/MockPrivyClient.js'
16
20
  import { getRandomAddress } from '@/test/utils.js'
17
21
  import { PrivyWallet } from '@/wallet/node/wallets/hosted/privy/PrivyWallet.js'
18
22
 
@@ -28,9 +32,9 @@ vi.mock('viem/accounts', async () => ({
28
32
  toAccount: vi.fn(),
29
33
  }))
30
34
 
31
- vi.mock('@privy-io/server-auth/viem', async () => ({
35
+ vi.mock('@privy-io/node/viem', async () => ({
32
36
  // @ts-ignore - importActual returns unknown
33
- ...(await vi.importActual('@privy-io/server-auth/viem')),
37
+ ...(await vi.importActual('@privy-io/node/viem')),
34
38
  createViemAccount: vi.fn(),
35
39
  }))
36
40
 
@@ -48,10 +52,12 @@ const mockLocalAccount = {
48
52
  } as unknown as LocalAccount
49
53
 
50
54
  describe('PrivyWallet', () => {
55
+ beforeEach(() => {
56
+ vi.clearAllMocks()
57
+ })
58
+
51
59
  it('should return the correct wallet ID', async () => {
52
- const createdWallet = await mockPrivyClient.walletApi.createWallet({
53
- chainType: 'ethereum',
54
- })
60
+ const createdWallet = createMockPrivyWallet()
55
61
 
56
62
  const wallet = await createAndInitPrivyWallet({
57
63
  address: getAddress(createdWallet.address),
@@ -62,9 +68,7 @@ describe('PrivyWallet', () => {
62
68
  })
63
69
 
64
70
  it('should return the correct address', async () => {
65
- const createdWallet = await mockPrivyClient.walletApi.createWallet({
66
- chainType: 'ethereum',
67
- })
71
+ const createdWallet = createMockPrivyWallet()
68
72
 
69
73
  const wallet = await createAndInitPrivyWallet({
70
74
  address: getAddress(createdWallet.address),
@@ -76,28 +80,29 @@ describe('PrivyWallet', () => {
76
80
 
77
81
  it('should create an account with correct configuration', async () => {
78
82
  // Create a wallet using the mock client first
79
- const createdWallet = await mockPrivyClient.walletApi.createWallet({
80
- chainType: 'ethereum',
81
- })
83
+ const createdWallet = createMockPrivyWallet()
82
84
  vi.mocked(createViemAccount).mockResolvedValue(mockLocalAccount)
85
+ const authorizationContext = getMockAuthorizationContext()
83
86
  const wallet = await createAndInitPrivyWallet({
84
87
  address: getAddress(createdWallet.address),
85
88
  walletId: createdWallet.id,
89
+ authorizationContext,
86
90
  })
87
91
 
88
- expect(createViemAccount).toHaveBeenCalledWith({
92
+ expect(createViemAccount).toHaveBeenCalledWith(mockPrivyClient, {
89
93
  walletId: createdWallet.id,
90
94
  address: createdWallet.address,
91
- privy: mockPrivyClient,
95
+ authorizationContext,
92
96
  })
93
97
  expect(wallet.signer).toBe(mockLocalAccount)
94
98
  })
95
99
 
96
100
  it('should create a wallet client with correct configuration', async () => {
97
- const createdWallet = await mockPrivyClient.walletApi.createWallet({
98
- chainType: 'ethereum',
101
+ const createdWallet = createMockPrivyWallet()
102
+ const wallet = await createAndInitPrivyWallet({
103
+ walletId: createdWallet.id,
104
+ address: createdWallet.address,
99
105
  })
100
- const wallet = await createAndInitPrivyWallet()
101
106
 
102
107
  const mockWalletClient = {
103
108
  account: mockLocalAccount,
@@ -116,27 +121,17 @@ describe('PrivyWallet', () => {
116
121
  })
117
122
  })
118
123
 
119
- async function createAndInitPrivyWallet(
120
- params: {
121
- privyClient?: PrivyClient
122
- walletId?: string
123
- address?: Address
124
- chainManager?: ChainManager
125
- } = {},
126
- ) {
127
- const {
128
- privyClient = mockPrivyClient,
124
+ async function createAndInitPrivyWallet(params: {
125
+ walletId: string
126
+ address: Address
127
+ authorizationContext?: AuthorizationContext
128
+ }) {
129
+ const { walletId, address, authorizationContext } = params
130
+ return PrivyWallet.create({
131
+ privyClient: mockPrivyClient,
132
+ authorizationContext: authorizationContext ?? getMockAuthorizationContext(),
129
133
  walletId,
130
134
  address,
131
- chainManager = mockChainManager,
132
- } = params
133
- const createdWallet = await privyClient.walletApi.createWallet({
134
- chainType: 'ethereum',
135
- })
136
- return PrivyWallet.create({
137
- privyClient,
138
- walletId: walletId ?? createdWallet.id,
139
- address: address ?? getAddress(createdWallet.address),
140
- chainManager,
135
+ chainManager: mockChainManager,
141
136
  })
142
137
  }
@@ -1,14 +1,18 @@
1
- import { createViemAccount } from '@privy-io/server-auth/viem'
2
- import type { Address, LocalAccount } from 'viem'
1
+ import { createViemAccount } from '@privy-io/node/viem'
2
+ import type { LocalAccount } from 'viem'
3
3
  import { describe, expect, it, vi } from 'vitest'
4
4
 
5
- import { createMockPrivyClient } from '@/test/MockPrivyClient.js'
5
+ import {
6
+ createMockPrivyClient,
7
+ createMockPrivyWallet,
8
+ getMockAuthorizationContext,
9
+ } from '@/test/MockPrivyClient.js'
6
10
  import { getRandomAddress } from '@/test/utils.js'
7
11
  import { createSigner } from '@/wallet/node/wallets/hosted/privy/utils/createSigner.js'
8
12
 
9
- vi.mock('@privy-io/server-auth/viem', async () => ({
13
+ vi.mock('@privy-io/node/viem', async () => ({
10
14
  // @ts-ignore - importActual returns unknown
11
- ...(await vi.importActual('@privy-io/server-auth/viem')),
15
+ ...(await vi.importActual('@privy-io/node/viem')),
12
16
  createViemAccount: vi.fn(),
13
17
  }))
14
18
 
@@ -26,22 +30,22 @@ describe('createSigner (Node Privy)', () => {
26
30
  signTypedData: vi.fn(),
27
31
  } as unknown as LocalAccount
28
32
 
29
- it('should create a LocalAccount with correct configuration', async () => {
30
- const createdWallet = await mockPrivyClient.walletApi.createWallet({
31
- chainType: 'ethereum',
32
- })
33
- vi.mocked(createViemAccount).mockResolvedValue(mockLocalAccount)
33
+ it('should create a LocalAccount with correct configuration', () => {
34
+ const createdWallet = createMockPrivyWallet()
35
+ vi.mocked(createViemAccount).mockReturnValue(mockLocalAccount)
36
+ const authorizationContext = getMockAuthorizationContext()
34
37
 
35
- const signer = await createSigner({
38
+ const signer = createSigner({
36
39
  privyClient: mockPrivyClient,
40
+ authorizationContext: authorizationContext,
37
41
  walletId: createdWallet.id,
38
- address: createdWallet.address as Address,
42
+ address: createdWallet.address,
39
43
  })
40
44
 
41
- expect(createViemAccount).toHaveBeenCalledWith({
45
+ expect(createViemAccount).toHaveBeenCalledWith(mockPrivyClient, {
42
46
  walletId: createdWallet.id,
43
47
  address: createdWallet.address,
44
- privy: mockPrivyClient,
48
+ authorizationContext,
45
49
  })
46
50
  expect(signer).toBe(mockLocalAccount)
47
51
  })
@@ -1,5 +1,4 @@
1
- import type { GetViemAccountInputType } from '@privy-io/server-auth/viem'
2
- import { createViemAccount } from '@privy-io/server-auth/viem'
1
+ import { createViemAccount } from '@privy-io/node/viem'
3
2
  import type { LocalAccount } from 'viem'
4
3
 
5
4
  import type {
@@ -15,18 +14,21 @@ import type {
15
14
  * @param params.walletId - Privy wallet identifier
16
15
  * @param params.address - Ethereum address of the wallet
17
16
  * @param params.privyClient - Privy client instance
18
- * @returns Promise resolving to a LocalAccount configured for signing operations
17
+ * @param params.authorizationContext - Optional authorization context for the Privy client.
18
+ * Used when Privy needs to sign requests.
19
+ * See https://docs.privy.io/controls/authorization-keys/using-owners/sign/automatic#using-the-authorization-context
20
+ * for more information on building and using the authorization context.
21
+ * @returns LocalAccount configured for signing operations
19
22
  * @throws Error if wallet retrieval fails or signing operations are not supported
20
23
  */
21
- export async function createSigner(
24
+ export function createSigner(
22
25
  params: PrivyHostedWalletToActionsWalletOptions & NodeOptionsMap['privy'],
23
- ): Promise<LocalAccount> {
24
- const { walletId, address, privyClient } = params
25
- const account = await createViemAccount({
26
+ ): LocalAccount {
27
+ const { walletId, address, privyClient, authorizationContext } = params
28
+ const account = createViemAccount(privyClient, {
26
29
  walletId,
27
30
  address,
28
- // TODO: Fix this type error
29
- privy: privyClient as unknown as GetViemAccountInputType['privy'],
31
+ authorizationContext,
30
32
  })
31
33
  return account
32
34
  }
@@ -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
 
@@ -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/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js'
10
10
  import { TurnkeyWallet } from '@/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js'
11
11
  import * as createSignerUtil from '@/wallet/react/wallets/hosted/turnkey/utils/createSigner.js'
@@ -88,11 +88,10 @@ describe('TurnkeyHostedWalletProvider', () => {
88
88
 
89
89
  it('forwards lendProvider when provided to constructor', async () => {
90
90
  const turnkeyClient = {} as unknown as TurnkeySDKClientBase
91
- const mockLendProvider = {} as unknown as LendProvider<LendConfig>
92
- const provider = new TurnkeyHostedWalletProvider(
93
- mockChainManager,
94
- mockLendProvider,
95
- )
91
+ const mockLendProvider = createMockLendProvider()
92
+ const provider = new TurnkeyHostedWalletProvider(mockChainManager, {
93
+ morpho: mockLendProvider,
94
+ })
96
95
  const spyTurnkeyWalletCreate = vi
97
96
  .spyOn(TurnkeyWallet, 'create')
98
97
  .mockResolvedValueOnce({
@@ -107,7 +106,7 @@ describe('TurnkeyHostedWalletProvider', () => {
107
106
 
108
107
  expect(spyTurnkeyWalletCreate).toHaveBeenCalledWith(
109
108
  expect.objectContaining({
110
- lendProvider: mockLendProvider,
109
+ lendProviders: { morpho: mockLendProvider },
111
110
  }),
112
111
  )
113
112
  })
@@ -29,8 +29,8 @@ export class ReactHostedWalletProviderRegistry extends HostedWalletProviderRegis
29
29
  validateOptions(_options): _options is ReactOptionsMap['dynamic'] {
30
30
  return true
31
31
  },
32
- create({ chainManager, lendProvider }, _options) {
33
- return new DynamicHostedWalletProvider(chainManager, lendProvider)
32
+ create({ chainManager, lendProviders }, _options) {
33
+ return new DynamicHostedWalletProvider(chainManager, lendProviders)
34
34
  },
35
35
  })
36
36
 
@@ -39,8 +39,8 @@ export class ReactHostedWalletProviderRegistry extends HostedWalletProviderRegis
39
39
  validateOptions(_options): _options is ReactOptionsMap['privy'] {
40
40
  return true
41
41
  },
42
- create({ chainManager, lendProvider }, _options) {
43
- return new PrivyHostedWalletProvider(chainManager, lendProvider)
42
+ create({ chainManager, lendProviders }, _options) {
43
+ return new PrivyHostedWalletProvider(chainManager, lendProviders)
44
44
  },
45
45
  })
46
46
 
@@ -49,8 +49,8 @@ export class ReactHostedWalletProviderRegistry extends HostedWalletProviderRegis
49
49
  validateOptions(_options): _options is ReactOptionsMap['turnkey'] {
50
50
  return true
51
51
  },
52
- create({ chainManager, lendProvider }, _options) {
53
- return new TurnkeyHostedWalletProvider(chainManager, lendProvider)
52
+ create({ chainManager, lendProviders }, _options) {
53
+ return new TurnkeyHostedWalletProvider(chainManager, lendProviders)
54
54
  },
55
55
  })
56
56
  }
@@ -1,7 +1,8 @@
1
1
  import { type Address, 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 { EOAWallet } from '@/wallet/core/wallets/eoa/EOAWallet.js'
6
7
  import type { DynamicHostedWalletToActionsWalletOptions } from '@/wallet/react/providers/hosted/types/index.js'
7
8
  import { createSigner } from '@/wallet/react/wallets/hosted/dynamic/utils/createSigner.js'
@@ -23,21 +24,27 @@ export class DynamicWallet extends EOAWallet {
23
24
  private constructor(
24
25
  chainManager: ChainManager,
25
26
  dynamicWallet: DynamicHostedWalletToActionsWalletOptions['wallet'],
26
- lendProvider?: LendProvider<LendConfig>,
27
+ lendProviders?: {
28
+ morpho?: LendProvider<LendProviderConfig>
29
+ aave?: LendProvider<LendProviderConfig>
30
+ },
27
31
  ) {
28
- super(chainManager, lendProvider)
32
+ super(chainManager, lendProviders)
29
33
  this.dynamicWallet = dynamicWallet
30
34
  }
31
35
 
32
36
  static async create(params: {
33
37
  dynamicWallet: DynamicHostedWalletToActionsWalletOptions['wallet']
34
38
  chainManager: ChainManager
35
- lendProvider?: LendProvider<LendConfig>
39
+ lendProviders?: {
40
+ morpho?: LendProvider<LendProviderConfig>
41
+ aave?: LendProvider<LendProviderConfig>
42
+ }
36
43
  }): Promise<DynamicWallet> {
37
44
  const wallet = new DynamicWallet(
38
45
  params.chainManager,
39
46
  params.dynamicWallet,
40
- params.lendProvider,
47
+ params.lendProviders,
41
48
  )
42
49
  await wallet.initialize()
43
50
  return wallet
@@ -1,6 +1,8 @@
1
1
  import { vi } from 'vitest'
2
2
 
3
+ import type { LendProvider } from '@/lend/core/LendProvider.js'
3
4
  import type { ChainManager } from '@/services/ChainManager.js'
5
+ import type { LendProviderConfig } from '@/types/actions.js'
4
6
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
5
7
  import type { DynamicHostedWalletToActionsWalletOptions } from '@/wallet/react/providers/hosted/types/index.js'
6
8
 
@@ -15,6 +17,10 @@ export class DynamicWalletMock {
15
17
  async (_params: {
16
18
  chainManager: ChainManager
17
19
  dynamicWallet: DynamicHostedWalletToActionsWalletOptions['wallet']
20
+ lendProviders?: {
21
+ morpho?: LendProvider<LendProviderConfig>
22
+ aave?: LendProvider<LendProviderConfig>
23
+ }
18
24
  }): Promise<Wallet> => {
19
25
  return {} as unknown as Wallet
20
26
  },