@eth-optimism/actions-sdk 0.3.0 → 0.5.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 -6
- package/dist/__mocks__/MockAssets.js.map +1 -1
- package/dist/__tests__/actions.test.js +1 -1
- package/dist/__tests__/actions.test.js.map +1 -1
- package/dist/actions.d.ts +17 -13
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +46 -27
- package/dist/actions.js.map +1 -1
- package/dist/constants/assets.d.ts +215 -4
- package/dist/constants/assets.d.ts.map +1 -1
- package/dist/constants/assets.js +734 -11
- package/dist/constants/assets.js.map +1 -1
- 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/ens/EnsNamespace.d.ts +57 -0
- package/dist/ens/EnsNamespace.d.ts.map +1 -0
- package/dist/ens/EnsNamespace.js +158 -0
- package/dist/ens/EnsNamespace.js.map +1 -0
- package/dist/ens/EnsNamespace.spec.d.ts +2 -0
- package/dist/ens/EnsNamespace.spec.d.ts.map +1 -0
- package/dist/ens/EnsNamespace.spec.js +144 -0
- package/dist/ens/EnsNamespace.spec.js.map +1 -0
- package/dist/ens/errors.d.ts +24 -0
- package/dist/ens/errors.d.ts.map +1 -0
- package/dist/ens/errors.js +35 -0
- package/dist/ens/errors.js.map +1 -0
- package/dist/ens/index.d.ts +4 -0
- package/dist/ens/index.d.ts.map +1 -0
- package/dist/ens/index.js +4 -0
- package/dist/ens/index.js.map +1 -0
- package/dist/ens/types.d.ts +63 -0
- package/dist/ens/types.d.ts.map +1 -0
- package/dist/ens/types.js +14 -0
- package/dist/ens/types.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- 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 -8
- package/dist/lend/core/LendProvider.d.ts.map +1 -1
- package/dist/lend/core/LendProvider.js +15 -21
- package/dist/lend/core/LendProvider.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 -42
- package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
- package/dist/lend/providers/morpho/api.d.ts +3 -7
- 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 -63
- 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 +15 -8
- package/dist/services/ChainManager.d.ts.map +1 -1
- package/dist/services/ChainManager.js +9 -0
- package/dist/services/ChainManager.js.map +1 -1
- package/dist/services/__mocks__/MockChainManager.d.ts +5 -4
- package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
- package/dist/services/__mocks__/MockChainManager.js +5 -0
- 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 +20 -8
- package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -1
- package/dist/swap/__mocks__/MockSwapProvider.js +52 -29
- package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -1
- package/dist/swap/core/SwapProvider.d.ts +105 -16
- package/dist/swap/core/SwapProvider.d.ts.map +1 -1
- package/dist/swap/core/SwapProvider.js +215 -37
- package/dist/swap/core/SwapProvider.js.map +1 -1
- package/dist/swap/core/__tests__/SwapProvider.test.js +115 -9
- package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -1
- 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 +2 -0
- package/dist/swap/index.d.ts.map +1 -1
- package/dist/swap/index.js +1 -0
- package/dist/swap/index.js.map +1 -1
- package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +2 -2
- package/dist/swap/namespaces/ActionsSwapNamespace.js +2 -2
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts +50 -8
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -1
- package/dist/swap/namespaces/BaseSwapNamespace.js +144 -16
- package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -1
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts +20 -7
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -1
- package/dist/swap/namespaces/WalletSwapNamespace.js +44 -15
- package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -1
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +150 -11
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -1
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +85 -8
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -1
- package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +10 -42
- package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -1
- package/dist/swap/providers/uniswap/UniswapSwapProvider.js +81 -139
- package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -1
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +10 -9
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -1
- package/dist/swap/providers/uniswap/__tests__/sdk.test.js +17 -17
- package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -1
- package/dist/swap/providers/uniswap/addresses.d.ts +5 -0
- package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -1
- package/dist/swap/providers/uniswap/addresses.js +1 -1
- package/dist/swap/providers/uniswap/addresses.js.map +1 -1
- package/dist/swap/providers/uniswap/encoding.d.ts +4 -4
- package/dist/swap/providers/uniswap/encoding.js +17 -17
- 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 +4 -3
- package/dist/swap/providers/uniswap/types.d.ts.map +1 -1
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +50 -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 +420 -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 +44 -9
- 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/lend/base.d.ts +6 -6
- 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 +136 -35
- package/dist/types/swap/base.d.ts.map +1 -1
- package/dist/types/swap/base.js.map +1 -1
- package/dist/utils/approve.d.ts +82 -0
- package/dist/utils/approve.d.ts.map +1 -0
- package/dist/utils/{permit2.js → approve.js} +48 -14
- 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/{permit2.test.js → approve.test.js} +95 -2
- package/dist/utils/approve.test.js.map +1 -0
- package/dist/utils/assets.d.ts +6 -0
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/assets.js +10 -0
- package/dist/utils/assets.js.map +1 -1
- package/dist/utils/ens.d.ts +25 -0
- package/dist/utils/ens.d.ts.map +1 -0
- package/dist/utils/ens.js +53 -0
- package/dist/utils/ens.js.map +1 -0
- package/dist/utils/ens.test.d.ts +2 -0
- package/dist/utils/ens.test.d.ts.map +1 -0
- package/dist/utils/ens.test.js +75 -0
- package/dist/utils/ens.test.js.map +1 -0
- 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 +5 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +10 -0
- package/dist/utils/validation.js.map +1 -1
- 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 -16
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -11
- package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +2 -9
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts +6 -17
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.js +7 -6
- 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 +3 -10
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
- 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 +3 -10
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -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 +6 -8
- 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 +2 -9
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +3 -10
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -10
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +3 -9
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -2
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +3 -9
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -2
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +3 -9
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -2
- 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 +5 -10
- 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 +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 -10
- 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 -10
- 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 +3 -2
- package/src/__mocks__/MockAssets.ts +54 -6
- package/src/__tests__/actions.test.ts +1 -1
- package/src/actions.ts +73 -61
- package/src/constants/assets.ts +781 -10
- package/src/constants/providers.ts +5 -0
- package/src/constants/supportedChains.ts +22 -2
- package/src/ens/EnsNamespace.spec.ts +171 -0
- package/src/ens/EnsNamespace.ts +210 -0
- package/src/ens/errors.ts +45 -0
- package/src/ens/index.ts +12 -0
- package/src/ens/types.ts +76 -0
- package/src/index.ts +59 -8
- package/src/lend/__mocks__/MockLendProvider.ts +8 -3
- package/src/lend/core/LendProvider.ts +27 -28
- 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 -43
- package/src/lend/providers/morpho/api.ts +7 -8
- package/src/lend/providers/morpho/contracts.ts +62 -13
- package/src/lend/providers/morpho/sdk.ts +85 -63
- package/src/services/ChainManager.ts +22 -21
- package/src/services/__mocks__/MockChainManager.ts +12 -7
- package/src/services/tokenBalance.spec.ts +20 -24
- package/src/services/tokenBalance.ts +39 -33
- package/src/swap/__mocks__/MockSwapProvider.ts +77 -42
- package/src/swap/core/SwapProvider.ts +309 -50
- package/src/swap/core/__tests__/SwapProvider.test.ts +151 -9
- package/src/swap/core/markets.ts +104 -0
- package/src/swap/index.ts +5 -0
- package/src/swap/namespaces/ActionsSwapNamespace.ts +2 -2
- package/src/swap/namespaces/BaseSwapNamespace.ts +215 -18
- package/src/swap/namespaces/WalletSwapNamespace.ts +61 -14
- package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +245 -14
- package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +103 -8
- package/src/swap/providers/uniswap/UniswapSwapProvider.ts +110 -195
- package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +12 -12
- package/src/swap/providers/uniswap/__tests__/sdk.test.ts +19 -20
- package/src/swap/providers/uniswap/addresses.ts +3 -1
- package/src/swap/providers/uniswap/encoding.ts +22 -22
- package/src/swap/providers/uniswap/markets.ts +84 -0
- package/src/swap/providers/uniswap/types.ts +4 -3
- package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +226 -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 +507 -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 +49 -9
- package/src/types/asset.ts +12 -9
- package/src/types/chain.ts +2 -2
- package/src/types/lend/base.ts +6 -6
- package/src/types/lend/contracts.ts +5 -1
- package/src/types/providers.ts +22 -0
- package/src/types/swap/base.ts +150 -36
- package/src/utils/{permit2.test.ts → approve.test.ts} +117 -1
- package/src/utils/{permit2.ts → approve.ts} +67 -14
- package/src/utils/assets.ts +14 -0
- package/src/utils/ens.test.ts +104 -0
- package/src/utils/ens.ts +85 -0
- package/src/utils/validateAddresses.test.ts +439 -0
- package/src/utils/validateAddresses.ts +153 -0
- package/src/utils/validation.ts +11 -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 +5 -17
- package/src/wallet/core/providers/hosted/types/index.ts +9 -11
- package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +5 -17
- package/src/wallet/core/wallets/abstract/Wallet.ts +18 -22
- 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 +5 -17
- package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
- package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +3 -10
- package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +8 -8
- package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
- package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +3 -10
- package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +5 -17
- package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +5 -17
- package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +7 -11
- package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +7 -11
- package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +7 -11
- package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +23 -10
- package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
- package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +10 -18
- package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
- package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +10 -18
- package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +10 -18
- package/dist/supported/tokens.d.ts +0 -25
- package/dist/supported/tokens.d.ts.map +0 -1
- package/dist/supported/tokens.js +0 -44
- package/dist/supported/tokens.js.map +0 -1
- package/dist/utils/permit2.d.ts +0 -46
- package/dist/utils/permit2.d.ts.map +0 -1
- package/dist/utils/permit2.js.map +0 -1
- package/dist/utils/permit2.test.d.ts +0 -2
- package/dist/utils/permit2.test.d.ts.map +0 -1
- package/dist/utils/permit2.test.js.map +0 -1
- package/src/supported/tokens.ts +0 -66
|
@@ -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,40 +163,34 @@ describe('Vault Utilities', () => {
|
|
|
157
163
|
},
|
|
158
164
|
}
|
|
159
165
|
|
|
160
|
-
const result = calculateRewardsBreakdown(apiVault)
|
|
161
|
-
|
|
162
|
-
expect(result).
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
usdc_demo: 0,
|
|
167
|
-
op_demo: 0,
|
|
168
|
-
morpho: 0,
|
|
169
|
-
other: 0,
|
|
170
|
-
totalRewards: 0,
|
|
171
|
-
})
|
|
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)
|
|
172
172
|
})
|
|
173
173
|
|
|
174
|
-
it('should categorize vault-level rewards by
|
|
174
|
+
it('should categorize vault-level rewards by address', () => {
|
|
175
175
|
const apiVault = {
|
|
176
176
|
state: {
|
|
177
177
|
rewards: [
|
|
178
178
|
{
|
|
179
179
|
supplyApr: 0.03, // 3% USDC rewards
|
|
180
180
|
asset: {
|
|
181
|
-
address:
|
|
181
|
+
address: USDC_ADDRESS,
|
|
182
182
|
name: 'USDC',
|
|
183
183
|
symbol: 'USDC',
|
|
184
|
-
chain: { id:
|
|
184
|
+
chain: { id: CHAIN_ID },
|
|
185
185
|
},
|
|
186
186
|
},
|
|
187
187
|
{
|
|
188
188
|
supplyApr: 0.015, // 1.5% MORPHO rewards
|
|
189
189
|
asset: {
|
|
190
|
-
address:
|
|
190
|
+
address: MORPHO_ADDRESS,
|
|
191
191
|
name: 'MORPHO',
|
|
192
192
|
symbol: 'MORPHO',
|
|
193
|
-
chain: { id:
|
|
193
|
+
chain: { id: CHAIN_ID },
|
|
194
194
|
},
|
|
195
195
|
},
|
|
196
196
|
],
|
|
@@ -198,10 +198,10 @@ describe('Vault Utilities', () => {
|
|
|
198
198
|
},
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
const result = calculateRewardsBreakdown(apiVault)
|
|
201
|
+
const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
|
|
202
202
|
|
|
203
|
-
expect(result
|
|
204
|
-
expect(result
|
|
203
|
+
expect(result[USDC_ADDRESS]).toBeCloseTo(0.03, 4)
|
|
204
|
+
expect(result[MORPHO_ADDRESS]).toBeCloseTo(0.015, 4)
|
|
205
205
|
expect(result.other).toBe(0)
|
|
206
206
|
expect(result.totalRewards).toBeCloseTo(0.045, 4)
|
|
207
207
|
})
|
|
@@ -220,9 +220,9 @@ describe('Vault Utilities', () => {
|
|
|
220
220
|
{
|
|
221
221
|
supplyApr: 0.02, // 2% reward
|
|
222
222
|
asset: {
|
|
223
|
-
address:
|
|
223
|
+
address: USDC_ADDRESS,
|
|
224
224
|
symbol: 'USDC',
|
|
225
|
-
chain: { id:
|
|
225
|
+
chain: { id: CHAIN_ID },
|
|
226
226
|
},
|
|
227
227
|
},
|
|
228
228
|
],
|
|
@@ -238,9 +238,9 @@ describe('Vault Utilities', () => {
|
|
|
238
238
|
{
|
|
239
239
|
supplyApr: 0.05, // 5% reward
|
|
240
240
|
asset: {
|
|
241
|
-
address:
|
|
241
|
+
address: MORPHO_ADDRESS,
|
|
242
242
|
symbol: 'MORPHO',
|
|
243
|
-
chain: { id:
|
|
243
|
+
chain: { id: CHAIN_ID },
|
|
244
244
|
},
|
|
245
245
|
},
|
|
246
246
|
],
|
|
@@ -251,13 +251,13 @@ describe('Vault Utilities', () => {
|
|
|
251
251
|
},
|
|
252
252
|
}
|
|
253
253
|
|
|
254
|
-
const result = calculateRewardsBreakdown(apiVault)
|
|
254
|
+
const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
|
|
255
255
|
|
|
256
256
|
// Expected calculation:
|
|
257
257
|
// USDC: 2% * (600k / 1M) = 1.2%
|
|
258
258
|
// MORPHO: 5% * (400k / 1M) = 2%
|
|
259
|
-
expect(result
|
|
260
|
-
expect(result
|
|
259
|
+
expect(result[USDC_ADDRESS]).toBeCloseTo(0.012, 4)
|
|
260
|
+
expect(result[MORPHO_ADDRESS]).toBeCloseTo(0.02, 4)
|
|
261
261
|
expect(result.other).toBe(0)
|
|
262
262
|
expect(result.totalRewards).toBeCloseTo(0.032, 4)
|
|
263
263
|
})
|
|
@@ -269,9 +269,9 @@ describe('Vault Utilities', () => {
|
|
|
269
269
|
{
|
|
270
270
|
supplyApr: 0.01, // 1% vault-level USDC reward
|
|
271
271
|
asset: {
|
|
272
|
-
address:
|
|
272
|
+
address: USDC_ADDRESS,
|
|
273
273
|
symbol: 'USDC',
|
|
274
|
-
chain: { id:
|
|
274
|
+
chain: { id: CHAIN_ID },
|
|
275
275
|
},
|
|
276
276
|
},
|
|
277
277
|
],
|
|
@@ -285,9 +285,9 @@ describe('Vault Utilities', () => {
|
|
|
285
285
|
{
|
|
286
286
|
supplyApr: 0.015, // 1.5% market-level MORPHO reward
|
|
287
287
|
asset: {
|
|
288
|
-
address:
|
|
288
|
+
address: MORPHO_ADDRESS,
|
|
289
289
|
symbol: 'MORPHO',
|
|
290
|
-
chain: { id:
|
|
290
|
+
chain: { id: CHAIN_ID },
|
|
291
291
|
},
|
|
292
292
|
},
|
|
293
293
|
],
|
|
@@ -298,14 +298,14 @@ describe('Vault Utilities', () => {
|
|
|
298
298
|
},
|
|
299
299
|
}
|
|
300
300
|
|
|
301
|
-
const result = calculateRewardsBreakdown(apiVault)
|
|
301
|
+
const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
|
|
302
302
|
|
|
303
|
-
expect(result
|
|
304
|
-
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)
|
|
305
305
|
expect(result.totalRewards).toBeCloseTo(0.025, 4)
|
|
306
306
|
})
|
|
307
307
|
|
|
308
|
-
it('should categorize unknown
|
|
308
|
+
it('should categorize unknown token addresses as other', () => {
|
|
309
309
|
const apiVault = {
|
|
310
310
|
state: {
|
|
311
311
|
rewards: [
|
|
@@ -315,7 +315,7 @@ describe('Vault Utilities', () => {
|
|
|
315
315
|
address: '0x1234567890123456789012345678901234567890',
|
|
316
316
|
name: 'UNKNOWN',
|
|
317
317
|
symbol: 'UNKNOWN',
|
|
318
|
-
chain: { id:
|
|
318
|
+
chain: { id: CHAIN_ID },
|
|
319
319
|
},
|
|
320
320
|
},
|
|
321
321
|
],
|
|
@@ -323,10 +323,10 @@ describe('Vault Utilities', () => {
|
|
|
323
323
|
},
|
|
324
324
|
}
|
|
325
325
|
|
|
326
|
-
const result = calculateRewardsBreakdown(apiVault)
|
|
326
|
+
const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
|
|
327
327
|
|
|
328
|
-
expect(result
|
|
329
|
-
expect(result
|
|
328
|
+
expect(result[USDC_ADDRESS]).toBe(0)
|
|
329
|
+
expect(result[MORPHO_ADDRESS]).toBe(0)
|
|
330
330
|
expect(result.other).toBeCloseTo(0.005, 4)
|
|
331
331
|
expect(result.totalRewards).toBeCloseTo(0.005, 4)
|
|
332
332
|
})
|
|
@@ -345,9 +345,9 @@ describe('Vault Utilities', () => {
|
|
|
345
345
|
{
|
|
346
346
|
supplyApr: 0.1, // High reward but no weight
|
|
347
347
|
asset: {
|
|
348
|
-
address:
|
|
348
|
+
address: USDC_ADDRESS,
|
|
349
349
|
symbol: 'USDC',
|
|
350
|
-
chain: { id:
|
|
350
|
+
chain: { id: CHAIN_ID },
|
|
351
351
|
},
|
|
352
352
|
},
|
|
353
353
|
],
|
|
@@ -358,10 +358,10 @@ describe('Vault Utilities', () => {
|
|
|
358
358
|
},
|
|
359
359
|
}
|
|
360
360
|
|
|
361
|
-
const result = calculateRewardsBreakdown(apiVault)
|
|
361
|
+
const result = calculateRewardsBreakdown(apiVault, CHAIN_ID)
|
|
362
362
|
|
|
363
363
|
// Should be zero because total supply is zero (weight = 0)
|
|
364
|
-
expect(result
|
|
364
|
+
expect(result[USDC_ADDRESS]).toBe(0)
|
|
365
365
|
expect(result.totalRewards).toBe(0)
|
|
366
366
|
})
|
|
367
367
|
})
|
|
@@ -3,12 +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
|
-
|
|
8
|
-
usdc: number
|
|
9
|
-
usdc_demo: number
|
|
10
|
-
op_demo: number
|
|
11
|
-
morpho: number
|
|
6
|
+
/** Reward APR per token, keyed by lowercase token address. 'other' for unrecognized tokens. */
|
|
7
|
+
[tokenAddress: string]: number
|
|
12
8
|
other: number
|
|
13
9
|
totalRewards: number
|
|
14
10
|
}
|
|
@@ -18,7 +14,10 @@ export interface RewardsBreakdown {
|
|
|
18
14
|
* @param vaultAddress - Vault address
|
|
19
15
|
* @returns Promise resolving to raw vault data or null if not found
|
|
20
16
|
*/
|
|
21
|
-
export async function fetchRewards(
|
|
17
|
+
export async function fetchRewards(
|
|
18
|
+
vaultAddress: Address,
|
|
19
|
+
chainId: number,
|
|
20
|
+
): Promise<any | null> {
|
|
22
21
|
const vaultQuery = {
|
|
23
22
|
query: `
|
|
24
23
|
query VaultByAddress($address: String!, $chainId: Int) {
|
|
@@ -67,7 +66,7 @@ export async function fetchRewards(vaultAddress: Address): Promise<any | null> {
|
|
|
67
66
|
`,
|
|
68
67
|
variables: {
|
|
69
68
|
address: vaultAddress.toLowerCase(),
|
|
70
|
-
chainId
|
|
69
|
+
chainId,
|
|
71
70
|
},
|
|
72
71
|
}
|
|
73
72
|
|
|
@@ -1,6 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
base,
|
|
3
|
+
baseSepolia,
|
|
4
|
+
ink,
|
|
5
|
+
mainnet,
|
|
6
|
+
mode,
|
|
7
|
+
optimism,
|
|
8
|
+
soneium,
|
|
9
|
+
unichain,
|
|
10
|
+
worldchain,
|
|
11
|
+
} from 'viem/chains'
|
|
2
12
|
|
|
3
|
-
import type {
|
|
13
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
14
|
+
import type {
|
|
15
|
+
MorphoContracts,
|
|
16
|
+
MorphoContractsRegistry,
|
|
17
|
+
} from '@/types/lend/contracts.js'
|
|
4
18
|
|
|
5
19
|
/**
|
|
6
20
|
* Morpho Blue core contract - same address on all chains via CREATE2
|
|
@@ -8,10 +22,44 @@ import type { MorphoContractsRegistry } from '@/types/lend/contracts.js'
|
|
|
8
22
|
const MORPHO_BLUE = '0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb' as const
|
|
9
23
|
|
|
10
24
|
/**
|
|
11
|
-
*
|
|
12
|
-
* Mainnet
|
|
25
|
+
* Morpho Blue contract addresses per chain.
|
|
26
|
+
* Mainnet chains use the SDK for richer data (rewards, allocations) when available.
|
|
27
|
+
* These contracts serve as the on-chain fallback and as the canonical deployment registry.
|
|
28
|
+
* @see https://github.com/morpho-org/sdks
|
|
13
29
|
*/
|
|
14
30
|
export const MORPHO_CONTRACTS: MorphoContractsRegistry = {
|
|
31
|
+
[mainnet.id]: {
|
|
32
|
+
morphoBlue: MORPHO_BLUE,
|
|
33
|
+
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
34
|
+
},
|
|
35
|
+
[optimism.id]: {
|
|
36
|
+
morphoBlue: MORPHO_BLUE,
|
|
37
|
+
irm: '0x8cD70A8F399428456b29546BC5dBe10ab6a06ef6',
|
|
38
|
+
},
|
|
39
|
+
[base.id]: {
|
|
40
|
+
morphoBlue: MORPHO_BLUE,
|
|
41
|
+
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
42
|
+
},
|
|
43
|
+
[unichain.id]: {
|
|
44
|
+
morphoBlue: MORPHO_BLUE,
|
|
45
|
+
irm: '0x9a6061d51743B31D2c3Be75D83781Fa423f53F0E',
|
|
46
|
+
},
|
|
47
|
+
[worldchain.id]: {
|
|
48
|
+
morphoBlue: MORPHO_BLUE,
|
|
49
|
+
irm: '0x34E99D604751a72cF8d0CFDf87069292d82De472',
|
|
50
|
+
},
|
|
51
|
+
[ink.id]: {
|
|
52
|
+
morphoBlue: MORPHO_BLUE,
|
|
53
|
+
irm: '0x9515407b1512F53388ffE699524100e7270Ee57B',
|
|
54
|
+
},
|
|
55
|
+
[soneium.id]: {
|
|
56
|
+
morphoBlue: MORPHO_BLUE,
|
|
57
|
+
irm: '0x68F9b666b984527A7c145Db4103Cc6d3171C797F',
|
|
58
|
+
},
|
|
59
|
+
[mode.id]: {
|
|
60
|
+
morphoBlue: MORPHO_BLUE,
|
|
61
|
+
irm: '0xE3d46Ae190Cb39ccA3655E966DcEF96b4eAe1d1c',
|
|
62
|
+
},
|
|
15
63
|
[baseSepolia.id]: {
|
|
16
64
|
morphoBlue: MORPHO_BLUE,
|
|
17
65
|
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
@@ -20,18 +68,19 @@ export const MORPHO_CONTRACTS: MorphoContractsRegistry = {
|
|
|
20
68
|
|
|
21
69
|
/**
|
|
22
70
|
* Get Morpho contracts for a chain
|
|
23
|
-
* @param chainId - Chain ID
|
|
24
|
-
* @returns Morpho contracts if supported, undefined otherwise
|
|
25
71
|
*/
|
|
26
|
-
export function getMorphoContracts(
|
|
27
|
-
|
|
72
|
+
export function getMorphoContracts(
|
|
73
|
+
chainId: number,
|
|
74
|
+
): MorphoContracts | undefined {
|
|
75
|
+
return MORPHO_CONTRACTS[chainId as SupportedChainId]
|
|
28
76
|
}
|
|
29
77
|
|
|
30
78
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
79
|
+
* Get all chain IDs where Morpho contracts are deployed.
|
|
80
|
+
* Returns chains present in the local contracts registry.
|
|
81
|
+
* Filtering against ACTIONS_SUPPORTED_CHAIN_IDS and developer-configured chains
|
|
82
|
+
* is handled by the LendProvider base class.
|
|
34
83
|
*/
|
|
35
|
-
export function
|
|
36
|
-
return
|
|
84
|
+
export function getSupportedChainIds(): number[] {
|
|
85
|
+
return Object.keys(MORPHO_CONTRACTS).map(Number)
|
|
37
86
|
}
|