@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
|
@@ -3,11 +3,7 @@ import { describe, expect, it } from 'vitest'
|
|
|
3
3
|
|
|
4
4
|
import { MockUSDCAsset } from '@/test/MockAssets.js'
|
|
5
5
|
import { MockLendProvider } from '@/test/MockLendProvider.js'
|
|
6
|
-
import type {
|
|
7
|
-
LendConfig,
|
|
8
|
-
LendMarketConfig,
|
|
9
|
-
LendMarketId,
|
|
10
|
-
} from '@/types/lend/index.js'
|
|
6
|
+
import type { LendMarketConfig, LendMarketId } from '@/types/lend/index.js'
|
|
11
7
|
|
|
12
8
|
// Test helper class that exposes protected validation methods as public
|
|
13
9
|
class TestLendProvider extends MockLendProvider {
|
|
@@ -27,33 +23,11 @@ class TestLendProvider extends MockLendProvider {
|
|
|
27
23
|
describe('LendProvider', () => {
|
|
28
24
|
describe('constructor and configuration', () => {
|
|
29
25
|
it('should initialize with basic config', () => {
|
|
30
|
-
const
|
|
31
|
-
provider: 'morpho',
|
|
32
|
-
defaultSlippage: 100,
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const provider = new MockLendProvider(config)
|
|
26
|
+
const provider = new MockLendProvider()
|
|
36
27
|
expect(provider).toBeDefined()
|
|
37
28
|
expect(provider.supportedChainIds()).toContain(84532)
|
|
38
29
|
})
|
|
39
30
|
|
|
40
|
-
it('should use default slippage when not provided', () => {
|
|
41
|
-
const config: LendConfig = { provider: 'morpho' }
|
|
42
|
-
const provider = new MockLendProvider(config)
|
|
43
|
-
|
|
44
|
-
expect(provider.config.defaultSlippage || 50).toBe(50)
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
it('should use custom default slippage when provided', () => {
|
|
48
|
-
const config: LendConfig = {
|
|
49
|
-
provider: 'morpho',
|
|
50
|
-
defaultSlippage: 200,
|
|
51
|
-
}
|
|
52
|
-
const provider = new MockLendProvider(config)
|
|
53
|
-
|
|
54
|
-
expect(provider.config.defaultSlippage).toBe(200)
|
|
55
|
-
})
|
|
56
|
-
|
|
57
31
|
it('should store market allowlist when provided', () => {
|
|
58
32
|
const mockMarket: LendMarketConfig = {
|
|
59
33
|
address: '0x1234' as Address,
|
|
@@ -71,19 +45,16 @@ describe('LendProvider', () => {
|
|
|
71
45
|
lendProvider: 'morpho',
|
|
72
46
|
}
|
|
73
47
|
|
|
74
|
-
const
|
|
75
|
-
provider: 'morpho',
|
|
48
|
+
const provider = new MockLendProvider({
|
|
76
49
|
marketAllowlist: [mockMarket],
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const provider = new MockLendProvider(config)
|
|
50
|
+
})
|
|
80
51
|
expect(provider.config.marketAllowlist).toEqual([mockMarket])
|
|
81
52
|
})
|
|
82
53
|
})
|
|
83
54
|
|
|
84
55
|
describe('abstract methods implementation', () => {
|
|
85
56
|
it('should implement getMarket method', async () => {
|
|
86
|
-
const provider = new MockLendProvider(
|
|
57
|
+
const provider = new MockLendProvider()
|
|
87
58
|
const marketId: LendMarketId = {
|
|
88
59
|
address: '0x1234' as Address,
|
|
89
60
|
chainId: 84532,
|
|
@@ -96,7 +67,7 @@ describe('LendProvider', () => {
|
|
|
96
67
|
})
|
|
97
68
|
|
|
98
69
|
it('should accept LendMarketConfig and extract address/chainId', async () => {
|
|
99
|
-
const provider = new MockLendProvider(
|
|
70
|
+
const provider = new MockLendProvider()
|
|
100
71
|
const mockMarket: LendMarketConfig = {
|
|
101
72
|
address: '0x5678' as Address,
|
|
102
73
|
chainId: 84532,
|
|
@@ -112,7 +83,7 @@ describe('LendProvider', () => {
|
|
|
112
83
|
})
|
|
113
84
|
|
|
114
85
|
it('should implement getMarkets method', async () => {
|
|
115
|
-
const provider = new MockLendProvider(
|
|
86
|
+
const provider = new MockLendProvider()
|
|
116
87
|
const markets = await provider.getMarkets()
|
|
117
88
|
|
|
118
89
|
expect(Array.isArray(markets)).toBe(true)
|
|
@@ -121,7 +92,7 @@ describe('LendProvider', () => {
|
|
|
121
92
|
})
|
|
122
93
|
|
|
123
94
|
it('should accept optional filter parameters for getMarkets', async () => {
|
|
124
|
-
const provider = new MockLendProvider(
|
|
95
|
+
const provider = new MockLendProvider()
|
|
125
96
|
const markets = await provider.getMarkets({ chainId: 84532 })
|
|
126
97
|
|
|
127
98
|
expect(Array.isArray(markets)).toBe(true)
|
|
@@ -129,7 +100,7 @@ describe('LendProvider', () => {
|
|
|
129
100
|
})
|
|
130
101
|
|
|
131
102
|
it('should accept asset filtering parameter', async () => {
|
|
132
|
-
const provider = new MockLendProvider(
|
|
103
|
+
const provider = new MockLendProvider()
|
|
133
104
|
const mockAsset = {
|
|
134
105
|
metadata: { symbol: 'USDC', name: 'USD Coin' },
|
|
135
106
|
address: { 84532: '0x123' as Address },
|
|
@@ -140,7 +111,7 @@ describe('LendProvider', () => {
|
|
|
140
111
|
})
|
|
141
112
|
|
|
142
113
|
it('should implement getPosition method', async () => {
|
|
143
|
-
const provider = new MockLendProvider(
|
|
114
|
+
const provider = new MockLendProvider()
|
|
144
115
|
const position = await provider.getPosition('0x5678' as Address, {
|
|
145
116
|
address: '0x1234' as Address,
|
|
146
117
|
chainId: 84532 as const,
|
|
@@ -152,7 +123,7 @@ describe('LendProvider', () => {
|
|
|
152
123
|
})
|
|
153
124
|
|
|
154
125
|
it('should implement closePosition method', async () => {
|
|
155
|
-
const provider = new MockLendProvider(
|
|
126
|
+
const provider = new MockLendProvider()
|
|
156
127
|
const result = await provider.closePosition({
|
|
157
128
|
amount: 100,
|
|
158
129
|
marketId: { address: '0x1234' as Address, chainId: 84532 as const },
|
|
@@ -165,7 +136,7 @@ describe('LendProvider', () => {
|
|
|
165
136
|
})
|
|
166
137
|
|
|
167
138
|
it('should implement withdraw method', async () => {
|
|
168
|
-
const provider = new MockLendProvider(
|
|
139
|
+
const provider = new MockLendProvider()
|
|
169
140
|
const result = await provider.withdraw(
|
|
170
141
|
'0x0000000000000000000000000000000000000001' as Address,
|
|
171
142
|
500n,
|
|
@@ -178,7 +149,7 @@ describe('LendProvider', () => {
|
|
|
178
149
|
})
|
|
179
150
|
|
|
180
151
|
it('should implement openPosition method', async () => {
|
|
181
|
-
const provider = new MockLendProvider(
|
|
152
|
+
const provider = new MockLendProvider()
|
|
182
153
|
const mockAsset = {
|
|
183
154
|
address: { 84532: '0x123' as Address },
|
|
184
155
|
metadata: { symbol: 'USDC', name: 'USD Coin', decimals: 6 },
|
|
@@ -201,7 +172,7 @@ describe('LendProvider', () => {
|
|
|
201
172
|
|
|
202
173
|
describe('supportedChainIds', () => {
|
|
203
174
|
it('should return array of supported chain IDs', () => {
|
|
204
|
-
const provider = new MockLendProvider(
|
|
175
|
+
const provider = new MockLendProvider()
|
|
205
176
|
const chainIds = provider.supportedChainIds()
|
|
206
177
|
|
|
207
178
|
expect(Array.isArray(chainIds)).toBe(true)
|
|
@@ -212,7 +183,7 @@ describe('LendProvider', () => {
|
|
|
212
183
|
|
|
213
184
|
describe('validation', () => {
|
|
214
185
|
it('should call validation for unsupported chainId', () => {
|
|
215
|
-
const provider = new TestLendProvider(
|
|
186
|
+
const provider = new TestLendProvider()
|
|
216
187
|
|
|
217
188
|
expect(() => {
|
|
218
189
|
provider.validateProviderSupported(999)
|
|
@@ -233,7 +204,6 @@ describe('LendProvider', () => {
|
|
|
233
204
|
}
|
|
234
205
|
|
|
235
206
|
const provider = new TestLendProvider({
|
|
236
|
-
provider: 'morpho',
|
|
237
207
|
marketAllowlist: [allowedMarket],
|
|
238
208
|
})
|
|
239
209
|
|
|
@@ -253,7 +223,7 @@ describe('LendProvider', () => {
|
|
|
253
223
|
})
|
|
254
224
|
|
|
255
225
|
it('should validate chain support correctly', () => {
|
|
256
|
-
const provider = new TestLendProvider(
|
|
226
|
+
const provider = new TestLendProvider()
|
|
257
227
|
|
|
258
228
|
expect(provider.isChainSupported(84532)).toBe(true)
|
|
259
229
|
expect(provider.isChainSupported(999)).toBe(false)
|
|
@@ -261,16 +231,6 @@ describe('LendProvider', () => {
|
|
|
261
231
|
})
|
|
262
232
|
|
|
263
233
|
describe('public getters', () => {
|
|
264
|
-
it('should provide access to defaultSlippage via getter', () => {
|
|
265
|
-
const config: LendConfig = {
|
|
266
|
-
provider: 'morpho',
|
|
267
|
-
defaultSlippage: 75,
|
|
268
|
-
}
|
|
269
|
-
const provider = new MockLendProvider(config)
|
|
270
|
-
|
|
271
|
-
expect(provider.config.defaultSlippage).toBe(75)
|
|
272
|
-
})
|
|
273
|
-
|
|
274
234
|
it('should provide access to marketAllowlist via getter', () => {
|
|
275
235
|
const mockMarket: LendMarketConfig = {
|
|
276
236
|
address: '0xabc' as Address,
|
|
@@ -288,17 +248,15 @@ describe('LendProvider', () => {
|
|
|
288
248
|
lendProvider: 'morpho',
|
|
289
249
|
}
|
|
290
250
|
|
|
291
|
-
const
|
|
292
|
-
provider: 'morpho',
|
|
251
|
+
const provider = new MockLendProvider({
|
|
293
252
|
marketAllowlist: [mockMarket],
|
|
294
|
-
}
|
|
295
|
-
const provider = new MockLendProvider(config)
|
|
253
|
+
})
|
|
296
254
|
|
|
297
255
|
expect(provider.config.marketAllowlist).toEqual([mockMarket])
|
|
298
256
|
})
|
|
299
257
|
|
|
300
258
|
it('should return undefined for marketAllowlist when not provided', () => {
|
|
301
|
-
const provider = new MockLendProvider(
|
|
259
|
+
const provider = new MockLendProvider()
|
|
302
260
|
expect(provider.config.marketAllowlist).toBeUndefined()
|
|
303
261
|
})
|
|
304
262
|
})
|
package/src/lend/index.ts
CHANGED
|
@@ -1,26 +1,90 @@
|
|
|
1
1
|
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
2
|
-
import type {
|
|
2
|
+
import type { AaveLendProvider } from '@/lend/providers/aave/AaveLendProvider.js'
|
|
3
|
+
import type { MorphoLendProvider } from '@/lend/providers/morpho/MorphoLendProvider.js'
|
|
4
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
5
|
+
import type {
|
|
6
|
+
GetLendMarketParams,
|
|
7
|
+
GetLendMarketsParams,
|
|
8
|
+
LendMarket,
|
|
9
|
+
LendMarketId,
|
|
10
|
+
} from '@/types/lend/index.js'
|
|
3
11
|
|
|
4
12
|
/**
|
|
5
13
|
* Actions Lend Namespace
|
|
6
14
|
* @description Read-only lending operations available on actions.lend
|
|
7
15
|
*/
|
|
8
|
-
export class ActionsLendNamespace
|
|
9
|
-
constructor(
|
|
16
|
+
export class ActionsLendNamespace {
|
|
17
|
+
constructor(
|
|
18
|
+
protected readonly providers: {
|
|
19
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
20
|
+
aave?: LendProvider<LendProviderConfig>
|
|
21
|
+
},
|
|
22
|
+
) {}
|
|
10
23
|
|
|
11
|
-
|
|
12
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Route a market to the correct provider
|
|
26
|
+
* @param marketId - Market identifier to route
|
|
27
|
+
* @returns The provider that handles this market
|
|
28
|
+
* @throws Error if no provider is found for the market
|
|
29
|
+
*/
|
|
30
|
+
private getProviderForMarket(
|
|
31
|
+
marketId: LendMarketId,
|
|
32
|
+
): MorphoLendProvider | AaveLendProvider {
|
|
33
|
+
const allProviders = [this.providers.morpho, this.providers.aave].filter(
|
|
34
|
+
Boolean,
|
|
35
|
+
) as Array<MorphoLendProvider | AaveLendProvider>
|
|
36
|
+
|
|
37
|
+
for (const provider of allProviders) {
|
|
38
|
+
const market = provider.config.marketAllowlist?.find(
|
|
39
|
+
(m: LendMarketId) =>
|
|
40
|
+
m.address.toLowerCase() === marketId.address.toLowerCase() &&
|
|
41
|
+
m.chainId === marketId.chainId,
|
|
42
|
+
)
|
|
43
|
+
if (market) return provider
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
throw new Error(
|
|
47
|
+
`No provider configured for market ${marketId.address} on chain ${marketId.chainId}`,
|
|
48
|
+
)
|
|
13
49
|
}
|
|
14
50
|
|
|
15
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Get all markets across all configured providers
|
|
53
|
+
* @param params - Optional filtering parameters
|
|
54
|
+
* @returns Promise resolving to array of markets from all providers
|
|
55
|
+
*/
|
|
56
|
+
async getMarkets(params: GetLendMarketsParams = {}): Promise<LendMarket[]> {
|
|
57
|
+
const allProviders = [this.providers.morpho, this.providers.aave].filter(
|
|
58
|
+
Boolean,
|
|
59
|
+
) as Array<MorphoLendProvider | AaveLendProvider>
|
|
16
60
|
|
|
17
|
-
|
|
18
|
-
|
|
61
|
+
const results = await Promise.all(
|
|
62
|
+
allProviders.map((p) => p.getMarkets(params)),
|
|
63
|
+
)
|
|
19
64
|
|
|
20
|
-
|
|
21
|
-
|
|
65
|
+
return results.flat()
|
|
66
|
+
}
|
|
22
67
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
68
|
+
/**
|
|
69
|
+
* Get a specific market by routing to the correct provider
|
|
70
|
+
* @param params - Market identifier
|
|
71
|
+
* @returns Promise resolving to market information
|
|
72
|
+
*/
|
|
73
|
+
async getMarket(params: GetLendMarketParams): Promise<LendMarket> {
|
|
74
|
+
const provider = this.getProviderForMarket(params)
|
|
75
|
+
return provider.getMarket(params)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Get supported chain IDs across all providers
|
|
80
|
+
* @returns Array of unique chain IDs supported by any provider
|
|
81
|
+
*/
|
|
82
|
+
supportedChainIds(): number[] {
|
|
83
|
+
const allProviders = [this.providers.morpho, this.providers.aave].filter(
|
|
84
|
+
Boolean,
|
|
85
|
+
) as Array<MorphoLendProvider | AaveLendProvider>
|
|
86
|
+
|
|
87
|
+
const allChains = allProviders.flatMap((p) => p.supportedChainIds())
|
|
88
|
+
return [...new Set(allChains)]
|
|
89
|
+
}
|
|
26
90
|
}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
2
|
+
import type { AaveLendProvider } from '@/lend/providers/aave/AaveLendProvider.js'
|
|
3
|
+
import type { MorphoLendProvider } from '@/lend/providers/morpho/MorphoLendProvider.js'
|
|
4
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
2
5
|
import type {
|
|
3
|
-
BaseLendConfig,
|
|
4
6
|
ClosePositionParams,
|
|
7
|
+
GetLendMarketParams,
|
|
8
|
+
GetLendMarketsParams,
|
|
5
9
|
GetPositionParams,
|
|
10
|
+
LendMarket,
|
|
11
|
+
LendMarketId,
|
|
6
12
|
LendMarketPosition,
|
|
7
13
|
LendOpenPositionParams,
|
|
8
14
|
LendTransactionReceipt,
|
|
@@ -13,37 +19,99 @@ import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
|
13
19
|
* Wallet Lend Namespace
|
|
14
20
|
* @description Full lending operations available on wallet.lend
|
|
15
21
|
*/
|
|
16
|
-
export class WalletLendNamespace
|
|
17
|
-
TConfig extends BaseLendConfig = BaseLendConfig,
|
|
18
|
-
> {
|
|
22
|
+
export class WalletLendNamespace {
|
|
19
23
|
constructor(
|
|
20
|
-
protected readonly
|
|
24
|
+
protected readonly providers: {
|
|
25
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
26
|
+
aave?: LendProvider<LendProviderConfig>
|
|
27
|
+
},
|
|
21
28
|
private readonly wallet: Wallet,
|
|
22
29
|
) {}
|
|
23
30
|
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Route a market to the correct provider
|
|
33
|
+
* @param marketId - Market identifier to route
|
|
34
|
+
* @returns The provider that handles this market
|
|
35
|
+
* @throws Error if no provider is found for the market
|
|
36
|
+
*/
|
|
37
|
+
private getProviderForMarket(
|
|
38
|
+
marketId: LendMarketId,
|
|
39
|
+
): MorphoLendProvider | AaveLendProvider {
|
|
40
|
+
const allProviders = [this.providers.morpho, this.providers.aave].filter(
|
|
41
|
+
Boolean,
|
|
42
|
+
) as Array<MorphoLendProvider | AaveLendProvider>
|
|
43
|
+
|
|
44
|
+
for (const provider of allProviders) {
|
|
45
|
+
const market = provider.config.marketAllowlist?.find(
|
|
46
|
+
(m: LendMarketId) =>
|
|
47
|
+
m.address.toLowerCase() === marketId.address.toLowerCase() &&
|
|
48
|
+
m.chainId === marketId.chainId,
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
if (market) {
|
|
52
|
+
return provider
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
throw new Error(
|
|
57
|
+
`No provider configured for market ${marketId.address} on chain ${marketId.chainId}`,
|
|
58
|
+
)
|
|
26
59
|
}
|
|
27
60
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Get all markets across all configured providers
|
|
63
|
+
* @param params - Optional filtering parameters
|
|
64
|
+
* @returns Promise resolving to array of markets from all providers
|
|
65
|
+
*/
|
|
66
|
+
async getMarkets(params: GetLendMarketsParams = {}): Promise<LendMarket[]> {
|
|
67
|
+
const allProviders = [this.providers.morpho, this.providers.aave].filter(
|
|
68
|
+
Boolean,
|
|
69
|
+
) as Array<MorphoLendProvider | AaveLendProvider>
|
|
70
|
+
|
|
71
|
+
const results = await Promise.all(
|
|
72
|
+
allProviders.map((p) => p.getMarkets(params)),
|
|
73
|
+
)
|
|
31
74
|
|
|
32
|
-
|
|
33
|
-
|
|
75
|
+
return results.flat()
|
|
76
|
+
}
|
|
34
77
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
78
|
+
/**
|
|
79
|
+
* Get a specific market by routing to the correct provider
|
|
80
|
+
* @param params - Market identifier
|
|
81
|
+
* @returns Promise resolving to market information
|
|
82
|
+
*/
|
|
83
|
+
async getMarket(params: GetLendMarketParams): Promise<LendMarket> {
|
|
84
|
+
const provider = this.getProviderForMarket(params)
|
|
85
|
+
return provider.getMarket(params)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Get supported chain IDs across all providers
|
|
90
|
+
* @returns Array of unique chain IDs supported by any provider
|
|
91
|
+
*/
|
|
92
|
+
supportedChainIds(): number[] {
|
|
93
|
+
const allProviders = [this.providers.morpho, this.providers.aave].filter(
|
|
94
|
+
Boolean,
|
|
95
|
+
) as Array<MorphoLendProvider | AaveLendProvider>
|
|
96
|
+
|
|
97
|
+
const allChains = allProviders.flatMap((p) => p.supportedChainIds())
|
|
98
|
+
return [...new Set(allChains)]
|
|
99
|
+
}
|
|
38
100
|
|
|
39
101
|
/**
|
|
40
102
|
* Open a lending position
|
|
41
103
|
* @description Signs and sends a lend transaction from the wallet for the given amount and asset
|
|
104
|
+
* @param params - Lending position parameters
|
|
105
|
+
* @param params.marketId - Market identifier to open position in
|
|
106
|
+
* @param params.amount - Amount to lend
|
|
107
|
+
* @returns Promise resolving to transaction receipt
|
|
42
108
|
*/
|
|
43
109
|
async openPosition(
|
|
44
110
|
params: LendOpenPositionParams,
|
|
45
111
|
): Promise<LendTransactionReceipt> {
|
|
46
|
-
const
|
|
112
|
+
const provider = this.getProviderForMarket(params.marketId)
|
|
113
|
+
|
|
114
|
+
const lendTransaction = await provider.openPosition({
|
|
47
115
|
...params,
|
|
48
116
|
walletAddress: this.wallet.address,
|
|
49
117
|
})
|
|
@@ -77,7 +145,13 @@ export class WalletLendNamespace<
|
|
|
77
145
|
* @returns Promise resolving to position information
|
|
78
146
|
*/
|
|
79
147
|
async getPosition(params: GetPositionParams): Promise<LendMarketPosition> {
|
|
80
|
-
|
|
148
|
+
if (!params.marketId) {
|
|
149
|
+
throw new Error('marketId is required')
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const provider = this.getProviderForMarket(params.marketId)
|
|
153
|
+
|
|
154
|
+
return provider.getPosition(
|
|
81
155
|
this.wallet.address,
|
|
82
156
|
params.marketId,
|
|
83
157
|
params.asset,
|
|
@@ -86,13 +160,17 @@ export class WalletLendNamespace<
|
|
|
86
160
|
|
|
87
161
|
/**
|
|
88
162
|
* Close a lending position (withdraw from market)
|
|
89
|
-
* @param
|
|
90
|
-
* @
|
|
163
|
+
* @param params - Position closing parameters
|
|
164
|
+
* @param params.marketId - Market identifier to close position in
|
|
165
|
+
* @param params.amount - Amount to withdraw
|
|
166
|
+
* @returns Promise resolving to transaction receipt
|
|
91
167
|
*/
|
|
92
168
|
async closePosition(
|
|
93
169
|
params: ClosePositionParams,
|
|
94
170
|
): Promise<LendTransactionReceipt> {
|
|
95
|
-
const
|
|
171
|
+
const provider = this.getProviderForMarket(params.marketId)
|
|
172
|
+
|
|
173
|
+
const closeTransaction = await provider.closePosition({
|
|
96
174
|
...params,
|
|
97
175
|
walletAddress: this.wallet.address,
|
|
98
176
|
})
|
|
@@ -104,6 +182,14 @@ export class WalletLendNamespace<
|
|
|
104
182
|
)
|
|
105
183
|
}
|
|
106
184
|
|
|
185
|
+
// If both approval and closePosition are present, batch them
|
|
186
|
+
if (transactionData.approval && transactionData.closePosition) {
|
|
187
|
+
return await this.wallet.sendBatch(
|
|
188
|
+
[transactionData.approval, transactionData.closePosition],
|
|
189
|
+
params.marketId.chainId,
|
|
190
|
+
)
|
|
191
|
+
}
|
|
192
|
+
|
|
107
193
|
if (!transactionData.closePosition) {
|
|
108
194
|
throw new Error('No closePosition transaction data returned')
|
|
109
195
|
}
|
|
@@ -7,19 +7,36 @@ import type { LendProvider } from '@/types/lend/index.js'
|
|
|
7
7
|
|
|
8
8
|
describe('ActionsLendNamespace', () => {
|
|
9
9
|
let mockProvider: LendProvider
|
|
10
|
+
let mockMarketId: { address: any; chainId: 130 }
|
|
10
11
|
|
|
11
12
|
beforeEach(() => {
|
|
12
|
-
|
|
13
|
+
mockMarketId = { address: getRandomAddress(), chainId: 130 as const }
|
|
14
|
+
|
|
15
|
+
mockProvider = createMockLendProvider({
|
|
16
|
+
marketAllowlist: [
|
|
17
|
+
{
|
|
18
|
+
address: mockMarketId.address,
|
|
19
|
+
chainId: mockMarketId.chainId,
|
|
20
|
+
name: 'Test Market',
|
|
21
|
+
asset: {
|
|
22
|
+
address: { 130: getRandomAddress() },
|
|
23
|
+
metadata: { symbol: 'USDC', name: 'USD Coin', decimals: 6 },
|
|
24
|
+
type: 'erc20' as const,
|
|
25
|
+
},
|
|
26
|
+
lendProvider: 'morpho',
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
})
|
|
13
30
|
})
|
|
14
31
|
|
|
15
32
|
it('should create an instance with a lend provider', () => {
|
|
16
|
-
const namespace = new ActionsLendNamespace(mockProvider)
|
|
33
|
+
const namespace = new ActionsLendNamespace({ morpho: mockProvider as any })
|
|
17
34
|
|
|
18
35
|
expect(namespace).toBeInstanceOf(ActionsLendNamespace)
|
|
19
36
|
})
|
|
20
37
|
|
|
21
38
|
it('should delegate getMarkets to provider', async () => {
|
|
22
|
-
const namespace = new ActionsLendNamespace(mockProvider)
|
|
39
|
+
const namespace = new ActionsLendNamespace({ morpho: mockProvider as any })
|
|
23
40
|
const spy = vi.spyOn(mockProvider, 'getMarkets')
|
|
24
41
|
|
|
25
42
|
await namespace.getMarkets()
|
|
@@ -28,31 +45,20 @@ describe('ActionsLendNamespace', () => {
|
|
|
28
45
|
})
|
|
29
46
|
|
|
30
47
|
it('should delegate getMarket to provider with correct parameters', async () => {
|
|
31
|
-
const namespace = new ActionsLendNamespace(mockProvider)
|
|
32
|
-
const marketId = getRandomAddress()
|
|
33
|
-
const chainId = 130 as const
|
|
48
|
+
const namespace = new ActionsLendNamespace({ morpho: mockProvider as any })
|
|
34
49
|
const spy = vi.spyOn(mockProvider, 'getMarket')
|
|
35
50
|
|
|
36
|
-
await namespace.getMarket(
|
|
51
|
+
await namespace.getMarket(mockMarketId)
|
|
37
52
|
|
|
38
|
-
expect(spy).toHaveBeenCalledWith(
|
|
53
|
+
expect(spy).toHaveBeenCalledWith(mockMarketId)
|
|
39
54
|
})
|
|
40
55
|
|
|
41
56
|
it('should delegate supportedChainIds to provider', () => {
|
|
42
|
-
const namespace = new ActionsLendNamespace(mockProvider)
|
|
57
|
+
const namespace = new ActionsLendNamespace({ morpho: mockProvider as any })
|
|
43
58
|
const spy = vi.spyOn(mockProvider, 'supportedChainIds')
|
|
44
59
|
|
|
45
60
|
namespace.supportedChainIds()
|
|
46
61
|
|
|
47
62
|
expect(spy).toHaveBeenCalledOnce()
|
|
48
63
|
})
|
|
49
|
-
|
|
50
|
-
it('should provide access to provider config', () => {
|
|
51
|
-
const namespace = new ActionsLendNamespace(mockProvider)
|
|
52
|
-
|
|
53
|
-
const config = namespace.config
|
|
54
|
-
|
|
55
|
-
expect(config).toBeDefined()
|
|
56
|
-
expect(config.defaultSlippage || 50).toBe(50)
|
|
57
|
-
})
|
|
58
64
|
})
|