@eth-optimism/actions-sdk 0.0.4 → 0.2.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/LICENSE +1 -1
- package/dist/__mocks__/MockAssets.d.ts.map +1 -0
- package/dist/__mocks__/MockAssets.js.map +1 -0
- package/dist/__mocks__/MockPrivyClient.d.ts.map +1 -0
- package/dist/__mocks__/MockPrivyClient.js.map +1 -0
- package/dist/__mocks__/utils.d.ts.map +1 -0
- package/dist/__mocks__/utils.js.map +1 -0
- package/dist/__tests__/actions.test.d.ts.map +1 -0
- package/dist/{actions.test.js → __tests__/actions.test.js} +35 -85
- package/dist/__tests__/actions.test.js.map +1 -0
- 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/constants/assets.d.ts +19 -0
- package/dist/constants/assets.d.ts.map +1 -1
- package/dist/constants/assets.js +84 -6
- 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 +7 -3
- package/dist/constants/supportedChains.js.map +1 -1
- package/dist/core/asset/__mocks__/mockAsset.js +1 -1
- package/dist/core/asset/__mocks__/mockAsset.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{test → lend/__mocks__}/MockLendProvider.d.ts +9 -7
- package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -0
- package/dist/{test → lend/__mocks__}/MockLendProvider.js +20 -21
- package/dist/lend/__mocks__/MockLendProvider.js.map +1 -0
- package/dist/{test → lend/__mocks__}/MockMarkets.d.ts +1 -1
- package/dist/lend/__mocks__/MockMarkets.d.ts.map +1 -0
- package/dist/{test → lend/__mocks__}/MockMarkets.js +1 -1
- package/dist/lend/__mocks__/MockMarkets.js.map +1 -0
- package/dist/lend/__mocks__/mockLendTransaction.d.ts +3 -12
- package/dist/lend/__mocks__/mockLendTransaction.d.ts.map +1 -1
- package/dist/lend/__mocks__/mockLendTransaction.js +3 -19
- package/dist/lend/__mocks__/mockLendTransaction.js.map +1 -1
- package/dist/lend/core/LendProvider.d.ts +16 -3
- package/dist/lend/core/LendProvider.d.ts.map +1 -1
- package/dist/lend/core/LendProvider.js +23 -2
- package/dist/lend/core/LendProvider.js.map +1 -1
- package/dist/lend/core/__tests__/LendProvider.test.js +20 -50
- 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 +2 -9
- package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -1
- package/dist/lend/namespaces/ActionsLendNamespace.js +2 -11
- package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -1
- package/dist/lend/namespaces/BaseLendNamespace.d.ts +47 -0
- package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -0
- package/dist/lend/namespaces/BaseLendNamespace.js +58 -0
- package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -0
- package/dist/lend/namespaces/WalletLendNamespace.d.ts +8 -9
- package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -1
- package/dist/lend/namespaces/WalletLendNamespace.js +24 -31
- package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -1
- package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +25 -17
- package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -1
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts +2 -0
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts.map +1 -0
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +110 -0
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -0
- package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +37 -21
- package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -1
- package/dist/lend/providers/aave/AaveLendProvider.d.ts +74 -0
- package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -0
- package/dist/lend/providers/aave/AaveLendProvider.js +290 -0
- package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -0
- package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts +11 -0
- package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts.map +1 -0
- package/dist/lend/providers/aave/__mocks__/mockReserve.js +80 -0
- package/dist/lend/providers/aave/__mocks__/mockReserve.js.map +1 -0
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts +2 -0
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts.map +1 -0
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +315 -0
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -0
- package/dist/lend/providers/aave/abis/pool.d.ts +153 -0
- package/dist/lend/providers/aave/abis/pool.d.ts.map +1 -0
- package/dist/lend/providers/aave/abis/pool.js +79 -0
- package/dist/lend/providers/aave/abis/pool.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 +201 -0
- package/dist/lend/providers/aave/sdk.js.map +1 -0
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +4 -4
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
- package/dist/lend/providers/morpho/MorphoLendProvider.js +13 -28
- package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +6 -57
- package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/api.test.js +248 -54
- package/dist/lend/providers/morpho/__tests__/api.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/contracts.d.ts +19 -0
- package/dist/lend/providers/morpho/contracts.d.ts.map +1 -0
- package/dist/lend/providers/morpho/contracts.js +32 -0
- package/dist/lend/providers/morpho/contracts.js.map +1 -0
- 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 +168 -71
- package/dist/lend/providers/morpho/sdk.js.map +1 -1
- package/dist/services/ChainManager.d.ts +1 -1
- package/dist/{test → services/__mocks__}/MockChainManager.d.ts +1 -1
- package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -0
- package/dist/services/__mocks__/MockChainManager.js.map +1 -0
- package/dist/services/tokenBalance.d.ts.map +1 -1
- package/dist/services/tokenBalance.js +4 -5
- package/dist/services/tokenBalance.js.map +1 -1
- package/dist/services/tokenBalance.spec.js +2 -2
- package/dist/services/tokenBalance.spec.js.map +1 -1
- package/dist/supported/tokens.d.ts +4 -4
- package/dist/supported/tokens.d.ts.map +1 -1
- package/dist/supported/tokens.js +5 -56
- package/dist/supported/tokens.js.map +1 -1
- package/dist/types/actions.d.ts +26 -2
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/asset.d.ts +3 -3
- package/dist/types/asset.d.ts.map +1 -1
- package/dist/types/lend/base.d.ts +10 -28
- package/dist/types/lend/base.d.ts.map +1 -1
- package/dist/types/lend/contracts.d.ts +17 -0
- package/dist/types/lend/contracts.d.ts.map +1 -0
- package/dist/types/lend/contracts.js +2 -0
- package/dist/types/lend/contracts.js.map +1 -0
- package/dist/types/lend/index.d.ts +1 -0
- package/dist/types/lend/index.d.ts.map +1 -1
- package/dist/types/lend/index.js +1 -0
- package/dist/types/lend/index.js.map +1 -1
- package/dist/utils/assets.d.ts +7 -1
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/assets.js +12 -1
- package/dist/utils/assets.js.map +1 -1
- package/dist/utils/assets.test.js +1 -1
- package/dist/utils/assets.test.js.map +1 -1
- package/dist/utils/constants.d.ts +5 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +5 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
- package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +13 -13
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
- package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +12 -12
- 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 +2 -2
- 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 +39 -16
- 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/abstract/__tests__/Wallet.spec.js +2 -2
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
- package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js +2 -2
- package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.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 +4 -4
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js +1 -1
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js +1 -1
- package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.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 +7 -6
- 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/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +2 -2
- 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 +5 -4
- 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/privy/__tests__/PrivyWallet.spec.js +3 -3
- 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 +2 -2
- package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.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/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -2
- package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.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/__mocks__/DynamicHostedWalletProviderMock.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +22 -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/__mocks__/PrivyHostedWalletProviderMock.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js +1 -1
- package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +8 -4
- 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 +7 -4
- 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/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +1 -1
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.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/dynamic/__tests__/DynamicWallet.spec.js +2 -2
- package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.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/privy/__tests__/PrivyWallet.spec.js +2 -2
- package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +1 -1
- package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.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/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -2
- package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -1
- package/package.json +4 -1
- package/src/{test → __mocks__}/MockPrivyClient.ts +1 -1
- package/src/{actions.test.ts → __tests__/actions.test.ts} +34 -95
- package/src/actions.ts +82 -26
- package/src/constants/assets.ts +92 -8
- package/src/constants/supportedChains.ts +10 -2
- package/src/core/asset/__mocks__/mockAsset.ts +1 -1
- package/src/index.ts +2 -3
- package/src/{test → lend/__mocks__}/MockLendProvider.ts +24 -27
- package/src/{test → lend/__mocks__}/MockMarkets.ts +1 -1
- package/src/lend/__mocks__/mockLendTransaction.ts +4 -26
- package/src/lend/core/LendProvider.ts +40 -7
- package/src/lend/core/__tests__/LendProvider.test.ts +21 -63
- package/src/lend/index.ts +1 -0
- package/src/lend/namespaces/ActionsLendNamespace.ts +2 -21
- package/src/lend/namespaces/BaseLendNamespace.ts +89 -0
- package/src/lend/namespaces/WalletLendNamespace.ts +39 -55
- package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +29 -22
- package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +137 -0
- package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +61 -26
- package/src/lend/providers/aave/AaveLendProvider.ts +395 -0
- package/src/lend/providers/aave/__mocks__/mockReserve.ts +84 -0
- package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +419 -0
- package/src/lend/providers/aave/abis/pool.ts +81 -0
- package/src/lend/providers/aave/addresses.ts +95 -0
- package/src/lend/providers/aave/sdk.ts +307 -0
- package/src/lend/providers/morpho/MorphoLendProvider.ts +23 -44
- package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +13 -85
- package/src/lend/providers/morpho/__tests__/api.test.ts +277 -51
- package/src/lend/providers/morpho/__tests__/sdk.test.ts +1 -0
- package/src/lend/providers/morpho/contracts.ts +37 -0
- package/src/lend/providers/morpho/sdk.ts +235 -87
- package/src/services/tokenBalance.spec.ts +2 -2
- package/src/services/tokenBalance.ts +6 -7
- package/src/supported/tokens.ts +6 -57
- package/src/types/actions.ts +30 -2
- package/src/types/asset.ts +3 -3
- package/src/types/lend/base.ts +14 -33
- package/src/types/lend/contracts.ts +18 -0
- package/src/types/lend/index.ts +1 -0
- package/src/utils/assets.test.ts +1 -1
- package/src/utils/assets.ts +15 -1
- package/src/utils/constants.ts +4 -0
- package/src/wallet/core/namespace/WalletNamespace.ts +2 -4
- package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +15 -15
- package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +14 -14
- package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +15 -4
- package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +3 -3
- 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 +45 -55
- package/src/wallet/core/wallets/abstract/Wallet.ts +25 -17
- package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +2 -2
- package/src/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.ts +2 -2
- package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +17 -10
- package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +7 -10
- package/src/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.ts +1 -1
- package/src/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.ts +1 -1
- package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +13 -5
- package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +8 -8
- package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +6 -4
- package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +3 -3
- package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +13 -4
- package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +5 -5
- package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +18 -6
- package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +4 -4
- package/src/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +2 -2
- package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +16 -5
- package/src/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -2
- package/src/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +1 -1
- package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +8 -4
- package/src/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.ts +1 -1
- package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +31 -17
- package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +8 -4
- package/src/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.ts +1 -1
- package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +10 -11
- package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +8 -4
- package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +7 -8
- package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +6 -6
- package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +5 -7
- 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/dynamic/__tests__/DynamicWallet.spec.ts +2 -2
- package/src/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.ts +1 -1
- package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +12 -5
- package/src/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +2 -2
- package/src/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +1 -1
- package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +12 -5
- package/src/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -2
- package/src/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +1 -1
- package/dist/actions.test.d.ts.map +0 -1
- package/dist/actions.test.js.map +0 -1
- 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/dist/test/MockAssets.d.ts.map +0 -1
- package/dist/test/MockAssets.js.map +0 -1
- package/dist/test/MockChainManager.d.ts.map +0 -1
- package/dist/test/MockChainManager.js.map +0 -1
- package/dist/test/MockLendProvider.d.ts.map +0 -1
- package/dist/test/MockLendProvider.js.map +0 -1
- package/dist/test/MockMarkets.d.ts.map +0 -1
- package/dist/test/MockMarkets.js.map +0 -1
- package/dist/test/MockPrivyClient.d.ts.map +0 -1
- package/dist/test/MockPrivyClient.js.map +0 -1
- package/dist/test/utils.d.ts.map +0 -1
- package/dist/test/utils.js.map +0 -1
- package/src/constants/config.ts +0 -9
- /package/dist/{test → __mocks__}/MockAssets.d.ts +0 -0
- /package/dist/{test → __mocks__}/MockAssets.js +0 -0
- /package/dist/{test → __mocks__}/MockPrivyClient.d.ts +0 -0
- /package/dist/{test → __mocks__}/MockPrivyClient.js +0 -0
- /package/dist/{test → __mocks__}/utils.d.ts +0 -0
- /package/dist/{test → __mocks__}/utils.js +0 -0
- /package/dist/{actions.test.d.ts → __tests__/actions.test.d.ts} +0 -0
- /package/dist/{test → services/__mocks__}/MockChainManager.js +0 -0
- /package/src/{test → __mocks__}/MockAssets.ts +0 -0
- /package/src/{test → __mocks__}/utils.ts +0 -0
- /package/src/{test → services/__mocks__}/MockChainManager.ts +0 -0
package/src/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { Actions } from '@/actions.js'
|
|
2
|
-
export { ETH } from '@/constants/assets.js'
|
|
2
|
+
export { ETH, MORPHO, USDC, USDC_DEMO, WETH } from '@/constants/assets.js'
|
|
3
3
|
export type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
4
4
|
export * from '@/core/error/errors.js'
|
|
5
5
|
export { LendProvider, MorphoLendProvider } from '@/lend/index.js'
|
|
@@ -12,7 +12,6 @@ export type {
|
|
|
12
12
|
ActionsConfig,
|
|
13
13
|
ApyBreakdown,
|
|
14
14
|
Asset,
|
|
15
|
-
BaseLendConfig,
|
|
16
15
|
EOATransactionReceipt,
|
|
17
16
|
LendConfig,
|
|
18
17
|
LendMarket,
|
|
@@ -22,9 +21,9 @@ export type {
|
|
|
22
21
|
LendMarketPosition,
|
|
23
22
|
LendMarketSupply,
|
|
24
23
|
LendOptions,
|
|
24
|
+
LendProviderConfig,
|
|
25
25
|
LendTransaction,
|
|
26
26
|
LendTransactionReceipt,
|
|
27
|
-
MorphoLendConfig,
|
|
28
27
|
TokenBalance,
|
|
29
28
|
TransactionData,
|
|
30
29
|
UserOperationTransactionReceipt,
|
|
@@ -2,6 +2,9 @@ import type { Address } from 'viem'
|
|
|
2
2
|
import { type MockedFunction, vi } from 'vitest'
|
|
3
3
|
|
|
4
4
|
import { LendProvider } from '@/lend/core/LendProvider.js'
|
|
5
|
+
import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
|
|
6
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
5
8
|
import type { Asset } from '@/types/asset.js'
|
|
6
9
|
import type {
|
|
7
10
|
ClosePositionParams,
|
|
@@ -9,13 +12,11 @@ import type {
|
|
|
9
12
|
GetLendMarketsParams,
|
|
10
13
|
GetMarketBalanceParams,
|
|
11
14
|
LendClosePositionParams,
|
|
12
|
-
LendConfig,
|
|
13
15
|
LendMarket,
|
|
14
16
|
LendMarketId,
|
|
15
17
|
LendMarketPosition,
|
|
16
18
|
LendOpenPositionInternalParams,
|
|
17
19
|
LendOpenPositionParams,
|
|
18
|
-
LendOptions,
|
|
19
20
|
LendTransaction,
|
|
20
21
|
} from '@/types/lend/index.js'
|
|
21
22
|
|
|
@@ -29,7 +30,7 @@ export interface MockLendProviderConfig {
|
|
|
29
30
|
* Mock Lend Provider for testing
|
|
30
31
|
* @description Provides a mock implementation of LendProvider following MockChainManager pattern
|
|
31
32
|
*/
|
|
32
|
-
export class MockLendProvider extends LendProvider<
|
|
33
|
+
export class MockLendProvider extends LendProvider<LendProviderConfig> {
|
|
33
34
|
public openPosition: MockedFunction<
|
|
34
35
|
(params: LendOpenPositionParams) => Promise<LendTransaction>
|
|
35
36
|
>
|
|
@@ -55,7 +56,6 @@ export class MockLendProvider extends LendProvider<LendConfig> {
|
|
|
55
56
|
amount: bigint,
|
|
56
57
|
chainId: number,
|
|
57
58
|
marketId?: string,
|
|
58
|
-
options?: LendOptions,
|
|
59
59
|
) => Promise<LendTransaction>
|
|
60
60
|
>
|
|
61
61
|
|
|
@@ -71,10 +71,14 @@ export class MockLendProvider extends LendProvider<LendConfig> {
|
|
|
71
71
|
private mockConfig: MockLendProviderConfig
|
|
72
72
|
|
|
73
73
|
constructor(
|
|
74
|
-
config?:
|
|
74
|
+
config?: LendProviderConfig,
|
|
75
75
|
mockConfig?: Partial<MockLendProviderConfig>,
|
|
76
|
+
chainManager?: ChainManager,
|
|
76
77
|
) {
|
|
77
|
-
super(
|
|
78
|
+
super(
|
|
79
|
+
config || {},
|
|
80
|
+
chainManager || (new MockChainManager() as unknown as ChainManager),
|
|
81
|
+
)
|
|
78
82
|
|
|
79
83
|
this.mockConfig = {
|
|
80
84
|
supportedChains: mockConfig?.supportedChains ?? [84532],
|
|
@@ -187,7 +191,7 @@ export class MockLendProvider extends LendProvider<LendConfig> {
|
|
|
187
191
|
params: LendClosePositionParams,
|
|
188
192
|
): Promise<LendTransaction> {
|
|
189
193
|
const assetAddress = params.asset?.address[params.marketId.chainId]
|
|
190
|
-
if (!assetAddress) {
|
|
194
|
+
if (!assetAddress || assetAddress === 'native') {
|
|
191
195
|
throw new Error(`Asset not supported on chain ${params.marketId.chainId}`)
|
|
192
196
|
}
|
|
193
197
|
|
|
@@ -196,7 +200,6 @@ export class MockLendProvider extends LendProvider<LendConfig> {
|
|
|
196
200
|
params.amount,
|
|
197
201
|
params.marketId.chainId,
|
|
198
202
|
params.marketId.address,
|
|
199
|
-
params.options,
|
|
200
203
|
)
|
|
201
204
|
}
|
|
202
205
|
|
|
@@ -204,11 +207,10 @@ export class MockLendProvider extends LendProvider<LendConfig> {
|
|
|
204
207
|
amount,
|
|
205
208
|
asset,
|
|
206
209
|
marketId,
|
|
207
|
-
options,
|
|
208
210
|
}: LendOpenPositionParams): Promise<LendTransaction> {
|
|
209
211
|
// Get asset address for the chain
|
|
210
212
|
const assetAddress = asset.address[marketId.chainId]
|
|
211
|
-
if (!assetAddress) {
|
|
213
|
+
if (!assetAddress || assetAddress === 'native') {
|
|
212
214
|
throw new Error(`Asset not supported on chain ${marketId.chainId}`)
|
|
213
215
|
}
|
|
214
216
|
|
|
@@ -220,14 +222,13 @@ export class MockLendProvider extends LendProvider<LendConfig> {
|
|
|
220
222
|
asset: assetAddress,
|
|
221
223
|
marketId: marketId.address,
|
|
222
224
|
apy: this.mockConfig.defaultApy,
|
|
223
|
-
slippage: options?.slippage || this._config.defaultSlippage || 50,
|
|
224
225
|
transactionData: {
|
|
225
226
|
approval: {
|
|
226
227
|
to: assetAddress,
|
|
227
228
|
data: '0x095ea7b3' as Address,
|
|
228
229
|
value: 0n,
|
|
229
230
|
},
|
|
230
|
-
|
|
231
|
+
position: {
|
|
231
232
|
to: marketId.address,
|
|
232
233
|
data: '0x6e553f65' as Address,
|
|
233
234
|
value: 0n,
|
|
@@ -240,11 +241,10 @@ export class MockLendProvider extends LendProvider<LendConfig> {
|
|
|
240
241
|
amountWei,
|
|
241
242
|
asset,
|
|
242
243
|
marketId,
|
|
243
|
-
options,
|
|
244
244
|
}: LendOpenPositionInternalParams): Promise<LendTransaction> {
|
|
245
245
|
// Get asset address for the chain
|
|
246
246
|
const assetAddress = asset.address[marketId.chainId]
|
|
247
|
-
if (!assetAddress) {
|
|
247
|
+
if (!assetAddress || assetAddress === 'native') {
|
|
248
248
|
throw new Error(`Asset not supported on chain ${marketId.chainId}`)
|
|
249
249
|
}
|
|
250
250
|
|
|
@@ -253,14 +253,13 @@ export class MockLendProvider extends LendProvider<LendConfig> {
|
|
|
253
253
|
asset: assetAddress,
|
|
254
254
|
marketId: marketId.address,
|
|
255
255
|
apy: this.mockConfig.defaultApy,
|
|
256
|
-
slippage: options?.slippage || this._config.defaultSlippage || 50,
|
|
257
256
|
transactionData: {
|
|
258
257
|
approval: {
|
|
259
258
|
to: assetAddress,
|
|
260
259
|
data: '0x095ea7b3' as Address,
|
|
261
260
|
value: 0n,
|
|
262
261
|
},
|
|
263
|
-
|
|
262
|
+
position: {
|
|
264
263
|
to: marketId.address,
|
|
265
264
|
data: '0x6e553f65' as Address,
|
|
266
265
|
value: 0n,
|
|
@@ -335,21 +334,21 @@ export class MockLendProvider extends LendProvider<LendConfig> {
|
|
|
335
334
|
amount,
|
|
336
335
|
asset,
|
|
337
336
|
marketId,
|
|
338
|
-
options,
|
|
339
337
|
}: ClosePositionParams): Promise<LendTransaction> {
|
|
340
338
|
// If asset provided, use its address for the chain; otherwise use a mock asset
|
|
341
|
-
const
|
|
342
|
-
|
|
343
|
-
|
|
339
|
+
const rawAddress = asset?.address[marketId.chainId]
|
|
340
|
+
const assetAddress: Address =
|
|
341
|
+
rawAddress && rawAddress !== 'native'
|
|
342
|
+
? rawAddress
|
|
343
|
+
: ('0x1234567890123456789012345678901234567890' as Address)
|
|
344
344
|
|
|
345
345
|
return {
|
|
346
346
|
amount: BigInt(amount),
|
|
347
347
|
asset: assetAddress,
|
|
348
348
|
marketId: marketId.address,
|
|
349
349
|
apy: 0,
|
|
350
|
-
slippage: options?.slippage || this._config.defaultSlippage || 50,
|
|
351
350
|
transactionData: {
|
|
352
|
-
|
|
351
|
+
position: {
|
|
353
352
|
to: marketId.address,
|
|
354
353
|
data: '0xb460af94' as Address,
|
|
355
354
|
value: 0n,
|
|
@@ -361,18 +360,16 @@ export class MockLendProvider extends LendProvider<LendConfig> {
|
|
|
361
360
|
private async createMockWithdraw(
|
|
362
361
|
asset: Address,
|
|
363
362
|
amount: bigint,
|
|
364
|
-
|
|
363
|
+
_chainId: number,
|
|
365
364
|
marketId?: string,
|
|
366
|
-
options?: LendOptions,
|
|
367
365
|
): Promise<LendTransaction> {
|
|
368
366
|
return {
|
|
369
367
|
amount,
|
|
370
368
|
asset,
|
|
371
369
|
marketId: marketId || 'mock-market',
|
|
372
370
|
apy: 0,
|
|
373
|
-
slippage: options?.slippage || this._config.defaultSlippage || 50,
|
|
374
371
|
transactionData: {
|
|
375
|
-
|
|
372
|
+
position: {
|
|
376
373
|
to:
|
|
377
374
|
(marketId as Address) ||
|
|
378
375
|
('0x1234567890123456789012345678901234567890' as Address),
|
|
@@ -390,7 +387,7 @@ export class MockLendProvider extends LendProvider<LendConfig> {
|
|
|
390
387
|
* @returns MockLendProvider instance
|
|
391
388
|
*/
|
|
392
389
|
export function createMockLendProvider(
|
|
393
|
-
config?:
|
|
390
|
+
config?: LendProviderConfig,
|
|
394
391
|
mockConfig?: Partial<MockLendProviderConfig>,
|
|
395
392
|
): MockLendProvider {
|
|
396
393
|
return new MockLendProvider(config, mockConfig)
|
|
@@ -3,14 +3,14 @@ import type { Address } from 'viem'
|
|
|
3
3
|
import type { LendTransaction, TransactionData } from '@/types/lend/index.js'
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* Creates a mock lend transaction for testing
|
|
6
|
+
* Creates a mock lend transaction for testing
|
|
7
7
|
*/
|
|
8
|
-
export function
|
|
8
|
+
export function createMockLendTransaction(params: {
|
|
9
9
|
amount: bigint
|
|
10
10
|
asset: Address
|
|
11
11
|
marketId: Address
|
|
12
12
|
approval?: TransactionData
|
|
13
|
-
|
|
13
|
+
position: TransactionData
|
|
14
14
|
}): LendTransaction {
|
|
15
15
|
return {
|
|
16
16
|
amount: params.amount,
|
|
@@ -19,29 +19,7 @@ export function createMockOpenTransaction(params: {
|
|
|
19
19
|
apy: 0.05,
|
|
20
20
|
transactionData: {
|
|
21
21
|
approval: params.approval,
|
|
22
|
-
|
|
22
|
+
position: params.position,
|
|
23
23
|
},
|
|
24
|
-
slippage: 50,
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Creates a mock lend transaction for testing closePosition
|
|
30
|
-
*/
|
|
31
|
-
export function createMockCloseTransaction(params: {
|
|
32
|
-
amount: bigint
|
|
33
|
-
asset: Address
|
|
34
|
-
marketId: Address
|
|
35
|
-
closePosition: TransactionData
|
|
36
|
-
}): LendTransaction {
|
|
37
|
-
return {
|
|
38
|
-
amount: params.amount,
|
|
39
|
-
asset: params.asset,
|
|
40
|
-
marketId: params.marketId,
|
|
41
|
-
apy: 0.05,
|
|
42
|
-
transactionData: {
|
|
43
|
-
closePosition: params.closePosition,
|
|
44
|
-
},
|
|
45
|
-
slippage: 50,
|
|
46
24
|
}
|
|
47
25
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { Address } from 'viem'
|
|
2
|
-
import { parseUnits } from 'viem'
|
|
2
|
+
import { encodeFunctionData, erc20Abi, parseUnits } from 'viem'
|
|
3
3
|
|
|
4
4
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
5
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
6
|
+
import type { LendProviderConfig } from '@/types/actions.js'
|
|
5
7
|
import type { Asset } from '@/types/asset.js'
|
|
6
8
|
import type {
|
|
7
|
-
BaseLendConfig,
|
|
8
9
|
ClosePositionParams,
|
|
9
10
|
GetLendMarketParams,
|
|
10
11
|
GetLendMarketsParams,
|
|
@@ -17,6 +18,7 @@ import type {
|
|
|
17
18
|
LendOpenPositionInternalParams,
|
|
18
19
|
LendOpenPositionParams,
|
|
19
20
|
LendTransaction,
|
|
21
|
+
TransactionData,
|
|
20
22
|
} from '@/types/lend/index.js'
|
|
21
23
|
import { validateMarketAsset } from '@/utils/markets.js'
|
|
22
24
|
|
|
@@ -25,11 +27,14 @@ import { validateMarketAsset } from '@/utils/markets.js'
|
|
|
25
27
|
* @description Base class for lending provider implementations
|
|
26
28
|
*/
|
|
27
29
|
export abstract class LendProvider<
|
|
28
|
-
TConfig extends
|
|
30
|
+
TConfig extends LendProviderConfig = LendProviderConfig,
|
|
29
31
|
> {
|
|
30
32
|
/** Lending provider configuration */
|
|
31
33
|
protected readonly _config: TConfig
|
|
32
34
|
|
|
35
|
+
/** Chain manager for blockchain interactions */
|
|
36
|
+
protected readonly chainManager: ChainManager
|
|
37
|
+
|
|
33
38
|
/**
|
|
34
39
|
* Supported chain IDs
|
|
35
40
|
* @description Array of chain IDs that this provider supports
|
|
@@ -39,9 +44,11 @@ export abstract class LendProvider<
|
|
|
39
44
|
/**
|
|
40
45
|
* Create a new lending provider
|
|
41
46
|
* @param config - Provider-specific lending configuration
|
|
47
|
+
* @param chainManager - Chain manager for blockchain interactions
|
|
42
48
|
*/
|
|
43
|
-
protected constructor(config: TConfig) {
|
|
49
|
+
protected constructor(config: TConfig, chainManager: ChainManager) {
|
|
44
50
|
this._config = config
|
|
51
|
+
this.chainManager = chainManager
|
|
45
52
|
}
|
|
46
53
|
|
|
47
54
|
public get config(): TConfig {
|
|
@@ -237,7 +244,7 @@ export abstract class LendProvider<
|
|
|
237
244
|
}
|
|
238
245
|
|
|
239
246
|
const foundMarket = this._config.marketAllowlist.find(
|
|
240
|
-
(allowedMarket) =>
|
|
247
|
+
(allowedMarket: LendMarketConfig) =>
|
|
241
248
|
allowedMarket.address.toLowerCase() ===
|
|
242
249
|
marketId.address.toLowerCase() &&
|
|
243
250
|
allowedMarket.chainId === marketId.chainId,
|
|
@@ -262,11 +269,37 @@ export abstract class LendProvider<
|
|
|
262
269
|
): LendMarketConfig[] {
|
|
263
270
|
let configs = this._config.marketAllowlist || []
|
|
264
271
|
if (chainId !== undefined)
|
|
265
|
-
configs = configs.filter((m) => m.chainId === chainId)
|
|
266
|
-
if (asset !== undefined)
|
|
272
|
+
configs = configs.filter((m: LendMarketConfig) => m.chainId === chainId)
|
|
273
|
+
if (asset !== undefined)
|
|
274
|
+
configs = configs.filter((m: LendMarketConfig) => m.asset === asset)
|
|
267
275
|
return configs
|
|
268
276
|
}
|
|
269
277
|
|
|
278
|
+
/**
|
|
279
|
+
* Build an ERC20 approval transaction
|
|
280
|
+
* @param tokenAddress - Address of the token to approve
|
|
281
|
+
* @param spender - Address to approve spending for
|
|
282
|
+
* @param amount - Amount to approve
|
|
283
|
+
* @returns Transaction data for the approval
|
|
284
|
+
*/
|
|
285
|
+
protected buildApprovalTx(
|
|
286
|
+
tokenAddress: Address,
|
|
287
|
+
spender: Address,
|
|
288
|
+
amount: bigint,
|
|
289
|
+
): TransactionData {
|
|
290
|
+
const approvalCallData = encodeFunctionData({
|
|
291
|
+
abi: erc20Abi,
|
|
292
|
+
functionName: 'approve',
|
|
293
|
+
args: [spender, amount],
|
|
294
|
+
})
|
|
295
|
+
|
|
296
|
+
return {
|
|
297
|
+
to: tokenAddress,
|
|
298
|
+
data: approvalCallData,
|
|
299
|
+
value: 0n,
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
270
303
|
/**
|
|
271
304
|
* Abstract methods that must be implemented by providers
|
|
272
305
|
*/
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import type { Address } from 'viem'
|
|
2
2
|
import { describe, expect, it } from 'vitest'
|
|
3
3
|
|
|
4
|
-
import { MockUSDCAsset } from '@/
|
|
5
|
-
import { MockLendProvider } from '@/
|
|
6
|
-
import type {
|
|
7
|
-
LendConfig,
|
|
8
|
-
LendMarketConfig,
|
|
9
|
-
LendMarketId,
|
|
10
|
-
} from '@/types/lend/index.js'
|
|
4
|
+
import { MockUSDCAsset } from '@/__mocks__/MockAssets.js'
|
|
5
|
+
import { MockLendProvider } from '@/lend/__mocks__/MockLendProvider.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,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { BaseLendConfig, LendConfig } from '@/types/lend/index.js'
|
|
1
|
+
import { BaseLendNamespace } from './BaseLendNamespace.js'
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* Actions Lend Namespace
|
|
6
5
|
* @description Read-only lending operations available on actions.lend
|
|
7
6
|
*/
|
|
8
|
-
export class ActionsLendNamespace
|
|
9
|
-
constructor(protected readonly provider: LendProvider<TConfig>) {}
|
|
10
|
-
|
|
11
|
-
get config(): TConfig {
|
|
12
|
-
return this.provider.config
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// Bind to the LendProvider's methods and carry types
|
|
16
|
-
|
|
17
|
-
getMarkets = (...args: Parameters<LendProvider<TConfig>['getMarkets']>) =>
|
|
18
|
-
this.provider.getMarkets(...args)
|
|
19
|
-
|
|
20
|
-
getMarket = (...args: Parameters<LendProvider<TConfig>['getMarket']>) =>
|
|
21
|
-
this.provider.getMarket(...args)
|
|
22
|
-
|
|
23
|
-
supportedChainIds = (
|
|
24
|
-
...args: Parameters<LendProvider<TConfig>['supportedChainIds']>
|
|
25
|
-
) => this.provider.supportedChainIds(...args)
|
|
26
|
-
}
|
|
7
|
+
export class ActionsLendNamespace extends BaseLendNamespace {}
|