@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
|
@@ -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
|
}
|
|
@@ -7,14 +7,15 @@ import {
|
|
|
7
7
|
} from '@morpho-org/blue-sdk-viem'
|
|
8
8
|
import type { Address, PublicClient } from 'viem'
|
|
9
9
|
|
|
10
|
+
import { NATIVELY_SUPPORTED_ASSETS } from '@/constants/assets.js'
|
|
10
11
|
import {
|
|
11
12
|
fetchRewards,
|
|
12
13
|
type RewardsBreakdown,
|
|
13
14
|
} from '@/lend/providers/morpho/api.js'
|
|
14
15
|
import { getMorphoContracts } from '@/lend/providers/morpho/contracts.js'
|
|
15
16
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
16
|
-
import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
|
|
17
17
|
import type { LendProviderConfig } from '@/types/actions.js'
|
|
18
|
+
import type { Asset } from '@/types/asset.js'
|
|
18
19
|
import type {
|
|
19
20
|
ApyBreakdown,
|
|
20
21
|
LendMarket,
|
|
@@ -27,29 +28,42 @@ import { SECONDS_PER_YEAR } from '@/utils/constants.js'
|
|
|
27
28
|
/**
|
|
28
29
|
* Fetch and calculate rewards breakdown from Morpho GraphQL API
|
|
29
30
|
* @param vaultAddress - Vault address
|
|
31
|
+
* @param supportedAssets - Configured assets for reward categorization
|
|
32
|
+
* @param chainId - Chain ID for address lookup
|
|
30
33
|
* @returns Promise resolving to rewards breakdown
|
|
31
34
|
*/
|
|
32
35
|
export async function fetchAndCalculateRewards(
|
|
33
36
|
vaultAddress: Address,
|
|
37
|
+
chainId: number,
|
|
38
|
+
marketAsset?: Asset,
|
|
34
39
|
): Promise<RewardsBreakdown> {
|
|
35
|
-
const vaultData = await fetchRewards(vaultAddress)
|
|
40
|
+
const vaultData = await fetchRewards(vaultAddress, chainId)
|
|
36
41
|
|
|
37
42
|
if (!vaultData) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
other: 0,
|
|
41
|
-
totalRewards: 0,
|
|
42
|
-
}
|
|
43
|
+
return buildEmptyRewards(chainId, marketAsset)
|
|
44
|
+
}
|
|
43
45
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
emptyRewards[token.metadata.symbol.toLowerCase()] = 0
|
|
47
|
-
})
|
|
46
|
+
return calculateRewardsBreakdown(vaultData, chainId, marketAsset)
|
|
47
|
+
}
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Build an empty rewards object with all supported asset addresses initialized to 0
|
|
51
|
+
*/
|
|
52
|
+
function buildEmptyRewards(
|
|
53
|
+
chainId: number,
|
|
54
|
+
marketAsset?: Asset,
|
|
55
|
+
): RewardsBreakdown {
|
|
56
|
+
const assets = marketAsset
|
|
57
|
+
? [...NATIVELY_SUPPORTED_ASSETS, marketAsset]
|
|
58
|
+
: NATIVELY_SUPPORTED_ASSETS
|
|
59
|
+
const emptyRewards: Record<string, number> = { other: 0, totalRewards: 0 }
|
|
60
|
+
for (const token of assets) {
|
|
61
|
+
const addr = token.address[chainId as keyof typeof token.address]
|
|
62
|
+
if (addr && addr !== 'native') {
|
|
63
|
+
emptyRewards[addr.toLowerCase()] = 0
|
|
64
|
+
}
|
|
50
65
|
}
|
|
51
|
-
|
|
52
|
-
return calculateRewardsBreakdown(vaultData)
|
|
66
|
+
return emptyRewards as RewardsBreakdown
|
|
53
67
|
}
|
|
54
68
|
|
|
55
69
|
/**
|
|
@@ -238,7 +252,7 @@ async function calculateVaultApy(
|
|
|
238
252
|
}
|
|
239
253
|
|
|
240
254
|
/**
|
|
241
|
-
* Fetch vault data via direct on-chain queries (
|
|
255
|
+
* Fetch vault data via direct on-chain queries (fallback when SDK unavailable)
|
|
242
256
|
*/
|
|
243
257
|
async function fetchVaultDataOnChain(
|
|
244
258
|
marketId: LendMarketId,
|
|
@@ -332,7 +346,7 @@ export async function getVault(params: GetVaultParams): Promise<LendMarket> {
|
|
|
332
346
|
params.marketId.chainId,
|
|
333
347
|
)
|
|
334
348
|
|
|
335
|
-
// Try SDK first for supported chains
|
|
349
|
+
// Try SDK first for SDK-supported chains
|
|
336
350
|
if (isSdkSupportedChain(params.marketId.chainId)) {
|
|
337
351
|
try {
|
|
338
352
|
const vault = await fetchAccrualVault(
|
|
@@ -343,18 +357,11 @@ export async function getVault(params: GetVaultParams): Promise<LendMarket> {
|
|
|
343
357
|
// Fetch rewards data from API
|
|
344
358
|
const rewardsBreakdown = await fetchAndCalculateRewards(
|
|
345
359
|
params.marketId.address,
|
|
360
|
+
params.marketId.chainId,
|
|
361
|
+
marketConfig.asset,
|
|
346
362
|
).catch((error) => {
|
|
347
363
|
console.error('Failed to fetch rewards data:', error)
|
|
348
|
-
return
|
|
349
|
-
eth: 0,
|
|
350
|
-
weth: 0,
|
|
351
|
-
usdc: 0,
|
|
352
|
-
usdc_demo: 0,
|
|
353
|
-
op_demo: 0,
|
|
354
|
-
morpho: 0,
|
|
355
|
-
other: 0,
|
|
356
|
-
totalRewards: 0,
|
|
357
|
-
}
|
|
364
|
+
return buildEmptyRewards(params.marketId.chainId, marketConfig.asset)
|
|
358
365
|
})
|
|
359
366
|
|
|
360
367
|
const apyBreakdown = calculateApyBreakdown(vault, rewardsBreakdown)
|
|
@@ -381,7 +388,7 @@ export async function getVault(params: GetVaultParams): Promise<LendMarket> {
|
|
|
381
388
|
}
|
|
382
389
|
}
|
|
383
390
|
|
|
384
|
-
// Fallback to direct on-chain queries
|
|
391
|
+
// Fallback to direct on-chain queries if SDK unavailable or fails
|
|
385
392
|
const contracts = getMorphoContracts(params.marketId.chainId)
|
|
386
393
|
if (contracts) {
|
|
387
394
|
return fetchVaultDataOnChain(
|
|
@@ -489,38 +496,59 @@ export function calculateApyBreakdown(
|
|
|
489
496
|
}
|
|
490
497
|
}
|
|
491
498
|
|
|
499
|
+
/**
|
|
500
|
+
* Categorize a reward asset by its address. If the address matches a supported asset, use that.
|
|
501
|
+
* Otherwise, fall back to 'other'.
|
|
502
|
+
*/
|
|
503
|
+
function categorizeRewardAsset(
|
|
504
|
+
rewardAssetAddress: string | undefined,
|
|
505
|
+
knownAddresses: Set<string>,
|
|
506
|
+
): string {
|
|
507
|
+
if (!rewardAssetAddress) return 'other'
|
|
508
|
+
const normalized = rewardAssetAddress.toLowerCase()
|
|
509
|
+
return knownAddresses.has(normalized) ? normalized : 'other'
|
|
510
|
+
}
|
|
511
|
+
|
|
492
512
|
/**
|
|
493
513
|
* Calculate detailed rewards breakdown from vault and market allocations
|
|
494
514
|
* @param apiVault - Vault data from GraphQL API
|
|
515
|
+
* @param supportedAssets - Configured assets for reward categorization
|
|
516
|
+
* @param chainId - Chain ID for address lookup
|
|
495
517
|
* @returns Detailed rewards breakdown
|
|
496
518
|
*/
|
|
497
|
-
export function calculateRewardsBreakdown(
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
519
|
+
export function calculateRewardsBreakdown(
|
|
520
|
+
apiVault: any,
|
|
521
|
+
chainId: number,
|
|
522
|
+
marketAsset?: Asset,
|
|
523
|
+
): RewardsBreakdown {
|
|
524
|
+
const assets = marketAsset
|
|
525
|
+
? [...NATIVELY_SUPPORTED_ASSETS, marketAsset]
|
|
526
|
+
: NATIVELY_SUPPORTED_ASSETS
|
|
527
|
+
// Build set of known asset addresses on this chain
|
|
528
|
+
const knownAddresses = new Set<string>()
|
|
529
|
+
for (const token of assets) {
|
|
530
|
+
const addr = token.address[chainId as keyof typeof token.address]
|
|
531
|
+
if (addr && addr !== 'native') {
|
|
532
|
+
knownAddresses.add(addr.toLowerCase())
|
|
533
|
+
}
|
|
501
534
|
}
|
|
502
535
|
|
|
503
|
-
//
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
536
|
+
// Initialize rewards object with all known addresses + other
|
|
537
|
+
const rewardsByCategory: Record<string, number> = { other: 0 }
|
|
538
|
+
for (const addr of knownAddresses) {
|
|
539
|
+
rewardsByCategory[addr] = 0
|
|
540
|
+
}
|
|
507
541
|
|
|
508
542
|
// Calculate vault-level rewards
|
|
509
543
|
if (apiVault.state?.rewards && apiVault.state.rewards.length > 0) {
|
|
510
|
-
apiVault.state.rewards
|
|
544
|
+
for (const reward of apiVault.state.rewards) {
|
|
511
545
|
const rewardApr = reward.supplyApr || 0
|
|
512
|
-
const
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
if (category in rewardsByCategory) {
|
|
519
|
-
rewardsByCategory[category] += rewardApr
|
|
520
|
-
} else {
|
|
521
|
-
rewardsByCategory.other += rewardApr
|
|
522
|
-
}
|
|
523
|
-
})
|
|
546
|
+
const category = categorizeRewardAsset(
|
|
547
|
+
reward.asset?.address,
|
|
548
|
+
knownAddresses,
|
|
549
|
+
)
|
|
550
|
+
rewardsByCategory[category] += rewardApr
|
|
551
|
+
}
|
|
524
552
|
}
|
|
525
553
|
|
|
526
554
|
// Calculate market-level rewards (weighted by allocation)
|
|
@@ -532,7 +560,7 @@ export function calculateRewardsBreakdown(apiVault: any): RewardsBreakdown {
|
|
|
532
560
|
0,
|
|
533
561
|
)
|
|
534
562
|
|
|
535
|
-
apiVault.state.allocation
|
|
563
|
+
for (const allocation of apiVault.state.allocation) {
|
|
536
564
|
if (
|
|
537
565
|
allocation.market?.state?.rewards &&
|
|
538
566
|
allocation.market.state.rewards.length > 0
|
|
@@ -542,23 +570,17 @@ export function calculateRewardsBreakdown(apiVault: any): RewardsBreakdown {
|
|
|
542
570
|
? (allocation.supplyAssetsUsd || 0) / totalSupplyUsd
|
|
543
571
|
: 0
|
|
544
572
|
|
|
545
|
-
allocation.market.state.rewards
|
|
573
|
+
for (const reward of allocation.market.state.rewards) {
|
|
546
574
|
const rewardApr = reward.supplyApr || 0
|
|
547
575
|
const weightedRewardApr = rewardApr * weight
|
|
548
|
-
const
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
if (category in rewardsByCategory) {
|
|
555
|
-
rewardsByCategory[category] += weightedRewardApr
|
|
556
|
-
} else {
|
|
557
|
-
rewardsByCategory.other += weightedRewardApr
|
|
558
|
-
}
|
|
559
|
-
})
|
|
576
|
+
const category = categorizeRewardAsset(
|
|
577
|
+
reward.asset?.address,
|
|
578
|
+
knownAddresses,
|
|
579
|
+
)
|
|
580
|
+
rewardsByCategory[category] += weightedRewardApr
|
|
581
|
+
}
|
|
560
582
|
}
|
|
561
|
-
}
|
|
583
|
+
}
|
|
562
584
|
}
|
|
563
585
|
|
|
564
586
|
// Calculate total rewards APR
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
import type { BundlerClient, SmartAccount } from 'viem/account-abstraction'
|
|
13
13
|
import { createBundlerClient } from 'viem/account-abstraction'
|
|
14
14
|
|
|
15
|
-
import type {
|
|
15
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
16
16
|
import type { ChainConfig } from '@/types/chain.js'
|
|
17
17
|
|
|
18
18
|
/**
|
|
@@ -22,7 +22,7 @@ import type { ChainConfig } from '@/types/chain.js'
|
|
|
22
22
|
*/
|
|
23
23
|
export class ChainManager {
|
|
24
24
|
/** Map of chain IDs to their corresponding public clients */
|
|
25
|
-
private publicClients: Map<
|
|
25
|
+
private publicClients: Map<SupportedChainId, PublicClient>
|
|
26
26
|
/** Configuration for each supported chain */
|
|
27
27
|
private chainConfigs: ChainConfig[]
|
|
28
28
|
|
|
@@ -41,7 +41,7 @@ export class ChainManager {
|
|
|
41
41
|
* @returns PublicClient instance for the specified chain
|
|
42
42
|
* @throws Error if no client is configured for the chain ID
|
|
43
43
|
*/
|
|
44
|
-
getPublicClient(chainId:
|
|
44
|
+
getPublicClient(chainId: SupportedChainId): PublicClient {
|
|
45
45
|
const client = this.publicClients.get(chainId)
|
|
46
46
|
if (!client) {
|
|
47
47
|
throw new Error(`No public client configured for chain ID: ${chainId}`)
|
|
@@ -57,7 +57,7 @@ export class ChainManager {
|
|
|
57
57
|
* @throws Error if no bundler URL is configured for the chain ID
|
|
58
58
|
*/
|
|
59
59
|
getBundlerClient(
|
|
60
|
-
chainId:
|
|
60
|
+
chainId: SupportedChainId,
|
|
61
61
|
account: SmartAccount,
|
|
62
62
|
): BundlerClient | SmartAccountClient {
|
|
63
63
|
const chainConfig = this.getChainConfig(chainId)
|
|
@@ -94,9 +94,7 @@ export class ChainManager {
|
|
|
94
94
|
* @returns RPC URL as a string
|
|
95
95
|
* @throws Error if no chain config is found for the chain ID
|
|
96
96
|
*/
|
|
97
|
-
getRpcUrls(
|
|
98
|
-
chainId: (typeof SUPPORTED_CHAIN_IDS)[number],
|
|
99
|
-
): string[] | undefined {
|
|
97
|
+
getRpcUrls(chainId: SupportedChainId): string[] | undefined {
|
|
100
98
|
const chainConfig = this.getChainConfig(chainId)
|
|
101
99
|
return chainConfig.rpcUrls
|
|
102
100
|
}
|
|
@@ -107,9 +105,7 @@ export class ChainManager {
|
|
|
107
105
|
* @returns Bundler URL as a string or undefined if not configured
|
|
108
106
|
* @throws Error if no chain config is found for the chain ID
|
|
109
107
|
*/
|
|
110
|
-
getBundlerUrl(
|
|
111
|
-
chainId: (typeof SUPPORTED_CHAIN_IDS)[number],
|
|
112
|
-
): string | undefined {
|
|
108
|
+
getBundlerUrl(chainId: SupportedChainId): string | undefined {
|
|
113
109
|
const chainConfig = this.getChainConfig(chainId)
|
|
114
110
|
if (!chainConfig.bundler) {
|
|
115
111
|
throw new Error(`No bundler configured for chain ID: ${chainId}`)
|
|
@@ -122,7 +118,7 @@ export class ChainManager {
|
|
|
122
118
|
* @param chainId - The chain ID to retrieve information for
|
|
123
119
|
* @returns Chain object containing chain details
|
|
124
120
|
*/
|
|
125
|
-
getChain(chainId:
|
|
121
|
+
getChain(chainId: SupportedChainId): Chain {
|
|
126
122
|
return chainById[chainId]
|
|
127
123
|
}
|
|
128
124
|
|
|
@@ -140,7 +136,7 @@ export class ChainManager {
|
|
|
140
136
|
* @returns Transport configured with fallback RPC URLs or default http transport
|
|
141
137
|
* @throws Error if no chain config is found for the chain ID
|
|
142
138
|
*/
|
|
143
|
-
getTransportForChain(chainId:
|
|
139
|
+
getTransportForChain(chainId: SupportedChainId) {
|
|
144
140
|
const rpcUrls = this.getRpcUrls(chainId)
|
|
145
141
|
return rpcUrls?.length
|
|
146
142
|
? fallback(rpcUrls.map((rpcUrl) => http(rpcUrl)))
|
|
@@ -155,11 +151,8 @@ export class ChainManager {
|
|
|
155
151
|
*/
|
|
156
152
|
private createPublicClients(
|
|
157
153
|
chains: ChainConfig[],
|
|
158
|
-
): Map<
|
|
159
|
-
const clients = new Map<
|
|
160
|
-
(typeof SUPPORTED_CHAIN_IDS)[number],
|
|
161
|
-
PublicClient
|
|
162
|
-
>()
|
|
154
|
+
): Map<SupportedChainId, PublicClient> {
|
|
155
|
+
const clients = new Map<SupportedChainId, PublicClient>()
|
|
163
156
|
|
|
164
157
|
for (const chainConfig of chains) {
|
|
165
158
|
const chain = chainById[chainConfig.chainId]
|
|
@@ -187,9 +180,7 @@ export class ChainManager {
|
|
|
187
180
|
* @param chainId The chain ID to retrieve the chain config for
|
|
188
181
|
* @returns ChainConfig object containing chain details
|
|
189
182
|
*/
|
|
190
|
-
private getChainConfig(
|
|
191
|
-
chainId: (typeof SUPPORTED_CHAIN_IDS)[number],
|
|
192
|
-
): ChainConfig {
|
|
183
|
+
private getChainConfig(chainId: SupportedChainId): ChainConfig {
|
|
193
184
|
const chainConfig = this.chainConfigs.find((c) => c.chainId === chainId)
|
|
194
185
|
if (!chainConfig) {
|
|
195
186
|
throw new Error(`No chain config found for chain ID: ${chainId}`)
|
|
@@ -205,7 +196,7 @@ export class ChainManager {
|
|
|
205
196
|
* @returns Pimlico bundler client for the specified chain
|
|
206
197
|
*/
|
|
207
198
|
private getPimlicoBundlerClient(
|
|
208
|
-
chainId:
|
|
199
|
+
chainId: SupportedChainId,
|
|
209
200
|
account: SmartAccount,
|
|
210
201
|
sponsorshipPolicyId?: string,
|
|
211
202
|
) {
|
|
@@ -4,10 +4,7 @@ import type { BundlerClient, SmartAccount } from 'viem/account-abstraction'
|
|
|
4
4
|
import { unichain } from 'viem/chains'
|
|
5
5
|
import { type MockedFunction, vi } from 'vitest'
|
|
6
6
|
|
|
7
|
-
import type {
|
|
8
|
-
SUPPORTED_CHAIN_IDS,
|
|
9
|
-
SupportedChainId,
|
|
10
|
-
} from '@/constants/supportedChains.js'
|
|
7
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
11
8
|
|
|
12
9
|
export interface MockChainManagerConfig {
|
|
13
10
|
supportedChains: SupportedChainId[]
|
|
@@ -79,15 +76,15 @@ export class MockChainManager {
|
|
|
79
76
|
})
|
|
80
77
|
}
|
|
81
78
|
|
|
82
|
-
getChain(chainId:
|
|
79
|
+
getChain(chainId: SupportedChainId): Chain {
|
|
83
80
|
return chainById[chainId]
|
|
84
81
|
}
|
|
85
82
|
|
|
86
|
-
getRpcUrls(chainId:
|
|
83
|
+
getRpcUrls(chainId: SupportedChainId): string[] {
|
|
87
84
|
return this.getChain(chainId).rpcUrls.default.http as string[]
|
|
88
85
|
}
|
|
89
86
|
|
|
90
|
-
getTransportForChain(_chainId:
|
|
87
|
+
getTransportForChain(_chainId: SupportedChainId) {
|
|
91
88
|
// Mock implementation returns a simple http transport
|
|
92
89
|
// In tests, the actual transport behavior is typically mocked at a higher level
|
|
93
90
|
return {} as unknown
|
|
@@ -29,17 +29,15 @@ describe('TokenBalance', () => {
|
|
|
29
29
|
)
|
|
30
30
|
|
|
31
31
|
expect(balance).toEqual({
|
|
32
|
-
|
|
33
|
-
totalBalance:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
{
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
formattedBalance: '1',
|
|
40
|
-
tokenAddress: MockUSDCAsset.address[unichain.id]!,
|
|
32
|
+
asset: MockUSDCAsset,
|
|
33
|
+
totalBalance: 1,
|
|
34
|
+
totalBalanceRaw: 1000000n,
|
|
35
|
+
chains: {
|
|
36
|
+
[unichain.id]: {
|
|
37
|
+
balance: 1,
|
|
38
|
+
balanceRaw: 1000000n,
|
|
41
39
|
},
|
|
42
|
-
|
|
40
|
+
},
|
|
43
41
|
})
|
|
44
42
|
})
|
|
45
43
|
|
|
@@ -63,10 +61,10 @@ describe('TokenBalance', () => {
|
|
|
63
61
|
)
|
|
64
62
|
|
|
65
63
|
expect(balance).toEqual({
|
|
66
|
-
|
|
67
|
-
totalBalance:
|
|
68
|
-
|
|
69
|
-
|
|
64
|
+
asset: unsupportedAsset,
|
|
65
|
+
totalBalance: 0,
|
|
66
|
+
totalBalanceRaw: 0n,
|
|
67
|
+
chains: {},
|
|
70
68
|
})
|
|
71
69
|
})
|
|
72
70
|
})
|
|
@@ -76,17 +74,15 @@ describe('TokenBalance', () => {
|
|
|
76
74
|
const balance = await fetchETHBalance(chainManager, walletAddress)
|
|
77
75
|
|
|
78
76
|
expect(balance).toEqual({
|
|
79
|
-
|
|
80
|
-
totalBalance:
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
{
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
formattedBalance: '0.000000000001',
|
|
87
|
-
tokenAddress: ETH.address[unichain.id]!,
|
|
77
|
+
asset: ETH,
|
|
78
|
+
totalBalance: 0.000000000001,
|
|
79
|
+
totalBalanceRaw: 1000000n,
|
|
80
|
+
chains: {
|
|
81
|
+
[unichain.id]: {
|
|
82
|
+
balance: 0.000000000001,
|
|
83
|
+
balanceRaw: 1000000n,
|
|
88
84
|
},
|
|
89
|
-
|
|
85
|
+
},
|
|
90
86
|
})
|
|
91
87
|
})
|
|
92
88
|
})
|