@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
@@ -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,
@@ -1,9 +1,11 @@
1
- import type { PrivyClient } from '@privy-io/server-auth'
1
+ 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 {
@@ -21,16 +23,34 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
21
23
  'privy',
22
24
  NodeToActionsOptionsMap
23
25
  > {
26
+ private readonly privyClient: PrivyClient
27
+ private readonly authorizationContext?: AuthorizationContext
28
+
24
29
  /**
25
30
  * Create a new Privy wallet provider
26
- * @param privyClient - Privy client instance
31
+ * @param params - Configuration parameters
32
+ * @param params.privyClient - Privy client instance
33
+ * @param params.chainManager - Chain manager for multi-chain operations
34
+ * @param params.lendProviders - Optional lend providers for DeFi operations
35
+ * @param params.supportedAssets - Optional list of supported assets
36
+ * @param params.authorizationContext - Optional authorization context for the Privy client.
37
+ * Used when Privy needs to sign requests.
38
+ * See https://docs.privy.io/controls/authorization-keys/using-owners/sign/automatic#using-the-authorization-context
39
+ * for more information on building and using the authorization context.
27
40
  */
28
- constructor(
29
- private readonly privyClient: PrivyClient,
30
- chainManager: ChainManager,
31
- lendProvider?: LendProvider<LendConfig>,
32
- ) {
33
- super(chainManager, lendProvider)
41
+ constructor(params: {
42
+ privyClient: PrivyClient
43
+ chainManager: ChainManager
44
+ lendProviders?: {
45
+ morpho?: LendProvider<LendProviderConfig>
46
+ aave?: LendProvider<LendProviderConfig>
47
+ }
48
+ supportedAssets?: Asset[]
49
+ authorizationContext?: AuthorizationContext
50
+ }) {
51
+ super(params.chainManager, params.lendProviders, params.supportedAssets)
52
+ this.privyClient = params.privyClient
53
+ this.authorizationContext = params.authorizationContext
34
54
  }
35
55
 
36
56
  async toActionsWallet(
@@ -38,10 +58,12 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
38
58
  ): Promise<Wallet> {
39
59
  return PrivyWallet.create({
40
60
  privyClient: this.privyClient,
61
+ authorizationContext: this.authorizationContext,
41
62
  walletId: params.walletId,
42
63
  address: getAddress(params.address),
43
64
  chainManager: this.chainManager,
44
- lendProvider: this.lendProvider,
65
+ lendProviders: this.lendProviders,
66
+ supportedAssets: this.supportedAssets,
45
67
  })
46
68
  }
47
69
 
@@ -60,6 +82,10 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
60
82
  async createSigner(
61
83
  params: NodeToActionsOptionsMap['privy'],
62
84
  ): Promise<LocalAccount> {
63
- return createSigner({ ...params, privyClient: this.privyClient })
85
+ return createSigner({
86
+ ...params,
87
+ privyClient: this.privyClient,
88
+ authorizationContext: this.authorizationContext,
89
+ })
64
90
  }
65
91
  }
@@ -5,9 +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 { createMockPrivyClient } from '@/test/MockPrivyClient.js'
8
+ import { createMockLendProvider } from '@/test/MockLendProvider.js'
9
+ import {
10
+ createMockPrivyClient,
11
+ createMockPrivyWallet,
12
+ getMockAuthorizationContext,
13
+ } from '@/test/MockPrivyClient.js'
9
14
  import { getRandomAddress } from '@/test/utils.js'
10
- import type { LendConfig, LendProvider } from '@/types/lend/index.js'
11
15
  import { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
12
16
  import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
13
17
  import { PrivyWallet } from '@/wallet/node/wallets/hosted/privy/PrivyWallet.js'
@@ -20,12 +24,14 @@ describe('PrivyHostedWalletProvider', () => {
20
24
  describe('toActionsWallet', () => {
21
25
  it('toActionsWallet creates an ActionsWallet with correct address and signer', async () => {
22
26
  const privy = createMockPrivyClient('app', 'secret')
23
- const provider = new PrivyHostedWalletProvider(privy, mockChainManager)
24
-
25
- const hostedWallet = await privy.walletApi.createWallet({
26
- chainType: 'ethereum',
27
+ const provider = new PrivyHostedWalletProvider({
28
+ privyClient: privy,
29
+ authorizationContext: getMockAuthorizationContext(),
30
+ chainManager: mockChainManager,
27
31
  })
28
32
 
33
+ const hostedWallet = createMockPrivyWallet()
34
+
29
35
  const actionsWallet = await provider.toActionsWallet({
30
36
  walletId: hostedWallet.id,
31
37
  address: hostedWallet.address as Address,
@@ -38,17 +44,23 @@ describe('PrivyHostedWalletProvider', () => {
38
44
 
39
45
  it('forwards params to PrivyWallet.create', async () => {
40
46
  const privy = createMockPrivyClient('app', 'secret')
41
- const provider = new PrivyHostedWalletProvider(privy, mockChainManager)
47
+ const authorizationContext = getMockAuthorizationContext()
48
+ const provider = new PrivyHostedWalletProvider({
49
+ privyClient: privy,
50
+ authorizationContext,
51
+ chainManager: mockChainManager,
52
+ })
42
53
  const spy = vi.spyOn(PrivyWallet, 'create')
43
54
 
44
55
  const id = 'mock-wallet-123'
45
- const addr = getRandomAddress().toLowerCase()
56
+ const addr = getRandomAddress()
46
57
 
47
- await provider.toActionsWallet({ walletId: id, address: addr as Address })
58
+ await provider.toActionsWallet({ walletId: id, address: addr })
48
59
 
49
60
  expect(spy).toHaveBeenCalledWith(
50
61
  expect.objectContaining({
51
62
  privyClient: privy,
63
+ authorizationContext,
52
64
  walletId: id,
53
65
  address: getAddress(addr),
54
66
  chainManager: mockChainManager,
@@ -58,7 +70,11 @@ describe('PrivyHostedWalletProvider', () => {
58
70
 
59
71
  it('throws on invalid address', async () => {
60
72
  const privy = createMockPrivyClient('app', 'secret')
61
- const provider = new PrivyHostedWalletProvider(privy, mockChainManager)
73
+ const provider = new PrivyHostedWalletProvider({
74
+ privyClient: privy,
75
+ authorizationContext: getMockAuthorizationContext(),
76
+ chainManager: mockChainManager,
77
+ })
62
78
 
63
79
  await expect(
64
80
  provider.toActionsWallet({ walletId: 'id', address: '0x123' }),
@@ -67,25 +83,26 @@ describe('PrivyHostedWalletProvider', () => {
67
83
 
68
84
  it('forwards lendProvider when provided to constructor', async () => {
69
85
  const privy = createMockPrivyClient('app', 'secret')
70
- const mockLendProvider = {} as LendProvider<LendConfig>
71
- const provider = new PrivyHostedWalletProvider(
72
- privy,
73
- mockChainManager,
74
- mockLendProvider,
75
- )
86
+ const mockLendProvider = createMockLendProvider()
87
+ const provider = new PrivyHostedWalletProvider({
88
+ privyClient: privy,
89
+ authorizationContext: getMockAuthorizationContext(),
90
+ chainManager: mockChainManager,
91
+ lendProviders: { morpho: mockLendProvider },
92
+ })
76
93
  const spy = vi.spyOn(PrivyWallet, 'create')
77
94
 
78
95
  const id = 'mock-wallet-123'
79
- const addr = getRandomAddress().toLowerCase()
96
+ const addr = getRandomAddress()
80
97
 
81
98
  await provider.toActionsWallet({
82
99
  walletId: id,
83
- address: addr as Address,
100
+ address: addr,
84
101
  })
85
102
 
86
103
  expect(spy).toHaveBeenCalledWith(
87
104
  expect.objectContaining({
88
- lendProvider: mockLendProvider,
105
+ lendProviders: { morpho: mockLendProvider },
89
106
  }),
90
107
  )
91
108
  })
@@ -94,15 +111,17 @@ describe('PrivyHostedWalletProvider', () => {
94
111
  describe('createSigner', () => {
95
112
  it('should create a LocalAccount with correct address', async () => {
96
113
  const privy = createMockPrivyClient('app', 'secret')
97
- const provider = new PrivyHostedWalletProvider(privy, mockChainManager)
98
-
99
- const hostedWallet = await privy.walletApi.createWallet({
100
- chainType: 'ethereum',
114
+ const provider = new PrivyHostedWalletProvider({
115
+ privyClient: privy,
116
+ authorizationContext: getMockAuthorizationContext(),
117
+ chainManager: mockChainManager,
101
118
  })
102
119
 
120
+ const hostedWallet = createMockPrivyWallet()
121
+
103
122
  const signer = await provider.createSigner({
104
123
  walletId: hostedWallet.id,
105
- address: hostedWallet.address as Address,
124
+ address: hostedWallet.address,
106
125
  })
107
126
 
108
127
  expect(signer.address).toBe(hostedWallet.address)
@@ -28,12 +28,14 @@ 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) {
32
- return new PrivyHostedWalletProvider(
33
- options.privyClient,
31
+ create({ chainManager, lendProviders, supportedAssets }, options) {
32
+ return new PrivyHostedWalletProvider({
33
+ privyClient: options.privyClient,
34
34
  chainManager,
35
- lendProvider,
36
- )
35
+ lendProviders,
36
+ supportedAssets,
37
+ authorizationContext: options.authorizationContext,
38
+ })
37
39
  },
38
40
  })
39
41
 
@@ -43,11 +45,12 @@ export class NodeHostedWalletProviderRegistry extends HostedWalletProviderRegist
43
45
  const o = options as NodeOptionsMap['turnkey']
44
46
  return Boolean(o?.client)
45
47
  },
46
- create({ chainManager, lendProvider }, options) {
48
+ create({ chainManager, lendProviders, supportedAssets }, options) {
47
49
  return new TurnkeyHostedWalletProvider(
48
50
  options.client,
49
51
  chainManager,
50
- lendProvider,
52
+ lendProviders,
53
+ supportedAssets,
51
54
  )
52
55
  },
53
56
  })
@@ -1,11 +1,14 @@
1
- import type { PrivyClient } from '@privy-io/server-auth'
1
+ import type { PrivyClient } from '@privy-io/node'
2
2
  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
6
  import type { ChainManager } from '@/services/ChainManager.js'
7
7
  import { MockChainManager } from '@/test/MockChainManager.js'
8
- import { createMockPrivyClient } from '@/test/MockPrivyClient.js'
8
+ import {
9
+ createMockPrivyClient,
10
+ getMockAuthorizationContext,
11
+ } from '@/test/MockPrivyClient.js'
9
12
  import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
10
13
  import { NodeHostedWalletProviderRegistry } from '@/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js'
11
14
  import { TurnkeyHostedWalletProvider } from '@/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js'
@@ -31,6 +34,12 @@ describe('NodeHostedWalletProviderRegistry', () => {
31
34
  const factory = registry.getFactory('privy')
32
35
 
33
36
  expect(factory.type).toBe('privy')
37
+ expect(
38
+ factory.validateOptions?.({
39
+ privyClient: mockPrivyClient,
40
+ authorizationContext: getMockAuthorizationContext(),
41
+ } as NodeOptionsMap['privy']),
42
+ ).toBe(true)
34
43
  expect(
35
44
  factory.validateOptions?.({
36
45
  privyClient: mockPrivyClient,
@@ -38,6 +47,11 @@ describe('NodeHostedWalletProviderRegistry', () => {
38
47
  ).toBe(true)
39
48
  // Invalid shape should not pass validation
40
49
  expect(factory.validateOptions?.({})).toBe(false)
50
+ expect(
51
+ factory.validateOptions?.({
52
+ authorizationContext: getMockAuthorizationContext(),
53
+ } as NodeOptionsMap['privy']),
54
+ ).toBe(false)
41
55
  })
42
56
 
43
57
  it('creates a PrivyHostedWalletProvider instance', () => {
@@ -46,6 +60,7 @@ describe('NodeHostedWalletProviderRegistry', () => {
46
60
 
47
61
  const provider = factory.create({ chainManager: mockChainManager }, {
48
62
  privyClient: mockPrivyClient,
63
+ authorizationContext: getMockAuthorizationContext(),
49
64
  } as NodeOptionsMap['privy'])
50
65
 
51
66
  expect(provider).toBeInstanceOf(PrivyHostedWalletProvider)
@@ -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,4 +1,4 @@
1
- import type { PrivyClient } from '@privy-io/server-auth'
1
+ import type { AuthorizationContext, PrivyClient } from '@privy-io/node'
2
2
  import type { TurnkeySDKClientBase } from '@turnkey/core'
3
3
  import type { TurnkeyClient as TurnkeyHttpClient } from '@turnkey/http'
4
4
  import type { TurnkeyServerClient } from '@turnkey/sdk-server'
@@ -29,8 +29,15 @@ export interface NodeOptionsMap {
29
29
  /**
30
30
  * Privy provider configuration
31
31
  * @property privyClient Server-side Privy client instance used to query/create wallets
32
+ * @property authorizationContext Optional authorization context for the Privy client.
33
+ * Used when Privy needs to sign requests.
34
+ * See https://docs.privy.io/controls/authorization-keys/using-owners/sign/automatic#using-the-authorization-context
35
+ * for more information on building and using the authorization context.
32
36
  */
33
- privy: { privyClient: PrivyClient }
37
+ privy: {
38
+ privyClient: PrivyClient
39
+ authorizationContext?: AuthorizationContext
40
+ }
34
41
  /**
35
42
  * Turnkey provider configuration
36
43
  * @property client Turnkey SDK/HTTP client used to sign and manage keys
@@ -1,8 +1,10 @@
1
- import type { PrivyClient } from '@privy-io/server-auth'
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
 
@@ -15,39 +17,56 @@ export class PrivyWallet extends EOAWallet {
15
17
  public signer!: LocalAccount
16
18
  public readonly address: Address
17
19
  private privyClient: PrivyClient
18
-
20
+ private authorizationContext?: AuthorizationContext
19
21
  /**
20
- * Create a new Privy wallet provider
21
- * @param appId - Privy application ID
22
- * @param appSecret - Privy application secret
23
- * @param actions - Actions instance for accessing configured providers
22
+ * Create a new Privy wallet instance
23
+ * @param privyClient - Privy client instance for wallet operations
24
+ * @param authorizationContext - Authorization context for signing requests
25
+ * @param walletId - Privy wallet identifier
26
+ * @param address - Ethereum address of the wallet
27
+ * @param chainManager - Chain manager for multi-chain operations
28
+ * @param lendProviders - Optional lend providers for DeFi operations
29
+ * @param supportedAssets - Optional list of supported assets
24
30
  */
25
31
  private constructor(
26
32
  privyClient: PrivyClient,
27
33
  walletId: string,
28
34
  address: Address,
29
35
  chainManager: ChainManager,
30
- lendProvider?: LendProvider<LendConfig>,
36
+ lendProviders?: {
37
+ morpho?: LendProvider<LendProviderConfig>
38
+ aave?: LendProvider<LendProviderConfig>
39
+ },
40
+ supportedAssets?: Asset[],
41
+ authorizationContext?: AuthorizationContext,
31
42
  ) {
32
- super(chainManager, lendProvider)
43
+ super(chainManager, lendProviders, supportedAssets)
33
44
  this.privyClient = privyClient
45
+ this.authorizationContext = authorizationContext
34
46
  this.walletId = walletId
35
47
  this.address = address
36
48
  }
37
49
 
38
50
  static async create(params: {
39
51
  privyClient: PrivyClient
52
+ authorizationContext?: AuthorizationContext
40
53
  walletId: string
41
54
  address: Address
42
55
  chainManager: ChainManager
43
- lendProvider?: LendProvider<LendConfig>
56
+ lendProviders?: {
57
+ morpho?: LendProvider<LendProviderConfig>
58
+ aave?: LendProvider<LendProviderConfig>
59
+ }
60
+ supportedAssets?: Asset[]
44
61
  }): Promise<PrivyWallet> {
45
62
  const wallet = new PrivyWallet(
46
63
  params.privyClient,
47
64
  params.walletId,
48
65
  params.address,
49
66
  params.chainManager,
50
- params.lendProvider,
67
+ params.lendProviders,
68
+ params.supportedAssets,
69
+ params.authorizationContext,
51
70
  )
52
71
  await wallet.initialize()
53
72
  return wallet
@@ -73,6 +92,7 @@ export class PrivyWallet extends EOAWallet {
73
92
  walletId: this.walletId,
74
93
  address: this.address,
75
94
  privyClient: this.privyClient,
95
+ authorizationContext: this.authorizationContext,
76
96
  })
77
97
  }
78
98
  }