@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
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { createViemAccount } from '@privy-io/
|
|
1
|
+
import type { AuthorizationContext } from '@privy-io/node'
|
|
2
|
+
import { createViemAccount } from '@privy-io/node/viem'
|
|
3
3
|
import {
|
|
4
4
|
type Address,
|
|
5
5
|
createWalletClient,
|
|
@@ -8,11 +8,15 @@ import {
|
|
|
8
8
|
type WalletClient,
|
|
9
9
|
} from 'viem'
|
|
10
10
|
import { unichain } from 'viem/chains'
|
|
11
|
-
import { describe, expect, it, vi } from 'vitest'
|
|
11
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
12
12
|
|
|
13
13
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
14
14
|
import { MockChainManager } from '@/test/MockChainManager.js'
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
createMockPrivyClient,
|
|
17
|
+
createMockPrivyWallet,
|
|
18
|
+
getMockAuthorizationContext,
|
|
19
|
+
} from '@/test/MockPrivyClient.js'
|
|
16
20
|
import { getRandomAddress } from '@/test/utils.js'
|
|
17
21
|
import { PrivyWallet } from '@/wallet/node/wallets/hosted/privy/PrivyWallet.js'
|
|
18
22
|
|
|
@@ -28,9 +32,9 @@ vi.mock('viem/accounts', async () => ({
|
|
|
28
32
|
toAccount: vi.fn(),
|
|
29
33
|
}))
|
|
30
34
|
|
|
31
|
-
vi.mock('@privy-io/
|
|
35
|
+
vi.mock('@privy-io/node/viem', async () => ({
|
|
32
36
|
// @ts-ignore - importActual returns unknown
|
|
33
|
-
...(await vi.importActual('@privy-io/
|
|
37
|
+
...(await vi.importActual('@privy-io/node/viem')),
|
|
34
38
|
createViemAccount: vi.fn(),
|
|
35
39
|
}))
|
|
36
40
|
|
|
@@ -48,10 +52,12 @@ const mockLocalAccount = {
|
|
|
48
52
|
} as unknown as LocalAccount
|
|
49
53
|
|
|
50
54
|
describe('PrivyWallet', () => {
|
|
55
|
+
beforeEach(() => {
|
|
56
|
+
vi.clearAllMocks()
|
|
57
|
+
})
|
|
58
|
+
|
|
51
59
|
it('should return the correct wallet ID', async () => {
|
|
52
|
-
const createdWallet =
|
|
53
|
-
chainType: 'ethereum',
|
|
54
|
-
})
|
|
60
|
+
const createdWallet = createMockPrivyWallet()
|
|
55
61
|
|
|
56
62
|
const wallet = await createAndInitPrivyWallet({
|
|
57
63
|
address: getAddress(createdWallet.address),
|
|
@@ -62,9 +68,7 @@ describe('PrivyWallet', () => {
|
|
|
62
68
|
})
|
|
63
69
|
|
|
64
70
|
it('should return the correct address', async () => {
|
|
65
|
-
const createdWallet =
|
|
66
|
-
chainType: 'ethereum',
|
|
67
|
-
})
|
|
71
|
+
const createdWallet = createMockPrivyWallet()
|
|
68
72
|
|
|
69
73
|
const wallet = await createAndInitPrivyWallet({
|
|
70
74
|
address: getAddress(createdWallet.address),
|
|
@@ -76,28 +80,29 @@ describe('PrivyWallet', () => {
|
|
|
76
80
|
|
|
77
81
|
it('should create an account with correct configuration', async () => {
|
|
78
82
|
// Create a wallet using the mock client first
|
|
79
|
-
const createdWallet =
|
|
80
|
-
chainType: 'ethereum',
|
|
81
|
-
})
|
|
83
|
+
const createdWallet = createMockPrivyWallet()
|
|
82
84
|
vi.mocked(createViemAccount).mockResolvedValue(mockLocalAccount)
|
|
85
|
+
const authorizationContext = getMockAuthorizationContext()
|
|
83
86
|
const wallet = await createAndInitPrivyWallet({
|
|
84
87
|
address: getAddress(createdWallet.address),
|
|
85
88
|
walletId: createdWallet.id,
|
|
89
|
+
authorizationContext,
|
|
86
90
|
})
|
|
87
91
|
|
|
88
|
-
expect(createViemAccount).toHaveBeenCalledWith({
|
|
92
|
+
expect(createViemAccount).toHaveBeenCalledWith(mockPrivyClient, {
|
|
89
93
|
walletId: createdWallet.id,
|
|
90
94
|
address: createdWallet.address,
|
|
91
|
-
|
|
95
|
+
authorizationContext,
|
|
92
96
|
})
|
|
93
97
|
expect(wallet.signer).toBe(mockLocalAccount)
|
|
94
98
|
})
|
|
95
99
|
|
|
96
100
|
it('should create a wallet client with correct configuration', async () => {
|
|
97
|
-
const createdWallet =
|
|
98
|
-
|
|
101
|
+
const createdWallet = createMockPrivyWallet()
|
|
102
|
+
const wallet = await createAndInitPrivyWallet({
|
|
103
|
+
walletId: createdWallet.id,
|
|
104
|
+
address: createdWallet.address,
|
|
99
105
|
})
|
|
100
|
-
const wallet = await createAndInitPrivyWallet()
|
|
101
106
|
|
|
102
107
|
const mockWalletClient = {
|
|
103
108
|
account: mockLocalAccount,
|
|
@@ -116,27 +121,17 @@ describe('PrivyWallet', () => {
|
|
|
116
121
|
})
|
|
117
122
|
})
|
|
118
123
|
|
|
119
|
-
async function createAndInitPrivyWallet(
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
privyClient = mockPrivyClient,
|
|
124
|
+
async function createAndInitPrivyWallet(params: {
|
|
125
|
+
walletId: string
|
|
126
|
+
address: Address
|
|
127
|
+
authorizationContext?: AuthorizationContext
|
|
128
|
+
}) {
|
|
129
|
+
const { walletId, address, authorizationContext } = params
|
|
130
|
+
return PrivyWallet.create({
|
|
131
|
+
privyClient: mockPrivyClient,
|
|
132
|
+
authorizationContext: authorizationContext ?? getMockAuthorizationContext(),
|
|
129
133
|
walletId,
|
|
130
134
|
address,
|
|
131
|
-
chainManager
|
|
132
|
-
} = params
|
|
133
|
-
const createdWallet = await privyClient.walletApi.createWallet({
|
|
134
|
-
chainType: 'ethereum',
|
|
135
|
-
})
|
|
136
|
-
return PrivyWallet.create({
|
|
137
|
-
privyClient,
|
|
138
|
-
walletId: walletId ?? createdWallet.id,
|
|
139
|
-
address: address ?? getAddress(createdWallet.address),
|
|
140
|
-
chainManager,
|
|
135
|
+
chainManager: mockChainManager,
|
|
141
136
|
})
|
|
142
137
|
}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import { createViemAccount } from '@privy-io/
|
|
2
|
-
import type {
|
|
1
|
+
import { createViemAccount } from '@privy-io/node/viem'
|
|
2
|
+
import type { LocalAccount } from 'viem'
|
|
3
3
|
import { describe, expect, it, vi } from 'vitest'
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
createMockPrivyClient,
|
|
7
|
+
createMockPrivyWallet,
|
|
8
|
+
getMockAuthorizationContext,
|
|
9
|
+
} from '@/test/MockPrivyClient.js'
|
|
6
10
|
import { getRandomAddress } from '@/test/utils.js'
|
|
7
11
|
import { createSigner } from '@/wallet/node/wallets/hosted/privy/utils/createSigner.js'
|
|
8
12
|
|
|
9
|
-
vi.mock('@privy-io/
|
|
13
|
+
vi.mock('@privy-io/node/viem', async () => ({
|
|
10
14
|
// @ts-ignore - importActual returns unknown
|
|
11
|
-
...(await vi.importActual('@privy-io/
|
|
15
|
+
...(await vi.importActual('@privy-io/node/viem')),
|
|
12
16
|
createViemAccount: vi.fn(),
|
|
13
17
|
}))
|
|
14
18
|
|
|
@@ -26,22 +30,22 @@ describe('createSigner (Node Privy)', () => {
|
|
|
26
30
|
signTypedData: vi.fn(),
|
|
27
31
|
} as unknown as LocalAccount
|
|
28
32
|
|
|
29
|
-
it('should create a LocalAccount with correct configuration',
|
|
30
|
-
const createdWallet =
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
vi.mocked(createViemAccount).mockResolvedValue(mockLocalAccount)
|
|
33
|
+
it('should create a LocalAccount with correct configuration', () => {
|
|
34
|
+
const createdWallet = createMockPrivyWallet()
|
|
35
|
+
vi.mocked(createViemAccount).mockReturnValue(mockLocalAccount)
|
|
36
|
+
const authorizationContext = getMockAuthorizationContext()
|
|
34
37
|
|
|
35
|
-
const signer =
|
|
38
|
+
const signer = createSigner({
|
|
36
39
|
privyClient: mockPrivyClient,
|
|
40
|
+
authorizationContext: authorizationContext,
|
|
37
41
|
walletId: createdWallet.id,
|
|
38
|
-
address: createdWallet.address
|
|
42
|
+
address: createdWallet.address,
|
|
39
43
|
})
|
|
40
44
|
|
|
41
|
-
expect(createViemAccount).toHaveBeenCalledWith({
|
|
45
|
+
expect(createViemAccount).toHaveBeenCalledWith(mockPrivyClient, {
|
|
42
46
|
walletId: createdWallet.id,
|
|
43
47
|
address: createdWallet.address,
|
|
44
|
-
|
|
48
|
+
authorizationContext,
|
|
45
49
|
})
|
|
46
50
|
expect(signer).toBe(mockLocalAccount)
|
|
47
51
|
})
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { createViemAccount } from '@privy-io/server-auth/viem'
|
|
1
|
+
import { createViemAccount } from '@privy-io/node/viem'
|
|
3
2
|
import type { LocalAccount } from 'viem'
|
|
4
3
|
|
|
5
4
|
import type {
|
|
@@ -15,18 +14,21 @@ import type {
|
|
|
15
14
|
* @param params.walletId - Privy wallet identifier
|
|
16
15
|
* @param params.address - Ethereum address of the wallet
|
|
17
16
|
* @param params.privyClient - Privy client instance
|
|
18
|
-
* @
|
|
17
|
+
* @param params.authorizationContext - Optional authorization context for the Privy client.
|
|
18
|
+
* Used when Privy needs to sign requests.
|
|
19
|
+
* See https://docs.privy.io/controls/authorization-keys/using-owners/sign/automatic#using-the-authorization-context
|
|
20
|
+
* for more information on building and using the authorization context.
|
|
21
|
+
* @returns LocalAccount configured for signing operations
|
|
19
22
|
* @throws Error if wallet retrieval fails or signing operations are not supported
|
|
20
23
|
*/
|
|
21
|
-
export
|
|
24
|
+
export function createSigner(
|
|
22
25
|
params: PrivyHostedWalletToActionsWalletOptions & NodeOptionsMap['privy'],
|
|
23
|
-
):
|
|
24
|
-
const { walletId, address, privyClient } = params
|
|
25
|
-
const account =
|
|
26
|
+
): LocalAccount {
|
|
27
|
+
const { walletId, address, privyClient, authorizationContext } = params
|
|
28
|
+
const account = createViemAccount(privyClient, {
|
|
26
29
|
walletId,
|
|
27
30
|
address,
|
|
28
|
-
|
|
29
|
-
privy: privyClient as unknown as GetViemAccountInputType['privy'],
|
|
31
|
+
authorizationContext,
|
|
30
32
|
})
|
|
31
33
|
return account
|
|
32
34
|
}
|
|
@@ -3,8 +3,10 @@ import type { TurnkeyClient } from '@turnkey/http'
|
|
|
3
3
|
import type { TurnkeyServerClient } from '@turnkey/sdk-server'
|
|
4
4
|
import type { Address, LocalAccount } from 'viem'
|
|
5
5
|
|
|
6
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
6
7
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
|
-
import type {
|
|
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
|
|
package/src/wallet/react/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/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js'
|
|
10
10
|
import { TurnkeyWallet } from '@/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js'
|
|
11
11
|
import * as createSignerUtil from '@/wallet/react/wallets/hosted/turnkey/utils/createSigner.js'
|
|
@@ -88,11 +88,10 @@ describe('TurnkeyHostedWalletProvider', () => {
|
|
|
88
88
|
|
|
89
89
|
it('forwards lendProvider when provided to constructor', async () => {
|
|
90
90
|
const turnkeyClient = {} as unknown as TurnkeySDKClientBase
|
|
91
|
-
const mockLendProvider =
|
|
92
|
-
const provider = new TurnkeyHostedWalletProvider(
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
)
|
|
91
|
+
const mockLendProvider = createMockLendProvider()
|
|
92
|
+
const provider = new TurnkeyHostedWalletProvider(mockChainManager, {
|
|
93
|
+
morpho: mockLendProvider,
|
|
94
|
+
})
|
|
96
95
|
const spyTurnkeyWalletCreate = vi
|
|
97
96
|
.spyOn(TurnkeyWallet, 'create')
|
|
98
97
|
.mockResolvedValueOnce({
|
|
@@ -107,7 +106,7 @@ describe('TurnkeyHostedWalletProvider', () => {
|
|
|
107
106
|
|
|
108
107
|
expect(spyTurnkeyWalletCreate).toHaveBeenCalledWith(
|
|
109
108
|
expect.objectContaining({
|
|
110
|
-
|
|
109
|
+
lendProviders: { morpho: mockLendProvider },
|
|
111
110
|
}),
|
|
112
111
|
)
|
|
113
112
|
})
|
|
@@ -29,8 +29,8 @@ export class ReactHostedWalletProviderRegistry extends HostedWalletProviderRegis
|
|
|
29
29
|
validateOptions(_options): _options is ReactOptionsMap['dynamic'] {
|
|
30
30
|
return true
|
|
31
31
|
},
|
|
32
|
-
create({ chainManager,
|
|
33
|
-
return new DynamicHostedWalletProvider(chainManager,
|
|
32
|
+
create({ chainManager, lendProviders }, _options) {
|
|
33
|
+
return new DynamicHostedWalletProvider(chainManager, lendProviders)
|
|
34
34
|
},
|
|
35
35
|
})
|
|
36
36
|
|
|
@@ -39,8 +39,8 @@ export class ReactHostedWalletProviderRegistry extends HostedWalletProviderRegis
|
|
|
39
39
|
validateOptions(_options): _options is ReactOptionsMap['privy'] {
|
|
40
40
|
return true
|
|
41
41
|
},
|
|
42
|
-
create({ chainManager,
|
|
43
|
-
return new PrivyHostedWalletProvider(chainManager,
|
|
42
|
+
create({ chainManager, lendProviders }, _options) {
|
|
43
|
+
return new PrivyHostedWalletProvider(chainManager, lendProviders)
|
|
44
44
|
},
|
|
45
45
|
})
|
|
46
46
|
|
|
@@ -49,8 +49,8 @@ export class ReactHostedWalletProviderRegistry extends HostedWalletProviderRegis
|
|
|
49
49
|
validateOptions(_options): _options is ReactOptionsMap['turnkey'] {
|
|
50
50
|
return true
|
|
51
51
|
},
|
|
52
|
-
create({ chainManager,
|
|
53
|
-
return new TurnkeyHostedWalletProvider(chainManager,
|
|
52
|
+
create({ chainManager, lendProviders }, _options) {
|
|
53
|
+
return new TurnkeyHostedWalletProvider(chainManager, lendProviders)
|
|
54
54
|
},
|
|
55
55
|
})
|
|
56
56
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { type Address, type LocalAccount } from 'viem'
|
|
2
2
|
|
|
3
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
3
4
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
4
|
-
import type {
|
|
5
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
5
6
|
import { EOAWallet } from '@/wallet/core/wallets/eoa/EOAWallet.js'
|
|
6
7
|
import type { DynamicHostedWalletToActionsWalletOptions } from '@/wallet/react/providers/hosted/types/index.js'
|
|
7
8
|
import { createSigner } from '@/wallet/react/wallets/hosted/dynamic/utils/createSigner.js'
|
|
@@ -23,21 +24,27 @@ export class DynamicWallet extends EOAWallet {
|
|
|
23
24
|
private constructor(
|
|
24
25
|
chainManager: ChainManager,
|
|
25
26
|
dynamicWallet: DynamicHostedWalletToActionsWalletOptions['wallet'],
|
|
26
|
-
|
|
27
|
+
lendProviders?: {
|
|
28
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
29
|
+
aave?: LendProvider<LendProviderConfig>
|
|
30
|
+
},
|
|
27
31
|
) {
|
|
28
|
-
super(chainManager,
|
|
32
|
+
super(chainManager, lendProviders)
|
|
29
33
|
this.dynamicWallet = dynamicWallet
|
|
30
34
|
}
|
|
31
35
|
|
|
32
36
|
static async create(params: {
|
|
33
37
|
dynamicWallet: DynamicHostedWalletToActionsWalletOptions['wallet']
|
|
34
38
|
chainManager: ChainManager
|
|
35
|
-
|
|
39
|
+
lendProviders?: {
|
|
40
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
41
|
+
aave?: LendProvider<LendProviderConfig>
|
|
42
|
+
}
|
|
36
43
|
}): Promise<DynamicWallet> {
|
|
37
44
|
const wallet = new DynamicWallet(
|
|
38
45
|
params.chainManager,
|
|
39
46
|
params.dynamicWallet,
|
|
40
|
-
params.
|
|
47
|
+
params.lendProviders,
|
|
41
48
|
)
|
|
42
49
|
await wallet.initialize()
|
|
43
50
|
return wallet
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { vi } from 'vitest'
|
|
2
2
|
|
|
3
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
3
4
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
5
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
4
6
|
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
5
7
|
import type { DynamicHostedWalletToActionsWalletOptions } from '@/wallet/react/providers/hosted/types/index.js'
|
|
6
8
|
|
|
@@ -15,6 +17,10 @@ export class DynamicWalletMock {
|
|
|
15
17
|
async (_params: {
|
|
16
18
|
chainManager: ChainManager
|
|
17
19
|
dynamicWallet: DynamicHostedWalletToActionsWalletOptions['wallet']
|
|
20
|
+
lendProviders?: {
|
|
21
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
22
|
+
aave?: LendProvider<LendProviderConfig>
|
|
23
|
+
}
|
|
18
24
|
}): Promise<Wallet> => {
|
|
19
25
|
return {} as unknown as Wallet
|
|
20
26
|
},
|