@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.
- package/dist/actions.d.ts +19 -7
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +49 -19
- package/dist/actions.js.map +1 -1
- package/dist/actions.test.js +51 -81
- package/dist/actions.test.js.map +1 -1
- package/dist/constants/assets.d.ts.map +1 -1
- package/dist/constants/assets.js +2 -1
- package/dist/constants/assets.js.map +1 -1
- package/dist/constants/supportedChains.d.ts +1 -1
- package/dist/constants/supportedChains.d.ts.map +1 -1
- package/dist/constants/supportedChains.js +2 -1
- package/dist/constants/supportedChains.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lend/core/LendProvider.d.ts +3 -2
- package/dist/lend/core/LendProvider.d.ts.map +1 -1
- package/dist/lend/core/LendProvider.js.map +1 -1
- package/dist/lend/core/__tests__/LendProvider.test.js +18 -48
- package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
- package/dist/lend/index.d.ts +1 -0
- package/dist/lend/index.d.ts.map +1 -1
- package/dist/lend/index.js +1 -0
- package/dist/lend/index.js.map +1 -1
- package/dist/lend/namespaces/ActionsLendNamespace.d.ts +35 -8
- package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -1
- package/dist/lend/namespaces/ActionsLendNamespace.js +45 -8
- package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -1
- package/dist/lend/namespaces/WalletLendNamespace.d.ts +43 -10
- package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -1
- package/dist/lend/namespaces/WalletLendNamespace.js +67 -13
- package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -1
- package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +23 -15
- package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -1
- package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +29 -11
- package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -1
- package/dist/lend/providers/aave/AaveLendProvider.d.ts +82 -0
- package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -0
- package/dist/lend/providers/aave/AaveLendProvider.js +346 -0
- package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -0
- package/dist/lend/providers/aave/addresses.d.ts +57 -0
- package/dist/lend/providers/aave/addresses.d.ts.map +1 -0
- package/dist/lend/providers/aave/addresses.js +83 -0
- package/dist/lend/providers/aave/addresses.js.map +1 -0
- package/dist/lend/providers/aave/sdk.d.ts +57 -0
- package/dist/lend/providers/aave/sdk.d.ts.map +1 -0
- package/dist/lend/providers/aave/sdk.js +260 -0
- package/dist/lend/providers/aave/sdk.js.map +1 -0
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +4 -3
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
- package/dist/lend/providers/morpho/MorphoLendProvider.js +2 -2
- package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +1 -33
- package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/sdk.test.js +1 -0
- package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
- package/dist/lend/providers/morpho/sdk.d.ts +4 -3
- package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
- package/dist/lend/providers/morpho/sdk.js +0 -1
- package/dist/lend/providers/morpho/sdk.js.map +1 -1
- package/dist/services/ChainManager.d.ts +1 -1
- package/dist/supported/tokens.d.ts.map +1 -1
- package/dist/supported/tokens.js +18 -2
- package/dist/supported/tokens.js.map +1 -1
- package/dist/test/MockLendProvider.d.ts +5 -4
- package/dist/test/MockLendProvider.d.ts.map +1 -1
- package/dist/test/MockLendProvider.js +5 -5
- package/dist/test/MockLendProvider.js.map +1 -1
- package/dist/test/MockPrivyClient.d.ts +10 -49
- package/dist/test/MockPrivyClient.d.ts.map +1 -1
- package/dist/test/MockPrivyClient.js +13 -72
- package/dist/test/MockPrivyClient.js.map +1 -1
- package/dist/types/actions.d.ts +26 -2
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/lend/base.d.ts +6 -19
- package/dist/types/lend/base.d.ts.map +1 -1
- package/dist/wallet/core/namespace/WalletNamespace.d.ts +13 -13
- package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
- package/dist/wallet/core/namespace/WalletNamespace.js +13 -13
- package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +64 -42
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
- package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +51 -23
- package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +12 -3
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +3 -2
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js +14 -4
- package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/core/providers/hosted/types/index.d.ts +8 -2
- package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +14 -6
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +10 -6
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +36 -13
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts +19 -7
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.js +9 -7
- package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +9 -3
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +4 -4
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +1 -1
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +24 -4
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +21 -6
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +34 -14
- package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +10 -4
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +9 -1
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +9 -2
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -3
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +4 -3
- package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/types/index.d.ts +6 -1
- package/dist/wallet/node/providers/hosted/types/index.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +19 -7
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +13 -7
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +26 -28
- package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +12 -12
- package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.d.ts +6 -2
- package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.js +10 -7
- package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +8 -2
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -2
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -3
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +19 -7
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +6 -2
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -3
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +7 -3
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +6 -2
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -3
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +6 -3
- package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +6 -6
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +6 -2
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +3 -3
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +6 -0
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +6 -2
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +6 -2
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
- package/package.json +5 -2
- package/src/actions.test.ts +55 -96
- package/src/actions.ts +82 -26
- package/src/constants/assets.ts +8 -1
- package/src/constants/supportedChains.ts +8 -1
- package/src/index.ts +1 -2
- package/src/lend/core/LendProvider.ts +6 -5
- package/src/lend/core/__tests__/LendProvider.test.ts +19 -61
- package/src/lend/index.ts +1 -0
- package/src/lend/namespaces/ActionsLendNamespace.ts +77 -13
- package/src/lend/namespaces/WalletLendNamespace.ts +106 -20
- package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +24 -18
- package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +49 -11
- package/src/lend/providers/aave/AaveLendProvider.ts +463 -0
- package/src/lend/providers/aave/addresses.ts +95 -0
- package/src/lend/providers/aave/sdk.ts +369 -0
- package/src/lend/providers/morpho/MorphoLendProvider.ts +5 -5
- package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +5 -53
- package/src/lend/providers/morpho/__tests__/sdk.test.ts +1 -0
- package/src/lend/providers/morpho/sdk.ts +3 -4
- package/src/supported/tokens.ts +24 -2
- package/src/test/MockLendProvider.ts +9 -9
- package/src/test/MockPrivyClient.ts +24 -91
- package/src/types/actions.ts +30 -2
- package/src/types/lend/base.ts +6 -22
- package/src/wallet/core/namespace/WalletNamespace.ts +13 -13
- package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +69 -70
- package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +55 -47
- package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +15 -4
- package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +20 -7
- package/src/wallet/core/providers/hosted/types/index.ts +8 -2
- package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +24 -9
- package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +38 -46
- package/src/wallet/core/wallets/abstract/Wallet.ts +25 -17
- package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +17 -10
- package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +4 -7
- package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +37 -11
- package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +43 -24
- package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +10 -7
- package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +17 -2
- package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +13 -4
- package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +4 -4
- package/src/wallet/node/providers/hosted/types/index.ts +9 -2
- package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +31 -11
- package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +35 -40
- package/src/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +18 -14
- package/src/wallet/node/wallets/hosted/privy/utils/createSigner.ts +11 -9
- package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +16 -5
- package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +8 -4
- package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +25 -14
- package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +8 -4
- package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +7 -7
- package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +8 -4
- package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +6 -7
- package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +6 -6
- package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +12 -5
- package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +6 -0
- package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +12 -5
- package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +12 -5
- package/dist/constants/config.d.ts +0 -10
- package/dist/constants/config.d.ts.map +0 -1
- package/dist/constants/config.js +0 -10
- package/dist/constants/config.js.map +0 -1
- package/src/constants/config.ts +0 -9
|
@@ -6,7 +6,11 @@ import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
|
6
6
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
7
|
import { MockChainManager } from '@/test/MockChainManager.js'
|
|
8
8
|
import { createMockLendProvider } from '@/test/MockLendProvider.js'
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
createMockPrivyClient,
|
|
11
|
+
createMockPrivyWallet,
|
|
12
|
+
getMockAuthorizationContext,
|
|
13
|
+
} from '@/test/MockPrivyClient.js'
|
|
10
14
|
import { getRandomAddress } from '@/test/utils.js'
|
|
11
15
|
import { DefaultSmartWalletProvider } from '@/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js'
|
|
12
16
|
import { WalletProvider } from '@/wallet/core/providers/WalletProvider.js'
|
|
@@ -31,13 +35,14 @@ describe('WalletProvider', () => {
|
|
|
31
35
|
|
|
32
36
|
describe('createSmartWallet', () => {
|
|
33
37
|
it('should create a smart wallet and return deployment result', async () => {
|
|
34
|
-
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
35
|
-
mockPrivyClient,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider({
|
|
39
|
+
privyClient: mockPrivyClient,
|
|
40
|
+
authorizationContext: getMockAuthorizationContext(),
|
|
41
|
+
chainManager: mockChainManager,
|
|
42
|
+
})
|
|
38
43
|
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
39
44
|
mockChainManager,
|
|
40
|
-
mockLendProvider,
|
|
45
|
+
{ morpho: mockLendProvider },
|
|
41
46
|
)
|
|
42
47
|
const walletProvider = new WalletProvider(
|
|
43
48
|
hostedWalletProvider,
|
|
@@ -84,13 +89,14 @@ describe('WalletProvider', () => {
|
|
|
84
89
|
})
|
|
85
90
|
|
|
86
91
|
it('should pass through deployment successes and failures', async () => {
|
|
87
|
-
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
88
|
-
mockPrivyClient,
|
|
89
|
-
|
|
90
|
-
|
|
92
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider({
|
|
93
|
+
privyClient: mockPrivyClient,
|
|
94
|
+
authorizationContext: getMockAuthorizationContext(),
|
|
95
|
+
chainManager: mockChainManager,
|
|
96
|
+
})
|
|
91
97
|
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
92
98
|
mockChainManager,
|
|
93
|
-
mockLendProvider,
|
|
99
|
+
{ morpho: mockLendProvider },
|
|
94
100
|
)
|
|
95
101
|
const walletProvider = new WalletProvider(
|
|
96
102
|
hostedWalletProvider,
|
|
@@ -138,13 +144,14 @@ describe('WalletProvider', () => {
|
|
|
138
144
|
})
|
|
139
145
|
|
|
140
146
|
it('should forward deploymentChainIds parameter', async () => {
|
|
141
|
-
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
142
|
-
mockPrivyClient,
|
|
143
|
-
|
|
144
|
-
|
|
147
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider({
|
|
148
|
+
privyClient: mockPrivyClient,
|
|
149
|
+
authorizationContext: getMockAuthorizationContext(),
|
|
150
|
+
chainManager: mockChainManager,
|
|
151
|
+
})
|
|
145
152
|
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
146
153
|
mockChainManager,
|
|
147
|
-
mockLendProvider,
|
|
154
|
+
{ morpho: mockLendProvider },
|
|
148
155
|
)
|
|
149
156
|
const walletProvider = new WalletProvider(
|
|
150
157
|
hostedWalletProvider,
|
|
@@ -190,13 +197,14 @@ describe('WalletProvider', () => {
|
|
|
190
197
|
})
|
|
191
198
|
|
|
192
199
|
it('should throw error if signer is not in signers array', async () => {
|
|
193
|
-
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
194
|
-
mockPrivyClient,
|
|
195
|
-
|
|
196
|
-
|
|
200
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider({
|
|
201
|
+
privyClient: mockPrivyClient,
|
|
202
|
+
authorizationContext: getMockAuthorizationContext(),
|
|
203
|
+
chainManager: mockChainManager,
|
|
204
|
+
})
|
|
197
205
|
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
198
206
|
mockChainManager,
|
|
199
|
-
mockLendProvider,
|
|
207
|
+
{ morpho: mockLendProvider },
|
|
200
208
|
)
|
|
201
209
|
const walletProvider = new WalletProvider(
|
|
202
210
|
hostedWalletProvider,
|
|
@@ -222,13 +230,14 @@ describe('WalletProvider', () => {
|
|
|
222
230
|
|
|
223
231
|
describe('getSmartWallet', () => {
|
|
224
232
|
it('should get a smart wallet with provided signer', async () => {
|
|
225
|
-
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
226
|
-
mockPrivyClient,
|
|
227
|
-
|
|
228
|
-
|
|
233
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider({
|
|
234
|
+
privyClient: mockPrivyClient,
|
|
235
|
+
authorizationContext: getMockAuthorizationContext(),
|
|
236
|
+
chainManager: mockChainManager,
|
|
237
|
+
})
|
|
229
238
|
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
230
239
|
mockChainManager,
|
|
231
|
-
mockLendProvider,
|
|
240
|
+
{ morpho: mockLendProvider },
|
|
232
241
|
)
|
|
233
242
|
const mockWalletAddress = getRandomAddress()
|
|
234
243
|
const getWalletAddressSpy = vi
|
|
@@ -268,13 +277,14 @@ describe('WalletProvider', () => {
|
|
|
268
277
|
})
|
|
269
278
|
|
|
270
279
|
it('should throw error when getting smart wallet without required parameters', async () => {
|
|
271
|
-
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
272
|
-
mockPrivyClient,
|
|
273
|
-
|
|
274
|
-
|
|
280
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider({
|
|
281
|
+
privyClient: mockPrivyClient,
|
|
282
|
+
authorizationContext: getMockAuthorizationContext(),
|
|
283
|
+
chainManager: mockChainManager,
|
|
284
|
+
})
|
|
275
285
|
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
276
286
|
mockChainManager,
|
|
277
|
-
mockLendProvider,
|
|
287
|
+
{ morpho: mockLendProvider },
|
|
278
288
|
)
|
|
279
289
|
const walletProvider = new WalletProvider(
|
|
280
290
|
hostedWalletProvider,
|
|
@@ -301,13 +311,14 @@ describe('WalletProvider', () => {
|
|
|
301
311
|
|
|
302
312
|
describe('hostedWalletToActionsWallet', () => {
|
|
303
313
|
it('should convert a hosted wallet to an Actions wallet', async () => {
|
|
304
|
-
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
305
|
-
mockPrivyClient,
|
|
306
|
-
|
|
307
|
-
|
|
314
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider({
|
|
315
|
+
privyClient: mockPrivyClient,
|
|
316
|
+
authorizationContext: getMockAuthorizationContext(),
|
|
317
|
+
chainManager: mockChainManager,
|
|
318
|
+
})
|
|
308
319
|
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
309
320
|
mockChainManager,
|
|
310
|
-
mockLendProvider,
|
|
321
|
+
{ morpho: mockLendProvider },
|
|
311
322
|
)
|
|
312
323
|
const walletProvider = new WalletProvider(
|
|
313
324
|
hostedWalletProvider,
|
|
@@ -318,9 +329,7 @@ describe('WalletProvider', () => {
|
|
|
318
329
|
'toActionsWallet',
|
|
319
330
|
)
|
|
320
331
|
|
|
321
|
-
const privyWallet =
|
|
322
|
-
chainType: 'ethereum',
|
|
323
|
-
})
|
|
332
|
+
const privyWallet = createMockPrivyWallet()
|
|
324
333
|
const hostedWallet = await walletProvider.hostedWalletToActionsWallet({
|
|
325
334
|
walletId: privyWallet.id,
|
|
326
335
|
address: privyWallet.address,
|
|
@@ -342,13 +351,14 @@ describe('WalletProvider', () => {
|
|
|
342
351
|
'test-app-id',
|
|
343
352
|
'test-app-secret',
|
|
344
353
|
)
|
|
345
|
-
const hostedWalletProvider = new PrivyHostedWalletProvider(
|
|
346
|
-
mockPrivyClient,
|
|
347
|
-
|
|
348
|
-
|
|
354
|
+
const hostedWalletProvider = new PrivyHostedWalletProvider({
|
|
355
|
+
privyClient: mockPrivyClient,
|
|
356
|
+
authorizationContext: getMockAuthorizationContext(),
|
|
357
|
+
chainManager: mockChainManager,
|
|
358
|
+
})
|
|
349
359
|
const smartWalletProvider = new DefaultSmartWalletProvider(
|
|
350
360
|
mockChainManager,
|
|
351
|
-
mockLendProvider,
|
|
361
|
+
{ morpho: mockLendProvider },
|
|
352
362
|
)
|
|
353
363
|
const walletProvider = new WalletProvider(
|
|
354
364
|
hostedWalletProvider,
|
|
@@ -356,9 +366,7 @@ describe('WalletProvider', () => {
|
|
|
356
366
|
)
|
|
357
367
|
const createSignerSpy = vi.spyOn(hostedWalletProvider, 'createSigner')
|
|
358
368
|
|
|
359
|
-
const privyWallet =
|
|
360
|
-
chainType: 'ethereum',
|
|
361
|
-
})
|
|
369
|
+
const privyWallet = createMockPrivyWallet()
|
|
362
370
|
const params = {
|
|
363
371
|
walletId: privyWallet.id,
|
|
364
372
|
address: privyWallet.address,
|
|
@@ -1,7 +1,9 @@
|
|
|
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 {
|
|
5
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
6
|
+
import type { Asset } from '@/types/asset.js'
|
|
5
7
|
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
6
8
|
|
|
7
9
|
/**
|
|
@@ -15,14 +17,23 @@ export abstract class HostedWalletProvider<
|
|
|
15
17
|
TOptionsMap extends Record<TType, unknown>,
|
|
16
18
|
> {
|
|
17
19
|
protected chainManager: ChainManager
|
|
18
|
-
protected
|
|
20
|
+
protected lendProviders: {
|
|
21
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
22
|
+
aave?: LendProvider<LendProviderConfig>
|
|
23
|
+
}
|
|
24
|
+
protected supportedAssets?: Asset[]
|
|
19
25
|
|
|
20
26
|
protected constructor(
|
|
21
27
|
chainManager: ChainManager,
|
|
22
|
-
|
|
28
|
+
lendProviders?: {
|
|
29
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
30
|
+
aave?: LendProvider<LendProviderConfig>
|
|
31
|
+
},
|
|
32
|
+
supportedAssets?: Asset[],
|
|
23
33
|
) {
|
|
24
34
|
this.chainManager = chainManager
|
|
25
|
-
this.
|
|
35
|
+
this.lendProviders = lendProviders || {}
|
|
36
|
+
this.supportedAssets = supportedAssets
|
|
26
37
|
}
|
|
27
38
|
/**
|
|
28
39
|
* Convert a hosted wallet to an Actions wallet
|
package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import type { PrivyClient } from '@privy-io/
|
|
1
|
+
import type { PrivyClient } from '@privy-io/node'
|
|
2
2
|
import { unichain } from 'viem/chains'
|
|
3
3
|
import { afterEach, beforeEach, 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 {
|
|
7
|
+
import {
|
|
8
|
+
createMockPrivyClient,
|
|
9
|
+
getMockAuthorizationContext,
|
|
10
|
+
} from '@/test/MockPrivyClient.js'
|
|
8
11
|
import { HostedWalletProviderRegistry } from '@/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js'
|
|
9
12
|
import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
|
|
10
13
|
import type { NodeOptionsMap } from '@/wallet/node/providers/hosted/types/index.js'
|
|
@@ -23,7 +26,11 @@ class TestHostedWalletProviderRegistry extends HostedWalletProviderRegistry<
|
|
|
23
26
|
return Boolean((options as NodeOptionsMap['privy'])?.privyClient)
|
|
24
27
|
},
|
|
25
28
|
create({ chainManager }, options) {
|
|
26
|
-
return new PrivyHostedWalletProvider(
|
|
29
|
+
return new PrivyHostedWalletProvider({
|
|
30
|
+
privyClient: options.privyClient,
|
|
31
|
+
chainManager,
|
|
32
|
+
authorizationContext: options.authorizationContext,
|
|
33
|
+
})
|
|
27
34
|
},
|
|
28
35
|
})
|
|
29
36
|
}
|
|
@@ -48,9 +55,12 @@ describe('HostedWalletProviderRegistry', () => {
|
|
|
48
55
|
const factory = registry.getFactory('privy')
|
|
49
56
|
|
|
50
57
|
expect(factory.type).toBe('privy')
|
|
51
|
-
expect(
|
|
52
|
-
|
|
53
|
-
|
|
58
|
+
expect(
|
|
59
|
+
factory.validateOptions?.({
|
|
60
|
+
privyClient: mockPrivyClient,
|
|
61
|
+
authorizationContext: getMockAuthorizationContext(),
|
|
62
|
+
}),
|
|
63
|
+
).toBe(true)
|
|
54
64
|
// Invalid shape should not pass validation
|
|
55
65
|
expect(factory.validateOptions?.({})).toBe(false)
|
|
56
66
|
})
|
|
@@ -61,7 +71,10 @@ describe('HostedWalletProviderRegistry', () => {
|
|
|
61
71
|
|
|
62
72
|
const provider = factory.create(
|
|
63
73
|
{ chainManager: mockChainManager },
|
|
64
|
-
{
|
|
74
|
+
{
|
|
75
|
+
privyClient: mockPrivyClient,
|
|
76
|
+
authorizationContext: getMockAuthorizationContext(),
|
|
77
|
+
},
|
|
65
78
|
)
|
|
66
79
|
|
|
67
80
|
expect(provider).toBeInstanceOf(PrivyHostedWalletProvider)
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
1
2
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
2
|
-
import type {
|
|
3
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
4
|
+
import type { Asset } from '@/types/asset.js'
|
|
3
5
|
import type { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
|
|
4
6
|
|
|
5
7
|
/**
|
|
@@ -10,7 +12,11 @@ import type { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstra
|
|
|
10
12
|
*/
|
|
11
13
|
export interface HostedProviderDeps {
|
|
12
14
|
chainManager: ChainManager
|
|
13
|
-
|
|
15
|
+
lendProviders?: {
|
|
16
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
17
|
+
aave?: LendProvider<LendProviderConfig>
|
|
18
|
+
}
|
|
19
|
+
supportedAssets?: Asset[]
|
|
14
20
|
}
|
|
15
21
|
|
|
16
22
|
/**
|
|
@@ -2,8 +2,10 @@ import type { Address, Hex, LocalAccount } from 'viem'
|
|
|
2
2
|
import { keccak256, slice, toHex } from 'viem'
|
|
3
3
|
|
|
4
4
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
5
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
5
6
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
6
|
-
import type {
|
|
7
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
8
|
+
import type { Asset } from '@/types/asset.js'
|
|
7
9
|
import { SmartWalletProvider } from '@/wallet/core/providers/smart/abstract/SmartWalletProvider.js'
|
|
8
10
|
import type { SmartWalletCreationResult } from '@/wallet/core/providers/smart/abstract/types/index.js'
|
|
9
11
|
import type { Signer } from '@/wallet/core/wallets/smart/abstract/types/index.js'
|
|
@@ -24,25 +26,36 @@ import { SmartWalletDeploymentError } from '@/wallet/core/wallets/smart/error/er
|
|
|
24
26
|
export class DefaultSmartWalletProvider extends SmartWalletProvider {
|
|
25
27
|
/** Manages supported blockchain networks */
|
|
26
28
|
private chainManager: ChainManager
|
|
27
|
-
/**
|
|
28
|
-
private
|
|
29
|
+
/** Providers for lending market operations */
|
|
30
|
+
private lendProviders: {
|
|
31
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
32
|
+
aave?: LendProvider<LendProviderConfig>
|
|
33
|
+
}
|
|
34
|
+
/** Supported assets for this wallet provider */
|
|
35
|
+
private supportedAssets?: Asset[]
|
|
29
36
|
/** Optional 16-byte attribution suffix appended to callData */
|
|
30
37
|
private attributionSuffix?: Hex
|
|
31
38
|
|
|
32
39
|
/**
|
|
33
40
|
* Initialize the Smart Wallet Provider
|
|
34
41
|
* @param chainManager - Manages supported blockchain networks
|
|
35
|
-
* @param
|
|
36
|
-
* @param
|
|
42
|
+
* @param lendProviders - Providers for lending market operations
|
|
43
|
+
* @param supportedAssets - Optional list of supported assets
|
|
44
|
+
* @param attributionSuffix - Optional attribution suffix
|
|
37
45
|
*/
|
|
38
46
|
constructor(
|
|
39
47
|
chainManager: ChainManager,
|
|
40
|
-
|
|
48
|
+
lendProviders?: {
|
|
49
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
50
|
+
aave?: LendProvider<LendProviderConfig>
|
|
51
|
+
},
|
|
52
|
+
supportedAssets?: Asset[],
|
|
41
53
|
attributionSuffix?: string,
|
|
42
54
|
) {
|
|
43
55
|
super()
|
|
44
56
|
this.chainManager = chainManager
|
|
45
|
-
this.
|
|
57
|
+
this.lendProviders = lendProviders || {}
|
|
58
|
+
this.supportedAssets = supportedAssets
|
|
46
59
|
if (attributionSuffix) {
|
|
47
60
|
this.attributionSuffix =
|
|
48
61
|
DefaultSmartWalletProvider.computeAttributionSuffix(attributionSuffix)
|
|
@@ -79,7 +92,8 @@ export class DefaultSmartWalletProvider extends SmartWalletProvider {
|
|
|
79
92
|
signers,
|
|
80
93
|
signer,
|
|
81
94
|
chainManager: this.chainManager,
|
|
82
|
-
|
|
95
|
+
lendProviders: this.lendProviders,
|
|
96
|
+
supportedAssets: this.supportedAssets,
|
|
83
97
|
nonce,
|
|
84
98
|
attributionSuffix: this.attributionSuffix,
|
|
85
99
|
})
|
|
@@ -167,7 +181,8 @@ export class DefaultSmartWalletProvider extends SmartWalletProvider {
|
|
|
167
181
|
signers,
|
|
168
182
|
signer,
|
|
169
183
|
chainManager: this.chainManager,
|
|
170
|
-
|
|
184
|
+
lendProviders: this.lendProviders,
|
|
185
|
+
supportedAssets: this.supportedAssets,
|
|
171
186
|
deploymentAddress: walletAddress,
|
|
172
187
|
attributionSuffix: this.attributionSuffix,
|
|
173
188
|
})
|
package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts
CHANGED
|
@@ -35,6 +35,7 @@ const mockSigner: LocalAccount = {
|
|
|
35
35
|
address: getRandomAddress(),
|
|
36
36
|
type: 'local',
|
|
37
37
|
} as unknown as LocalAccount
|
|
38
|
+
const supportedAssets = undefined
|
|
38
39
|
|
|
39
40
|
describe('DefaultSmartWalletProvider', () => {
|
|
40
41
|
const mockWallet: ReturnType<typeof createDefaultSmartWalletMock> =
|
|
@@ -75,10 +76,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
75
76
|
})
|
|
76
77
|
|
|
77
78
|
it('should create a wallet and return deployment results', async () => {
|
|
78
|
-
const provider = new DefaultSmartWalletProvider(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
)
|
|
79
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
80
|
+
morpho: mockLendProvider,
|
|
81
|
+
})
|
|
82
82
|
const signers = [mockSigner.address, getRandomAddress()]
|
|
83
83
|
const nonce = BigInt(123)
|
|
84
84
|
|
|
@@ -117,10 +117,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
117
117
|
})
|
|
118
118
|
|
|
119
119
|
it('should report deployment successes across multiple chains', async () => {
|
|
120
|
-
const provider = new DefaultSmartWalletProvider(
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
)
|
|
120
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
121
|
+
morpho: mockLendProvider,
|
|
122
|
+
})
|
|
124
123
|
const signers = [mockSigner.address, getRandomAddress()]
|
|
125
124
|
const nonce = BigInt(123)
|
|
126
125
|
|
|
@@ -159,10 +158,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
159
158
|
})
|
|
160
159
|
|
|
161
160
|
it('should report deployment failures', async () => {
|
|
162
|
-
const provider = new DefaultSmartWalletProvider(
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
)
|
|
161
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
162
|
+
morpho: mockLendProvider,
|
|
163
|
+
})
|
|
166
164
|
const signers = [mockSigner.address, getRandomAddress()]
|
|
167
165
|
const nonce = BigInt(123)
|
|
168
166
|
|
|
@@ -205,10 +203,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
205
203
|
})
|
|
206
204
|
|
|
207
205
|
it('should handle mixed deployment successes and failures', async () => {
|
|
208
|
-
const provider = new DefaultSmartWalletProvider(
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
)
|
|
206
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
207
|
+
morpho: mockLendProvider,
|
|
208
|
+
})
|
|
212
209
|
const signers = [mockSigner.address, getRandomAddress()]
|
|
213
210
|
const nonce = BigInt(123)
|
|
214
211
|
|
|
@@ -255,10 +252,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
255
252
|
})
|
|
256
253
|
|
|
257
254
|
it('should respect deploymentChainIds parameter', async () => {
|
|
258
|
-
const provider = new DefaultSmartWalletProvider(
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
)
|
|
255
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
256
|
+
morpho: mockLendProvider,
|
|
257
|
+
})
|
|
262
258
|
const signers = [mockSigner.address, getRandomAddress()]
|
|
263
259
|
const nonce = BigInt(123)
|
|
264
260
|
const deploymentChainIds: SupportedChainId[] = [1]
|
|
@@ -286,10 +282,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
286
282
|
})
|
|
287
283
|
|
|
288
284
|
it('should throw error for non-SmartWalletDeploymentError failures', async () => {
|
|
289
|
-
const provider = new DefaultSmartWalletProvider(
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
)
|
|
285
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
286
|
+
morpho: mockLendProvider,
|
|
287
|
+
})
|
|
293
288
|
const signers = [mockSigner.address, getRandomAddress()]
|
|
294
289
|
const nonce = BigInt(123)
|
|
295
290
|
|
|
@@ -306,10 +301,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
306
301
|
})
|
|
307
302
|
|
|
308
303
|
it('should get wallet address with correct contract call', async () => {
|
|
309
|
-
const provider = new DefaultSmartWalletProvider(
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
)
|
|
304
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
305
|
+
morpho: mockLendProvider,
|
|
306
|
+
})
|
|
313
307
|
const signers = [mockSigner.address, getRandomAddress()]
|
|
314
308
|
const nonce = BigInt(456)
|
|
315
309
|
const mockAddress = getRandomAddress()
|
|
@@ -329,10 +323,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
329
323
|
})
|
|
330
324
|
|
|
331
325
|
it('should get wallet address with default nonce', async () => {
|
|
332
|
-
const provider = new DefaultSmartWalletProvider(
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
)
|
|
326
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
327
|
+
morpho: mockLendProvider,
|
|
328
|
+
})
|
|
336
329
|
const signers = [getRandomAddress()]
|
|
337
330
|
const mockAddress = getRandomAddress()
|
|
338
331
|
|
|
@@ -351,10 +344,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
351
344
|
})
|
|
352
345
|
|
|
353
346
|
it('should handle WebAuthn accounts in wallet address calculation', async () => {
|
|
354
|
-
const provider = new DefaultSmartWalletProvider(
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
)
|
|
347
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
348
|
+
morpho: mockLendProvider,
|
|
349
|
+
})
|
|
358
350
|
const webAuthnAccount: WebAuthnAccount = {
|
|
359
351
|
type: 'webAuthn',
|
|
360
352
|
publicKey: '0x123456789abcdef',
|
|
@@ -380,10 +372,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
380
372
|
})
|
|
381
373
|
|
|
382
374
|
it('should throw error for invalid signer type', async () => {
|
|
383
|
-
const provider = new DefaultSmartWalletProvider(
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
)
|
|
375
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
376
|
+
morpho: mockLendProvider,
|
|
377
|
+
})
|
|
387
378
|
const invalidSigner = { type: 'invalid' } as unknown as Address
|
|
388
379
|
const signers = [invalidSigner]
|
|
389
380
|
|
|
@@ -393,10 +384,9 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
393
384
|
})
|
|
394
385
|
|
|
395
386
|
it('should get existing wallet', async () => {
|
|
396
|
-
const provider = new DefaultSmartWalletProvider(
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
)
|
|
387
|
+
const provider = new DefaultSmartWalletProvider(mockChainManager, {
|
|
388
|
+
morpho: mockLendProvider,
|
|
389
|
+
})
|
|
400
390
|
const walletAddress = getRandomAddress()
|
|
401
391
|
|
|
402
392
|
const wallet = await provider.getWallet({
|
|
@@ -424,7 +414,8 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
424
414
|
DefaultSmartWalletProvider.computeAttributionSuffix(attributionSeed)
|
|
425
415
|
const provider = new DefaultSmartWalletProvider(
|
|
426
416
|
mockChainManager,
|
|
427
|
-
mockLendProvider,
|
|
417
|
+
{ morpho: mockLendProvider },
|
|
418
|
+
supportedAssets,
|
|
428
419
|
attributionSeed,
|
|
429
420
|
)
|
|
430
421
|
|
|
@@ -450,7 +441,8 @@ describe('DefaultSmartWalletProvider', () => {
|
|
|
450
441
|
DefaultSmartWalletProvider.computeAttributionSuffix(attributionSeed)
|
|
451
442
|
const provider = new DefaultSmartWalletProvider(
|
|
452
443
|
mockChainManager,
|
|
453
|
-
mockLendProvider,
|
|
444
|
+
{ morpho: mockLendProvider },
|
|
445
|
+
supportedAssets,
|
|
454
446
|
attributionSeed,
|
|
455
447
|
)
|
|
456
448
|
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import type { Address, LocalAccount } from 'viem'
|
|
2
2
|
|
|
3
3
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
4
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
4
5
|
import { WalletLendNamespace } from '@/lend/namespaces/WalletLendNamespace.js'
|
|
5
6
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
6
7
|
import { fetchERC20Balance, fetchETHBalance } from '@/services/tokenBalance.js'
|
|
7
8
|
import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
|
|
8
|
-
import type {
|
|
9
|
-
import type {
|
|
10
|
-
|
|
11
|
-
LendConfig,
|
|
12
|
-
LendProvider,
|
|
13
|
-
TransactionData,
|
|
14
|
-
} from '@/types/lend/index.js'
|
|
9
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
10
|
+
import type { Asset, TokenBalance } from '@/types/asset.js'
|
|
11
|
+
import type { TransactionData } from '@/types/lend/index.js'
|
|
15
12
|
import type {
|
|
16
13
|
BatchTransactionReturnType,
|
|
17
14
|
TransactionReturnType,
|
|
@@ -24,11 +21,16 @@ import type {
|
|
|
24
21
|
*/
|
|
25
22
|
export abstract class Wallet {
|
|
26
23
|
/** Lend namespace with all lending operations */
|
|
27
|
-
lend?: WalletLendNamespace
|
|
28
|
-
/**
|
|
29
|
-
protected
|
|
24
|
+
lend?: WalletLendNamespace
|
|
25
|
+
/** Providers for lending market operations */
|
|
26
|
+
protected lendProviders: {
|
|
27
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
28
|
+
aave?: LendProvider<LendProviderConfig>
|
|
29
|
+
}
|
|
30
30
|
/** Manages supported blockchain networks and RPC clients */
|
|
31
31
|
protected chainManager: ChainManager
|
|
32
|
+
/** List of supported assets for this wallet */
|
|
33
|
+
protected supportedAssets: Asset[]
|
|
32
34
|
/** Promise to initialize the wallet */
|
|
33
35
|
private initPromise?: Promise<void>
|
|
34
36
|
|
|
@@ -50,27 +52,33 @@ export abstract class Wallet {
|
|
|
50
52
|
/**
|
|
51
53
|
* Create a new wallet
|
|
52
54
|
* @param chainManager - Chain manager for the wallet
|
|
53
|
-
* @param
|
|
55
|
+
* @param lendProviders - Lend providers for the wallet
|
|
56
|
+
* @param supportedAssets - List of supported assets (defaults to all SUPPORTED_TOKENS)
|
|
54
57
|
*/
|
|
55
58
|
protected constructor(
|
|
56
59
|
chainManager: ChainManager,
|
|
57
|
-
|
|
60
|
+
lendProviders?: {
|
|
61
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
62
|
+
aave?: LendProvider<LendProviderConfig>
|
|
63
|
+
},
|
|
64
|
+
supportedAssets?: Asset[],
|
|
58
65
|
) {
|
|
59
66
|
this.chainManager = chainManager
|
|
60
|
-
this.
|
|
61
|
-
|
|
62
|
-
|
|
67
|
+
this.lendProviders = lendProviders || {}
|
|
68
|
+
this.supportedAssets = supportedAssets || SUPPORTED_TOKENS
|
|
69
|
+
if (this.lendProviders.morpho || this.lendProviders.aave) {
|
|
70
|
+
this.lend = new WalletLendNamespace(this.lendProviders, this)
|
|
63
71
|
}
|
|
64
72
|
}
|
|
65
73
|
|
|
66
74
|
/**
|
|
67
75
|
* Get asset balances across all supported chains
|
|
68
76
|
* @description Fetches ETH and ERC20 token balances for this wallet across all supported networks.
|
|
77
|
+
* Uses the configured supported assets from ActionsConfig.assets if provided.
|
|
69
78
|
* @returns Promise resolving to array of token balances with chain breakdown
|
|
70
79
|
*/
|
|
71
80
|
async getBalance(): Promise<TokenBalance[]> {
|
|
72
|
-
|
|
73
|
-
const tokenBalancePromises = SUPPORTED_TOKENS.map(async (asset) => {
|
|
81
|
+
const tokenBalancePromises = this.supportedAssets.map(async (asset) => {
|
|
74
82
|
return fetchERC20Balance(this.chainManager, this.address, asset)
|
|
75
83
|
})
|
|
76
84
|
const ethBalancePromise = fetchETHBalance(this.chainManager, this.address)
|