@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,6 @@
1
- import type { PrivyClient } from '@privy-io/server-auth'
1
+ import type { AuthorizationContext, PrivyClient } from '@privy-io/node'
2
2
  import type { Address } from 'viem'
3
+ import { generatePrivateKey } from 'viem/accounts'
3
4
 
4
5
  import { getRandomAddress } from '@/test/utils.js'
5
6
 
@@ -8,102 +9,12 @@ import { getRandomAddress } from '@/test/utils.js'
8
9
  * @description Provides a mock implementation of PrivyClient for testing purposes
9
10
  */
10
11
  export class MockPrivyClient {
11
- public walletApi = {
12
- createWallet: async (params: { chainType: string }) => {
13
- const walletId = `mock-wallet-${++this.walletCounter}`
14
- const address = getRandomAddress()
15
-
16
- const wallet = new MockWallet(walletId, address)
17
- this.mockWallets.set(walletId, wallet)
18
-
19
- return {
20
- id: walletId,
21
- address: address,
22
- chainType: params.chainType,
23
- }
24
- },
25
-
26
- getWallet: async (params: { id: string }) => {
27
- const wallet = this.mockWallets.get(params.id)
28
- if (!wallet) {
29
- throw new Error(`Wallet ${params.id} not found`)
30
- }
31
-
32
- return {
33
- id: wallet.id,
34
- address: wallet.address,
35
- chainType: 'ethereum',
36
- }
37
- },
38
-
39
- getWallets: async (params?: { limit?: number; cursor?: string }) => {
40
- const wallets = Array.from(this.mockWallets.values())
41
- const limit = params?.limit || wallets.length
42
-
43
- return {
44
- data: wallets.slice(0, limit).map((wallet) => ({
45
- id: wallet.id,
46
- address: wallet.address,
47
- chainType: 'ethereum',
48
- })),
49
- }
50
- },
51
-
52
- ethereum: {
53
- signMessage: async (params: { walletId: string; message: string }) => {
54
- const wallet = this.mockWallets.get(params.walletId)
55
- if (!wallet) {
56
- throw new Error(`Wallet ${params.walletId} not found`)
57
- }
58
-
59
- // Mock signature - deterministic based on message
60
- const mockSig = `0x${'a'.repeat(128)}${params.message.length.toString(16).padStart(2, '0')}`
61
- return { signature: mockSig }
62
- },
63
-
64
- secp256k1Sign: async (params: { walletId: string; hash: string }) => {
65
- const wallet = this.mockWallets.get(params.walletId)
66
- if (!wallet) {
67
- throw new Error(`Wallet ${params.walletId} not found`)
68
- }
69
-
70
- // Mock signature - deterministic based on hash
71
- const mockSig = `0x${'b'.repeat(128)}${params.hash.slice(-2)}`
72
- return { signature: mockSig }
73
- },
74
-
75
- signTransaction: async (params: {
76
- walletId: string
77
- transaction: unknown
78
- }) => {
79
- const wallet = this.mockWallets.get(params.walletId)
80
- if (!wallet) {
81
- throw new Error(`Wallet ${params.walletId} not found`)
82
- }
83
-
84
- // Mock signed transaction
85
- const mockSignedTx = `0x${'c'.repeat(200)}`
86
- return { signedTransaction: mockSignedTx }
87
- },
88
- },
89
- }
90
-
91
- private mockWallets = new Map<string, MockWallet>()
92
- private walletCounter = 0
93
-
94
12
  constructor(
95
13
  public appId: string,
96
14
  public appSecret: string,
97
15
  ) {}
98
16
  }
99
17
 
100
- class MockWallet {
101
- constructor(
102
- public id: string,
103
- public address: Address,
104
- ) {}
105
- }
106
-
107
18
  /**
108
19
  * Create a mock Privy client cast as PrivyClient type
109
20
  * @param appId - Mock app ID
@@ -116,3 +27,25 @@ export function createMockPrivyClient(
116
27
  ): PrivyClient {
117
28
  return new MockPrivyClient(appId, appSecret) as unknown as PrivyClient
118
29
  }
30
+
31
+ export function createMockPrivyWallet(params?: {
32
+ id?: string
33
+ address?: Address
34
+ }): {
35
+ id: string
36
+ address: Address
37
+ } {
38
+ const { id, address } = params ?? {}
39
+ return {
40
+ id: id ?? 'mock-wallet-1',
41
+ address: address ?? getRandomAddress(),
42
+ }
43
+ }
44
+
45
+ export function getMockAuthorizationContext(
46
+ privateKey?: string,
47
+ ): AuthorizationContext {
48
+ return {
49
+ authorization_private_keys: [privateKey ?? generatePrivateKey()],
50
+ }
51
+ }
@@ -1,7 +1,22 @@
1
+ import type { Asset } from '@/types/asset.js'
1
2
  import type { ChainConfig } from '@/types/chain.js'
2
- import type { LendConfig } from '@/types/lend/index.js'
3
+ import type { LendProviderConfig } from '@/types/lend/index.js'
3
4
  import type { ProviderSpec } from '@/wallet/core/providers/hosted/types/index.js'
4
5
 
6
+ // Re-export LendProviderConfig for convenience
7
+ export type { LendProviderConfig }
8
+
9
+ /**
10
+ * Lending configuration
11
+ * @description Configuration for all lending providers
12
+ */
13
+ export interface LendConfig {
14
+ /** Morpho lending provider configuration */
15
+ morpho?: LendProviderConfig
16
+ /** Aave lending provider configuration */
17
+ aave?: LendProviderConfig
18
+ }
19
+
5
20
  /**
6
21
  * Network configuration for lending providers
7
22
  * @description Basic network information that lending providers need
@@ -11,6 +26,17 @@ export interface LendNetworkConfig {
11
26
  name: string
12
27
  }
13
28
 
29
+ /**
30
+ * Assets configuration
31
+ * @description Configuration for supported assets
32
+ */
33
+ export interface AssetsConfig {
34
+ /** Allowlist of assets to support (optional - defaults to all SUPPORTED_TOKENS) */
35
+ allow?: Asset[]
36
+ /** Blocklist of assets to exclude (optional) */
37
+ block?: Asset[]
38
+ }
39
+
14
40
  /**
15
41
  * Actions SDK configuration
16
42
  * @description Configuration object for initializing the Actions SDK
@@ -21,8 +47,10 @@ export interface ActionsConfig<
21
47
  > {
22
48
  /** Wallet configuration */
23
49
  wallet: WalletConfig<THostedWalletProviderType, TConfigMap>
24
- /** Lending provider configuration (optional) */
50
+ /** Lending providers configuration (optional) */
25
51
  lend?: LendConfig
52
+ /** Assets configuration (optional) */
53
+ assets?: AssetsConfig
26
54
  /** Chains to use for the SDK */
27
55
  chains: ChainConfig[]
28
56
  }
@@ -30,7 +30,7 @@ export type LendMarketConfigMetadata = {
30
30
  /** Asset information for this market */
31
31
  asset: Asset
32
32
  /** Lending provider type */
33
- lendProvider: 'morpho'
33
+ lendProvider: 'morpho' | 'aave'
34
34
  }
35
35
 
36
36
  /**
@@ -215,32 +215,16 @@ export interface LendOptions {
215
215
  }
216
216
 
217
217
  /**
218
- * Base lending provider configuration
219
- * @description Base configuration shared by all lending providers
218
+ * Individual lending provider configuration
219
+ * @description Configuration for a single lending provider
220
220
  */
221
- export interface BaseLendConfig {
222
- /** Default slippage tolerance (basis points) */
223
- defaultSlippage?: number
221
+ export interface LendProviderConfig {
224
222
  /** Allowlist of markets available for lending */
225
223
  marketAllowlist?: LendMarketConfig[]
224
+ /** Blocklist of markets to exclude from lending */
225
+ marketBlocklist?: LendMarketConfig[]
226
226
  }
227
227
 
228
- /**
229
- * Morpho lending provider configuration
230
- * @description Configuration specific to Morpho lending provider
231
- */
232
- export interface MorphoLendConfig extends BaseLendConfig {
233
- /** Lending provider name */
234
- provider: 'morpho'
235
- // Morpho-specific fields can be added here in the future
236
- }
237
-
238
- /**
239
- * Lending provider configuration
240
- * @description Union of all possible lending provider configurations
241
- */
242
- export type LendConfig = MorphoLendConfig
243
-
244
228
  /**
245
229
  * Market position information
246
230
  * @description Position details for a user in a lending market
@@ -55,19 +55,19 @@ export class WalletNamespace<
55
55
  /**
56
56
  * Create a new smart wallet
57
57
  * @description Creates a smart wallet and attempts to deploy it across all supported chains.
58
- * The wallet address is deterministically calculated from owners and nonce. The signer must
59
- * be included in the owners array. Deployment failures on individual chains do not prevent
58
+ * The wallet address is deterministically calculated from signers and nonce. The signer must
59
+ * be included in the signers array. Deployment failures on individual chains do not prevent
60
60
  * wallet creation - they are reported in the result.
61
61
  * @param params - Smart wallet creation parameters
62
- * @param params.owners - Array of owners for the smart wallet (addresses or WebAuthn public keys)
63
- * @param params.signer - Local account used for signing transactions (must be in owners array)
62
+ * @param params.signer - Primary local account used for signing transactions
63
+ * @param params.signers - Optional array of additional signers for the smart wallet
64
64
  * @param params.nonce - Optional nonce for smart wallet address generation (defaults to 0)
65
65
  * @param params.deploymentChainIds - Optional chain IDs to deploy the wallet to.
66
66
  * If not provided, the wallet will be deployed to all supported chains.
67
67
  * @returns Promise resolving to deployment result containing:
68
68
  * - `wallet`: The created SmartWallet instance
69
69
  * - `deployments`: Array of deployment results with chainId, receipt, success flag, and error
70
- * @throws Error if signer is not included in the owners array
70
+ * @throws Error if signer is not included in the signers array
71
71
  */
72
72
  async createSmartWallet(
73
73
  params: CreateSmartWalletOptions,
@@ -98,7 +98,7 @@ export class WalletNamespace<
98
98
  * @param params.address - Ethereum address of the hosted wallet
99
99
  * @returns Promise resolving to the Actions wallet instance
100
100
  */
101
- async hostedWalletToActionsWallet(
101
+ async toActionsWallet(
102
102
  params: TToActionsMap[THostedProviderType],
103
103
  ): Promise<Wallet> {
104
104
  return this.provider.hostedWalletToActionsWallet(params)
@@ -110,14 +110,14 @@ export class WalletNamespace<
110
110
  * you already have a LocalAccount signer and want to access an existing smart wallet without
111
111
  * going through the hosted wallet provider. Use this instead of getSmartWalletWithHostedSigner
112
112
  * when you have direct control over the signer.
113
- * @param signer - Local account to use for signing transactions on the smart wallet
114
- * @param getWalletParams - Wallet retrieval parameters
115
- * @param getWalletParams.deploymentOwners - Array of original deployment owners for smart wallet address calculation. Required if walletAddress not provided. Must match the exact owners array used during wallet deployment.
116
- * @param getWalletParams.signerOwnerIndex - Current index of the signer in the smart wallet's current owners array (used for transaction signing). Defaults to 0 if not specified. This may differ from the original deployment index if owners have been modified.
117
- * @param getWalletParams.walletAddress - Optional explicit smart wallet address (skips address calculation)
118
- * @param getWalletParams.nonce - Optional nonce used during smart wallet creation
113
+ * @param params - Wallet retrieval parameters
114
+ * @param params.signer - Local account to use for signing transactions on the smart wallet
115
+ * @param params.signers - Optional array of additional signers for the smart wallet
116
+ * @param params.deploymentSigners - Optional array of signers used during wallet deployment
117
+ * @param params.walletAddress - Optional explicit smart wallet address (skips address calculation)
118
+ * @param params.nonce - Optional nonce used during smart wallet creation
119
119
  * @returns Promise resolving to the smart wallet instance with the provided signer
120
- * @throws Error if neither walletAddress nor deploymentOwners provided
120
+ * @throws Error if neither walletAddress nor deploymentSigners provided
121
121
  */
122
122
  async getSmartWallet(params: GetSmartWalletOptions) {
123
123
  return this.provider.getSmartWallet(params)
@@ -1,4 +1,4 @@
1
- import type { PrivyClient } from '@privy-io/server-auth'
1
+ import type { PrivyClient } from '@privy-io/node'
2
2
  import { getAddress } from 'viem'
3
3
  import { unichain } from 'viem/chains'
4
4
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
@@ -7,7 +7,11 @@ import type { SupportedChainId } from '@/constants/supportedChains.js'
7
7
  import type { ChainManager } from '@/services/ChainManager.js'
8
8
  import { MockChainManager } from '@/test/MockChainManager.js'
9
9
  import { createMockLendProvider } from '@/test/MockLendProvider.js'
10
- import { createMockPrivyClient } from '@/test/MockPrivyClient.js'
10
+ import {
11
+ createMockPrivyClient,
12
+ createMockPrivyWallet,
13
+ getMockAuthorizationContext,
14
+ } from '@/test/MockPrivyClient.js'
11
15
  import { getRandomAddress } from '@/test/utils.js'
12
16
  import { WalletNamespace } from '@/wallet/core/namespace/WalletNamespace.js'
13
17
  import { DefaultSmartWalletProvider } from '@/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js'
@@ -35,13 +39,14 @@ describe('WalletNamespace', () => {
35
39
 
36
40
  describe('hostedWalletProvider', () => {
37
41
  it('should provide access to hosted wallet provider', () => {
38
- const hostedWalletProvider = new PrivyHostedWalletProvider(
39
- mockPrivyClient,
40
- mockChainManager,
41
- )
42
+ const hostedWalletProvider = new PrivyHostedWalletProvider({
43
+ privyClient: mockPrivyClient,
44
+ chainManager: mockChainManager,
45
+ authorizationContext: getMockAuthorizationContext(),
46
+ })
42
47
  const smartWalletProvider = new DefaultSmartWalletProvider(
43
48
  mockChainManager,
44
- mockLendProvider,
49
+ { morpho: mockLendProvider },
45
50
  )
46
51
  const walletProvider = new WalletProvider(
47
52
  hostedWalletProvider,
@@ -59,13 +64,14 @@ describe('WalletNamespace', () => {
59
64
  'test-app-id',
60
65
  'test-app-secret',
61
66
  )
62
- const hostedWalletProvider = new PrivyHostedWalletProvider(
63
- mockPrivyClient,
64
- mockChainManager,
65
- )
67
+ const hostedWalletProvider = new PrivyHostedWalletProvider({
68
+ privyClient: mockPrivyClient,
69
+ authorizationContext: getMockAuthorizationContext(),
70
+ chainManager: mockChainManager,
71
+ })
66
72
  const smartWalletProvider = new DefaultSmartWalletProvider(
67
73
  mockChainManager,
68
- mockLendProvider,
74
+ { morpho: mockLendProvider },
69
75
  )
70
76
  const walletProvider = new WalletProvider(
71
77
  hostedWalletProvider,
@@ -79,13 +85,14 @@ describe('WalletNamespace', () => {
79
85
 
80
86
  describe('createSmartWallet', () => {
81
87
  it('should create a smart wallet and return deployment result', async () => {
82
- const hostedWalletProvider = new PrivyHostedWalletProvider(
83
- mockPrivyClient,
84
- mockChainManager,
85
- )
88
+ const hostedWalletProvider = new PrivyHostedWalletProvider({
89
+ privyClient: mockPrivyClient,
90
+ authorizationContext: getMockAuthorizationContext(),
91
+ chainManager: mockChainManager,
92
+ })
86
93
  const smartWalletProvider = new DefaultSmartWalletProvider(
87
94
  mockChainManager,
88
- mockLendProvider,
95
+ { morpho: mockLendProvider },
89
96
  )
90
97
  const walletProvider = new WalletProvider(
91
98
  hostedWalletProvider,
@@ -95,9 +102,7 @@ describe('WalletNamespace', () => {
95
102
  const walletNamespace = new WalletNamespace(walletProvider)
96
103
 
97
104
  // Create a hosted wallet to use as signer
98
- const privyWallet = await mockPrivyClient.walletApi.createWallet({
99
- chainType: 'ethereum',
100
- })
105
+ const privyWallet = createMockPrivyWallet()
101
106
  const hostedWallet =
102
107
  await walletProvider.hostedWalletProvider.toActionsWallet({
103
108
  walletId: privyWallet.id,
@@ -121,13 +126,14 @@ describe('WalletNamespace', () => {
121
126
  })
122
127
 
123
128
  it('should report deployment successes and failures', async () => {
124
- const hostedWalletProvider = new PrivyHostedWalletProvider(
125
- mockPrivyClient,
126
- mockChainManager,
127
- )
129
+ const hostedWalletProvider = new PrivyHostedWalletProvider({
130
+ privyClient: mockPrivyClient,
131
+ authorizationContext: getMockAuthorizationContext(),
132
+ chainManager: mockChainManager,
133
+ })
128
134
  const smartWalletProvider = new DefaultSmartWalletProvider(
129
135
  mockChainManager,
130
- mockLendProvider,
136
+ { morpho: mockLendProvider },
131
137
  )
132
138
  const walletProvider = new WalletProvider(
133
139
  hostedWalletProvider,
@@ -136,9 +142,7 @@ describe('WalletNamespace', () => {
136
142
  const walletNamespace = new WalletNamespace(walletProvider)
137
143
 
138
144
  // Create a hosted wallet to use as signer
139
- const privyWallet = await mockPrivyClient.walletApi.createWallet({
140
- chainType: 'ethereum',
141
- })
145
+ const privyWallet = createMockPrivyWallet()
142
146
  const hostedWallet =
143
147
  await walletProvider.hostedWalletProvider.toActionsWallet({
144
148
  walletId: privyWallet.id,
@@ -206,13 +210,14 @@ describe('WalletNamespace', () => {
206
210
  'test-app-id',
207
211
  'test-app-secret',
208
212
  )
209
- const hostedWalletProvider = new PrivyHostedWalletProvider(
210
- mockPrivyClient,
211
- mockChainManager,
212
- )
213
+ const hostedWalletProvider = new PrivyHostedWalletProvider({
214
+ privyClient: mockPrivyClient,
215
+ authorizationContext: getMockAuthorizationContext(),
216
+ chainManager: mockChainManager,
217
+ })
213
218
  const smartWalletProvider = new DefaultSmartWalletProvider(
214
219
  mockChainManager,
215
- mockLendProvider,
220
+ { morpho: mockLendProvider },
216
221
  )
217
222
  const walletProvider = new WalletProvider(
218
223
  hostedWalletProvider,
@@ -221,9 +226,7 @@ describe('WalletNamespace', () => {
221
226
  const getSmartWalletSpy = vi.spyOn(walletProvider, 'getSmartWallet')
222
227
  const walletNamespace = new WalletNamespace(walletProvider)
223
228
 
224
- const privyWallet = await mockPrivyClient.walletApi.createWallet({
225
- chainType: 'ethereum',
226
- })
229
+ const privyWallet = createMockPrivyWallet()
227
230
  const hostedWallet =
228
231
  await walletProvider.hostedWalletProvider.toActionsWallet({
229
232
  walletId: privyWallet.id,
@@ -249,13 +252,14 @@ describe('WalletNamespace', () => {
249
252
  'test-app-id',
250
253
  'test-app-secret',
251
254
  )
252
- const hostedWalletProvider = new PrivyHostedWalletProvider(
253
- mockPrivyClient,
254
- mockChainManager,
255
- )
255
+ const hostedWalletProvider = new PrivyHostedWalletProvider({
256
+ privyClient: mockPrivyClient,
257
+ authorizationContext: getMockAuthorizationContext(),
258
+ chainManager: mockChainManager,
259
+ })
256
260
  const smartWalletProvider = new DefaultSmartWalletProvider(
257
261
  mockChainManager,
258
- mockLendProvider,
262
+ { morpho: mockLendProvider },
259
263
  )
260
264
  const walletProvider = new WalletProvider(
261
265
  hostedWalletProvider,
@@ -263,9 +267,7 @@ describe('WalletNamespace', () => {
263
267
  )
264
268
  const walletNamespace = new WalletNamespace(walletProvider)
265
269
 
266
- const privyWallet = await mockPrivyClient.walletApi.createWallet({
267
- chainType: 'ethereum',
268
- })
270
+ const privyWallet = createMockPrivyWallet()
269
271
  const hostedWallet =
270
272
  await walletProvider.hostedWalletProvider.toActionsWallet({
271
273
  walletId: privyWallet.id,
@@ -284,15 +286,16 @@ describe('WalletNamespace', () => {
284
286
  })
285
287
  })
286
288
 
287
- describe('hostedWalletToActionsWallet', () => {
289
+ describe('toActionsWallet', () => {
288
290
  it('should convert a hosted wallet to an Actions wallet', async () => {
289
- const hostedWalletProvider = new PrivyHostedWalletProvider(
290
- mockPrivyClient,
291
- mockChainManager,
292
- )
291
+ const hostedWalletProvider = new PrivyHostedWalletProvider({
292
+ privyClient: mockPrivyClient,
293
+ authorizationContext: getMockAuthorizationContext(),
294
+ chainManager: mockChainManager,
295
+ })
293
296
  const smartWalletProvider = new DefaultSmartWalletProvider(
294
297
  mockChainManager,
295
- mockLendProvider,
298
+ { morpho: mockLendProvider },
296
299
  )
297
300
  const walletProvider = new WalletProvider(
298
301
  hostedWalletProvider,
@@ -300,9 +303,7 @@ describe('WalletNamespace', () => {
300
303
  )
301
304
  const walletNamespace = new WalletNamespace(walletProvider)
302
305
 
303
- const privyWallet = await mockPrivyClient.walletApi.createWallet({
304
- chainType: 'ethereum',
305
- })
306
+ const privyWallet = createMockPrivyWallet()
306
307
  const hostedWallet =
307
308
  await walletProvider.hostedWalletProvider.toActionsWallet({
308
309
  walletId: privyWallet.id,
@@ -313,7 +314,7 @@ describe('WalletNamespace', () => {
313
314
  'toActionsWallet',
314
315
  )
315
316
 
316
- const actionsWallet = await walletNamespace.hostedWalletToActionsWallet({
317
+ const actionsWallet = await walletNamespace.toActionsWallet({
317
318
  walletId: privyWallet.id,
318
319
  address: privyWallet.address,
319
320
  })
@@ -330,13 +331,14 @@ describe('WalletNamespace', () => {
330
331
 
331
332
  describe('createSigner', () => {
332
333
  it('should delegate to hosted wallet provider createSigner', async () => {
333
- const hostedWalletProvider = new PrivyHostedWalletProvider(
334
- mockPrivyClient,
335
- mockChainManager,
336
- )
334
+ const hostedWalletProvider = new PrivyHostedWalletProvider({
335
+ privyClient: mockPrivyClient,
336
+ authorizationContext: getMockAuthorizationContext(),
337
+ chainManager: mockChainManager,
338
+ })
337
339
  const smartWalletProvider = new DefaultSmartWalletProvider(
338
340
  mockChainManager,
339
- mockLendProvider,
341
+ { morpho: mockLendProvider },
340
342
  )
341
343
  const walletProvider = new WalletProvider(
342
344
  hostedWalletProvider,
@@ -345,9 +347,7 @@ describe('WalletNamespace', () => {
345
347
  const createSignerSpy = vi.spyOn(walletProvider, 'createSigner')
346
348
  const walletNamespace = new WalletNamespace(walletProvider)
347
349
 
348
- const privyWallet = await mockPrivyClient.walletApi.createWallet({
349
- chainType: 'ethereum',
350
- })
350
+ const privyWallet = createMockPrivyWallet()
351
351
  const params = {
352
352
  walletId: privyWallet.id,
353
353
  address: getAddress(privyWallet.address),
@@ -361,13 +361,14 @@ describe('WalletNamespace', () => {
361
361
  })
362
362
 
363
363
  it('should return a LocalAccount that can be used as a smart wallet signer', async () => {
364
- const hostedWalletProvider = new PrivyHostedWalletProvider(
365
- mockPrivyClient,
366
- mockChainManager,
367
- )
364
+ const hostedWalletProvider = new PrivyHostedWalletProvider({
365
+ privyClient: mockPrivyClient,
366
+ authorizationContext: getMockAuthorizationContext(),
367
+ chainManager: mockChainManager,
368
+ })
368
369
  const smartWalletProvider = new DefaultSmartWalletProvider(
369
370
  mockChainManager,
370
- mockLendProvider,
371
+ { morpho: mockLendProvider },
371
372
  )
372
373
  const walletProvider = new WalletProvider(
373
374
  hostedWalletProvider,
@@ -375,9 +376,7 @@ describe('WalletNamespace', () => {
375
376
  )
376
377
  const walletNamespace = new WalletNamespace(walletProvider)
377
378
 
378
- const privyWallet = await mockPrivyClient.walletApi.createWallet({
379
- chainType: 'ethereum',
380
- })
379
+ const privyWallet = createMockPrivyWallet()
381
380
  const signer = await walletNamespace.createSigner({
382
381
  walletId: privyWallet.id,
383
382
  address: getAddress(privyWallet.address),