@eth-optimism/actions-sdk 0.3.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 -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 +8 -13
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +35 -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/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -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 +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 +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 +218 -36
- 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 +48 -8
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -1
- package/dist/swap/namespaces/BaseSwapNamespace.js +139 -16
- package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -1
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts +19 -7
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -1
- package/dist/swap/namespaces/WalletSwapNamespace.js +39 -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 +9 -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 +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 +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 +133 -33
- package/dist/types/swap/base.d.ts.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/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/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 +5 -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 +58 -61
- package/src/constants/assets.ts +781 -10
- package/src/constants/providers.ts +5 -0
- package/src/constants/supportedChains.ts +22 -2
- package/src/index.ts +50 -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 +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 +77 -42
- package/src/swap/core/SwapProvider.ts +307 -49
- 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 +199 -18
- package/src/swap/namespaces/WalletSwapNamespace.ts +53 -14
- package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +241 -14
- package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +103 -8
- package/src/swap/providers/uniswap/UniswapSwapProvider.ts +108 -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 +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 +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 +147 -34
- 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/validateAddresses.test.ts +439 -0
- package/src/utils/validateAddresses.ts +153 -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 +15 -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
|
@@ -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,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
|
|