@eth-optimism/actions-sdk 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__mocks__/MockAssets.d.ts +17 -2
- package/dist/__mocks__/MockAssets.d.ts.map +1 -1
- package/dist/__mocks__/MockAssets.js +49 -4
- package/dist/__mocks__/MockAssets.js.map +1 -1
- package/dist/__tests__/actions.test.js +1 -5
- package/dist/__tests__/actions.test.js.map +1 -1
- package/dist/actions.d.ts +23 -9
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +68 -36
- package/dist/actions.js.map +1 -1
- package/dist/constants/assets.d.ts +217 -2
- package/dist/constants/assets.d.ts.map +1 -1
- package/dist/constants/assets.js +744 -6
- package/dist/constants/assets.js.map +1 -1
- package/dist/constants/contracts.d.ts +4 -0
- package/dist/constants/contracts.d.ts.map +1 -0
- package/dist/constants/contracts.js +3 -0
- package/dist/constants/contracts.js.map +1 -0
- package/dist/constants/providers.d.ts +6 -0
- package/dist/constants/providers.d.ts.map +1 -0
- package/dist/constants/providers.js +6 -0
- package/dist/constants/providers.js.map +1 -0
- package/dist/constants/supportedChains.d.ts +2 -2
- package/dist/constants/supportedChains.d.ts.map +1 -1
- package/dist/constants/supportedChains.js +12 -2
- package/dist/constants/supportedChains.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/lend/__mocks__/MockLendProvider.d.ts +1 -1
- package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -1
- package/dist/lend/__mocks__/MockLendProvider.js +7 -2
- package/dist/lend/__mocks__/MockLendProvider.js.map +1 -1
- package/dist/lend/core/LendProvider.d.ts +12 -14
- package/dist/lend/core/LendProvider.d.ts.map +1 -1
- package/dist/lend/core/LendProvider.js +16 -31
- package/dist/lend/core/LendProvider.js.map +1 -1
- package/dist/lend/core/__tests__/LendProvider.test.js +2 -4
- package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
- package/dist/lend/namespaces/BaseLendNamespace.d.ts +2 -6
- package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -1
- package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -1
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +7 -4
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -1
- package/dist/lend/providers/aave/AaveLendProvider.d.ts +1 -6
- package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
- package/dist/lend/providers/aave/AaveLendProvider.js +3 -6
- package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +14 -6
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -1
- package/dist/lend/providers/aave/addresses.d.ts +13 -39
- package/dist/lend/providers/aave/addresses.d.ts.map +1 -1
- package/dist/lend/providers/aave/addresses.js +65 -60
- package/dist/lend/providers/aave/addresses.js.map +1 -1
- package/dist/lend/providers/aave/sdk.d.ts +2 -2
- package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
- package/dist/lend/providers/aave/sdk.js +6 -28
- package/dist/lend/providers/aave/sdk.js.map +1 -1
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +1 -6
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
- package/dist/lend/providers/morpho/MorphoLendProvider.js +4 -13
- package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/api.test.js +52 -43
- package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/sdk.test.js +41 -41
- package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
- package/dist/lend/providers/morpho/api.d.ts +3 -3
- package/dist/lend/providers/morpho/api.d.ts.map +1 -1
- package/dist/lend/providers/morpho/api.js +2 -2
- package/dist/lend/providers/morpho/api.js.map +1 -1
- package/dist/lend/providers/morpho/contracts.d.ts +11 -10
- package/dist/lend/providers/morpho/contracts.d.ts.map +1 -1
- package/dist/lend/providers/morpho/contracts.js +43 -10
- package/dist/lend/providers/morpho/contracts.js.map +1 -1
- package/dist/lend/providers/morpho/sdk.d.ts +7 -2
- package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
- package/dist/lend/providers/morpho/sdk.js +67 -54
- package/dist/lend/providers/morpho/sdk.js.map +1 -1
- package/dist/nodeActionsFactory.d.ts +1 -1
- package/dist/reactActionsFactory.d.ts +1 -1
- package/dist/services/ChainManager.d.ts +8 -8
- package/dist/services/ChainManager.d.ts.map +1 -1
- package/dist/services/ChainManager.js.map +1 -1
- package/dist/services/__mocks__/MockChainManager.d.ts +4 -4
- package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
- package/dist/services/__mocks__/MockChainManager.js.map +1 -1
- package/dist/services/tokenBalance.d.ts +1 -1
- package/dist/services/tokenBalance.d.ts.map +1 -1
- package/dist/services/tokenBalance.js +31 -30
- package/dist/services/tokenBalance.js.map +1 -1
- package/dist/services/tokenBalance.spec.js +20 -24
- package/dist/services/tokenBalance.spec.js.map +1 -1
- package/dist/swap/__mocks__/MockSwapProvider.d.ts +50 -0
- package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -0
- package/dist/swap/__mocks__/MockSwapProvider.js +161 -0
- package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -0
- package/dist/swap/core/SwapProvider.d.ts +145 -0
- package/dist/swap/core/SwapProvider.d.ts.map +1 -0
- package/dist/swap/core/SwapProvider.js +359 -0
- package/dist/swap/core/SwapProvider.js.map +1 -0
- package/dist/swap/core/__tests__/SwapProvider.test.d.ts +2 -0
- package/dist/swap/core/__tests__/SwapProvider.test.d.ts.map +1 -0
- package/dist/swap/core/__tests__/SwapProvider.test.js +435 -0
- package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -0
- package/dist/swap/core/markets.d.ts +47 -0
- package/dist/swap/core/markets.d.ts.map +1 -0
- package/dist/swap/core/markets.js +65 -0
- package/dist/swap/core/markets.js.map +1 -0
- package/dist/swap/index.d.ts +9 -0
- package/dist/swap/index.d.ts.map +1 -0
- package/dist/swap/index.js +9 -0
- package/dist/swap/index.js.map +1 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +8 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.d.ts.map +1 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.js +8 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.js.map +1 -0
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts +73 -0
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -0
- package/dist/swap/namespaces/BaseSwapNamespace.js +181 -0
- package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -0
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts +34 -0
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -0
- package/dist/swap/namespaces/WalletSwapNamespace.js +84 -0
- package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts +2 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +1 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +245 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts +2 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +1 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +209 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +35 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.js +148 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts +2 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +258 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts +2 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.js +312 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -0
- package/dist/swap/providers/uniswap/abis.d.ts +227 -0
- package/dist/swap/providers/uniswap/abis.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/abis.js +138 -0
- package/dist/swap/providers/uniswap/abis.js.map +1 -0
- package/dist/swap/providers/uniswap/addresses.d.ts +26 -0
- package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/addresses.js +81 -0
- package/dist/swap/providers/uniswap/addresses.js.map +1 -0
- package/dist/swap/providers/uniswap/encoding.d.ts +77 -0
- package/dist/swap/providers/uniswap/encoding.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/encoding.js +233 -0
- package/dist/swap/providers/uniswap/encoding.js.map +1 -0
- package/dist/swap/providers/uniswap/markets.d.ts +19 -0
- package/dist/swap/providers/uniswap/markets.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/markets.js +48 -0
- package/dist/swap/providers/uniswap/markets.js.map +1 -0
- package/dist/swap/providers/uniswap/types.d.ts +21 -0
- package/dist/swap/providers/uniswap/types.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/types.js +2 -0
- package/dist/swap/providers/uniswap/types.js.map +1 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +49 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.js +140 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +255 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +166 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +419 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js +51 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts +14 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js +13 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js +173 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
- package/dist/swap/providers/velodrome/abis.d.ts +396 -0
- package/dist/swap/providers/velodrome/abis.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/abis.js +257 -0
- package/dist/swap/providers/velodrome/abis.js.map +1 -0
- package/dist/swap/providers/velodrome/addresses.d.ts +39 -0
- package/dist/swap/providers/velodrome/addresses.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/addresses.js +57 -0
- package/dist/swap/providers/velodrome/addresses.js.map +1 -0
- package/dist/swap/providers/velodrome/config.d.ts +22 -0
- package/dist/swap/providers/velodrome/config.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/config.js +29 -0
- package/dist/swap/providers/velodrome/config.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/helpers.d.ts +37 -0
- package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/helpers.js +60 -0
- package/dist/swap/providers/velodrome/encoding/helpers.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/index.d.ts +8 -0
- package/dist/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/index.js +5 -0
- package/dist/swap/providers/velodrome/encoding/index.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts +39 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.js +83 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +15 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.js +33 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts +40 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.js +80 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts +42 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.js +166 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
- package/dist/swap/providers/velodrome/markets.d.ts +21 -0
- package/dist/swap/providers/velodrome/markets.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/markets.js +69 -0
- package/dist/swap/providers/velodrome/markets.js.map +1 -0
- package/dist/swap/providers/velodrome/types.d.ts +31 -0
- package/dist/swap/providers/velodrome/types.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/types.js +2 -0
- package/dist/swap/providers/velodrome/types.js.map +1 -0
- package/dist/types/actions.d.ts +60 -11
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/asset.d.ts +7 -9
- package/dist/types/asset.d.ts.map +1 -1
- package/dist/types/chain.d.ts +2 -2
- package/dist/types/chain.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/lend/base.d.ts +9 -19
- package/dist/types/lend/base.d.ts.map +1 -1
- package/dist/types/lend/base.js.map +1 -1
- package/dist/types/lend/contracts.d.ts +2 -1
- package/dist/types/lend/contracts.d.ts.map +1 -1
- package/dist/types/providers.d.ts +21 -0
- package/dist/types/providers.d.ts.map +1 -0
- package/dist/types/providers.js +2 -0
- package/dist/types/providers.js.map +1 -0
- package/dist/types/swap/base.d.ts +338 -0
- package/dist/types/swap/base.d.ts.map +1 -0
- package/dist/types/swap/base.js +4 -0
- package/dist/types/swap/base.js.map +1 -0
- package/dist/types/swap/index.d.ts +2 -0
- package/dist/types/swap/index.d.ts.map +1 -0
- package/dist/types/swap/index.js +2 -0
- package/dist/types/swap/index.js.map +1 -0
- package/dist/types/transaction.d.ts +14 -0
- package/dist/types/transaction.d.ts.map +1 -0
- package/dist/types/transaction.js +2 -0
- package/dist/types/transaction.js.map +1 -0
- package/dist/utils/approve.d.ts +82 -0
- package/dist/utils/approve.d.ts.map +1 -0
- package/dist/utils/approve.js +134 -0
- package/dist/utils/approve.js.map +1 -0
- package/dist/utils/approve.test.d.ts +2 -0
- package/dist/utils/approve.test.d.ts.map +1 -0
- package/dist/utils/approve.test.js +203 -0
- package/dist/utils/approve.test.js.map +1 -0
- package/dist/utils/assets.d.ts +10 -5
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/assets.js +14 -11
- package/dist/utils/assets.js.map +1 -1
- package/dist/utils/assets.test.js +13 -1
- package/dist/utils/assets.test.js.map +1 -1
- package/dist/utils/validateAddresses.d.ts +32 -0
- package/dist/utils/validateAddresses.d.ts.map +1 -0
- package/dist/utils/validateAddresses.js +103 -0
- package/dist/utils/validateAddresses.js.map +1 -0
- package/dist/utils/validateAddresses.test.d.ts +2 -0
- package/dist/utils/validateAddresses.test.d.ts.map +1 -0
- package/dist/utils/validateAddresses.test.js +314 -0
- package/dist/utils/validateAddresses.test.js.map +1 -0
- package/dist/utils/validation.d.ts +12 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +44 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/wallet/core/namespace/WalletNamespace.d.ts +21 -9
- package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
- package/dist/wallet/core/namespace/WalletNamespace.js +44 -15
- package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +4 -10
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +2 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -7
- package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +5 -6
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +5 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +2 -2
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts +12 -12
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.js +9 -4
- package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +10 -1
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +2 -2
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +12 -4
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +5 -7
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +6 -5
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +4 -6
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +2 -4
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +8 -9
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +4 -4
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +3 -6
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +4 -2
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +4 -6
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +4 -3
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -6
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -6
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +7 -2
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +1 -0
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +5 -6
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +6 -2
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -0
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +5 -8
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -4
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +2 -4
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +11 -13
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +6 -6
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +7 -6
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +5 -3
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +2 -6
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +5 -6
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -6
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
- package/package.json +4 -3
- package/src/__mocks__/MockAssets.ts +54 -4
- package/src/__tests__/actions.test.ts +1 -5
- package/src/actions.ts +106 -71
- package/src/constants/assets.ts +792 -5
- package/src/constants/contracts.ts +5 -0
- package/src/constants/providers.ts +5 -0
- package/src/constants/supportedChains.ts +22 -2
- package/src/index.ts +76 -6
- package/src/lend/__mocks__/MockLendProvider.ts +8 -3
- package/src/lend/core/LendProvider.ts +28 -41
- package/src/lend/core/__tests__/LendProvider.test.ts +2 -5
- package/src/lend/namespaces/BaseLendNamespace.ts +2 -6
- package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +12 -5
- package/src/lend/providers/aave/AaveLendProvider.ts +3 -7
- package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +16 -7
- package/src/lend/providers/aave/addresses.ts +82 -64
- package/src/lend/providers/aave/sdk.ts +11 -36
- package/src/lend/providers/morpho/MorphoLendProvider.ts +4 -16
- package/src/lend/providers/morpho/__tests__/api.test.ts +65 -44
- package/src/lend/providers/morpho/__tests__/sdk.test.ts +43 -42
- package/src/lend/providers/morpho/api.ts +7 -4
- package/src/lend/providers/morpho/contracts.ts +62 -13
- package/src/lend/providers/morpho/sdk.ts +85 -54
- package/src/services/ChainManager.ts +12 -21
- package/src/services/__mocks__/MockChainManager.ts +4 -7
- package/src/services/tokenBalance.spec.ts +20 -24
- package/src/services/tokenBalance.ts +39 -33
- package/src/swap/__mocks__/MockSwapProvider.ts +251 -0
- package/src/swap/core/SwapProvider.ts +577 -0
- package/src/swap/core/__tests__/SwapProvider.test.ts +620 -0
- package/src/swap/core/markets.ts +104 -0
- package/src/swap/index.ts +19 -0
- package/src/swap/namespaces/ActionsSwapNamespace.ts +7 -0
- package/src/swap/namespaces/BaseSwapNamespace.ts +258 -0
- package/src/swap/namespaces/WalletSwapNamespace.ts +121 -0
- package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +365 -0
- package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +257 -0
- package/src/swap/providers/uniswap/UniswapSwapProvider.ts +217 -0
- package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +299 -0
- package/src/swap/providers/uniswap/__tests__/sdk.test.ts +369 -0
- package/src/swap/providers/uniswap/abis.ts +144 -0
- package/src/swap/providers/uniswap/addresses.ts +110 -0
- package/src/swap/providers/uniswap/encoding.ts +406 -0
- package/src/swap/providers/uniswap/markets.ts +84 -0
- package/src/swap/providers/uniswap/types.ts +25 -0
- package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +224 -0
- package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +341 -0
- package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +202 -0
- package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +506 -0
- package/src/swap/providers/velodrome/__tests__/encoding.cl.test.ts +69 -0
- package/src/swap/providers/velodrome/__tests__/encoding.helpers.ts +20 -0
- package/src/swap/providers/velodrome/__tests__/encoding.v2.test.ts +235 -0
- package/src/swap/providers/velodrome/abis.ts +264 -0
- package/src/swap/providers/velodrome/addresses.ts +107 -0
- package/src/swap/providers/velodrome/config.ts +46 -0
- package/src/swap/providers/velodrome/encoding/helpers.ts +82 -0
- package/src/swap/providers/velodrome/encoding/index.ts +7 -0
- package/src/swap/providers/velodrome/encoding/poolRouter.ts +124 -0
- package/src/swap/providers/velodrome/encoding/routers/approval.ts +45 -0
- package/src/swap/providers/velodrome/encoding/routers/cl.ts +156 -0
- package/src/swap/providers/velodrome/encoding/routers/v2.ts +267 -0
- package/src/swap/providers/velodrome/markets.ts +100 -0
- package/src/swap/providers/velodrome/types.ts +30 -0
- package/src/types/actions.ts +68 -12
- package/src/types/asset.ts +12 -9
- package/src/types/chain.ts +2 -2
- package/src/types/index.ts +2 -0
- package/src/types/lend/base.ts +10 -20
- package/src/types/lend/contracts.ts +5 -1
- package/src/types/providers.ts +22 -0
- package/src/types/swap/base.ts +372 -0
- package/src/types/swap/index.ts +1 -0
- package/src/types/transaction.ts +14 -0
- package/src/utils/approve.test.ts +258 -0
- package/src/utils/approve.ts +197 -0
- package/src/utils/assets.test.ts +16 -1
- package/src/utils/assets.ts +27 -10
- package/src/utils/validateAddresses.test.ts +439 -0
- package/src/utils/validateAddresses.ts +153 -0
- package/src/utils/validation.ts +76 -0
- package/src/wallet/core/namespace/WalletNamespace.ts +70 -16
- package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +8 -4
- package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +6 -10
- package/src/wallet/core/providers/hosted/types/index.ts +9 -7
- package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +10 -10
- package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +2 -0
- package/src/wallet/core/wallets/abstract/Wallet.ts +23 -14
- package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +13 -1
- package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +21 -5
- package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +11 -14
- package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
- package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +11 -7
- package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +16 -8
- package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
- package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +6 -7
- package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +8 -11
- package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +7 -11
- package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +11 -7
- package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +1 -0
- package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +10 -7
- package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -0
- package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +10 -9
- package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +38 -13
- package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
- package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +13 -11
- package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
- package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +11 -11
- package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +11 -11
- package/dist/supported/tokens.d.ts +0 -25
- package/dist/supported/tokens.d.ts.map +0 -1
- package/dist/supported/tokens.js +0 -37
- package/dist/supported/tokens.js.map +0 -1
- package/src/supported/tokens.ts +0 -52
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import type { Address, Hex, PublicClient } from 'viem'
|
|
2
|
+
import { encodeAbiParameters, encodeFunctionData, encodePacked } from 'viem'
|
|
3
|
+
|
|
4
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
5
|
+
import {
|
|
6
|
+
LEAF_ROUTER_ABI,
|
|
7
|
+
POOL_ABI,
|
|
8
|
+
POOL_FACTORY_ABI,
|
|
9
|
+
UNIVERSAL_ROUTER_ABI,
|
|
10
|
+
V2_ROUTER_ABI,
|
|
11
|
+
} from '@/swap/providers/velodrome/abis.js'
|
|
12
|
+
import type { VelodromeRouterType } from '@/swap/providers/velodrome/config.js'
|
|
13
|
+
import {
|
|
14
|
+
buildSwapPrice,
|
|
15
|
+
resolveTokens,
|
|
16
|
+
UNIVERSAL_ROUTER_MSG_SENDER,
|
|
17
|
+
} from '@/swap/providers/velodrome/encoding/helpers.js'
|
|
18
|
+
import type { Asset } from '@/types/asset.js'
|
|
19
|
+
import type { SwapPrice, SwapRoute } from '@/types/swap/index.js'
|
|
20
|
+
import { isNativeAsset } from '@/utils/assets.js'
|
|
21
|
+
|
|
22
|
+
/** Universal Router V2_SWAP_EXACT_IN command byte */
|
|
23
|
+
const V2_SWAP_EXACT_IN = 0x08
|
|
24
|
+
|
|
25
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
26
|
+
// Quoting
|
|
27
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
28
|
+
|
|
29
|
+
export interface GetQuoteParams {
|
|
30
|
+
assetIn: Asset
|
|
31
|
+
assetOut: Asset
|
|
32
|
+
amountInRaw: bigint
|
|
33
|
+
chainId: SupportedChainId
|
|
34
|
+
publicClient: PublicClient
|
|
35
|
+
routerAddress: Address
|
|
36
|
+
routerType: VelodromeRouterType
|
|
37
|
+
stable: boolean
|
|
38
|
+
factoryAddress: Address
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Get a v2 AMM swap quote.
|
|
43
|
+
* @param params - Quote parameters including router type
|
|
44
|
+
* @returns Price quote with amounts and route
|
|
45
|
+
*/
|
|
46
|
+
export async function getQuote(params: GetQuoteParams): Promise<SwapPrice> {
|
|
47
|
+
const { assetIn, assetOut, amountInRaw, chainId } = params
|
|
48
|
+
const { tokenIn, tokenOut } = resolveTokens(assetIn, assetOut, chainId)
|
|
49
|
+
const amountOutRaw = await fetchAmountOut(params, tokenIn, tokenOut)
|
|
50
|
+
const route: SwapRoute = {
|
|
51
|
+
path: [assetIn, assetOut],
|
|
52
|
+
pools: [{ address: tokenIn, fee: 0, version: 'v2' }],
|
|
53
|
+
}
|
|
54
|
+
return buildSwapPrice(assetIn, assetOut, amountInRaw, amountOutRaw, route)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Fetch the output amount using the appropriate quoting mechanism for the router type.
|
|
59
|
+
* @param params - Quote parameters
|
|
60
|
+
* @param tokenIn - Resolved input token address
|
|
61
|
+
* @param tokenOut - Resolved output token address
|
|
62
|
+
* @returns Output amount as raw bigint
|
|
63
|
+
* @throws If router type is unknown
|
|
64
|
+
*/
|
|
65
|
+
async function fetchAmountOut(
|
|
66
|
+
params: GetQuoteParams,
|
|
67
|
+
tokenIn: Address,
|
|
68
|
+
tokenOut: Address,
|
|
69
|
+
): Promise<bigint> {
|
|
70
|
+
const { routerType } = params
|
|
71
|
+
|
|
72
|
+
if (routerType === 'universal') {
|
|
73
|
+
return fetchAmountOutViaPool(params, tokenIn, tokenOut)
|
|
74
|
+
}
|
|
75
|
+
if (routerType === 'v2') {
|
|
76
|
+
return fetchAmountOutViaRouter(params, V2_ROUTER_ABI, {
|
|
77
|
+
from: tokenIn,
|
|
78
|
+
to: tokenOut,
|
|
79
|
+
stable: params.stable,
|
|
80
|
+
factory: params.factoryAddress,
|
|
81
|
+
})
|
|
82
|
+
}
|
|
83
|
+
if (routerType === 'leaf') {
|
|
84
|
+
return fetchAmountOutViaRouter(params, LEAF_ROUTER_ABI, {
|
|
85
|
+
from: tokenIn,
|
|
86
|
+
to: tokenOut,
|
|
87
|
+
stable: params.stable,
|
|
88
|
+
})
|
|
89
|
+
}
|
|
90
|
+
throw new Error(`Unknown router type: ${routerType as string}`)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** Quote via Pool.getAmountOut (Universal Router path — no router-level quoting available). */
|
|
94
|
+
async function fetchAmountOutViaPool(
|
|
95
|
+
params: GetQuoteParams,
|
|
96
|
+
tokenIn: Address,
|
|
97
|
+
tokenOut: Address,
|
|
98
|
+
): Promise<bigint> {
|
|
99
|
+
const { publicClient, factoryAddress, stable, assetIn, assetOut } = params
|
|
100
|
+
|
|
101
|
+
const poolAddress = await publicClient.readContract({
|
|
102
|
+
address: factoryAddress,
|
|
103
|
+
abi: POOL_FACTORY_ABI,
|
|
104
|
+
functionName: 'getPool',
|
|
105
|
+
args: [tokenIn, tokenOut, stable],
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
if (
|
|
109
|
+
!poolAddress ||
|
|
110
|
+
poolAddress === '0x0000000000000000000000000000000000000000'
|
|
111
|
+
) {
|
|
112
|
+
throw new Error(
|
|
113
|
+
`No Velodrome pool found for ${assetIn.metadata.symbol}/${assetOut.metadata.symbol} (stable=${stable})`,
|
|
114
|
+
)
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return (await publicClient.readContract({
|
|
118
|
+
address: poolAddress as Address,
|
|
119
|
+
abi: POOL_ABI,
|
|
120
|
+
functionName: 'getAmountOut',
|
|
121
|
+
args: [params.amountInRaw, tokenIn],
|
|
122
|
+
})) as bigint
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/** Quote via Router.getAmountsOut (v2 and leaf router path). */
|
|
126
|
+
async function fetchAmountOutViaRouter(
|
|
127
|
+
params: GetQuoteParams,
|
|
128
|
+
abi: typeof V2_ROUTER_ABI | typeof LEAF_ROUTER_ABI,
|
|
129
|
+
route: { from: Address; to: Address; stable: boolean; factory?: Address },
|
|
130
|
+
): Promise<bigint> {
|
|
131
|
+
const amounts = await params.publicClient.readContract({
|
|
132
|
+
address: params.routerAddress,
|
|
133
|
+
abi,
|
|
134
|
+
functionName: 'getAmountsOut',
|
|
135
|
+
args: [params.amountInRaw, [route]],
|
|
136
|
+
})
|
|
137
|
+
return (amounts as bigint[])[1]
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
141
|
+
// Encoding
|
|
142
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
143
|
+
|
|
144
|
+
export interface EncodeSwapParams {
|
|
145
|
+
assetIn: Asset
|
|
146
|
+
assetOut: Asset
|
|
147
|
+
amountInRaw: bigint
|
|
148
|
+
amountOutMin: bigint
|
|
149
|
+
routerType: VelodromeRouterType
|
|
150
|
+
stable: boolean
|
|
151
|
+
factoryAddress: Address
|
|
152
|
+
recipient: Address
|
|
153
|
+
deadline: number
|
|
154
|
+
chainId: SupportedChainId
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Encode swap calldata for the appropriate router type.
|
|
159
|
+
* @param params - Swap encoding parameters
|
|
160
|
+
* @returns Encoded calldata as hex string
|
|
161
|
+
* @throws If router type is unknown
|
|
162
|
+
*/
|
|
163
|
+
export function encodeSwap(params: EncodeSwapParams): Hex {
|
|
164
|
+
const { routerType } = params
|
|
165
|
+
const { tokenIn, tokenOut } = resolveTokens(
|
|
166
|
+
params.assetIn,
|
|
167
|
+
params.assetOut,
|
|
168
|
+
params.chainId,
|
|
169
|
+
)
|
|
170
|
+
|
|
171
|
+
if (routerType === 'universal') {
|
|
172
|
+
return encodeUniversalV2Swap(tokenIn, tokenOut, params)
|
|
173
|
+
}
|
|
174
|
+
if (routerType === 'v2') {
|
|
175
|
+
return encodeRouterSwap(tokenIn, tokenOut, params, V2_ROUTER_ABI, {
|
|
176
|
+
from: tokenIn,
|
|
177
|
+
to: tokenOut,
|
|
178
|
+
stable: params.stable,
|
|
179
|
+
factory: params.factoryAddress,
|
|
180
|
+
})
|
|
181
|
+
}
|
|
182
|
+
if (routerType === 'leaf') {
|
|
183
|
+
return encodeRouterSwap(tokenIn, tokenOut, params, LEAF_ROUTER_ABI, {
|
|
184
|
+
from: tokenIn,
|
|
185
|
+
to: tokenOut,
|
|
186
|
+
stable: params.stable,
|
|
187
|
+
})
|
|
188
|
+
}
|
|
189
|
+
throw new Error(`Unknown router type: ${routerType as string}`)
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Encode a V2_SWAP_EXACT_IN command for the Universal Router.
|
|
194
|
+
* Route: encodePacked(tokenIn, stable, tokenOut) — 41 bytes per hop.
|
|
195
|
+
* payerIsUser = false: tokens are pre-transferred to the Router by the smart wallet.
|
|
196
|
+
*/
|
|
197
|
+
function encodeUniversalV2Swap(
|
|
198
|
+
tokenIn: Address,
|
|
199
|
+
tokenOut: Address,
|
|
200
|
+
params: EncodeSwapParams,
|
|
201
|
+
): Hex {
|
|
202
|
+
const commands = `0x${V2_SWAP_EXACT_IN.toString(16).padStart(2, '0')}` as Hex
|
|
203
|
+
const routes = encodePacked(
|
|
204
|
+
['address', 'bool', 'address'],
|
|
205
|
+
[tokenIn, params.stable, tokenOut],
|
|
206
|
+
)
|
|
207
|
+
const input = encodeAbiParameters(
|
|
208
|
+
[
|
|
209
|
+
{ type: 'address' },
|
|
210
|
+
{ type: 'uint256' },
|
|
211
|
+
{ type: 'uint256' },
|
|
212
|
+
{ type: 'bytes' },
|
|
213
|
+
{ type: 'bool' },
|
|
214
|
+
{ type: 'bool' },
|
|
215
|
+
],
|
|
216
|
+
[
|
|
217
|
+
UNIVERSAL_ROUTER_MSG_SENDER, // recipient = msg.sender (Universal Router sentinel)
|
|
218
|
+
params.amountInRaw,
|
|
219
|
+
params.amountOutMin,
|
|
220
|
+
routes,
|
|
221
|
+
false, // payerIsUser
|
|
222
|
+
false, // isUni — false for Velodrome/Aerodrome
|
|
223
|
+
],
|
|
224
|
+
)
|
|
225
|
+
return encodeFunctionData({
|
|
226
|
+
abi: UNIVERSAL_ROUTER_ABI,
|
|
227
|
+
functionName: 'execute',
|
|
228
|
+
args: [commands, [input], BigInt(params.deadline)],
|
|
229
|
+
})
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Encode swap calldata for v2 or leaf routers.
|
|
234
|
+
* Selects the correct swap function based on whether native ETH is involved.
|
|
235
|
+
*/
|
|
236
|
+
function encodeRouterSwap(
|
|
237
|
+
tokenIn: Address,
|
|
238
|
+
tokenOut: Address,
|
|
239
|
+
params: EncodeSwapParams,
|
|
240
|
+
abi: typeof V2_ROUTER_ABI | typeof LEAF_ROUTER_ABI,
|
|
241
|
+
route: { from: Address; to: Address; stable: boolean; factory?: Address },
|
|
242
|
+
): Hex {
|
|
243
|
+
const { assetIn, assetOut, amountInRaw, amountOutMin, recipient, deadline } =
|
|
244
|
+
params
|
|
245
|
+
|
|
246
|
+
if (isNativeAsset(assetIn)) {
|
|
247
|
+
return encodeFunctionData({
|
|
248
|
+
abi,
|
|
249
|
+
functionName: 'swapExactETHForTokens',
|
|
250
|
+
args: [amountOutMin, [route], recipient, BigInt(deadline)],
|
|
251
|
+
})
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
if (isNativeAsset(assetOut)) {
|
|
255
|
+
return encodeFunctionData({
|
|
256
|
+
abi,
|
|
257
|
+
functionName: 'swapExactTokensForETH',
|
|
258
|
+
args: [amountInRaw, amountOutMin, [route], recipient, BigInt(deadline)],
|
|
259
|
+
})
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return encodeFunctionData({
|
|
263
|
+
abi,
|
|
264
|
+
functionName: 'swapExactTokensForTokens',
|
|
265
|
+
args: [amountInRaw, amountOutMin, [route], recipient, BigInt(deadline)],
|
|
266
|
+
})
|
|
267
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { Address } from 'viem'
|
|
2
|
+
import { concat, keccak256 } from 'viem'
|
|
3
|
+
|
|
4
|
+
import { VELODROME } from '@/constants/providers.js'
|
|
5
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
6
|
+
import { assetPairs } from '@/swap/core/markets.js'
|
|
7
|
+
import type { Asset } from '@/types/asset.js'
|
|
8
|
+
import type { SwapMarket } from '@/types/swap/index.js'
|
|
9
|
+
|
|
10
|
+
import type { ResolvedPoolConfig, VelodromeMarketConfig } from './types.js'
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Resolve a VelodromeMarketConfig to a discriminated ResolvedPoolConfig.
|
|
14
|
+
* Exactly one of stable or tickSpacing must be set.
|
|
15
|
+
* @param config - Raw market config
|
|
16
|
+
* @returns Resolved pool config with discriminated type
|
|
17
|
+
* @throws If both or neither of stable/tickSpacing are set
|
|
18
|
+
*/
|
|
19
|
+
export function resolvePoolConfig(
|
|
20
|
+
config: VelodromeMarketConfig,
|
|
21
|
+
): ResolvedPoolConfig {
|
|
22
|
+
const hasStable = config.stable !== undefined
|
|
23
|
+
const hasTick = config.tickSpacing !== undefined
|
|
24
|
+
if (hasStable && hasTick) {
|
|
25
|
+
throw new Error(
|
|
26
|
+
'stable and tickSpacing are mutually exclusive — set one, not both',
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
if (!hasStable && !hasTick) {
|
|
30
|
+
throw new Error(
|
|
31
|
+
'Either stable (v2 AMM) or tickSpacing (CL) must be configured',
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
if (hasTick) {
|
|
35
|
+
return { type: 'cl', tickSpacing: config.tickSpacing! }
|
|
36
|
+
}
|
|
37
|
+
return { type: 'v2', stable: config.stable! }
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Expand a single VelodromeMarketConfig into SwapMarket objects for a given chain.
|
|
42
|
+
* Used as the `toMarkets` callback for shared findMarket/expandMarkets.
|
|
43
|
+
* @param config - Market config with pool parameters
|
|
44
|
+
* @param chainId - Target chain
|
|
45
|
+
* @param asset - If provided, only return markets containing this asset
|
|
46
|
+
*/
|
|
47
|
+
export function configToMarkets(
|
|
48
|
+
config: VelodromeMarketConfig,
|
|
49
|
+
chainId: SupportedChainId,
|
|
50
|
+
asset?: Asset,
|
|
51
|
+
): SwapMarket[] {
|
|
52
|
+
const poolConfig = resolvePoolConfig(config)
|
|
53
|
+
return assetPairs(config.assets, asset)
|
|
54
|
+
.map(([a, b]) => pairToMarket(a, b, chainId, poolConfig))
|
|
55
|
+
.filter((m): m is SwapMarket => m !== null)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Build a SwapMarket from two assets and Velodrome pool parameters.
|
|
60
|
+
* For v2: poolId = keccak256(sortedA, sortedB, stable)
|
|
61
|
+
* For CL: poolId = keccak256(sortedA, sortedB, tickSpacing as int24)
|
|
62
|
+
* @returns SwapMarket, or null if either asset lacks an address on this chain
|
|
63
|
+
*/
|
|
64
|
+
function pairToMarket(
|
|
65
|
+
assetA: Asset,
|
|
66
|
+
assetB: Asset,
|
|
67
|
+
chainId: SupportedChainId,
|
|
68
|
+
poolConfig: ResolvedPoolConfig,
|
|
69
|
+
): SwapMarket | null {
|
|
70
|
+
const addrA = assetA.address[chainId]
|
|
71
|
+
const addrB = assetB.address[chainId]
|
|
72
|
+
if (!addrA || addrA === 'native' || !addrB || addrB === 'native') return null
|
|
73
|
+
|
|
74
|
+
const [sortedA, sortedB] =
|
|
75
|
+
addrA.toLowerCase() < addrB.toLowerCase() ? [addrA, addrB] : [addrB, addrA]
|
|
76
|
+
|
|
77
|
+
let poolId: string
|
|
78
|
+
if (poolConfig.type === 'cl') {
|
|
79
|
+
const tickBytes =
|
|
80
|
+
`0x${(poolConfig.tickSpacing & 0xffffff).toString(16).padStart(6, '0')}` as `0x${string}`
|
|
81
|
+
poolId = keccak256(
|
|
82
|
+
concat([sortedA as Address, sortedB as Address, tickBytes]),
|
|
83
|
+
)
|
|
84
|
+
} else {
|
|
85
|
+
poolId = keccak256(
|
|
86
|
+
concat([
|
|
87
|
+
sortedA as Address,
|
|
88
|
+
sortedB as Address,
|
|
89
|
+
poolConfig.stable ? '0x01' : '0x00',
|
|
90
|
+
]),
|
|
91
|
+
)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return {
|
|
95
|
+
marketId: { poolId, chainId },
|
|
96
|
+
assets: [assetA, assetB],
|
|
97
|
+
fee: 0,
|
|
98
|
+
provider: VELODROME,
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
SwapMarketConfig,
|
|
3
|
+
SwapProviderConfig,
|
|
4
|
+
} from '@/types/swap/index.js'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Velodrome/Aerodrome market config.
|
|
8
|
+
* Exactly one of `stable` (v2 AMM) or `tickSpacing` (CL/Slipstream) must be set.
|
|
9
|
+
*/
|
|
10
|
+
export interface VelodromeMarketConfig extends SwapMarketConfig {
|
|
11
|
+
/** true = stable pool (correlated assets), false = volatile pool. For v2 AMM pools. */
|
|
12
|
+
stable?: boolean
|
|
13
|
+
/** Tick spacing for CL/Slipstream pools. Mutually exclusive with stable. */
|
|
14
|
+
tickSpacing?: number
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** Resolved v2 AMM pool config */
|
|
18
|
+
export type ResolvedV2Config = { type: 'v2'; stable: boolean }
|
|
19
|
+
/** Resolved CL/Slipstream pool config */
|
|
20
|
+
export type ResolvedCLConfig = { type: 'cl'; tickSpacing: number }
|
|
21
|
+
/** Discriminated union of resolved pool configs */
|
|
22
|
+
export type ResolvedPoolConfig = ResolvedV2Config | ResolvedCLConfig
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Velodrome/Aerodrome swap provider configuration
|
|
26
|
+
*/
|
|
27
|
+
export interface VelodromeSwapProviderConfig extends SwapProviderConfig {
|
|
28
|
+
marketAllowlist?: VelodromeMarketConfig[]
|
|
29
|
+
marketBlocklist?: VelodromeMarketConfig[]
|
|
30
|
+
}
|
package/src/types/actions.ts
CHANGED
|
@@ -1,20 +1,73 @@
|
|
|
1
|
+
import type { UniswapSwapProviderConfig } from '@/swap/providers/uniswap/types.js'
|
|
2
|
+
import type { VelodromeSwapProviderConfig } from '@/swap/providers/velodrome/types.js'
|
|
1
3
|
import type { Asset } from '@/types/asset.js'
|
|
2
4
|
import type { ChainConfig } from '@/types/chain.js'
|
|
3
5
|
import type { LendProviderConfig } from '@/types/lend/index.js'
|
|
6
|
+
import type { LendProviders, SwapProviders } from '@/types/providers.js'
|
|
7
|
+
import type { SwapProviderConfig } from '@/types/swap/index.js'
|
|
4
8
|
import type { ProviderSpec } from '@/wallet/core/providers/hosted/types/index.js'
|
|
5
9
|
|
|
6
|
-
// Re-export
|
|
7
|
-
export type { LendProviderConfig }
|
|
10
|
+
// Re-export provider configs for convenience
|
|
11
|
+
export type { LendProviderConfig, SwapProviderConfig }
|
|
12
|
+
// Re-export centralized provider maps
|
|
13
|
+
export type { LendProviders, SwapProviders } from '@/types/providers.js'
|
|
14
|
+
|
|
15
|
+
/** Require at least one property to be defined */
|
|
16
|
+
type RequireAtLeastOne<T> = {
|
|
17
|
+
[K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>
|
|
18
|
+
}[keyof T]
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Lending configuration — at least one provider must be configured
|
|
22
|
+
*/
|
|
23
|
+
export type LendConfig = RequireAtLeastOne<{
|
|
24
|
+
[K in keyof LendProviders]: LendProviderConfig
|
|
25
|
+
}>
|
|
26
|
+
|
|
27
|
+
/** Names of available swap providers — derived from SwapProviders registry */
|
|
28
|
+
export type SwapProviderName = keyof SwapProviders
|
|
29
|
+
|
|
30
|
+
/** Names of available lend providers — derived from LendProviders registry */
|
|
31
|
+
export type LendProviderName = keyof LendProviders
|
|
32
|
+
|
|
33
|
+
/** Routing strategy for selecting a provider when multiple are configured. */
|
|
34
|
+
export type SwapRoutingStrategy = 'price'
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Shared swap settings applied across all providers.
|
|
38
|
+
* Provider-level values override these when set.
|
|
39
|
+
*/
|
|
40
|
+
export interface SwapSettings {
|
|
41
|
+
/** Default slippage tolerance (e.g., 0.005 for 0.5%). Defaults to 0.005. */
|
|
42
|
+
defaultSlippage?: number
|
|
43
|
+
/** Maximum allowed slippage (e.g., 0.5 for 50%). Defaults to 0.5. */
|
|
44
|
+
maxSlippage?: number
|
|
45
|
+
/** Quote expiration in seconds from now. Defaults to 60. */
|
|
46
|
+
quoteExpirationSeconds?: number
|
|
47
|
+
/** Permit2 sub-approval expiration in seconds from now. Defaults to 2592000 (30 days). */
|
|
48
|
+
permit2ExpirationSeconds?: number
|
|
49
|
+
/**
|
|
50
|
+
* Routing strategy for multi-provider selection.
|
|
51
|
+
* 'price' fetches quotes from all eligible providers and returns the best price.
|
|
52
|
+
* Omit to fall back to market-matching heuristics.
|
|
53
|
+
*/
|
|
54
|
+
routing?: SwapRoutingStrategy
|
|
55
|
+
/** Provider to prefer when routing produces a tie, or to always use when no routing strategy is set. */
|
|
56
|
+
defaultProvider?: SwapProviderName
|
|
57
|
+
}
|
|
8
58
|
|
|
9
59
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
60
|
+
* Swap configuration — at least one provider must be configured.
|
|
61
|
+
* Shared settings go in `config`; per-provider settings go under the provider key.
|
|
12
62
|
*/
|
|
13
|
-
export
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
|
|
63
|
+
export type SwapConfig = RequireAtLeastOne<{
|
|
64
|
+
/** Uniswap swap provider configuration */
|
|
65
|
+
uniswap?: UniswapSwapProviderConfig
|
|
66
|
+
/** Velodrome/Aerodrome swap provider configuration */
|
|
67
|
+
velodrome?: VelodromeSwapProviderConfig
|
|
68
|
+
}> & {
|
|
69
|
+
/** Shared settings applied across all providers */
|
|
70
|
+
settings?: SwapSettings
|
|
18
71
|
}
|
|
19
72
|
|
|
20
73
|
/**
|
|
@@ -28,12 +81,13 @@ export interface LendNetworkConfig {
|
|
|
28
81
|
|
|
29
82
|
/**
|
|
30
83
|
* Assets configuration
|
|
31
|
-
* @description Configuration for supported assets
|
|
84
|
+
* @description Configuration for supported assets. Import token constants from the SDK
|
|
85
|
+
* or define your own Asset objects.
|
|
32
86
|
*/
|
|
33
87
|
export interface AssetsConfig {
|
|
34
|
-
/** Allowlist of assets to support
|
|
88
|
+
/** Allowlist of assets to support. No default — developers must explicitly configure. */
|
|
35
89
|
allow?: Asset[]
|
|
36
|
-
/** Blocklist of assets to exclude
|
|
90
|
+
/** Blocklist of assets to exclude from the allow list. Only effective when allow is also set. For future use with runtime asset fetching. */
|
|
37
91
|
block?: Asset[]
|
|
38
92
|
}
|
|
39
93
|
|
|
@@ -49,6 +103,8 @@ export interface ActionsConfig<
|
|
|
49
103
|
wallet: WalletConfig<THostedWalletProviderType, TConfigMap>
|
|
50
104
|
/** Lending providers configuration (optional) */
|
|
51
105
|
lend?: LendConfig
|
|
106
|
+
/** Swap providers configuration (optional) */
|
|
107
|
+
swap?: SwapConfig
|
|
52
108
|
/** Assets configuration (optional) */
|
|
53
109
|
assets?: AssetsConfig
|
|
54
110
|
/** Chains to use for the SDK */
|
package/src/types/asset.ts
CHANGED
|
@@ -22,13 +22,16 @@ export interface Asset {
|
|
|
22
22
|
* Detailed token balance information
|
|
23
23
|
*/
|
|
24
24
|
export interface TokenBalance {
|
|
25
|
-
|
|
26
|
-
totalBalance:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
25
|
+
asset: Asset
|
|
26
|
+
totalBalance: number
|
|
27
|
+
totalBalanceRaw: bigint
|
|
28
|
+
chains: Partial<
|
|
29
|
+
Record<
|
|
30
|
+
SupportedChainId,
|
|
31
|
+
{
|
|
32
|
+
balance: number
|
|
33
|
+
balanceRaw: bigint
|
|
34
|
+
}
|
|
35
|
+
>
|
|
36
|
+
>
|
|
34
37
|
}
|
package/src/types/chain.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Chain configuration
|
|
@@ -6,7 +6,7 @@ import type { SUPPORTED_CHAIN_IDS } from '@/constants/supportedChains.js'
|
|
|
6
6
|
*/
|
|
7
7
|
export interface ChainConfig {
|
|
8
8
|
/** Chain ID */
|
|
9
|
-
chainId:
|
|
9
|
+
chainId: SupportedChainId
|
|
10
10
|
/** RPC URL for the chain */
|
|
11
11
|
rpcUrls?: string[]
|
|
12
12
|
/** Bundler configuration */
|
package/src/types/index.ts
CHANGED
package/src/types/lend/base.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import type { Address
|
|
1
|
+
import type { Address } from 'viem'
|
|
2
2
|
|
|
3
3
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
4
|
+
import type { LendProviderName } from '@/types/actions.js'
|
|
4
5
|
import type { Asset } from '@/types/asset.js'
|
|
6
|
+
// Import and re-export shared transaction type for backwards compatibility
|
|
7
|
+
import type { TransactionData } from '@/types/transaction.js'
|
|
5
8
|
import type {
|
|
6
9
|
BatchTransactionReturnType,
|
|
7
10
|
TransactionReturnType,
|
|
@@ -10,6 +13,7 @@ import type {
|
|
|
10
13
|
export { LendProvider } from '@/lend/core/LendProvider.js'
|
|
11
14
|
export { ActionsLendNamespace } from '@/lend/namespaces/ActionsLendNamespace.js'
|
|
12
15
|
export { WalletLendNamespace } from '@/lend/namespaces/WalletLendNamespace.js'
|
|
16
|
+
export type { TransactionData }
|
|
13
17
|
|
|
14
18
|
/**
|
|
15
19
|
* Lending market identifier
|
|
@@ -30,7 +34,7 @@ export type LendMarketConfigMetadata = {
|
|
|
30
34
|
/** Asset information for this market */
|
|
31
35
|
asset: Asset
|
|
32
36
|
/** Lending provider type */
|
|
33
|
-
lendProvider:
|
|
37
|
+
lendProvider: LendProviderName
|
|
34
38
|
}
|
|
35
39
|
|
|
36
40
|
/**
|
|
@@ -45,19 +49,6 @@ export type LendMarketConfig = LendMarketId & LendMarketConfigMetadata
|
|
|
45
49
|
*/
|
|
46
50
|
export type GetLendMarketParams = LendMarketId
|
|
47
51
|
|
|
48
|
-
/**
|
|
49
|
-
* Transaction data for execution
|
|
50
|
-
* @description Raw transaction data for wallet execution
|
|
51
|
-
*/
|
|
52
|
-
export interface TransactionData {
|
|
53
|
-
/** Target contract address */
|
|
54
|
-
to: Address
|
|
55
|
-
/** Encoded function call data */
|
|
56
|
-
data: Hex
|
|
57
|
-
/** ETH value to send */
|
|
58
|
-
value: bigint
|
|
59
|
-
}
|
|
60
|
-
|
|
61
52
|
/**
|
|
62
53
|
* Supply metrics for a lending market
|
|
63
54
|
* @description Total assets and shares in the vault
|
|
@@ -145,7 +136,8 @@ export interface LendMarketInfo extends LendMarketBase {
|
|
|
145
136
|
|
|
146
137
|
/**
|
|
147
138
|
* APY breakdown for detailed display
|
|
148
|
-
* @description Breakdown of APY components following Morpho's official methodology
|
|
139
|
+
* @description Breakdown of APY components following Morpho's official methodology.
|
|
140
|
+
* Individual token reward APRs are keyed by lowercase token address.
|
|
149
141
|
*/
|
|
150
142
|
export interface ApyBreakdown {
|
|
151
143
|
/** Total net APY after all components and fees */
|
|
@@ -154,12 +146,10 @@ export interface ApyBreakdown {
|
|
|
154
146
|
native: number
|
|
155
147
|
/** Total rewards APR from all sources */
|
|
156
148
|
totalRewards: number
|
|
157
|
-
/** Individual token rewards APRs (dynamically populated) */
|
|
158
|
-
usdc?: number
|
|
159
|
-
morpho?: number
|
|
160
|
-
other?: number
|
|
161
149
|
/** Performance/management fee rate */
|
|
162
150
|
performanceFee: number
|
|
151
|
+
/** Individual token reward APRs keyed by address, plus 'other' for unrecognized */
|
|
152
|
+
[key: string]: number | undefined
|
|
163
153
|
}
|
|
164
154
|
|
|
165
155
|
/**
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { Address } from 'viem'
|
|
2
2
|
|
|
3
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
4
|
+
|
|
3
5
|
/**
|
|
4
6
|
* Morpho contract addresses needed per chain
|
|
5
7
|
*/
|
|
@@ -15,4 +17,6 @@ export interface MorphoContracts {
|
|
|
15
17
|
/**
|
|
16
18
|
* Registry mapping chainId to Morpho contracts
|
|
17
19
|
*/
|
|
18
|
-
export type MorphoContractsRegistry =
|
|
20
|
+
export type MorphoContractsRegistry = Partial<
|
|
21
|
+
Record<SupportedChainId, MorphoContracts>
|
|
22
|
+
>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { LendProvider } from '@/lend/core/LendProvider.js'
|
|
2
|
+
import type { SwapProvider } from '@/swap/core/SwapProvider.js'
|
|
3
|
+
import type { LendProviderConfig } from '@/types/lend/index.js'
|
|
4
|
+
import type { SwapProviderConfig } from '@/types/swap/index.js'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Map of available lend providers keyed by provider name.
|
|
8
|
+
* Add new lend providers here — this is the single source of truth.
|
|
9
|
+
*/
|
|
10
|
+
export type LendProviders = {
|
|
11
|
+
morpho?: LendProvider<LendProviderConfig>
|
|
12
|
+
aave?: LendProvider<LendProviderConfig>
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Map of available swap providers keyed by provider name.
|
|
17
|
+
* Add new swap providers here — this is the single source of truth.
|
|
18
|
+
*/
|
|
19
|
+
export type SwapProviders = {
|
|
20
|
+
uniswap?: SwapProvider<SwapProviderConfig>
|
|
21
|
+
velodrome?: SwapProvider<SwapProviderConfig>
|
|
22
|
+
}
|