@eth-optimism/actions-sdk 0.0.4 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions.d.ts +19 -7
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +49 -19
- package/dist/actions.js.map +1 -1
- package/dist/actions.test.js +30 -80
- package/dist/actions.test.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lend/core/LendProvider.d.ts +3 -2
- package/dist/lend/core/LendProvider.d.ts.map +1 -1
- package/dist/lend/core/LendProvider.js.map +1 -1
- package/dist/lend/core/__tests__/LendProvider.test.js +18 -48
- package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
- package/dist/lend/index.d.ts +1 -0
- package/dist/lend/index.d.ts.map +1 -1
- package/dist/lend/index.js +1 -0
- package/dist/lend/index.js.map +1 -1
- package/dist/lend/namespaces/ActionsLendNamespace.d.ts +35 -8
- package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -1
- package/dist/lend/namespaces/ActionsLendNamespace.js +45 -8
- package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -1
- package/dist/lend/namespaces/WalletLendNamespace.d.ts +35 -8
- package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -1
- package/dist/lend/namespaces/WalletLendNamespace.js +59 -11
- package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -1
- package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +23 -15
- package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -1
- package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +29 -11
- package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -1
- package/dist/lend/providers/aave/AaveLendProvider.d.ts +82 -0
- package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -0
- package/dist/lend/providers/aave/AaveLendProvider.js +346 -0
- package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -0
- package/dist/lend/providers/aave/addresses.d.ts +57 -0
- package/dist/lend/providers/aave/addresses.d.ts.map +1 -0
- package/dist/lend/providers/aave/addresses.js +83 -0
- package/dist/lend/providers/aave/addresses.js.map +1 -0
- package/dist/lend/providers/aave/sdk.d.ts +57 -0
- package/dist/lend/providers/aave/sdk.d.ts.map +1 -0
- package/dist/lend/providers/aave/sdk.js +260 -0
- package/dist/lend/providers/aave/sdk.js.map +1 -0
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +4 -3
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
- package/dist/lend/providers/morpho/MorphoLendProvider.js +2 -2
- package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +1 -33
- package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/sdk.test.js +1 -0
- package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
- package/dist/lend/providers/morpho/sdk.d.ts +4 -3
- package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
- package/dist/supported/tokens.d.ts.map +1 -1
- package/dist/supported/tokens.js +18 -2
- package/dist/supported/tokens.js.map +1 -1
- package/dist/test/MockLendProvider.d.ts +5 -4
- package/dist/test/MockLendProvider.d.ts.map +1 -1
- package/dist/test/MockLendProvider.js +5 -5
- package/dist/test/MockLendProvider.js.map +1 -1
- package/dist/types/actions.d.ts +26 -2
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/lend/base.d.ts +6 -19
- package/dist/types/lend/base.d.ts.map +1 -1
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +9 -9
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
- package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +8 -8
- package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +12 -3
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +3 -2
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/hosted/types/index.d.ts +8 -2
- package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +14 -6
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +10 -6
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +36 -13
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts +19 -7
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.js +9 -7
- package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +9 -3
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +4 -4
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +1 -1
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +10 -3
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +5 -3
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +4 -3
- package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +5 -4
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +9 -2
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -3
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +4 -3
- package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +10 -3
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +5 -4
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +8 -2
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -2
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -3
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +19 -7
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +6 -2
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -3
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +7 -3
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +6 -2
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -3
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +6 -3
- package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +6 -6
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +6 -2
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +3 -3
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +6 -0
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +6 -2
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +6 -2
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
- package/package.json +4 -1
- package/src/actions.test.ts +32 -93
- package/src/actions.ts +82 -26
- package/src/index.ts +1 -2
- package/src/lend/core/LendProvider.ts +6 -5
- package/src/lend/core/__tests__/LendProvider.test.ts +19 -61
- package/src/lend/index.ts +1 -0
- package/src/lend/namespaces/ActionsLendNamespace.ts +77 -13
- package/src/lend/namespaces/WalletLendNamespace.ts +98 -18
- package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +24 -18
- package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +49 -11
- package/src/lend/providers/aave/AaveLendProvider.ts +463 -0
- package/src/lend/providers/aave/addresses.ts +95 -0
- package/src/lend/providers/aave/sdk.ts +369 -0
- package/src/lend/providers/morpho/MorphoLendProvider.ts +5 -5
- package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +5 -53
- package/src/lend/providers/morpho/__tests__/sdk.test.ts +1 -0
- package/src/lend/providers/morpho/sdk.ts +3 -3
- package/src/supported/tokens.ts +24 -2
- package/src/test/MockLendProvider.ts +9 -9
- package/src/types/actions.ts +30 -2
- package/src/types/lend/base.ts +6 -22
- package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +9 -9
- package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +8 -8
- package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +15 -4
- package/src/wallet/core/providers/hosted/types/index.ts +8 -2
- package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +24 -9
- package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +38 -46
- package/src/wallet/core/wallets/abstract/Wallet.ts +25 -17
- package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +17 -10
- package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +4 -7
- package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +13 -5
- package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +4 -4
- package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +6 -4
- package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +13 -4
- package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +4 -4
- package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +18 -6
- package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +16 -5
- package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +8 -4
- package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +25 -14
- package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +8 -4
- package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +7 -7
- package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +8 -4
- package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +6 -7
- package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +6 -6
- package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +12 -5
- package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +6 -0
- package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +12 -5
- package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +12 -5
- package/dist/constants/config.d.ts +0 -10
- package/dist/constants/config.d.ts.map +0 -1
- package/dist/constants/config.js +0 -10
- package/dist/constants/config.js.map +0 -1
- package/src/constants/config.ts +0 -9
|
@@ -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"}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
import { encodeFunctionData, erc20Abi, formatUnits, parseAbi } from 'viem';
|
|
2
|
+
import { LendProvider } from '../../core/LendProvider.js';
|
|
3
|
+
import { getAssetAddress } from '../../../utils/assets.js';
|
|
4
|
+
import { getPoolAddress, getSupportedChainIds, getWETHGatewayAddress, } from './addresses.js';
|
|
5
|
+
import { getReserve, getReserves } from './sdk.js';
|
|
6
|
+
/**
|
|
7
|
+
* WETH predeploy address on OP Stack chains
|
|
8
|
+
* @description WETH is deployed at the same address on all OP Stack chains (Optimism, Base, etc.)
|
|
9
|
+
*/
|
|
10
|
+
const WETH_ADDRESS = '0x4200000000000000000000000000000000000006';
|
|
11
|
+
/**
|
|
12
|
+
* Aave Pool ABI - only the functions we need
|
|
13
|
+
*/
|
|
14
|
+
const POOL_ABI = parseAbi([
|
|
15
|
+
'function supply(address asset, uint256 amount, address onBehalfOf, uint16 referralCode)',
|
|
16
|
+
'function withdraw(address asset, uint256 amount, address to) returns (uint256)',
|
|
17
|
+
]);
|
|
18
|
+
/**
|
|
19
|
+
* Aave WETHGateway ABI - for native ETH deposits/withdrawals
|
|
20
|
+
*/
|
|
21
|
+
const WETH_GATEWAY_ABI = parseAbi([
|
|
22
|
+
'function depositETH(address pool, address onBehalfOf, uint16 referralCode) payable',
|
|
23
|
+
'function withdrawETH(address pool, uint256 amount, address to)',
|
|
24
|
+
]);
|
|
25
|
+
/**
|
|
26
|
+
* Supported chain IDs for Aave lending
|
|
27
|
+
* @description Array of chain IDs where Aave V3 is available on Optimism Superchain
|
|
28
|
+
*/
|
|
29
|
+
export const SUPPORTED_CHAIN_IDS = getSupportedChainIds();
|
|
30
|
+
/**
|
|
31
|
+
* Aave lending provider implementation
|
|
32
|
+
* @description Lending provider implementation using Aave V3 protocol
|
|
33
|
+
*/
|
|
34
|
+
export class AaveLendProvider extends LendProvider {
|
|
35
|
+
/**
|
|
36
|
+
* Create a new Aave lending provider
|
|
37
|
+
* @param config - Aave lending configuration
|
|
38
|
+
* @param chainManager - Chain manager for blockchain interactions
|
|
39
|
+
*/
|
|
40
|
+
constructor(config, chainManager) {
|
|
41
|
+
super(config);
|
|
42
|
+
this.SUPPORTED_CHAIN_IDS = SUPPORTED_CHAIN_IDS;
|
|
43
|
+
this.chainManager = chainManager;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Check if market is a WETH market
|
|
47
|
+
* @param marketId - Market identifier
|
|
48
|
+
* @returns true if market is for WETH
|
|
49
|
+
* @description WETH is a predeploy at the same address on all OP Stack chains
|
|
50
|
+
*/
|
|
51
|
+
isWETHMarket(marketId) {
|
|
52
|
+
return marketId.address.toLowerCase() === WETH_ADDRESS.toLowerCase();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Open a lending position in an Aave market
|
|
56
|
+
* @description Opens a lending position by supplying assets to an Aave reserve
|
|
57
|
+
* @param params - Position opening parameters
|
|
58
|
+
* @returns Promise resolving to lending transaction details
|
|
59
|
+
*/
|
|
60
|
+
async _openPosition(params) {
|
|
61
|
+
try {
|
|
62
|
+
// Get Pool address for this chain
|
|
63
|
+
const poolAddress = getPoolAddress(params.marketId.chainId);
|
|
64
|
+
if (!poolAddress) {
|
|
65
|
+
throw new Error(`Aave V3 not deployed on chain ${params.marketId.chainId}`);
|
|
66
|
+
}
|
|
67
|
+
// Get market information for APY
|
|
68
|
+
const marketInfo = await this.getMarket({
|
|
69
|
+
address: params.marketId.address,
|
|
70
|
+
chainId: params.marketId.chainId,
|
|
71
|
+
});
|
|
72
|
+
// Check if this is a WETH market
|
|
73
|
+
if (this.isWETHMarket(params.marketId)) {
|
|
74
|
+
return this._openWETHPosition(params, poolAddress, marketInfo);
|
|
75
|
+
}
|
|
76
|
+
// Standard ERC-20 flow
|
|
77
|
+
return this._openERC20Position(params, poolAddress, marketInfo);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
throw new Error(`Failed to open position with ${params.amountWei} of ${params.asset.metadata.symbol}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Open position for WETH market using WETHGateway
|
|
85
|
+
* @description Deposits native ETH via WETHGateway which wraps and deposits in one tx
|
|
86
|
+
*/
|
|
87
|
+
async _openWETHPosition(params, poolAddress, marketInfo) {
|
|
88
|
+
const gatewayAddress = getWETHGatewayAddress(params.marketId.chainId);
|
|
89
|
+
if (!gatewayAddress) {
|
|
90
|
+
throw new Error(`WETHGateway not available on chain ${params.marketId.chainId}`);
|
|
91
|
+
}
|
|
92
|
+
// Generate depositETH transaction
|
|
93
|
+
const depositCallData = encodeFunctionData({
|
|
94
|
+
abi: WETH_GATEWAY_ABI,
|
|
95
|
+
functionName: 'depositETH',
|
|
96
|
+
args: [
|
|
97
|
+
poolAddress, // pool address
|
|
98
|
+
params.walletAddress, // onBehalfOf (receives aWETH)
|
|
99
|
+
0, // referralCode (0 = no referral)
|
|
100
|
+
],
|
|
101
|
+
});
|
|
102
|
+
return {
|
|
103
|
+
amount: params.amountWei,
|
|
104
|
+
asset: WETH_ADDRESS,
|
|
105
|
+
marketId: params.marketId.address,
|
|
106
|
+
apy: marketInfo.apy.total,
|
|
107
|
+
transactionData: {
|
|
108
|
+
openPosition: {
|
|
109
|
+
to: gatewayAddress,
|
|
110
|
+
data: depositCallData,
|
|
111
|
+
value: params.amountWei, // Send ETH as msg.value
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
slippage: params.options?.slippage ?? 50,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Open position for standard ERC-20 tokens
|
|
119
|
+
* @description Standard approve + supply flow for non-WETH assets
|
|
120
|
+
*/
|
|
121
|
+
async _openERC20Position(params, poolAddress, marketInfo) {
|
|
122
|
+
// Get asset address for the chain
|
|
123
|
+
const assetAddress = params.asset.address[params.marketId.chainId];
|
|
124
|
+
if (!assetAddress) {
|
|
125
|
+
throw new Error(`Asset not supported on chain ${params.marketId.chainId}`);
|
|
126
|
+
}
|
|
127
|
+
// Generate approval transaction
|
|
128
|
+
const approvalCallData = encodeFunctionData({
|
|
129
|
+
abi: erc20Abi,
|
|
130
|
+
functionName: 'approve',
|
|
131
|
+
args: [poolAddress, params.amountWei],
|
|
132
|
+
});
|
|
133
|
+
// Generate supply transaction
|
|
134
|
+
const supplyCallData = encodeFunctionData({
|
|
135
|
+
abi: POOL_ABI,
|
|
136
|
+
functionName: 'supply',
|
|
137
|
+
args: [
|
|
138
|
+
assetAddress, // asset
|
|
139
|
+
params.amountWei, // amount
|
|
140
|
+
params.walletAddress, // onBehalfOf
|
|
141
|
+
0, // referralCode
|
|
142
|
+
],
|
|
143
|
+
});
|
|
144
|
+
return {
|
|
145
|
+
amount: params.amountWei,
|
|
146
|
+
asset: assetAddress,
|
|
147
|
+
marketId: params.marketId.address,
|
|
148
|
+
apy: marketInfo.apy.total,
|
|
149
|
+
transactionData: {
|
|
150
|
+
approval: {
|
|
151
|
+
to: assetAddress,
|
|
152
|
+
data: approvalCallData,
|
|
153
|
+
value: 0n,
|
|
154
|
+
},
|
|
155
|
+
openPosition: {
|
|
156
|
+
to: poolAddress,
|
|
157
|
+
data: supplyCallData,
|
|
158
|
+
value: 0n,
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
slippage: params.options?.slippage ?? 50,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Close a position in an Aave market
|
|
166
|
+
* @description Withdraws assets from an Aave reserve
|
|
167
|
+
* @param params - Position closing operation parameters
|
|
168
|
+
* @returns Promise resolving to withdrawal transaction details
|
|
169
|
+
*/
|
|
170
|
+
async _closePosition(params) {
|
|
171
|
+
try {
|
|
172
|
+
// Get Pool address for this chain
|
|
173
|
+
const poolAddress = getPoolAddress(params.marketId.chainId);
|
|
174
|
+
if (!poolAddress) {
|
|
175
|
+
throw new Error(`Aave V3 not deployed on chain ${params.marketId.chainId}`);
|
|
176
|
+
}
|
|
177
|
+
const marketInfo = await this.getMarket({
|
|
178
|
+
address: params.marketId.address,
|
|
179
|
+
chainId: params.marketId.chainId,
|
|
180
|
+
});
|
|
181
|
+
// Check if this is a WETH market
|
|
182
|
+
if (this.isWETHMarket(params.marketId)) {
|
|
183
|
+
return this._closeWETHPosition(params, poolAddress, marketInfo);
|
|
184
|
+
}
|
|
185
|
+
// Standard ERC-20 flow
|
|
186
|
+
return this._closeERC20Position(params, poolAddress, marketInfo);
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
throw new Error(`Failed to close position: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Close position for WETH market using WETHGateway
|
|
194
|
+
* @description Withdraws aWETH, unwraps to ETH, and sends to user
|
|
195
|
+
*/
|
|
196
|
+
async _closeWETHPosition(params, poolAddress, marketInfo) {
|
|
197
|
+
const gatewayAddress = getWETHGatewayAddress(params.marketId.chainId);
|
|
198
|
+
if (!gatewayAddress) {
|
|
199
|
+
throw new Error(`WETHGateway not available on chain ${params.marketId.chainId}`);
|
|
200
|
+
}
|
|
201
|
+
// Get the aToken address for the underlying WETH asset
|
|
202
|
+
// Note: params.marketId.address is the underlying WETH address, not the aToken
|
|
203
|
+
const { getATokenAddress } = await import('./sdk.js');
|
|
204
|
+
const aWETHAddress = await getATokenAddress({
|
|
205
|
+
underlyingAsset: params.marketId.address,
|
|
206
|
+
chainId: params.marketId.chainId,
|
|
207
|
+
chainManager: this.chainManager,
|
|
208
|
+
});
|
|
209
|
+
// First: User must approve aWETH to WETHGateway
|
|
210
|
+
const approvalCallData = encodeFunctionData({
|
|
211
|
+
abi: erc20Abi,
|
|
212
|
+
functionName: 'approve',
|
|
213
|
+
args: [gatewayAddress, params.amount],
|
|
214
|
+
});
|
|
215
|
+
// Second: Call withdrawETH on gateway
|
|
216
|
+
const withdrawCallData = encodeFunctionData({
|
|
217
|
+
abi: WETH_GATEWAY_ABI,
|
|
218
|
+
functionName: 'withdrawETH',
|
|
219
|
+
args: [
|
|
220
|
+
poolAddress, // pool
|
|
221
|
+
params.amount, // amount
|
|
222
|
+
params.walletAddress, // to (receives native ETH)
|
|
223
|
+
],
|
|
224
|
+
});
|
|
225
|
+
return {
|
|
226
|
+
amount: params.amount,
|
|
227
|
+
asset: WETH_ADDRESS,
|
|
228
|
+
marketId: params.marketId.address,
|
|
229
|
+
apy: marketInfo.apy.total,
|
|
230
|
+
transactionData: {
|
|
231
|
+
approval: {
|
|
232
|
+
to: aWETHAddress,
|
|
233
|
+
data: approvalCallData,
|
|
234
|
+
value: 0n,
|
|
235
|
+
},
|
|
236
|
+
closePosition: {
|
|
237
|
+
to: gatewayAddress,
|
|
238
|
+
data: withdrawCallData,
|
|
239
|
+
value: 0n,
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
slippage: params.options?.slippage ?? 50,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Close position for standard ERC-20 tokens
|
|
247
|
+
*/
|
|
248
|
+
async _closeERC20Position(params, poolAddress, marketInfo) {
|
|
249
|
+
// Get asset address for the market's chain
|
|
250
|
+
const assetAddress = getAssetAddress(marketInfo.asset, params.marketId.chainId);
|
|
251
|
+
// Generate withdraw transaction
|
|
252
|
+
const withdrawCallData = encodeFunctionData({
|
|
253
|
+
abi: POOL_ABI,
|
|
254
|
+
functionName: 'withdraw',
|
|
255
|
+
args: [
|
|
256
|
+
assetAddress, // asset
|
|
257
|
+
params.amount, // amount
|
|
258
|
+
params.walletAddress, // to
|
|
259
|
+
],
|
|
260
|
+
});
|
|
261
|
+
return {
|
|
262
|
+
amount: params.amount,
|
|
263
|
+
asset: assetAddress,
|
|
264
|
+
marketId: params.marketId.address,
|
|
265
|
+
apy: marketInfo.apy.total,
|
|
266
|
+
transactionData: {
|
|
267
|
+
closePosition: {
|
|
268
|
+
to: poolAddress,
|
|
269
|
+
data: withdrawCallData,
|
|
270
|
+
value: 0n,
|
|
271
|
+
},
|
|
272
|
+
},
|
|
273
|
+
slippage: params.options?.slippage ?? 50,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Get detailed market information
|
|
278
|
+
* @param marketId - Market identifier containing address and chainId
|
|
279
|
+
* @returns Promise resolving to market information
|
|
280
|
+
*/
|
|
281
|
+
async _getMarket(marketId) {
|
|
282
|
+
return getReserve({
|
|
283
|
+
marketId,
|
|
284
|
+
chainManager: this.chainManager,
|
|
285
|
+
lendConfig: this._config,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Get list of available lending markets
|
|
290
|
+
* @param params - Filtering parameters
|
|
291
|
+
* @returns Promise resolving to array of market information
|
|
292
|
+
*/
|
|
293
|
+
async _getMarkets(params) {
|
|
294
|
+
const marketConfigs = params.markets || [];
|
|
295
|
+
return getReserves({
|
|
296
|
+
chainManager: this.chainManager,
|
|
297
|
+
lendConfig: this._config,
|
|
298
|
+
markets: marketConfigs,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Get position for a specific wallet address
|
|
303
|
+
* @param params - Parameters for fetching position
|
|
304
|
+
* @returns Promise resolving to position information
|
|
305
|
+
*/
|
|
306
|
+
async _getPosition(params) {
|
|
307
|
+
try {
|
|
308
|
+
const publicClient = this.chainManager.getPublicClient(params.marketId.chainId);
|
|
309
|
+
const market = await this._getMarket(params.marketId);
|
|
310
|
+
const poolAddress = getPoolAddress(params.marketId.chainId);
|
|
311
|
+
if (!poolAddress) {
|
|
312
|
+
throw new Error(`Aave V3 not deployed on chain ${params.marketId.chainId}`);
|
|
313
|
+
}
|
|
314
|
+
// Get the aToken address from Pool.getReserveData
|
|
315
|
+
const assetAddress = getAssetAddress(market.asset, params.marketId.chainId);
|
|
316
|
+
const reserveData = (await publicClient.readContract({
|
|
317
|
+
address: poolAddress,
|
|
318
|
+
abi: parseAbi([
|
|
319
|
+
'struct ReserveData { uint256 configuration; uint128 liquidityIndex; uint128 currentLiquidityRate; uint128 variableBorrowIndex; uint128 currentVariableBorrowRate; uint128 currentStableBorrowRate; uint40 lastUpdateTimestamp; uint16 id; address aTokenAddress; address stableDebtTokenAddress; address variableDebtTokenAddress; address interestRateStrategyAddress; uint128 accruedToTreasury; uint128 unbacked; uint128 isolationModeTotalDebt; }',
|
|
320
|
+
'function getReserveData(address asset) view returns (ReserveData)',
|
|
321
|
+
]),
|
|
322
|
+
functionName: 'getReserveData',
|
|
323
|
+
args: [assetAddress],
|
|
324
|
+
}));
|
|
325
|
+
const aTokenAddress = reserveData.aTokenAddress;
|
|
326
|
+
const balance = await publicClient.readContract({
|
|
327
|
+
address: aTokenAddress,
|
|
328
|
+
abi: erc20Abi,
|
|
329
|
+
functionName: 'balanceOf',
|
|
330
|
+
args: [params.walletAddress],
|
|
331
|
+
});
|
|
332
|
+
const balanceFormatted = formatUnits(balance, market.asset.metadata.decimals);
|
|
333
|
+
return {
|
|
334
|
+
balance,
|
|
335
|
+
balanceFormatted,
|
|
336
|
+
shares: balance, // In Aave, aTokens are 1:1 with underlying
|
|
337
|
+
sharesFormatted: balanceFormatted,
|
|
338
|
+
marketId: params.marketId,
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
catch (error) {
|
|
342
|
+
throw new Error(`Failed to get market balance for ${params.walletAddress} in market ${params.marketId.address}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=AaveLendProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AaveLendProvider.js","sourceRoot":"","sources":["../../../../src/lend/providers/aave/AaveLendProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { Address } from 'viem';
|
|
2
|
+
/**
|
|
3
|
+
* Aave V3 Pool addresses for Optimism Superchain networks
|
|
4
|
+
* @description Hardcoded Pool contract addresses for each supported chain
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Mainnet Pool addresses
|
|
8
|
+
*/
|
|
9
|
+
export declare const POOL_ADDRESSES_MAINNET: Record<number, Address>;
|
|
10
|
+
/**
|
|
11
|
+
* Testnet Pool addresses
|
|
12
|
+
*/
|
|
13
|
+
export declare const POOL_ADDRESSES_TESTNET: Record<number, Address>;
|
|
14
|
+
/**
|
|
15
|
+
* All Pool addresses (mainnet + testnet)
|
|
16
|
+
*/
|
|
17
|
+
export declare const POOL_ADDRESSES: Record<number, Address>;
|
|
18
|
+
/**
|
|
19
|
+
* Get Pool address for a given chain ID
|
|
20
|
+
* @param chainId - Chain ID
|
|
21
|
+
* @returns Pool address if supported, undefined otherwise
|
|
22
|
+
*/
|
|
23
|
+
export declare function getPoolAddress(chainId: number): Address | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Check if a chain ID has Aave V3 deployed
|
|
26
|
+
* @param chainId - Chain ID to check
|
|
27
|
+
* @returns true if Aave V3 is deployed on this chain
|
|
28
|
+
*/
|
|
29
|
+
export declare function isAaveChainSupported(chainId: number): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Get all supported chain IDs
|
|
32
|
+
* @returns Array of chain IDs with Aave V3 deployed
|
|
33
|
+
*/
|
|
34
|
+
export declare function getSupportedChainIds(): number[];
|
|
35
|
+
/**
|
|
36
|
+
* Aave V3 WETHGateway addresses for Optimism Superchain networks
|
|
37
|
+
* @description Gateway contracts that handle native ETH wrapping and depositing
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* Mainnet WETHGateway addresses
|
|
41
|
+
*/
|
|
42
|
+
export declare const WETH_GATEWAY_ADDRESSES_MAINNET: Record<number, Address>;
|
|
43
|
+
/**
|
|
44
|
+
* Testnet WETHGateway addresses
|
|
45
|
+
*/
|
|
46
|
+
export declare const WETH_GATEWAY_ADDRESSES_TESTNET: Record<number, Address>;
|
|
47
|
+
/**
|
|
48
|
+
* All WETHGateway addresses (mainnet + testnet)
|
|
49
|
+
*/
|
|
50
|
+
export declare const WETH_GATEWAY_ADDRESSES: Record<number, Address>;
|
|
51
|
+
/**
|
|
52
|
+
* Get WETHGateway address for a given chain ID
|
|
53
|
+
* @param chainId - Chain ID
|
|
54
|
+
* @returns WETHGateway address if supported, undefined otherwise
|
|
55
|
+
*/
|
|
56
|
+
export declare function getWETHGatewayAddress(chainId: number): Address | undefined;
|
|
57
|
+
//# sourceMappingURL=addresses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addresses.d.ts","sourceRoot":"","sources":["../../../../src/lend/providers/aave/addresses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAGnC;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAGjD,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAGjD,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAGzC,CAAA;AAEV;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAED;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAGzD,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAGzD,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAGjD,CAAA;AAEV;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE1E"}
|