@eth-optimism/actions-sdk 0.2.0 → 0.4.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/__mocks__/MockAssets.d.ts +17 -2
- package/dist/__mocks__/MockAssets.d.ts.map +1 -1
- package/dist/__mocks__/MockAssets.js +49 -4
- package/dist/__mocks__/MockAssets.js.map +1 -1
- package/dist/__tests__/actions.test.js +1 -5
- package/dist/__tests__/actions.test.js.map +1 -1
- package/dist/actions.d.ts +23 -9
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +68 -36
- package/dist/actions.js.map +1 -1
- package/dist/constants/assets.d.ts +217 -2
- package/dist/constants/assets.d.ts.map +1 -1
- package/dist/constants/assets.js +744 -6
- package/dist/constants/assets.js.map +1 -1
- package/dist/constants/contracts.d.ts +4 -0
- package/dist/constants/contracts.d.ts.map +1 -0
- package/dist/constants/contracts.js +3 -0
- package/dist/constants/contracts.js.map +1 -0
- package/dist/constants/providers.d.ts +6 -0
- package/dist/constants/providers.d.ts.map +1 -0
- package/dist/constants/providers.js +6 -0
- package/dist/constants/providers.js.map +1 -0
- package/dist/constants/supportedChains.d.ts +2 -2
- package/dist/constants/supportedChains.d.ts.map +1 -1
- package/dist/constants/supportedChains.js +12 -2
- package/dist/constants/supportedChains.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/lend/__mocks__/MockLendProvider.d.ts +1 -1
- package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -1
- package/dist/lend/__mocks__/MockLendProvider.js +7 -2
- package/dist/lend/__mocks__/MockLendProvider.js.map +1 -1
- package/dist/lend/core/LendProvider.d.ts +12 -14
- package/dist/lend/core/LendProvider.d.ts.map +1 -1
- package/dist/lend/core/LendProvider.js +16 -31
- package/dist/lend/core/LendProvider.js.map +1 -1
- package/dist/lend/core/__tests__/LendProvider.test.js +2 -4
- package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
- package/dist/lend/namespaces/BaseLendNamespace.d.ts +2 -6
- package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -1
- package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -1
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +7 -4
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -1
- package/dist/lend/providers/aave/AaveLendProvider.d.ts +1 -6
- package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
- package/dist/lend/providers/aave/AaveLendProvider.js +3 -6
- package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +14 -6
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -1
- package/dist/lend/providers/aave/addresses.d.ts +13 -39
- package/dist/lend/providers/aave/addresses.d.ts.map +1 -1
- package/dist/lend/providers/aave/addresses.js +65 -60
- package/dist/lend/providers/aave/addresses.js.map +1 -1
- package/dist/lend/providers/aave/sdk.d.ts +2 -2
- package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
- package/dist/lend/providers/aave/sdk.js +6 -28
- package/dist/lend/providers/aave/sdk.js.map +1 -1
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +1 -6
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
- package/dist/lend/providers/morpho/MorphoLendProvider.js +4 -13
- package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/api.test.js +52 -43
- package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/sdk.test.js +41 -41
- package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
- package/dist/lend/providers/morpho/api.d.ts +3 -3
- package/dist/lend/providers/morpho/api.d.ts.map +1 -1
- package/dist/lend/providers/morpho/api.js +2 -2
- package/dist/lend/providers/morpho/api.js.map +1 -1
- package/dist/lend/providers/morpho/contracts.d.ts +11 -10
- package/dist/lend/providers/morpho/contracts.d.ts.map +1 -1
- package/dist/lend/providers/morpho/contracts.js +43 -10
- package/dist/lend/providers/morpho/contracts.js.map +1 -1
- package/dist/lend/providers/morpho/sdk.d.ts +7 -2
- package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
- package/dist/lend/providers/morpho/sdk.js +67 -54
- package/dist/lend/providers/morpho/sdk.js.map +1 -1
- package/dist/nodeActionsFactory.d.ts +1 -1
- package/dist/reactActionsFactory.d.ts +1 -1
- package/dist/services/ChainManager.d.ts +8 -8
- package/dist/services/ChainManager.d.ts.map +1 -1
- package/dist/services/ChainManager.js.map +1 -1
- package/dist/services/__mocks__/MockChainManager.d.ts +4 -4
- package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
- package/dist/services/__mocks__/MockChainManager.js.map +1 -1
- package/dist/services/tokenBalance.d.ts +1 -1
- package/dist/services/tokenBalance.d.ts.map +1 -1
- package/dist/services/tokenBalance.js +31 -30
- package/dist/services/tokenBalance.js.map +1 -1
- package/dist/services/tokenBalance.spec.js +20 -24
- package/dist/services/tokenBalance.spec.js.map +1 -1
- package/dist/swap/__mocks__/MockSwapProvider.d.ts +50 -0
- package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -0
- package/dist/swap/__mocks__/MockSwapProvider.js +161 -0
- package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -0
- package/dist/swap/core/SwapProvider.d.ts +145 -0
- package/dist/swap/core/SwapProvider.d.ts.map +1 -0
- package/dist/swap/core/SwapProvider.js +359 -0
- package/dist/swap/core/SwapProvider.js.map +1 -0
- package/dist/swap/core/__tests__/SwapProvider.test.d.ts +2 -0
- package/dist/swap/core/__tests__/SwapProvider.test.d.ts.map +1 -0
- package/dist/swap/core/__tests__/SwapProvider.test.js +435 -0
- package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -0
- package/dist/swap/core/markets.d.ts +47 -0
- package/dist/swap/core/markets.d.ts.map +1 -0
- package/dist/swap/core/markets.js +65 -0
- package/dist/swap/core/markets.js.map +1 -0
- package/dist/swap/index.d.ts +9 -0
- package/dist/swap/index.d.ts.map +1 -0
- package/dist/swap/index.js +9 -0
- package/dist/swap/index.js.map +1 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +8 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.d.ts.map +1 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.js +8 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.js.map +1 -0
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts +73 -0
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -0
- package/dist/swap/namespaces/BaseSwapNamespace.js +181 -0
- package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -0
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts +34 -0
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -0
- package/dist/swap/namespaces/WalletSwapNamespace.js +84 -0
- package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts +2 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +1 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +245 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts +2 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +1 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +209 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +35 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.js +148 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts +2 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +258 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts +2 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.js +312 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -0
- package/dist/swap/providers/uniswap/abis.d.ts +227 -0
- package/dist/swap/providers/uniswap/abis.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/abis.js +138 -0
- package/dist/swap/providers/uniswap/abis.js.map +1 -0
- package/dist/swap/providers/uniswap/addresses.d.ts +26 -0
- package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/addresses.js +81 -0
- package/dist/swap/providers/uniswap/addresses.js.map +1 -0
- package/dist/swap/providers/uniswap/encoding.d.ts +77 -0
- package/dist/swap/providers/uniswap/encoding.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/encoding.js +233 -0
- package/dist/swap/providers/uniswap/encoding.js.map +1 -0
- package/dist/swap/providers/uniswap/markets.d.ts +19 -0
- package/dist/swap/providers/uniswap/markets.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/markets.js +48 -0
- package/dist/swap/providers/uniswap/markets.js.map +1 -0
- package/dist/swap/providers/uniswap/types.d.ts +21 -0
- package/dist/swap/providers/uniswap/types.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/types.js +2 -0
- package/dist/swap/providers/uniswap/types.js.map +1 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +49 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.js +140 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +255 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +166 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +419 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js +51 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts +14 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js +13 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js +173 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
- package/dist/swap/providers/velodrome/abis.d.ts +396 -0
- package/dist/swap/providers/velodrome/abis.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/abis.js +257 -0
- package/dist/swap/providers/velodrome/abis.js.map +1 -0
- package/dist/swap/providers/velodrome/addresses.d.ts +39 -0
- package/dist/swap/providers/velodrome/addresses.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/addresses.js +57 -0
- package/dist/swap/providers/velodrome/addresses.js.map +1 -0
- package/dist/swap/providers/velodrome/config.d.ts +22 -0
- package/dist/swap/providers/velodrome/config.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/config.js +29 -0
- package/dist/swap/providers/velodrome/config.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/helpers.d.ts +37 -0
- package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/helpers.js +60 -0
- package/dist/swap/providers/velodrome/encoding/helpers.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/index.d.ts +8 -0
- package/dist/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/index.js +5 -0
- package/dist/swap/providers/velodrome/encoding/index.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts +39 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.js +83 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +15 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.js +33 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts +40 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.js +80 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts +42 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.js +166 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
- package/dist/swap/providers/velodrome/markets.d.ts +21 -0
- package/dist/swap/providers/velodrome/markets.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/markets.js +69 -0
- package/dist/swap/providers/velodrome/markets.js.map +1 -0
- package/dist/swap/providers/velodrome/types.d.ts +31 -0
- package/dist/swap/providers/velodrome/types.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/types.js +2 -0
- package/dist/swap/providers/velodrome/types.js.map +1 -0
- package/dist/types/actions.d.ts +60 -11
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/asset.d.ts +7 -9
- package/dist/types/asset.d.ts.map +1 -1
- package/dist/types/chain.d.ts +2 -2
- package/dist/types/chain.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/lend/base.d.ts +9 -19
- package/dist/types/lend/base.d.ts.map +1 -1
- package/dist/types/lend/base.js.map +1 -1
- package/dist/types/lend/contracts.d.ts +2 -1
- package/dist/types/lend/contracts.d.ts.map +1 -1
- package/dist/types/providers.d.ts +21 -0
- package/dist/types/providers.d.ts.map +1 -0
- package/dist/types/providers.js +2 -0
- package/dist/types/providers.js.map +1 -0
- package/dist/types/swap/base.d.ts +338 -0
- package/dist/types/swap/base.d.ts.map +1 -0
- package/dist/types/swap/base.js +4 -0
- package/dist/types/swap/base.js.map +1 -0
- package/dist/types/swap/index.d.ts +2 -0
- package/dist/types/swap/index.d.ts.map +1 -0
- package/dist/types/swap/index.js +2 -0
- package/dist/types/swap/index.js.map +1 -0
- package/dist/types/transaction.d.ts +14 -0
- package/dist/types/transaction.d.ts.map +1 -0
- package/dist/types/transaction.js +2 -0
- package/dist/types/transaction.js.map +1 -0
- package/dist/utils/approve.d.ts +82 -0
- package/dist/utils/approve.d.ts.map +1 -0
- package/dist/utils/approve.js +134 -0
- package/dist/utils/approve.js.map +1 -0
- package/dist/utils/approve.test.d.ts +2 -0
- package/dist/utils/approve.test.d.ts.map +1 -0
- package/dist/utils/approve.test.js +203 -0
- package/dist/utils/approve.test.js.map +1 -0
- package/dist/utils/assets.d.ts +10 -5
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/assets.js +14 -11
- package/dist/utils/assets.js.map +1 -1
- package/dist/utils/assets.test.js +13 -1
- package/dist/utils/assets.test.js.map +1 -1
- package/dist/utils/validateAddresses.d.ts +32 -0
- package/dist/utils/validateAddresses.d.ts.map +1 -0
- package/dist/utils/validateAddresses.js +103 -0
- package/dist/utils/validateAddresses.js.map +1 -0
- package/dist/utils/validateAddresses.test.d.ts +2 -0
- package/dist/utils/validateAddresses.test.d.ts.map +1 -0
- package/dist/utils/validateAddresses.test.js +314 -0
- package/dist/utils/validateAddresses.test.js.map +1 -0
- package/dist/utils/validation.d.ts +12 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +44 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/wallet/core/namespace/WalletNamespace.d.ts +21 -9
- package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
- package/dist/wallet/core/namespace/WalletNamespace.js +44 -15
- package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +4 -10
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +2 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -7
- package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +5 -6
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +5 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +2 -2
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts +12 -12
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.js +9 -4
- package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +10 -1
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +2 -2
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +12 -4
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +5 -7
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +6 -5
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +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 +4 -6
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +2 -4
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +8 -9
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +4 -4
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +3 -6
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +4 -2
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +4 -6
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +4 -3
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -6
- 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 -6
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +7 -2
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +1 -0
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +5 -6
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +6 -2
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -0
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +5 -8
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -4
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +2 -4
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +11 -13
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +6 -6
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +7 -6
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +5 -3
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +2 -6
- 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 +5 -6
- 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 +5 -6
- 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 -3
- package/src/__mocks__/MockAssets.ts +54 -4
- package/src/__tests__/actions.test.ts +1 -5
- package/src/actions.ts +106 -71
- package/src/constants/assets.ts +792 -5
- package/src/constants/contracts.ts +5 -0
- package/src/constants/providers.ts +5 -0
- package/src/constants/supportedChains.ts +22 -2
- package/src/index.ts +76 -6
- package/src/lend/__mocks__/MockLendProvider.ts +8 -3
- package/src/lend/core/LendProvider.ts +28 -41
- package/src/lend/core/__tests__/LendProvider.test.ts +2 -5
- package/src/lend/namespaces/BaseLendNamespace.ts +2 -6
- package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +12 -5
- package/src/lend/providers/aave/AaveLendProvider.ts +3 -7
- package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +16 -7
- package/src/lend/providers/aave/addresses.ts +82 -64
- package/src/lend/providers/aave/sdk.ts +11 -36
- package/src/lend/providers/morpho/MorphoLendProvider.ts +4 -16
- package/src/lend/providers/morpho/__tests__/api.test.ts +65 -44
- package/src/lend/providers/morpho/__tests__/sdk.test.ts +43 -42
- package/src/lend/providers/morpho/api.ts +7 -4
- package/src/lend/providers/morpho/contracts.ts +62 -13
- package/src/lend/providers/morpho/sdk.ts +85 -54
- package/src/services/ChainManager.ts +12 -21
- package/src/services/__mocks__/MockChainManager.ts +4 -7
- package/src/services/tokenBalance.spec.ts +20 -24
- package/src/services/tokenBalance.ts +39 -33
- package/src/swap/__mocks__/MockSwapProvider.ts +251 -0
- package/src/swap/core/SwapProvider.ts +577 -0
- package/src/swap/core/__tests__/SwapProvider.test.ts +620 -0
- package/src/swap/core/markets.ts +104 -0
- package/src/swap/index.ts +19 -0
- package/src/swap/namespaces/ActionsSwapNamespace.ts +7 -0
- package/src/swap/namespaces/BaseSwapNamespace.ts +258 -0
- package/src/swap/namespaces/WalletSwapNamespace.ts +121 -0
- package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +365 -0
- package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +257 -0
- package/src/swap/providers/uniswap/UniswapSwapProvider.ts +217 -0
- package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +299 -0
- package/src/swap/providers/uniswap/__tests__/sdk.test.ts +369 -0
- package/src/swap/providers/uniswap/abis.ts +144 -0
- package/src/swap/providers/uniswap/addresses.ts +110 -0
- package/src/swap/providers/uniswap/encoding.ts +406 -0
- package/src/swap/providers/uniswap/markets.ts +84 -0
- package/src/swap/providers/uniswap/types.ts +25 -0
- package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +224 -0
- package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +341 -0
- package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +202 -0
- package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +506 -0
- package/src/swap/providers/velodrome/__tests__/encoding.cl.test.ts +69 -0
- package/src/swap/providers/velodrome/__tests__/encoding.helpers.ts +20 -0
- package/src/swap/providers/velodrome/__tests__/encoding.v2.test.ts +235 -0
- package/src/swap/providers/velodrome/abis.ts +264 -0
- package/src/swap/providers/velodrome/addresses.ts +107 -0
- package/src/swap/providers/velodrome/config.ts +46 -0
- package/src/swap/providers/velodrome/encoding/helpers.ts +82 -0
- package/src/swap/providers/velodrome/encoding/index.ts +7 -0
- package/src/swap/providers/velodrome/encoding/poolRouter.ts +124 -0
- package/src/swap/providers/velodrome/encoding/routers/approval.ts +45 -0
- package/src/swap/providers/velodrome/encoding/routers/cl.ts +156 -0
- package/src/swap/providers/velodrome/encoding/routers/v2.ts +267 -0
- package/src/swap/providers/velodrome/markets.ts +100 -0
- package/src/swap/providers/velodrome/types.ts +30 -0
- package/src/types/actions.ts +68 -12
- package/src/types/asset.ts +12 -9
- package/src/types/chain.ts +2 -2
- package/src/types/index.ts +2 -0
- package/src/types/lend/base.ts +10 -20
- package/src/types/lend/contracts.ts +5 -1
- package/src/types/providers.ts +22 -0
- package/src/types/swap/base.ts +372 -0
- package/src/types/swap/index.ts +1 -0
- package/src/types/transaction.ts +14 -0
- package/src/utils/approve.test.ts +258 -0
- package/src/utils/approve.ts +197 -0
- package/src/utils/assets.test.ts +16 -1
- package/src/utils/assets.ts +27 -10
- package/src/utils/validateAddresses.test.ts +439 -0
- package/src/utils/validateAddresses.ts +153 -0
- package/src/utils/validation.ts +76 -0
- package/src/wallet/core/namespace/WalletNamespace.ts +70 -16
- package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +8 -4
- package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +6 -10
- package/src/wallet/core/providers/hosted/types/index.ts +9 -7
- package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +10 -10
- package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +2 -0
- package/src/wallet/core/wallets/abstract/Wallet.ts +23 -14
- package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +13 -1
- package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +21 -5
- package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +11 -14
- package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
- package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +11 -7
- package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +16 -8
- package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
- package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +6 -7
- package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +8 -11
- package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +7 -11
- package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +11 -7
- package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +1 -0
- package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +10 -7
- package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -0
- package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +10 -9
- package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +38 -13
- package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
- package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +13 -11
- package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
- package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +11 -11
- package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +11 -11
- package/dist/supported/tokens.d.ts +0 -25
- package/dist/supported/tokens.d.ts.map +0 -1
- package/dist/supported/tokens.js +0 -37
- package/dist/supported/tokens.js.map +0 -1
- package/src/supported/tokens.ts +0 -52
|
@@ -2,12 +2,14 @@ import { UiPoolDataProvider } from '@aave/contract-helpers'
|
|
|
2
2
|
import { formatReserves } from '@aave/math-utils'
|
|
3
3
|
import { providers } from 'ethers'
|
|
4
4
|
import type { Address } from 'viem'
|
|
5
|
-
import { base, baseSepolia, optimism, optimismSepolia } from 'viem/chains'
|
|
6
5
|
|
|
7
6
|
import { WETH } from '@/constants/assets.js'
|
|
8
|
-
import type {
|
|
7
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
9
8
|
import { POOL_GET_RESERVE_DATA_ABI } from '@/lend/providers/aave/abis/pool.js'
|
|
10
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
getAaveAddresses,
|
|
11
|
+
getPoolAddress,
|
|
12
|
+
} from '@/lend/providers/aave/addresses.js'
|
|
11
13
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
12
14
|
import type { LendProviderConfig } from '@/types/actions.js'
|
|
13
15
|
import type {
|
|
@@ -18,27 +20,6 @@ import type {
|
|
|
18
20
|
} from '@/types/lend/index.js'
|
|
19
21
|
import { getAssetAddress } from '@/utils/assets.js'
|
|
20
22
|
|
|
21
|
-
/**
|
|
22
|
-
* UI Pool Data Provider addresses for each chain
|
|
23
|
-
* @description Contract addresses for UiPoolDataProvider on each supported chain
|
|
24
|
-
*/
|
|
25
|
-
const UI_POOL_DATA_PROVIDER_ADDRESSES: Record<number, Address> = {
|
|
26
|
-
[optimism.id]: '0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654',
|
|
27
|
-
[base.id]: '0xd82a47fdebB5bf5329b09441C3DaB4b5df2153Ad',
|
|
28
|
-
[optimismSepolia.id]: '0x86E2938daE289763D4e09a7e42c5cCcA62Cf9809',
|
|
29
|
-
[baseSepolia.id]: '0xBc9f5b7E248451CdD7cA54e717a2BFe1F32b566b',
|
|
30
|
-
} as const
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Pool Addresses Provider addresses for each chain
|
|
34
|
-
*/
|
|
35
|
-
const POOL_ADDRESSES_PROVIDER: Record<number, Address> = {
|
|
36
|
-
[optimism.id]: '0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb',
|
|
37
|
-
[base.id]: '0xe20fCBdBfFC4Dd138cE8b2E6FBb6CB49777ad64D',
|
|
38
|
-
[optimismSepolia.id]: '0x36616cf17557639614c1cdDb356b1B83fc0B2132',
|
|
39
|
-
[baseSepolia.id]: '0xE4C23309117Aa30342BFaae6c95c6478e0A4Ad00',
|
|
40
|
-
} as const
|
|
41
|
-
|
|
42
23
|
/**
|
|
43
24
|
* Parameters for getReserve function
|
|
44
25
|
*/
|
|
@@ -119,20 +100,14 @@ export async function getReserve(
|
|
|
119
100
|
)
|
|
120
101
|
}
|
|
121
102
|
|
|
122
|
-
const
|
|
123
|
-
if (!
|
|
103
|
+
const addresses = getAaveAddresses(params.marketId.chainId)
|
|
104
|
+
if (!addresses) {
|
|
124
105
|
throw new Error(`Aave V3 not deployed on chain ${params.marketId.chainId}`)
|
|
125
106
|
}
|
|
126
107
|
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
const poolAddressesProvider =
|
|
130
|
-
|
|
131
|
-
if (!uiPoolDataProviderAddress || !poolAddressesProvider) {
|
|
132
|
-
throw new Error(
|
|
133
|
-
`UiPoolDataProvider not configured for chain ${params.marketId.chainId}`,
|
|
134
|
-
)
|
|
135
|
-
}
|
|
108
|
+
const poolAddress = addresses.pool
|
|
109
|
+
const uiPoolDataProviderAddress = addresses.uiPoolDataProvider
|
|
110
|
+
const poolAddressesProvider = addresses.poolAddressesProvider
|
|
136
111
|
|
|
137
112
|
try {
|
|
138
113
|
// Get viem public client for this chain
|
|
@@ -264,7 +239,7 @@ export async function getReserves(
|
|
|
264
239
|
*/
|
|
265
240
|
export async function getATokenAddress(params: {
|
|
266
241
|
underlyingAsset: Address
|
|
267
|
-
chainId:
|
|
242
|
+
chainId: SupportedChainId
|
|
268
243
|
chainManager: ChainManager
|
|
269
244
|
}): Promise<Address> {
|
|
270
245
|
const poolAddress = getPoolAddress(params.chainId)
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { ChainId } from '@morpho-org/blue-sdk'
|
|
2
1
|
import { MetaMorphoAction } from '@morpho-org/blue-sdk-viem'
|
|
3
2
|
import { erc20Abi, formatUnits } from 'viem'
|
|
4
3
|
|
|
5
|
-
import { SUPPORTED_CHAIN_IDS as ACTIONS_SUPPORTED_CHAIN_IDS } from '@/constants/supportedChains.js'
|
|
6
4
|
import { LendProvider } from '@/lend/core/LendProvider.js'
|
|
5
|
+
import { getSupportedChainIds as getMorphoSupportedChainIds } from '@/lend/providers/morpho/contracts.js'
|
|
7
6
|
import { getVault, getVaults } from '@/lend/providers/morpho/sdk.js'
|
|
8
7
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
9
8
|
import type { LendProviderConfig } from '@/types/actions.js'
|
|
@@ -19,25 +18,14 @@ import type {
|
|
|
19
18
|
} from '@/types/lend/index.js'
|
|
20
19
|
import { getAssetAddress } from '@/utils/assets.js'
|
|
21
20
|
|
|
22
|
-
/**
|
|
23
|
-
* Supported chain IDs for Morpho lending
|
|
24
|
-
* @description Array of chain IDs where Morpho is available
|
|
25
|
-
*/
|
|
26
|
-
export const SUPPORTED_CHAIN_IDS = [
|
|
27
|
-
...new Set([
|
|
28
|
-
...Object.values(ChainId).filter(
|
|
29
|
-
(value): value is number => typeof value === 'number',
|
|
30
|
-
),
|
|
31
|
-
...ACTIONS_SUPPORTED_CHAIN_IDS,
|
|
32
|
-
]),
|
|
33
|
-
] as readonly number[]
|
|
34
|
-
|
|
35
21
|
/**
|
|
36
22
|
* Morpho lending provider implementation
|
|
37
23
|
* @description Lending provider implementation using Morpho protocol
|
|
38
24
|
*/
|
|
39
25
|
export class MorphoLendProvider extends LendProvider<LendProviderConfig> {
|
|
40
|
-
|
|
26
|
+
protocolSupportedChainIds(): number[] {
|
|
27
|
+
return getMorphoSupportedChainIds()
|
|
28
|
+
}
|
|
41
29
|
|
|
42
30
|
/**
|
|
43
31
|
* Create a new Morpho lending provider
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Address } from 'viem'
|
|
2
|
+
import { mainnet } from 'viem/chains'
|
|
2
3
|
import { afterEach, describe, expect, it, vi } from 'vitest'
|
|
3
4
|
|
|
5
|
+
import { MORPHO, USDC } from '@/constants/assets.js'
|
|
4
6
|
import { fetchRewards } from '@/lend/providers/morpho/api.js'
|
|
5
7
|
import {
|
|
6
8
|
calculateRewardsBreakdown,
|
|
@@ -8,6 +10,10 @@ import {
|
|
|
8
10
|
} from '@/lend/providers/morpho/sdk.js'
|
|
9
11
|
import { externalTest } from '@/utils/test.js'
|
|
10
12
|
|
|
13
|
+
const CHAIN_ID = mainnet.id
|
|
14
|
+
const USDC_ADDRESS = USDC.address[CHAIN_ID]!.toLowerCase()
|
|
15
|
+
const MORPHO_ADDRESS = MORPHO.address[CHAIN_ID]!.toLowerCase()
|
|
16
|
+
|
|
11
17
|
/**
|
|
12
18
|
* Mock API response for a vault with rewards
|
|
13
19
|
*/
|
|
@@ -18,20 +24,20 @@ const mockVaultWithRewards = {
|
|
|
18
24
|
rewards: [
|
|
19
25
|
{
|
|
20
26
|
asset: {
|
|
21
|
-
address:
|
|
27
|
+
address: USDC_ADDRESS,
|
|
22
28
|
name: 'USD Coin',
|
|
23
29
|
symbol: 'USDC',
|
|
24
|
-
chain: { id:
|
|
30
|
+
chain: { id: CHAIN_ID },
|
|
25
31
|
},
|
|
26
32
|
amountPerSuppliedToken: '1000000',
|
|
27
33
|
supplyApr: 0.025, // 2.5% APR
|
|
28
34
|
},
|
|
29
35
|
{
|
|
30
36
|
asset: {
|
|
31
|
-
address:
|
|
37
|
+
address: MORPHO_ADDRESS,
|
|
32
38
|
name: 'Morpho Token',
|
|
33
39
|
symbol: 'MORPHO',
|
|
34
|
-
chain: { id:
|
|
40
|
+
chain: { id: CHAIN_ID },
|
|
35
41
|
},
|
|
36
42
|
amountPerSuppliedToken: '500000',
|
|
37
43
|
supplyApr: 0.01, // 1% APR
|
|
@@ -50,7 +56,7 @@ const mockVaultWithRewards = {
|
|
|
50
56
|
asset: {
|
|
51
57
|
address: '0xunknown',
|
|
52
58
|
symbol: 'UNKNOWN',
|
|
53
|
-
chain: { id:
|
|
59
|
+
chain: { id: CHAIN_ID },
|
|
54
60
|
},
|
|
55
61
|
},
|
|
56
62
|
],
|
|
@@ -70,7 +76,7 @@ const mockVaultWithRewards = {
|
|
|
70
76
|
},
|
|
71
77
|
],
|
|
72
78
|
},
|
|
73
|
-
chain: { id:
|
|
79
|
+
chain: { id: CHAIN_ID },
|
|
74
80
|
}
|
|
75
81
|
|
|
76
82
|
/**
|
|
@@ -83,7 +89,7 @@ const mockVaultNoRewards = {
|
|
|
83
89
|
rewards: [],
|
|
84
90
|
allocation: [],
|
|
85
91
|
},
|
|
86
|
-
chain: { id:
|
|
92
|
+
chain: { id: CHAIN_ID },
|
|
87
93
|
}
|
|
88
94
|
|
|
89
95
|
describe('Morpho API Integration', () => {
|
|
@@ -107,7 +113,7 @@ describe('Morpho API Integration', () => {
|
|
|
107
113
|
}),
|
|
108
114
|
)
|
|
109
115
|
|
|
110
|
-
const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT)
|
|
116
|
+
const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT, CHAIN_ID)
|
|
111
117
|
|
|
112
118
|
expect(vaultData).toBeDefined()
|
|
113
119
|
expect(vaultData).not.toBeNull()
|
|
@@ -129,7 +135,7 @@ describe('Morpho API Integration', () => {
|
|
|
129
135
|
}),
|
|
130
136
|
)
|
|
131
137
|
|
|
132
|
-
const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT)
|
|
138
|
+
const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT, CHAIN_ID)
|
|
133
139
|
expect(vaultData).toBeNull()
|
|
134
140
|
})
|
|
135
141
|
|
|
@@ -139,7 +145,7 @@ describe('Morpho API Integration', () => {
|
|
|
139
145
|
vi.fn().mockRejectedValue(new Error('Network error')),
|
|
140
146
|
)
|
|
141
147
|
|
|
142
|
-
const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT)
|
|
148
|
+
const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT, CHAIN_ID)
|
|
143
149
|
expect(vaultData).toBeNull()
|
|
144
150
|
})
|
|
145
151
|
|
|
@@ -153,17 +159,17 @@ describe('Morpho API Integration', () => {
|
|
|
153
159
|
}),
|
|
154
160
|
)
|
|
155
161
|
|
|
156
|
-
const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT)
|
|
162
|
+
const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT, CHAIN_ID)
|
|
157
163
|
expect(vaultData).toBeNull()
|
|
158
164
|
})
|
|
159
165
|
})
|
|
160
166
|
|
|
161
167
|
describe('calculateRewardsBreakdown', () => {
|
|
162
|
-
it('should calculate rewards from vault-level rewards', () => {
|
|
163
|
-
const rewards = calculateRewardsBreakdown(mockVaultWithRewards)
|
|
168
|
+
it('should calculate rewards from vault-level rewards keyed by address', () => {
|
|
169
|
+
const rewards = calculateRewardsBreakdown(mockVaultWithRewards, CHAIN_ID)
|
|
164
170
|
|
|
165
|
-
expect(rewards
|
|
166
|
-
expect(rewards
|
|
171
|
+
expect(rewards[USDC_ADDRESS]).toBe(0.025)
|
|
172
|
+
expect(rewards[MORPHO_ADDRESS]).toBe(0.01)
|
|
167
173
|
expect(rewards.totalRewards).toBeCloseTo(
|
|
168
174
|
0.025 + 0.01 + 0.005 * (1000000 / 1500000),
|
|
169
175
|
6,
|
|
@@ -171,21 +177,21 @@ describe('Morpho API Integration', () => {
|
|
|
171
177
|
})
|
|
172
178
|
|
|
173
179
|
it('should return zeros for vault with no rewards', () => {
|
|
174
|
-
const rewards = calculateRewardsBreakdown(mockVaultNoRewards)
|
|
180
|
+
const rewards = calculateRewardsBreakdown(mockVaultNoRewards, CHAIN_ID)
|
|
175
181
|
|
|
176
|
-
expect(rewards
|
|
177
|
-
expect(rewards
|
|
182
|
+
expect(rewards[USDC_ADDRESS]).toBe(0)
|
|
183
|
+
expect(rewards[MORPHO_ADDRESS]).toBe(0)
|
|
178
184
|
expect(rewards.other).toBe(0)
|
|
179
185
|
expect(rewards.totalRewards).toBe(0)
|
|
180
186
|
})
|
|
181
187
|
|
|
182
|
-
it('should categorize unknown
|
|
188
|
+
it('should categorize unknown token addresses as other', () => {
|
|
183
189
|
const vaultWithUnknown = {
|
|
184
190
|
...mockVaultNoRewards,
|
|
185
191
|
state: {
|
|
186
192
|
rewards: [
|
|
187
193
|
{
|
|
188
|
-
asset: { symbol: 'RARE_TOKEN' },
|
|
194
|
+
asset: { address: '0xunknowntoken', symbol: 'RARE_TOKEN' },
|
|
189
195
|
supplyApr: 0.05,
|
|
190
196
|
},
|
|
191
197
|
],
|
|
@@ -193,7 +199,7 @@ describe('Morpho API Integration', () => {
|
|
|
193
199
|
},
|
|
194
200
|
}
|
|
195
201
|
|
|
196
|
-
const rewards = calculateRewardsBreakdown(vaultWithUnknown)
|
|
202
|
+
const rewards = calculateRewardsBreakdown(vaultWithUnknown, CHAIN_ID)
|
|
197
203
|
|
|
198
204
|
expect(rewards.other).toBe(0.05)
|
|
199
205
|
})
|
|
@@ -207,7 +213,12 @@ describe('Morpho API Integration', () => {
|
|
|
207
213
|
{
|
|
208
214
|
market: {
|
|
209
215
|
state: {
|
|
210
|
-
rewards: [
|
|
216
|
+
rewards: [
|
|
217
|
+
{
|
|
218
|
+
asset: { address: USDC_ADDRESS, symbol: 'USDC' },
|
|
219
|
+
supplyApr: 0.1,
|
|
220
|
+
},
|
|
221
|
+
],
|
|
211
222
|
},
|
|
212
223
|
},
|
|
213
224
|
supplyAssetsUsd: 750000, // 75% of total
|
|
@@ -215,7 +226,12 @@ describe('Morpho API Integration', () => {
|
|
|
215
226
|
{
|
|
216
227
|
market: {
|
|
217
228
|
state: {
|
|
218
|
-
rewards: [
|
|
229
|
+
rewards: [
|
|
230
|
+
{
|
|
231
|
+
asset: { address: USDC_ADDRESS, symbol: 'USDC' },
|
|
232
|
+
supplyApr: 0.02,
|
|
233
|
+
},
|
|
234
|
+
],
|
|
219
235
|
},
|
|
220
236
|
},
|
|
221
237
|
supplyAssetsUsd: 250000, // 25% of total
|
|
@@ -224,10 +240,13 @@ describe('Morpho API Integration', () => {
|
|
|
224
240
|
},
|
|
225
241
|
}
|
|
226
242
|
|
|
227
|
-
const rewards = calculateRewardsBreakdown(
|
|
243
|
+
const rewards = calculateRewardsBreakdown(
|
|
244
|
+
vaultWithMarketRewards,
|
|
245
|
+
CHAIN_ID,
|
|
246
|
+
)
|
|
228
247
|
|
|
229
248
|
// Expected: 0.1 * 0.75 + 0.02 * 0.25 = 0.075 + 0.005 = 0.08
|
|
230
|
-
expect(rewards
|
|
249
|
+
expect(rewards[USDC_ADDRESS]).toBeCloseTo(0.08, 6)
|
|
231
250
|
})
|
|
232
251
|
})
|
|
233
252
|
|
|
@@ -244,15 +263,18 @@ describe('Morpho API Integration', () => {
|
|
|
244
263
|
}),
|
|
245
264
|
)
|
|
246
265
|
|
|
247
|
-
const rewards = await fetchAndCalculateRewards(
|
|
266
|
+
const rewards = await fetchAndCalculateRewards(
|
|
267
|
+
GAUNTLET_USDC_VAULT,
|
|
268
|
+
CHAIN_ID,
|
|
269
|
+
)
|
|
248
270
|
|
|
249
271
|
expect(rewards).toBeDefined()
|
|
250
|
-
expect(typeof rewards
|
|
251
|
-
expect(typeof rewards
|
|
272
|
+
expect(typeof rewards[USDC_ADDRESS]).toBe('number')
|
|
273
|
+
expect(typeof rewards[MORPHO_ADDRESS]).toBe('number')
|
|
252
274
|
expect(typeof rewards.other).toBe('number')
|
|
253
275
|
expect(typeof rewards.totalRewards).toBe('number')
|
|
254
|
-
expect(rewards
|
|
255
|
-
expect(rewards
|
|
276
|
+
expect(rewards[USDC_ADDRESS]).toBeGreaterThan(0)
|
|
277
|
+
expect(rewards[MORPHO_ADDRESS]).toBeGreaterThan(0)
|
|
256
278
|
})
|
|
257
279
|
|
|
258
280
|
it('should return empty rewards when vault not found', async () => {
|
|
@@ -267,10 +289,13 @@ describe('Morpho API Integration', () => {
|
|
|
267
289
|
}),
|
|
268
290
|
)
|
|
269
291
|
|
|
270
|
-
const rewards = await fetchAndCalculateRewards(
|
|
292
|
+
const rewards = await fetchAndCalculateRewards(
|
|
293
|
+
GAUNTLET_USDC_VAULT,
|
|
294
|
+
CHAIN_ID,
|
|
295
|
+
)
|
|
271
296
|
|
|
272
|
-
expect(rewards
|
|
273
|
-
expect(rewards
|
|
297
|
+
expect(rewards[USDC_ADDRESS]).toBe(0)
|
|
298
|
+
expect(rewards[MORPHO_ADDRESS]).toBe(0)
|
|
274
299
|
expect(rewards.other).toBe(0)
|
|
275
300
|
expect(rewards.totalRewards).toBe(0)
|
|
276
301
|
})
|
|
@@ -279,7 +304,7 @@ describe('Morpho API Integration', () => {
|
|
|
279
304
|
// External tests that make real network requests (only run with EXTERNAL_TEST=true)
|
|
280
305
|
describe.runIf(externalTest())('External API Tests', () => {
|
|
281
306
|
it('should fetch raw vault data from Morpho GraphQL API', async () => {
|
|
282
|
-
const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT)
|
|
307
|
+
const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT, CHAIN_ID)
|
|
283
308
|
|
|
284
309
|
expect(vaultData).toBeDefined()
|
|
285
310
|
expect(vaultData).not.toBeNull()
|
|
@@ -290,33 +315,29 @@ describe('Morpho API Integration', () => {
|
|
|
290
315
|
}, 30000)
|
|
291
316
|
|
|
292
317
|
it('should fetch and calculate rewards breakdown', async () => {
|
|
293
|
-
const rewards = await fetchAndCalculateRewards(
|
|
318
|
+
const rewards = await fetchAndCalculateRewards(
|
|
319
|
+
GAUNTLET_USDC_VAULT,
|
|
320
|
+
CHAIN_ID,
|
|
321
|
+
)
|
|
294
322
|
|
|
295
323
|
expect(rewards).toBeDefined()
|
|
296
|
-
expect(typeof rewards.usdc).toBe('number')
|
|
297
|
-
expect(typeof rewards.morpho).toBe('number')
|
|
298
324
|
expect(typeof rewards.other).toBe('number')
|
|
299
325
|
expect(typeof rewards.totalRewards).toBe('number')
|
|
300
326
|
|
|
301
|
-
expect(rewards.usdc).toBeGreaterThanOrEqual(0)
|
|
302
|
-
expect(rewards.morpho).toBeGreaterThanOrEqual(0)
|
|
303
327
|
expect(rewards.other).toBeGreaterThanOrEqual(0)
|
|
304
328
|
expect(rewards.totalRewards).toBeGreaterThanOrEqual(0)
|
|
305
|
-
|
|
306
|
-
const expectedTotal = rewards.usdc + rewards.morpho + rewards.other
|
|
307
|
-
expect(rewards.totalRewards).toBeCloseTo(expectedTotal, 6)
|
|
308
329
|
}, 30000)
|
|
309
330
|
|
|
310
331
|
it('should handle non-existent vault gracefully', async () => {
|
|
311
332
|
const nonExistentVault =
|
|
312
333
|
'0x0000000000000000000000000000000000000000' as Address
|
|
313
334
|
|
|
314
|
-
const vaultData = await fetchRewards(nonExistentVault)
|
|
335
|
+
const vaultData = await fetchRewards(nonExistentVault, CHAIN_ID)
|
|
315
336
|
expect(vaultData).toBeNull()
|
|
316
337
|
}, 30000)
|
|
317
338
|
|
|
318
339
|
it('should validate GraphQL response structure', async () => {
|
|
319
|
-
const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT)
|
|
340
|
+
const vaultData = await fetchRewards(GAUNTLET_USDC_VAULT, CHAIN_ID)
|
|
320
341
|
|
|
321
342
|
expect(vaultData).toMatchObject({
|
|
322
343
|
address: expect.any(String),
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
import { mainnet } from 'viem/chains'
|
|
1
2
|
import { describe, expect, it } from 'vitest'
|
|
2
3
|
|
|
4
|
+
import { MORPHO, USDC } from '@/constants/assets.js'
|
|
3
5
|
import {
|
|
4
6
|
calculateBaseApy,
|
|
5
7
|
calculateRewardsBreakdown,
|
|
6
8
|
} from '@/lend/providers/morpho/sdk.js'
|
|
7
9
|
|
|
10
|
+
const CHAIN_ID = mainnet.id
|
|
11
|
+
const USDC_ADDRESS = USDC.address[CHAIN_ID]!.toLowerCase()
|
|
12
|
+
const MORPHO_ADDRESS = MORPHO.address[CHAIN_ID]!.toLowerCase()
|
|
13
|
+
|
|
8
14
|
describe('Vault Utilities', () => {
|
|
9
15
|
describe('calculateBaseApy', () => {
|
|
10
16
|
it('should return 0 for vault with no assets', () => {
|
|
@@ -157,39 +163,34 @@ describe('Vault Utilities', () => {
|
|
|
157
163
|
},
|
|
158
164
|
}
|
|
159
165
|
|
|
160
|
-
const result = calculateRewardsBreakdown(apiVault)
|
|
161
|
-
|
|
162
|
-
expect(result).
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
eth: 0,
|
|
167
|
-
weth: 0,
|
|
168
|
-
other: 0,
|
|
169
|
-
totalRewards: 0,
|
|
170
|
-
})
|
|
166
|
+
const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
|
|
167
|
+
|
|
168
|
+
expect(result[USDC_ADDRESS]).toBe(0)
|
|
169
|
+
expect(result[MORPHO_ADDRESS]).toBe(0)
|
|
170
|
+
expect(result.other).toBe(0)
|
|
171
|
+
expect(result.totalRewards).toBe(0)
|
|
171
172
|
})
|
|
172
173
|
|
|
173
|
-
it('should categorize vault-level rewards by
|
|
174
|
+
it('should categorize vault-level rewards by address', () => {
|
|
174
175
|
const apiVault = {
|
|
175
176
|
state: {
|
|
176
177
|
rewards: [
|
|
177
178
|
{
|
|
178
179
|
supplyApr: 0.03, // 3% USDC rewards
|
|
179
180
|
asset: {
|
|
180
|
-
address:
|
|
181
|
+
address: USDC_ADDRESS,
|
|
181
182
|
name: 'USDC',
|
|
182
183
|
symbol: 'USDC',
|
|
183
|
-
chain: { id:
|
|
184
|
+
chain: { id: CHAIN_ID },
|
|
184
185
|
},
|
|
185
186
|
},
|
|
186
187
|
{
|
|
187
188
|
supplyApr: 0.015, // 1.5% MORPHO rewards
|
|
188
189
|
asset: {
|
|
189
|
-
address:
|
|
190
|
+
address: MORPHO_ADDRESS,
|
|
190
191
|
name: 'MORPHO',
|
|
191
192
|
symbol: 'MORPHO',
|
|
192
|
-
chain: { id:
|
|
193
|
+
chain: { id: CHAIN_ID },
|
|
193
194
|
},
|
|
194
195
|
},
|
|
195
196
|
],
|
|
@@ -197,10 +198,10 @@ describe('Vault Utilities', () => {
|
|
|
197
198
|
},
|
|
198
199
|
}
|
|
199
200
|
|
|
200
|
-
const result = calculateRewardsBreakdown(apiVault)
|
|
201
|
+
const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
|
|
201
202
|
|
|
202
|
-
expect(result
|
|
203
|
-
expect(result
|
|
203
|
+
expect(result[USDC_ADDRESS]).toBeCloseTo(0.03, 4)
|
|
204
|
+
expect(result[MORPHO_ADDRESS]).toBeCloseTo(0.015, 4)
|
|
204
205
|
expect(result.other).toBe(0)
|
|
205
206
|
expect(result.totalRewards).toBeCloseTo(0.045, 4)
|
|
206
207
|
})
|
|
@@ -219,9 +220,9 @@ describe('Vault Utilities', () => {
|
|
|
219
220
|
{
|
|
220
221
|
supplyApr: 0.02, // 2% reward
|
|
221
222
|
asset: {
|
|
222
|
-
address:
|
|
223
|
+
address: USDC_ADDRESS,
|
|
223
224
|
symbol: 'USDC',
|
|
224
|
-
chain: { id:
|
|
225
|
+
chain: { id: CHAIN_ID },
|
|
225
226
|
},
|
|
226
227
|
},
|
|
227
228
|
],
|
|
@@ -237,9 +238,9 @@ describe('Vault Utilities', () => {
|
|
|
237
238
|
{
|
|
238
239
|
supplyApr: 0.05, // 5% reward
|
|
239
240
|
asset: {
|
|
240
|
-
address:
|
|
241
|
+
address: MORPHO_ADDRESS,
|
|
241
242
|
symbol: 'MORPHO',
|
|
242
|
-
chain: { id:
|
|
243
|
+
chain: { id: CHAIN_ID },
|
|
243
244
|
},
|
|
244
245
|
},
|
|
245
246
|
],
|
|
@@ -250,13 +251,13 @@ describe('Vault Utilities', () => {
|
|
|
250
251
|
},
|
|
251
252
|
}
|
|
252
253
|
|
|
253
|
-
const result = calculateRewardsBreakdown(apiVault)
|
|
254
|
+
const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
|
|
254
255
|
|
|
255
256
|
// Expected calculation:
|
|
256
257
|
// USDC: 2% * (600k / 1M) = 1.2%
|
|
257
258
|
// MORPHO: 5% * (400k / 1M) = 2%
|
|
258
|
-
expect(result
|
|
259
|
-
expect(result
|
|
259
|
+
expect(result[USDC_ADDRESS]).toBeCloseTo(0.012, 4)
|
|
260
|
+
expect(result[MORPHO_ADDRESS]).toBeCloseTo(0.02, 4)
|
|
260
261
|
expect(result.other).toBe(0)
|
|
261
262
|
expect(result.totalRewards).toBeCloseTo(0.032, 4)
|
|
262
263
|
})
|
|
@@ -268,9 +269,9 @@ describe('Vault Utilities', () => {
|
|
|
268
269
|
{
|
|
269
270
|
supplyApr: 0.01, // 1% vault-level USDC reward
|
|
270
271
|
asset: {
|
|
271
|
-
address:
|
|
272
|
+
address: USDC_ADDRESS,
|
|
272
273
|
symbol: 'USDC',
|
|
273
|
-
chain: { id:
|
|
274
|
+
chain: { id: CHAIN_ID },
|
|
274
275
|
},
|
|
275
276
|
},
|
|
276
277
|
],
|
|
@@ -284,9 +285,9 @@ describe('Vault Utilities', () => {
|
|
|
284
285
|
{
|
|
285
286
|
supplyApr: 0.015, // 1.5% market-level MORPHO reward
|
|
286
287
|
asset: {
|
|
287
|
-
address:
|
|
288
|
+
address: MORPHO_ADDRESS,
|
|
288
289
|
symbol: 'MORPHO',
|
|
289
|
-
chain: { id:
|
|
290
|
+
chain: { id: CHAIN_ID },
|
|
290
291
|
},
|
|
291
292
|
},
|
|
292
293
|
],
|
|
@@ -297,14 +298,14 @@ describe('Vault Utilities', () => {
|
|
|
297
298
|
},
|
|
298
299
|
}
|
|
299
300
|
|
|
300
|
-
const result = calculateRewardsBreakdown(apiVault)
|
|
301
|
+
const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
|
|
301
302
|
|
|
302
|
-
expect(result
|
|
303
|
-
expect(result
|
|
303
|
+
expect(result[USDC_ADDRESS]).toBeCloseTo(0.01, 4) // Vault-level
|
|
304
|
+
expect(result[MORPHO_ADDRESS]).toBeCloseTo(0.015, 4) // Market-level (100% weight)
|
|
304
305
|
expect(result.totalRewards).toBeCloseTo(0.025, 4)
|
|
305
306
|
})
|
|
306
307
|
|
|
307
|
-
it('should categorize unknown
|
|
308
|
+
it('should categorize unknown token addresses as other', () => {
|
|
308
309
|
const apiVault = {
|
|
309
310
|
state: {
|
|
310
311
|
rewards: [
|
|
@@ -314,7 +315,7 @@ describe('Vault Utilities', () => {
|
|
|
314
315
|
address: '0x1234567890123456789012345678901234567890',
|
|
315
316
|
name: 'UNKNOWN',
|
|
316
317
|
symbol: 'UNKNOWN',
|
|
317
|
-
chain: { id:
|
|
318
|
+
chain: { id: CHAIN_ID },
|
|
318
319
|
},
|
|
319
320
|
},
|
|
320
321
|
],
|
|
@@ -322,10 +323,10 @@ describe('Vault Utilities', () => {
|
|
|
322
323
|
},
|
|
323
324
|
}
|
|
324
325
|
|
|
325
|
-
const result = calculateRewardsBreakdown(apiVault)
|
|
326
|
+
const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
|
|
326
327
|
|
|
327
|
-
expect(result
|
|
328
|
-
expect(result
|
|
328
|
+
expect(result[USDC_ADDRESS]).toBe(0)
|
|
329
|
+
expect(result[MORPHO_ADDRESS]).toBe(0)
|
|
329
330
|
expect(result.other).toBeCloseTo(0.005, 4)
|
|
330
331
|
expect(result.totalRewards).toBeCloseTo(0.005, 4)
|
|
331
332
|
})
|
|
@@ -344,9 +345,9 @@ describe('Vault Utilities', () => {
|
|
|
344
345
|
{
|
|
345
346
|
supplyApr: 0.1, // High reward but no weight
|
|
346
347
|
asset: {
|
|
347
|
-
address:
|
|
348
|
+
address: USDC_ADDRESS,
|
|
348
349
|
symbol: 'USDC',
|
|
349
|
-
chain: { id:
|
|
350
|
+
chain: { id: CHAIN_ID },
|
|
350
351
|
},
|
|
351
352
|
},
|
|
352
353
|
],
|
|
@@ -357,10 +358,10 @@ describe('Vault Utilities', () => {
|
|
|
357
358
|
},
|
|
358
359
|
}
|
|
359
360
|
|
|
360
|
-
const result = calculateRewardsBreakdown(apiVault)
|
|
361
|
+
const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
|
|
361
362
|
|
|
362
363
|
// Should be zero because total supply is zero (weight = 0)
|
|
363
|
-
expect(result
|
|
364
|
+
expect(result[USDC_ADDRESS]).toBe(0)
|
|
364
365
|
expect(result.totalRewards).toBe(0)
|
|
365
366
|
})
|
|
366
367
|
})
|
|
@@ -3,8 +3,8 @@ import type { Address } from 'viem'
|
|
|
3
3
|
const MORPHO_API_ENDPOINT = 'https://api.morpho.org/graphql'
|
|
4
4
|
|
|
5
5
|
export interface RewardsBreakdown {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
/** Reward APR per token, keyed by lowercase token address. 'other' for unrecognized tokens. */
|
|
7
|
+
[tokenAddress: string]: number
|
|
8
8
|
other: number
|
|
9
9
|
totalRewards: number
|
|
10
10
|
}
|
|
@@ -14,7 +14,10 @@ export interface RewardsBreakdown {
|
|
|
14
14
|
* @param vaultAddress - Vault address
|
|
15
15
|
* @returns Promise resolving to raw vault data or null if not found
|
|
16
16
|
*/
|
|
17
|
-
export async function fetchRewards(
|
|
17
|
+
export async function fetchRewards(
|
|
18
|
+
vaultAddress: Address,
|
|
19
|
+
chainId: number,
|
|
20
|
+
): Promise<any | null> {
|
|
18
21
|
const vaultQuery = {
|
|
19
22
|
query: `
|
|
20
23
|
query VaultByAddress($address: String!, $chainId: Int) {
|
|
@@ -63,7 +66,7 @@ export async function fetchRewards(vaultAddress: Address): Promise<any | null> {
|
|
|
63
66
|
`,
|
|
64
67
|
variables: {
|
|
65
68
|
address: vaultAddress.toLowerCase(),
|
|
66
|
-
chainId
|
|
69
|
+
chainId,
|
|
67
70
|
},
|
|
68
71
|
}
|
|
69
72
|
|