@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,23 +3,66 @@
|
|
|
3
3
|
* @description Full lending operations available on wallet.lend
|
|
4
4
|
*/
|
|
5
5
|
export class WalletLendNamespace {
|
|
6
|
-
constructor(
|
|
7
|
-
this.
|
|
6
|
+
constructor(providers, wallet) {
|
|
7
|
+
this.providers = providers;
|
|
8
8
|
this.wallet = wallet;
|
|
9
|
-
// Inherited methods from ActionsLendNamespace
|
|
10
|
-
this.getMarkets = (...args) => this.provider.getMarkets(...args);
|
|
11
|
-
this.getMarket = (...args) => this.provider.getMarket(...args);
|
|
12
|
-
this.supportedChainIds = (...args) => this.provider.supportedChainIds(...args);
|
|
13
9
|
}
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Route a market to the correct provider
|
|
12
|
+
* @param marketId - Market identifier to route
|
|
13
|
+
* @returns The provider that handles this market
|
|
14
|
+
* @throws Error if no provider is found for the market
|
|
15
|
+
*/
|
|
16
|
+
getProviderForMarket(marketId) {
|
|
17
|
+
const allProviders = [this.providers.morpho, this.providers.aave].filter(Boolean);
|
|
18
|
+
for (const provider of allProviders) {
|
|
19
|
+
const market = provider.config.marketAllowlist?.find((m) => m.address.toLowerCase() === marketId.address.toLowerCase() &&
|
|
20
|
+
m.chainId === marketId.chainId);
|
|
21
|
+
if (market) {
|
|
22
|
+
return provider;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
throw new Error(`No provider configured for market ${marketId.address} on chain ${marketId.chainId}`);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get all markets across all configured providers
|
|
29
|
+
* @param params - Optional filtering parameters
|
|
30
|
+
* @returns Promise resolving to array of markets from all providers
|
|
31
|
+
*/
|
|
32
|
+
async getMarkets(params = {}) {
|
|
33
|
+
const allProviders = [this.providers.morpho, this.providers.aave].filter(Boolean);
|
|
34
|
+
const results = await Promise.all(allProviders.map((p) => p.getMarkets(params)));
|
|
35
|
+
return results.flat();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get a specific market by routing to the correct provider
|
|
39
|
+
* @param params - Market identifier
|
|
40
|
+
* @returns Promise resolving to market information
|
|
41
|
+
*/
|
|
42
|
+
async getMarket(params) {
|
|
43
|
+
const provider = this.getProviderForMarket(params);
|
|
44
|
+
return provider.getMarket(params);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get supported chain IDs across all providers
|
|
48
|
+
* @returns Array of unique chain IDs supported by any provider
|
|
49
|
+
*/
|
|
50
|
+
supportedChainIds() {
|
|
51
|
+
const allProviders = [this.providers.morpho, this.providers.aave].filter(Boolean);
|
|
52
|
+
const allChains = allProviders.flatMap((p) => p.supportedChainIds());
|
|
53
|
+
return [...new Set(allChains)];
|
|
16
54
|
}
|
|
17
55
|
/**
|
|
18
56
|
* Open a lending position
|
|
19
57
|
* @description Signs and sends a lend transaction from the wallet for the given amount and asset
|
|
58
|
+
* @param params - Lending position parameters
|
|
59
|
+
* @param params.marketId - Market identifier to open position in
|
|
60
|
+
* @param params.amount - Amount to lend
|
|
61
|
+
* @returns Promise resolving to transaction receipt
|
|
20
62
|
*/
|
|
21
63
|
async openPosition(params) {
|
|
22
|
-
const
|
|
64
|
+
const provider = this.getProviderForMarket(params.marketId);
|
|
65
|
+
const lendTransaction = await provider.openPosition({
|
|
23
66
|
...params,
|
|
24
67
|
walletAddress: this.wallet.address,
|
|
25
68
|
});
|
|
@@ -43,15 +86,22 @@ export class WalletLendNamespace {
|
|
|
43
86
|
* @returns Promise resolving to position information
|
|
44
87
|
*/
|
|
45
88
|
async getPosition(params) {
|
|
46
|
-
|
|
89
|
+
if (!params.marketId) {
|
|
90
|
+
throw new Error('marketId is required');
|
|
91
|
+
}
|
|
92
|
+
const provider = this.getProviderForMarket(params.marketId);
|
|
93
|
+
return provider.getPosition(this.wallet.address, params.marketId, params.asset);
|
|
47
94
|
}
|
|
48
95
|
/**
|
|
49
96
|
* Close a lending position (withdraw from market)
|
|
50
|
-
* @param
|
|
51
|
-
* @
|
|
97
|
+
* @param params - Position closing parameters
|
|
98
|
+
* @param params.marketId - Market identifier to close position in
|
|
99
|
+
* @param params.amount - Amount to withdraw
|
|
100
|
+
* @returns Promise resolving to transaction receipt
|
|
52
101
|
*/
|
|
53
102
|
async closePosition(params) {
|
|
54
|
-
const
|
|
103
|
+
const provider = this.getProviderForMarket(params.marketId);
|
|
104
|
+
const closeTransaction = await provider.closePosition({
|
|
55
105
|
...params,
|
|
56
106
|
walletAddress: this.wallet.address,
|
|
57
107
|
});
|
|
@@ -59,6 +109,10 @@ export class WalletLendNamespace {
|
|
|
59
109
|
if (!transactionData) {
|
|
60
110
|
throw new Error('No transaction data returned from close position provider');
|
|
61
111
|
}
|
|
112
|
+
// If both approval and closePosition are present, batch them
|
|
113
|
+
if (transactionData.approval && transactionData.closePosition) {
|
|
114
|
+
return await this.wallet.sendBatch([transactionData.approval, transactionData.closePosition], params.marketId.chainId);
|
|
115
|
+
}
|
|
62
116
|
if (!transactionData.closePosition) {
|
|
63
117
|
throw new Error('No closePosition transaction data returned');
|
|
64
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletLendNamespace.js","sourceRoot":"","sources":["../../../src/lend/namespaces/WalletLendNamespace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WalletLendNamespace.js","sourceRoot":"","sources":["../../../src/lend/namespaces/WalletLendNamespace.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IAC9B,YACqB,SAGlB,EACgB,MAAc;QAJZ,cAAS,GAAT,SAAS,CAG3B;QACgB,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEJ;;;;;OAKG;IACK,oBAAoB,CAC1B,QAAsB;QAEtB,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CACtE,OAAO,CACwC,CAAA;QAEjD,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAClD,CAAC,CAAe,EAAE,EAAE,CAClB,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE;gBAC1D,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CACjC,CAAA;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,QAAQ,CAAA;YACjB,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CACb,qCAAqC,QAAQ,CAAC,OAAO,aAAa,QAAQ,CAAC,OAAO,EAAE,CACrF,CAAA;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,SAA+B,EAAE;QAChD,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CACtE,OAAO,CACwC,CAAA;QAEjD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAC9C,CAAA;QAED,OAAO,OAAO,CAAC,IAAI,EAAE,CAAA;IACvB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,MAA2B;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAClD,OAAO,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACnC,CAAC;IAED;;;OAGG;IACH,iBAAiB;QACf,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CACtE,OAAO,CACwC,CAAA;QAEjD,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAA;QACpE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAChB,MAA8B;QAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAE3D,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC;YAClD,GAAG,MAAM;YACT,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SACnC,CAAC,CAAA;QAEF,MAAM,EAAE,eAAe,EAAE,GAAG,eAAe,CAAA;QAC3C,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACpE,CAAC;QAED,IAAI,eAAe,CAAC,QAAQ,IAAI,eAAe,CAAC,YAAY,EAAE,CAAC;YAC7D,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAChC,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,YAAY,CAAC,EACxD,MAAM,CAAC,QAAQ,CAAC,OAAO,CACxB,CAAA;QACH,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC9D,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAC3B,eAAe,CAAC,YAAY,EAC5B,MAAM,CAAC,QAAQ,CAAC,OAAO,CACxB,CAAA;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,MAAyB;QACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;QACzC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAE3D,OAAO,QAAQ,CAAC,WAAW,CACzB,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,KAAK,CACb,CAAA;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CACjB,MAA2B;QAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAE3D,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC;YACpD,GAAG,MAAM;YACT,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SACnC,CAAC,CAAA;QAEF,MAAM,EAAE,eAAe,EAAE,GAAG,gBAAgB,CAAA;QAC5C,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAA;QACH,CAAC;QAED,6DAA6D;QAC7D,IAAI,eAAe,CAAC,QAAQ,IAAI,eAAe,CAAC,aAAa,EAAE,CAAC;YAC9D,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAChC,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,aAAa,CAAC,EACzD,MAAM,CAAC,QAAQ,CAAC,OAAO,CACxB,CAAA;QACH,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QAC/D,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAC3B,eAAe,CAAC,aAAa,EAC7B,MAAM,CAAC,QAAQ,CAAC,OAAO,CACxB,CAAA;IACH,CAAC;CACF"}
|
|
@@ -4,38 +4,46 @@ import { createMockLendProvider } from '../../../test/MockLendProvider.js';
|
|
|
4
4
|
import { getRandomAddress } from '../../../test/utils.js';
|
|
5
5
|
describe('ActionsLendNamespace', () => {
|
|
6
6
|
let mockProvider;
|
|
7
|
+
let mockMarketId;
|
|
7
8
|
beforeEach(() => {
|
|
8
|
-
|
|
9
|
+
mockMarketId = { address: getRandomAddress(), chainId: 130 };
|
|
10
|
+
mockProvider = createMockLendProvider({
|
|
11
|
+
marketAllowlist: [
|
|
12
|
+
{
|
|
13
|
+
address: mockMarketId.address,
|
|
14
|
+
chainId: mockMarketId.chainId,
|
|
15
|
+
name: 'Test Market',
|
|
16
|
+
asset: {
|
|
17
|
+
address: { 130: getRandomAddress() },
|
|
18
|
+
metadata: { symbol: 'USDC', name: 'USD Coin', decimals: 6 },
|
|
19
|
+
type: 'erc20',
|
|
20
|
+
},
|
|
21
|
+
lendProvider: 'morpho',
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
});
|
|
9
25
|
});
|
|
10
26
|
it('should create an instance with a lend provider', () => {
|
|
11
|
-
const namespace = new ActionsLendNamespace(mockProvider);
|
|
27
|
+
const namespace = new ActionsLendNamespace({ morpho: mockProvider });
|
|
12
28
|
expect(namespace).toBeInstanceOf(ActionsLendNamespace);
|
|
13
29
|
});
|
|
14
30
|
it('should delegate getMarkets to provider', async () => {
|
|
15
|
-
const namespace = new ActionsLendNamespace(mockProvider);
|
|
31
|
+
const namespace = new ActionsLendNamespace({ morpho: mockProvider });
|
|
16
32
|
const spy = vi.spyOn(mockProvider, 'getMarkets');
|
|
17
33
|
await namespace.getMarkets();
|
|
18
34
|
expect(spy).toHaveBeenCalledOnce();
|
|
19
35
|
});
|
|
20
36
|
it('should delegate getMarket to provider with correct parameters', async () => {
|
|
21
|
-
const namespace = new ActionsLendNamespace(mockProvider);
|
|
22
|
-
const marketId = getRandomAddress();
|
|
23
|
-
const chainId = 130;
|
|
37
|
+
const namespace = new ActionsLendNamespace({ morpho: mockProvider });
|
|
24
38
|
const spy = vi.spyOn(mockProvider, 'getMarket');
|
|
25
|
-
await namespace.getMarket(
|
|
26
|
-
expect(spy).toHaveBeenCalledWith(
|
|
39
|
+
await namespace.getMarket(mockMarketId);
|
|
40
|
+
expect(spy).toHaveBeenCalledWith(mockMarketId);
|
|
27
41
|
});
|
|
28
42
|
it('should delegate supportedChainIds to provider', () => {
|
|
29
|
-
const namespace = new ActionsLendNamespace(mockProvider);
|
|
43
|
+
const namespace = new ActionsLendNamespace({ morpho: mockProvider });
|
|
30
44
|
const spy = vi.spyOn(mockProvider, 'supportedChainIds');
|
|
31
45
|
namespace.supportedChainIds();
|
|
32
46
|
expect(spy).toHaveBeenCalledOnce();
|
|
33
47
|
});
|
|
34
|
-
it('should provide access to provider config', () => {
|
|
35
|
-
const namespace = new ActionsLendNamespace(mockProvider);
|
|
36
|
-
const config = namespace.config;
|
|
37
|
-
expect(config).toBeDefined();
|
|
38
|
-
expect(config.defaultSlippage || 50).toBe(50);
|
|
39
|
-
});
|
|
40
48
|
});
|
|
41
49
|
//# sourceMappingURL=ActionsLendNamespace.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionsLendNamespace.spec.js","sourceRoot":"","sources":["../../../../src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAGlD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,YAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"ActionsLendNamespace.spec.js","sourceRoot":"","sources":["../../../../src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAGlD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,YAA0B,CAAA;IAC9B,IAAI,YAA4C,CAAA;IAEhD,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,GAAG,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,GAAY,EAAE,CAAA;QAErE,YAAY,GAAG,sBAAsB,CAAC;YACpC,eAAe,EAAE;gBACf;oBACE,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE;wBACL,OAAO,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE;wBACpC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE;wBAC3D,IAAI,EAAE,OAAgB;qBACvB;oBACD,YAAY,EAAE,QAAQ;iBACvB;aACF;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,YAAmB,EAAE,CAAC,CAAA;QAE3E,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,YAAmB,EAAE,CAAC,CAAA;QAC3E,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEhD,MAAM,SAAS,CAAC,UAAU,EAAE,CAAA;QAE5B,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,YAAmB,EAAE,CAAC,CAAA;QAC3E,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAE/C,MAAM,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QAEvC,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,YAAmB,EAAE,CAAC,CAAA;QAC3E,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAA;QAEvD,SAAS,CAAC,iBAAiB,EAAE,CAAA;QAE7B,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -7,8 +7,26 @@ describe('WalletLendNamespace', () => {
|
|
|
7
7
|
const mockWalletAddress = getRandomAddress();
|
|
8
8
|
let mockProvider;
|
|
9
9
|
let mockWallet;
|
|
10
|
+
let mockMarketId;
|
|
10
11
|
beforeEach(() => {
|
|
11
|
-
|
|
12
|
+
// Create a consistent market ID for all tests
|
|
13
|
+
mockMarketId = { address: getRandomAddress(), chainId: 130 };
|
|
14
|
+
// Create mock provider with the market in its allowlist
|
|
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',
|
|
25
|
+
},
|
|
26
|
+
lendProvider: 'morpho',
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
});
|
|
12
30
|
// Create a mock SmartWallet with send and sendBatch methods
|
|
13
31
|
mockWallet = createSmartWalletMock({
|
|
14
32
|
address: mockWalletAddress,
|
|
@@ -23,11 +41,11 @@ describe('WalletLendNamespace', () => {
|
|
|
23
41
|
});
|
|
24
42
|
});
|
|
25
43
|
it('should create an instance with a lend provider and wallet', () => {
|
|
26
|
-
const namespace = new WalletLendNamespace(mockProvider, mockWallet);
|
|
44
|
+
const namespace = new WalletLendNamespace({ morpho: mockProvider }, mockWallet);
|
|
27
45
|
expect(namespace).toBeInstanceOf(WalletLendNamespace);
|
|
28
46
|
});
|
|
29
47
|
it('should inherit read operations from ActionsLendNamespace', async () => {
|
|
30
|
-
const namespace = new WalletLendNamespace(mockProvider, mockWallet);
|
|
48
|
+
const namespace = new WalletLendNamespace({ morpho: mockProvider }, mockWallet);
|
|
31
49
|
const mockMarkets = [
|
|
32
50
|
{
|
|
33
51
|
marketId: {
|
|
@@ -61,18 +79,18 @@ describe('WalletLendNamespace', () => {
|
|
|
61
79
|
vi.mocked(mockProvider.getMarkets).mockResolvedValue(mockMarkets);
|
|
62
80
|
const result = await namespace.getMarkets();
|
|
63
81
|
expect(mockProvider.getMarkets).toHaveBeenCalled();
|
|
64
|
-
expect(result).
|
|
82
|
+
expect(result).toStrictEqual(mockMarkets);
|
|
65
83
|
});
|
|
66
84
|
describe('openPosition', () => {
|
|
67
85
|
it('should call provider openPosition with wallet address as receiver', async () => {
|
|
68
|
-
const namespace = new WalletLendNamespace(mockProvider, mockWallet);
|
|
86
|
+
const namespace = new WalletLendNamespace({ morpho: mockProvider }, mockWallet);
|
|
69
87
|
const mockAsset = {
|
|
70
88
|
address: { 130: getRandomAddress() },
|
|
71
89
|
metadata: { symbol: 'USDC', name: 'USD Coin', decimals: 6 },
|
|
72
90
|
type: 'erc20',
|
|
73
91
|
};
|
|
74
92
|
const amount = 1000;
|
|
75
|
-
const marketId =
|
|
93
|
+
const marketId = mockMarketId;
|
|
76
94
|
const mockTransaction = {
|
|
77
95
|
amount: 1000000000n,
|
|
78
96
|
asset: mockAsset.address[130],
|
|
@@ -108,10 +126,10 @@ describe('WalletLendNamespace', () => {
|
|
|
108
126
|
});
|
|
109
127
|
describe('closePosition', () => {
|
|
110
128
|
it('should call provider closePosition and execute transaction for SmartWallet', async () => {
|
|
111
|
-
const namespace = new WalletLendNamespace(mockProvider, mockWallet);
|
|
129
|
+
const namespace = new WalletLendNamespace({ morpho: mockProvider }, mockWallet);
|
|
112
130
|
const closeParams = {
|
|
113
131
|
amount: 100,
|
|
114
|
-
marketId:
|
|
132
|
+
marketId: mockMarketId,
|
|
115
133
|
};
|
|
116
134
|
const mockTransaction = {
|
|
117
135
|
amount: 100n,
|
|
@@ -141,18 +159,18 @@ describe('WalletLendNamespace', () => {
|
|
|
141
159
|
});
|
|
142
160
|
});
|
|
143
161
|
it('should store the wallet reference', () => {
|
|
144
|
-
const namespace = new WalletLendNamespace(mockProvider, mockWallet);
|
|
162
|
+
const namespace = new WalletLendNamespace({ morpho: mockProvider }, mockWallet);
|
|
145
163
|
expect(namespace['wallet']).toBe(mockWallet);
|
|
146
164
|
expect(namespace['wallet'].address).toBe(mockWalletAddress);
|
|
147
165
|
});
|
|
148
166
|
it('should execute transaction with approval when present', async () => {
|
|
149
|
-
const namespace = new WalletLendNamespace(mockProvider, mockWallet);
|
|
167
|
+
const namespace = new WalletLendNamespace({ morpho: mockProvider }, mockWallet);
|
|
150
168
|
const mockAsset = {
|
|
151
169
|
address: { 130: getRandomAddress() },
|
|
152
170
|
metadata: { symbol: 'USDC', name: 'USD Coin', decimals: 6 },
|
|
153
171
|
type: 'erc20',
|
|
154
172
|
};
|
|
155
|
-
const marketId =
|
|
173
|
+
const marketId = mockMarketId;
|
|
156
174
|
const approval = {
|
|
157
175
|
to: mockAsset.address[130],
|
|
158
176
|
value: 0n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletLendNamespace.spec.js","sourceRoot":"","sources":["../../../../src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,EAAE,UAAU,IAAI,qBAAqB,EAAE,MAAM,+DAA+D,CAAA;AAGnH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,MAAM,iBAAiB,GAAG,gBAAgB,EAAE,CAAA;IAC5C,IAAI,YAA0B,CAAA;IAC9B,IAAI,UAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"WalletLendNamespace.spec.js","sourceRoot":"","sources":["../../../../src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { LendProvider } from '../../core/LendProvider.js';
|
|
2
|
+
import type { ChainManager } from '../../../services/ChainManager.js';
|
|
3
|
+
import type { LendProviderConfig } from '../../../types/actions.js';
|
|
4
|
+
import type { GetLendMarketsParams, GetMarketBalanceParams, LendClosePositionParams, LendMarket, LendMarketId, LendMarketPosition, LendOpenPositionInternalParams, LendTransaction } from '../../../types/lend/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Supported chain IDs for Aave lending
|
|
7
|
+
* @description Array of chain IDs where Aave V3 is available on Optimism Superchain
|
|
8
|
+
*/
|
|
9
|
+
export declare const SUPPORTED_CHAIN_IDS: readonly number[];
|
|
10
|
+
/**
|
|
11
|
+
* Aave lending provider implementation
|
|
12
|
+
* @description Lending provider implementation using Aave V3 protocol
|
|
13
|
+
*/
|
|
14
|
+
export declare class AaveLendProvider extends LendProvider<LendProviderConfig> {
|
|
15
|
+
protected readonly SUPPORTED_CHAIN_IDS: readonly number[];
|
|
16
|
+
private chainManager;
|
|
17
|
+
/**
|
|
18
|
+
* Create a new Aave lending provider
|
|
19
|
+
* @param config - Aave lending configuration
|
|
20
|
+
* @param chainManager - Chain manager for blockchain interactions
|
|
21
|
+
*/
|
|
22
|
+
constructor(config: LendProviderConfig, chainManager: ChainManager);
|
|
23
|
+
/**
|
|
24
|
+
* Check if market is a WETH market
|
|
25
|
+
* @param marketId - Market identifier
|
|
26
|
+
* @returns true if market is for WETH
|
|
27
|
+
* @description WETH is a predeploy at the same address on all OP Stack chains
|
|
28
|
+
*/
|
|
29
|
+
private isWETHMarket;
|
|
30
|
+
/**
|
|
31
|
+
* Open a lending position in an Aave market
|
|
32
|
+
* @description Opens a lending position by supplying assets to an Aave reserve
|
|
33
|
+
* @param params - Position opening parameters
|
|
34
|
+
* @returns Promise resolving to lending transaction details
|
|
35
|
+
*/
|
|
36
|
+
protected _openPosition(params: LendOpenPositionInternalParams): Promise<LendTransaction>;
|
|
37
|
+
/**
|
|
38
|
+
* Open position for WETH market using WETHGateway
|
|
39
|
+
* @description Deposits native ETH via WETHGateway which wraps and deposits in one tx
|
|
40
|
+
*/
|
|
41
|
+
private _openWETHPosition;
|
|
42
|
+
/**
|
|
43
|
+
* Open position for standard ERC-20 tokens
|
|
44
|
+
* @description Standard approve + supply flow for non-WETH assets
|
|
45
|
+
*/
|
|
46
|
+
private _openERC20Position;
|
|
47
|
+
/**
|
|
48
|
+
* Close a position in an Aave market
|
|
49
|
+
* @description Withdraws assets from an Aave reserve
|
|
50
|
+
* @param params - Position closing operation parameters
|
|
51
|
+
* @returns Promise resolving to withdrawal transaction details
|
|
52
|
+
*/
|
|
53
|
+
protected _closePosition(params: LendClosePositionParams): Promise<LendTransaction>;
|
|
54
|
+
/**
|
|
55
|
+
* Close position for WETH market using WETHGateway
|
|
56
|
+
* @description Withdraws aWETH, unwraps to ETH, and sends to user
|
|
57
|
+
*/
|
|
58
|
+
private _closeWETHPosition;
|
|
59
|
+
/**
|
|
60
|
+
* Close position for standard ERC-20 tokens
|
|
61
|
+
*/
|
|
62
|
+
private _closeERC20Position;
|
|
63
|
+
/**
|
|
64
|
+
* Get detailed market information
|
|
65
|
+
* @param marketId - Market identifier containing address and chainId
|
|
66
|
+
* @returns Promise resolving to market information
|
|
67
|
+
*/
|
|
68
|
+
protected _getMarket(marketId: LendMarketId): Promise<LendMarket>;
|
|
69
|
+
/**
|
|
70
|
+
* Get list of available lending markets
|
|
71
|
+
* @param params - Filtering parameters
|
|
72
|
+
* @returns Promise resolving to array of market information
|
|
73
|
+
*/
|
|
74
|
+
protected _getMarkets(params: GetLendMarketsParams): Promise<LendMarket[]>;
|
|
75
|
+
/**
|
|
76
|
+
* Get position for a specific wallet address
|
|
77
|
+
* @param params - Parameters for fetching position
|
|
78
|
+
* @returns Promise resolving to position information
|
|
79
|
+
*/
|
|
80
|
+
protected _getPosition(params: GetMarketBalanceParams): Promise<LendMarketPosition>;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=AaveLendProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AaveLendProvider.d.ts","sourceRoot":"","sources":["../../../../src/lend/providers/aave/AaveLendProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,8BAA8B,EAC9B,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAgC9B;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAA6B,SAAS,MAAM,EAAE,CAAA;AAE9E;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,kBAAkB,CAAC;IACpE,SAAS,CAAC,QAAQ,CAAC,mBAAmB,oBAAsB;IAE5D,OAAO,CAAC,YAAY,CAAc;IAElC;;;;OAIG;gBACS,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY;IAKlE;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;OAKG;cACa,aAAa,CAC3B,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAAC,eAAe,CAAC;IAgC3B;;;OAGG;YACW,iBAAiB;IAuC/B;;;OAGG;YACW,kBAAkB;IAmDhC;;;;;OAKG;cACa,cAAc,CAC5B,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,eAAe,CAAC;IA+B3B;;;OAGG;YACW,kBAAkB;IA4DhC;;OAEG;YACW,mBAAmB;IAsCjC;;;;OAIG;cACa,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAQvE;;;;OAIG;cACa,WAAW,CACzB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,UAAU,EAAE,CAAC;IAUxB;;;;OAIG;cACa,YAAY,CAC1B,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,kBAAkB,CAAC;CA6D/B"}
|