@eth-optimism/actions-sdk 0.0.4 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +30 -80
- package/dist/actions.test.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 +35 -8
- package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -1
- package/dist/lend/namespaces/WalletLendNamespace.js +59 -11
- 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/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/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/__tests__/WalletNamespace.spec.js +9 -9
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
- package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +8 -8
- 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/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 +10 -3
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +5 -3
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +4 -3
- 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 +5 -4
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.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/wallets/hosted/privy/PrivyWallet.d.ts +10 -3
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +5 -4
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.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 +4 -1
- package/src/actions.test.ts +32 -93
- package/src/actions.ts +82 -26
- 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 +98 -18
- 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 -3
- package/src/supported/tokens.ts +24 -2
- package/src/test/MockLendProvider.ts +9 -9
- package/src/types/actions.ts +30 -2
- package/src/types/lend/base.ts +6 -22
- package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +9 -9
- package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +8 -8
- package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +15 -4
- 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 +13 -5
- package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +4 -4
- package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +6 -4
- 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/wallets/hosted/privy/PrivyWallet.ts +18 -6
- 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
|
@@ -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
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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<
|
|
754
|
+
lendProvider?: LendProvider<LendProviderConfig>
|
|
758
755
|
deploymentAddress?: Address
|
|
759
756
|
nonce?: bigint
|
|
760
757
|
attributionSuffix?: Hex
|
|
@@ -773,7 +770,7 @@ async function createAndInitDefaultSmartWallet(
|
|
|
773
770
|
signers,
|
|
774
771
|
signer,
|
|
775
772
|
chainManager,
|
|
776
|
-
lendProvider,
|
|
773
|
+
lendProviders: lendProvider ? { morpho: lendProvider } : undefined,
|
|
777
774
|
deploymentAddress,
|
|
778
775
|
nonce,
|
|
779
776
|
attributionSuffix,
|
|
@@ -2,8 +2,10 @@ import type { AuthorizationContext, PrivyClient } from '@privy-io/node'
|
|
|
2
2
|
import type { LocalAccount } from 'viem'
|
|
3
3
|
import { getAddress } from 'viem'
|
|
4
4
|
|
|
5
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
5
6
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
6
|
-
import type {
|
|
7
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
8
|
+
import type { Asset } from '@/types/asset.js'
|
|
7
9
|
import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
|
|
8
10
|
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
9
11
|
import type {
|
|
@@ -29,7 +31,8 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
|
|
|
29
31
|
* @param params - Configuration parameters
|
|
30
32
|
* @param params.privyClient - Privy client instance
|
|
31
33
|
* @param params.chainManager - Chain manager for multi-chain operations
|
|
32
|
-
* @param params.
|
|
34
|
+
* @param params.lendProviders - Optional lend providers for DeFi operations
|
|
35
|
+
* @param params.supportedAssets - Optional list of supported assets
|
|
33
36
|
* @param params.authorizationContext - Optional authorization context for the Privy client.
|
|
34
37
|
* Used when Privy needs to sign requests.
|
|
35
38
|
* See https://docs.privy.io/controls/authorization-keys/using-owners/sign/automatic#using-the-authorization-context
|
|
@@ -38,10 +41,14 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
|
|
|
38
41
|
constructor(params: {
|
|
39
42
|
privyClient: PrivyClient
|
|
40
43
|
chainManager: ChainManager
|
|
41
|
-
|
|
44
|
+
lendProviders?: {
|
|
45
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
46
|
+
aave?: LendProvider<LendProviderConfig>
|
|
47
|
+
}
|
|
48
|
+
supportedAssets?: Asset[]
|
|
42
49
|
authorizationContext?: AuthorizationContext
|
|
43
50
|
}) {
|
|
44
|
-
super(params.chainManager, params.
|
|
51
|
+
super(params.chainManager, params.lendProviders, params.supportedAssets)
|
|
45
52
|
this.privyClient = params.privyClient
|
|
46
53
|
this.authorizationContext = params.authorizationContext
|
|
47
54
|
}
|
|
@@ -55,7 +62,8 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
|
|
|
55
62
|
walletId: params.walletId,
|
|
56
63
|
address: getAddress(params.address),
|
|
57
64
|
chainManager: this.chainManager,
|
|
58
|
-
|
|
65
|
+
lendProviders: this.lendProviders,
|
|
66
|
+
supportedAssets: this.supportedAssets,
|
|
59
67
|
})
|
|
60
68
|
}
|
|
61
69
|
|
|
@@ -5,13 +5,13 @@ import { describe, expect, it, vi } from 'vitest'
|
|
|
5
5
|
|
|
6
6
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
7
|
import { MockChainManager } from '@/test/MockChainManager.js'
|
|
8
|
+
import { createMockLendProvider } from '@/test/MockLendProvider.js'
|
|
8
9
|
import {
|
|
9
10
|
createMockPrivyClient,
|
|
10
11
|
createMockPrivyWallet,
|
|
11
12
|
getMockAuthorizationContext,
|
|
12
13
|
} from '@/test/MockPrivyClient.js'
|
|
13
14
|
import { getRandomAddress } from '@/test/utils.js'
|
|
14
|
-
import type { LendConfig, LendProvider } from '@/types/lend/index.js'
|
|
15
15
|
import { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
16
16
|
import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
|
|
17
17
|
import { PrivyWallet } from '@/wallet/node/wallets/hosted/privy/PrivyWallet.js'
|
|
@@ -83,12 +83,12 @@ describe('PrivyHostedWalletProvider', () => {
|
|
|
83
83
|
|
|
84
84
|
it('forwards lendProvider when provided to constructor', async () => {
|
|
85
85
|
const privy = createMockPrivyClient('app', 'secret')
|
|
86
|
-
const mockLendProvider =
|
|
86
|
+
const mockLendProvider = createMockLendProvider()
|
|
87
87
|
const provider = new PrivyHostedWalletProvider({
|
|
88
88
|
privyClient: privy,
|
|
89
89
|
authorizationContext: getMockAuthorizationContext(),
|
|
90
90
|
chainManager: mockChainManager,
|
|
91
|
-
|
|
91
|
+
lendProviders: { morpho: mockLendProvider },
|
|
92
92
|
})
|
|
93
93
|
const spy = vi.spyOn(PrivyWallet, 'create')
|
|
94
94
|
|
|
@@ -102,7 +102,7 @@ describe('PrivyHostedWalletProvider', () => {
|
|
|
102
102
|
|
|
103
103
|
expect(spy).toHaveBeenCalledWith(
|
|
104
104
|
expect.objectContaining({
|
|
105
|
-
|
|
105
|
+
lendProviders: { morpho: mockLendProvider },
|
|
106
106
|
}),
|
|
107
107
|
)
|
|
108
108
|
})
|
|
@@ -28,11 +28,12 @@ export class NodeHostedWalletProviderRegistry extends HostedWalletProviderRegist
|
|
|
28
28
|
validateOptions(options): options is NodeOptionsMap['privy'] {
|
|
29
29
|
return Boolean((options as NodeOptionsMap['privy'])?.privyClient)
|
|
30
30
|
},
|
|
31
|
-
create({ chainManager,
|
|
31
|
+
create({ chainManager, lendProviders, supportedAssets }, options) {
|
|
32
32
|
return new PrivyHostedWalletProvider({
|
|
33
33
|
privyClient: options.privyClient,
|
|
34
34
|
chainManager,
|
|
35
|
-
|
|
35
|
+
lendProviders,
|
|
36
|
+
supportedAssets,
|
|
36
37
|
authorizationContext: options.authorizationContext,
|
|
37
38
|
})
|
|
38
39
|
},
|
|
@@ -44,11 +45,12 @@ export class NodeHostedWalletProviderRegistry extends HostedWalletProviderRegist
|
|
|
44
45
|
const o = options as NodeOptionsMap['turnkey']
|
|
45
46
|
return Boolean(o?.client)
|
|
46
47
|
},
|
|
47
|
-
create({ chainManager,
|
|
48
|
+
create({ chainManager, lendProviders, supportedAssets }, options) {
|
|
48
49
|
return new TurnkeyHostedWalletProvider(
|
|
49
50
|
options.client,
|
|
50
51
|
chainManager,
|
|
51
|
-
|
|
52
|
+
lendProviders,
|
|
53
|
+
supportedAssets,
|
|
52
54
|
)
|
|
53
55
|
},
|
|
54
56
|
})
|
|
@@ -3,8 +3,10 @@ import type { TurnkeyClient as TurnkeyHttpClient } from '@turnkey/http'
|
|
|
3
3
|
import type { TurnkeyServerClient } from '@turnkey/sdk-server'
|
|
4
4
|
import type { LocalAccount } from 'viem'
|
|
5
5
|
|
|
6
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
6
7
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
|
-
import type {
|
|
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
|
-
|
|
40
|
+
lendProviders?: {
|
|
41
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
42
|
+
aave?: LendProvider<LendProviderConfig>
|
|
43
|
+
},
|
|
44
|
+
supportedAssets?: Asset[],
|
|
37
45
|
) {
|
|
38
|
-
super(chainManager,
|
|
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
|
-
|
|
67
|
+
lendProviders: this.lendProviders,
|
|
68
|
+
supportedAssets: this.supportedAssets,
|
|
60
69
|
})
|
|
61
70
|
}
|
|
62
71
|
|
package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts
CHANGED
|
@@ -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
|
|
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 =
|
|
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
|
-
|
|
116
|
+
lendProviders: { morpho: mockLendProvider },
|
|
117
117
|
}),
|
|
118
118
|
)
|
|
119
119
|
})
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { AuthorizationContext, PrivyClient } from '@privy-io/node'
|
|
2
2
|
import { type Address, type LocalAccount } from 'viem'
|
|
3
3
|
|
|
4
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
4
5
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
5
|
-
import type {
|
|
6
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
7
|
+
import type { Asset } from '@/types/asset.js'
|
|
6
8
|
import { EOAWallet } from '@/wallet/core/wallets/eoa/EOAWallet.js'
|
|
7
9
|
import { createSigner } from '@/wallet/node/wallets/hosted/privy/utils/createSigner.js'
|
|
8
10
|
|
|
@@ -23,17 +25,22 @@ export class PrivyWallet extends EOAWallet {
|
|
|
23
25
|
* @param walletId - Privy wallet identifier
|
|
24
26
|
* @param address - Ethereum address of the wallet
|
|
25
27
|
* @param chainManager - Chain manager for multi-chain operations
|
|
26
|
-
* @param
|
|
28
|
+
* @param lendProviders - Optional lend providers for DeFi operations
|
|
29
|
+
* @param supportedAssets - Optional list of supported assets
|
|
27
30
|
*/
|
|
28
31
|
private constructor(
|
|
29
32
|
privyClient: PrivyClient,
|
|
30
33
|
walletId: string,
|
|
31
34
|
address: Address,
|
|
32
35
|
chainManager: ChainManager,
|
|
33
|
-
|
|
36
|
+
lendProviders?: {
|
|
37
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
38
|
+
aave?: LendProvider<LendProviderConfig>
|
|
39
|
+
},
|
|
40
|
+
supportedAssets?: Asset[],
|
|
34
41
|
authorizationContext?: AuthorizationContext,
|
|
35
42
|
) {
|
|
36
|
-
super(chainManager,
|
|
43
|
+
super(chainManager, lendProviders, supportedAssets)
|
|
37
44
|
this.privyClient = privyClient
|
|
38
45
|
this.authorizationContext = authorizationContext
|
|
39
46
|
this.walletId = walletId
|
|
@@ -46,14 +53,19 @@ export class PrivyWallet extends EOAWallet {
|
|
|
46
53
|
walletId: string
|
|
47
54
|
address: Address
|
|
48
55
|
chainManager: ChainManager
|
|
49
|
-
|
|
56
|
+
lendProviders?: {
|
|
57
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
58
|
+
aave?: LendProvider<LendProviderConfig>
|
|
59
|
+
}
|
|
60
|
+
supportedAssets?: Asset[]
|
|
50
61
|
}): Promise<PrivyWallet> {
|
|
51
62
|
const wallet = new PrivyWallet(
|
|
52
63
|
params.privyClient,
|
|
53
64
|
params.walletId,
|
|
54
65
|
params.address,
|
|
55
66
|
params.chainManager,
|
|
56
|
-
params.
|
|
67
|
+
params.lendProviders,
|
|
68
|
+
params.supportedAssets,
|
|
57
69
|
params.authorizationContext,
|
|
58
70
|
)
|
|
59
71
|
await wallet.initialize()
|
|
@@ -3,8 +3,10 @@ import type { TurnkeyClient } from '@turnkey/http'
|
|
|
3
3
|
import type { TurnkeyServerClient } from '@turnkey/sdk-server'
|
|
4
4
|
import type { Address, LocalAccount } from 'viem'
|
|
5
5
|
|
|
6
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
6
7
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
|
-
import type {
|
|
8
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
9
|
+
import type { Asset } from '@/types/asset.js'
|
|
8
10
|
import { EOAWallet } from '@/wallet/core/wallets/eoa/EOAWallet.js'
|
|
9
11
|
import { createSigner } from '@/wallet/node/wallets/hosted/turnkey/utils/createSigner.js'
|
|
10
12
|
|
|
@@ -44,7 +46,11 @@ export class TurnkeyWallet extends EOAWallet {
|
|
|
44
46
|
organizationId: string
|
|
45
47
|
signWith: string
|
|
46
48
|
ethereumAddress?: string
|
|
47
|
-
|
|
49
|
+
lendProviders?: {
|
|
50
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
51
|
+
aave?: LendProvider<LendProviderConfig>
|
|
52
|
+
}
|
|
53
|
+
supportedAssets?: Asset[]
|
|
48
54
|
}) {
|
|
49
55
|
const {
|
|
50
56
|
chainManager,
|
|
@@ -52,9 +58,10 @@ export class TurnkeyWallet extends EOAWallet {
|
|
|
52
58
|
organizationId,
|
|
53
59
|
signWith,
|
|
54
60
|
ethereumAddress,
|
|
55
|
-
|
|
61
|
+
lendProviders,
|
|
62
|
+
supportedAssets,
|
|
56
63
|
} = params
|
|
57
|
-
super(chainManager,
|
|
64
|
+
super(chainManager, lendProviders, supportedAssets)
|
|
58
65
|
this.client = client
|
|
59
66
|
this.organizationId = organizationId
|
|
60
67
|
this.signWith = signWith
|
|
@@ -67,7 +74,11 @@ export class TurnkeyWallet extends EOAWallet {
|
|
|
67
74
|
organizationId: string
|
|
68
75
|
signWith: string
|
|
69
76
|
ethereumAddress?: string
|
|
70
|
-
|
|
77
|
+
lendProviders?: {
|
|
78
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
79
|
+
aave?: LendProvider<LendProviderConfig>
|
|
80
|
+
}
|
|
81
|
+
supportedAssets?: Asset[]
|
|
71
82
|
}): Promise<TurnkeyWallet> {
|
|
72
83
|
const wallet = new TurnkeyWallet(params)
|
|
73
84
|
await wallet.initialize()
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { LocalAccount } from 'viem'
|
|
2
2
|
|
|
3
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
3
4
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
4
|
-
import type {
|
|
5
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
5
6
|
import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
|
|
6
7
|
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
7
8
|
import type { ReactToActionsOptionsMap } from '@/wallet/react/providers/hosted/types/index.js'
|
|
@@ -21,9 +22,12 @@ export class DynamicHostedWalletProvider extends HostedWalletProvider<
|
|
|
21
22
|
*/
|
|
22
23
|
constructor(
|
|
23
24
|
chainManager: ChainManager,
|
|
24
|
-
|
|
25
|
+
lendProviders?: {
|
|
26
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
27
|
+
aave?: LendProvider<LendProviderConfig>
|
|
28
|
+
},
|
|
25
29
|
) {
|
|
26
|
-
super(chainManager,
|
|
30
|
+
super(chainManager, lendProviders)
|
|
27
31
|
}
|
|
28
32
|
|
|
29
33
|
async toActionsWallet(
|
|
@@ -32,7 +36,7 @@ export class DynamicHostedWalletProvider extends HostedWalletProvider<
|
|
|
32
36
|
return DynamicWallet.create({
|
|
33
37
|
dynamicWallet: params.wallet,
|
|
34
38
|
chainManager: this.chainManager,
|
|
35
|
-
|
|
39
|
+
lendProviders: this.lendProviders,
|
|
36
40
|
})
|
|
37
41
|
}
|
|
38
42
|
|
package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import type { LocalAccount } from 'viem'
|
|
2
1
|
import { describe, expect, it, vi } from 'vitest'
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import type { DynamicHostedWalletToActionsWalletOptions } from '@/wallet/react/providers/hosted/types/index.js'
|
|
9
|
-
import { DynamicWallet } from '@/wallet/react/wallets/hosted/dynamic/DynamicWallet.js'
|
|
10
|
-
import * as createSignerUtil from '@/wallet/react/wallets/hosted/dynamic/utils/createSigner.js'
|
|
3
|
+
// Mock @dynamic-labs packages to avoid import syntax errors
|
|
4
|
+
vi.mock('@dynamic-labs/wallet-connector-core', () => ({
|
|
5
|
+
Wallet: class {},
|
|
6
|
+
}))
|
|
11
7
|
|
|
12
8
|
// Mock DynamicWallet to avoid importing browser-related deps
|
|
13
9
|
vi.mock('@/wallet/react/wallets/hosted/dynamic/DynamicWallet.js', async () => {
|
|
@@ -17,6 +13,21 @@ vi.mock('@/wallet/react/wallets/hosted/dynamic/DynamicWallet.js', async () => {
|
|
|
17
13
|
return { DynamicWallet: DynamicWalletMock }
|
|
18
14
|
})
|
|
19
15
|
|
|
16
|
+
// Mock createSigner to avoid importing @dynamic-labs
|
|
17
|
+
vi.mock('@/wallet/react/wallets/hosted/dynamic/utils/createSigner.js')
|
|
18
|
+
|
|
19
|
+
/* eslint-disable import/first */
|
|
20
|
+
import type { LocalAccount } from 'viem'
|
|
21
|
+
|
|
22
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
23
|
+
import { MockChainManager } from '@/test/MockChainManager.js'
|
|
24
|
+
import { createMockLendProvider } from '@/test/MockLendProvider.js'
|
|
25
|
+
import { DynamicHostedWalletProvider } from '@/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js'
|
|
26
|
+
import type { DynamicHostedWalletToActionsWalletOptions } from '@/wallet/react/providers/hosted/types/index.js'
|
|
27
|
+
import { DynamicWallet } from '@/wallet/react/wallets/hosted/dynamic/DynamicWallet.js'
|
|
28
|
+
import * as createSignerUtil from '@/wallet/react/wallets/hosted/dynamic/utils/createSigner.js'
|
|
29
|
+
/* eslint-enable import/first */
|
|
30
|
+
|
|
20
31
|
describe('DynamicHostedWalletProvider', () => {
|
|
21
32
|
describe('toActionsWallet', () => {
|
|
22
33
|
it('toActionsWallet delegates to DynamicWallet.create with correct args', async () => {
|
|
@@ -41,6 +52,7 @@ describe('DynamicHostedWalletProvider', () => {
|
|
|
41
52
|
expect(DynamicWallet.create).toHaveBeenCalledWith({
|
|
42
53
|
dynamicWallet: mockDynamicWallet,
|
|
43
54
|
chainManager: mockChainManager,
|
|
55
|
+
lendProviders: {},
|
|
44
56
|
})
|
|
45
57
|
expect(result).toBe(mockResult)
|
|
46
58
|
})
|
|
@@ -49,11 +61,10 @@ describe('DynamicHostedWalletProvider', () => {
|
|
|
49
61
|
const mockChainManager = new MockChainManager({
|
|
50
62
|
supportedChains: [1],
|
|
51
63
|
}) as unknown as ChainManager
|
|
52
|
-
const mockLendProvider =
|
|
53
|
-
const provider = new DynamicHostedWalletProvider(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
)
|
|
64
|
+
const mockLendProvider = createMockLendProvider()
|
|
65
|
+
const provider = new DynamicHostedWalletProvider(mockChainManager, {
|
|
66
|
+
morpho: mockLendProvider,
|
|
67
|
+
})
|
|
57
68
|
|
|
58
69
|
const mockDynamicWallet = {
|
|
59
70
|
__brand: 'dynamic-wallet',
|
|
@@ -69,7 +80,7 @@ describe('DynamicHostedWalletProvider', () => {
|
|
|
69
80
|
|
|
70
81
|
expect(DynamicWallet.create).toHaveBeenCalledWith(
|
|
71
82
|
expect.objectContaining({
|
|
72
|
-
|
|
83
|
+
lendProviders: { morpho: mockLendProvider },
|
|
73
84
|
}),
|
|
74
85
|
)
|
|
75
86
|
})
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { LocalAccount } from 'viem'
|
|
2
2
|
|
|
3
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
3
4
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
4
|
-
import type {
|
|
5
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
5
6
|
import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
|
|
6
7
|
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
7
8
|
import type { ReactToActionsOptionsMap } from '@/wallet/react/providers/hosted/types/index.js'
|
|
@@ -21,9 +22,12 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
|
|
|
21
22
|
*/
|
|
22
23
|
constructor(
|
|
23
24
|
chainManager: ChainManager,
|
|
24
|
-
|
|
25
|
+
lendProviders?: {
|
|
26
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
27
|
+
aave?: LendProvider<LendProviderConfig>
|
|
28
|
+
},
|
|
25
29
|
) {
|
|
26
|
-
super(chainManager,
|
|
30
|
+
super(chainManager, lendProviders)
|
|
27
31
|
}
|
|
28
32
|
|
|
29
33
|
async toActionsWallet(
|
|
@@ -33,7 +37,7 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
|
|
|
33
37
|
const wallet = await PrivyWallet.create({
|
|
34
38
|
chainManager: this.chainManager,
|
|
35
39
|
connectedWallet,
|
|
36
|
-
|
|
40
|
+
lendProviders: this.lendProviders,
|
|
37
41
|
})
|
|
38
42
|
return wallet
|
|
39
43
|
}
|
|
@@ -4,7 +4,7 @@ import { describe, expect, it, vi } from 'vitest'
|
|
|
4
4
|
|
|
5
5
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
6
6
|
import { MockChainManager } from '@/test/MockChainManager.js'
|
|
7
|
-
import
|
|
7
|
+
import { createMockLendProvider } from '@/test/MockLendProvider.js'
|
|
8
8
|
import { PrivyHostedWalletProvider } from '@/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js'
|
|
9
9
|
import { PrivyWallet } from '@/wallet/react/wallets/hosted/privy/PrivyWallet.js'
|
|
10
10
|
import * as createSignerUtil from '@/wallet/react/wallets/hosted/privy/utils/createSigner.js'
|
|
@@ -40,6 +40,7 @@ describe('PrivyHostedWalletProvider (React)', () => {
|
|
|
40
40
|
expect(PrivyWallet.create).toHaveBeenCalledWith({
|
|
41
41
|
chainManager: mockChainManager,
|
|
42
42
|
connectedWallet: mockConnectedWallet,
|
|
43
|
+
lendProviders: {},
|
|
43
44
|
})
|
|
44
45
|
expect(result).toBe(mockActionsWallet)
|
|
45
46
|
})
|
|
@@ -48,11 +49,10 @@ describe('PrivyHostedWalletProvider (React)', () => {
|
|
|
48
49
|
const mockChainManager = new MockChainManager({
|
|
49
50
|
supportedChains: [1],
|
|
50
51
|
}) as unknown as ChainManager
|
|
51
|
-
const mockLendProvider =
|
|
52
|
-
const provider = new PrivyHostedWalletProvider(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
)
|
|
52
|
+
const mockLendProvider = createMockLendProvider()
|
|
53
|
+
const provider = new PrivyHostedWalletProvider(mockChainManager, {
|
|
54
|
+
morpho: mockLendProvider,
|
|
55
|
+
})
|
|
56
56
|
const mockActionsWallet = {
|
|
57
57
|
__brand: 'actions-wallet',
|
|
58
58
|
} as unknown as PrivyWallet
|
|
@@ -67,7 +67,7 @@ describe('PrivyHostedWalletProvider (React)', () => {
|
|
|
67
67
|
|
|
68
68
|
expect(PrivyWallet.create).toHaveBeenCalledWith(
|
|
69
69
|
expect.objectContaining({
|
|
70
|
-
|
|
70
|
+
lendProviders: { morpho: mockLendProvider },
|
|
71
71
|
}),
|
|
72
72
|
)
|
|
73
73
|
})
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { LocalAccount } from 'viem'
|
|
2
2
|
|
|
3
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
3
4
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
4
|
-
import type {
|
|
5
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
5
6
|
import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
|
|
6
7
|
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
7
8
|
import type { ReactToActionsOptionsMap } from '@/wallet/react/providers/hosted/types/index.js'
|
|
@@ -27,9 +28,12 @@ export class TurnkeyHostedWalletProvider extends HostedWalletProvider<
|
|
|
27
28
|
*/
|
|
28
29
|
constructor(
|
|
29
30
|
chainManager: ChainManager,
|
|
30
|
-
|
|
31
|
+
lendProviders?: {
|
|
32
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
33
|
+
aave?: LendProvider<LendProviderConfig>
|
|
34
|
+
},
|
|
31
35
|
) {
|
|
32
|
-
super(chainManager,
|
|
36
|
+
super(chainManager, lendProviders)
|
|
33
37
|
}
|
|
34
38
|
|
|
35
39
|
/**
|
|
@@ -53,7 +57,7 @@ export class TurnkeyHostedWalletProvider extends HostedWalletProvider<
|
|
|
53
57
|
signWith,
|
|
54
58
|
ethereumAddress,
|
|
55
59
|
chainManager: this.chainManager,
|
|
56
|
-
|
|
60
|
+
lendProviders: this.lendProviders,
|
|
57
61
|
})
|
|
58
62
|
}
|
|
59
63
|
|