@eth-optimism/actions-sdk 0.5.0 → 0.7.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/__tests__/actions.test.js +1 -1
- package/dist/__tests__/actions.test.js.map +1 -1
- package/dist/{lend → actions/lend}/__mocks__/MockLendProvider.d.ts +6 -6
- package/dist/actions/lend/__mocks__/MockLendProvider.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/__mocks__/MockLendProvider.js +20 -7
- package/dist/actions/lend/__mocks__/MockLendProvider.js.map +1 -0
- package/dist/{lend → actions/lend}/__mocks__/MockMarkets.d.ts +1 -1
- package/dist/actions/lend/__mocks__/MockMarkets.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/__mocks__/MockMarkets.js +1 -1
- package/dist/actions/lend/__mocks__/MockMarkets.js.map +1 -0
- package/dist/{lend → actions/lend}/__mocks__/mockLendTransaction.d.ts +2 -2
- package/dist/actions/lend/__mocks__/mockLendTransaction.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/__mocks__/mockLendTransaction.js +1 -1
- package/dist/actions/lend/__mocks__/mockLendTransaction.js.map +1 -0
- package/dist/{lend → actions/lend}/core/LendProvider.d.ts +38 -22
- package/dist/actions/lend/core/LendProvider.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/core/LendProvider.js +62 -23
- package/dist/actions/lend/core/LendProvider.js.map +1 -0
- package/dist/actions/lend/core/__tests__/LendProvider.test.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/core/__tests__/LendProvider.test.js +57 -3
- package/dist/actions/lend/core/__tests__/LendProvider.test.js.map +1 -0
- package/dist/actions/lend/index.d.ts.map +1 -0
- package/dist/actions/lend/index.js.map +1 -0
- package/dist/actions/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -0
- package/dist/actions/lend/namespaces/ActionsLendNamespace.js.map +1 -0
- package/dist/actions/lend/namespaces/BaseLendNamespace.d.ts +33 -0
- package/dist/actions/lend/namespaces/BaseLendNamespace.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/namespaces/BaseLendNamespace.js +11 -24
- package/dist/actions/lend/namespaces/BaseLendNamespace.js.map +1 -0
- package/dist/{lend → actions/lend}/namespaces/WalletLendNamespace.d.ts +8 -11
- package/dist/actions/lend/namespaces/WalletLendNamespace.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/namespaces/WalletLendNamespace.js +13 -15
- package/dist/actions/lend/namespaces/WalletLendNamespace.js.map +1 -0
- package/dist/actions/lend/namespaces/__tests__/ActionsLendNamespace.spec.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/namespaces/__tests__/ActionsLendNamespace.spec.js +1 -1
- package/dist/actions/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -0
- package/dist/actions/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/namespaces/__tests__/BaseLendNamespace.spec.js +2 -2
- package/dist/actions/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -0
- package/dist/actions/lend/namespaces/__tests__/WalletLendNamespace.spec.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/namespaces/__tests__/WalletLendNamespace.spec.js +5 -5
- package/dist/actions/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -0
- package/dist/{lend → actions/lend}/providers/aave/AaveLendProvider.d.ts +18 -20
- package/dist/actions/lend/providers/aave/AaveLendProvider.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/providers/aave/AaveLendProvider.js +56 -54
- package/dist/actions/lend/providers/aave/AaveLendProvider.js.map +1 -0
- package/dist/{lend → actions/lend}/providers/aave/__mocks__/mockReserve.d.ts +1 -1
- package/dist/actions/lend/providers/aave/__mocks__/mockReserve.d.ts.map +1 -0
- package/dist/actions/lend/providers/aave/__mocks__/mockReserve.js.map +1 -0
- package/dist/actions/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/providers/aave/__tests__/AaveLendProvider.test.js +4 -4
- package/dist/actions/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -0
- package/dist/actions/lend/providers/aave/abis/pool.d.ts.map +1 -0
- package/dist/actions/lend/providers/aave/abis/pool.js.map +1 -0
- package/dist/actions/lend/providers/aave/addresses.d.ts.map +1 -0
- package/dist/actions/lend/providers/aave/addresses.js.map +1 -0
- package/dist/{lend → actions/lend}/providers/aave/sdk.d.ts +4 -4
- package/dist/actions/lend/providers/aave/sdk.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/providers/aave/sdk.js +10 -5
- package/dist/actions/lend/providers/aave/sdk.js.map +1 -0
- package/dist/{lend → actions/lend}/providers/morpho/MorphoLendProvider.d.ts +18 -14
- package/dist/actions/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/providers/morpho/MorphoLendProvider.js +48 -44
- package/dist/actions/lend/providers/morpho/MorphoLendProvider.js.map +1 -0
- package/dist/actions/lend/providers/morpho/__mocks__/mockVault.d.ts.map +1 -0
- package/dist/actions/lend/providers/morpho/__mocks__/mockVault.js.map +1 -0
- package/dist/actions/lend/providers/morpho/__tests__/MorphoLendProvider.test.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/providers/morpho/__tests__/MorphoLendProvider.test.js +58 -3
- package/dist/actions/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -0
- package/dist/actions/lend/providers/morpho/__tests__/api.test.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/providers/morpho/__tests__/api.test.js +2 -2
- package/dist/actions/lend/providers/morpho/__tests__/api.test.js.map +1 -0
- package/dist/actions/lend/providers/morpho/__tests__/sdk.test.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/providers/morpho/__tests__/sdk.test.js +1 -1
- package/dist/actions/lend/providers/morpho/__tests__/sdk.test.js.map +1 -0
- package/dist/actions/lend/providers/morpho/api.d.ts.map +1 -0
- package/dist/actions/lend/providers/morpho/api.js.map +1 -0
- package/dist/{lend → actions/lend}/providers/morpho/sdk.d.ts +4 -4
- package/dist/actions/lend/providers/morpho/sdk.d.ts.map +1 -0
- package/dist/{lend → actions/lend}/providers/morpho/sdk.js +18 -7
- package/dist/actions/lend/providers/morpho/sdk.js.map +1 -0
- package/dist/actions/lend/utils/markets.d.ts +26 -0
- package/dist/actions/lend/utils/markets.d.ts.map +1 -0
- package/dist/actions/lend/utils/markets.js +44 -0
- package/dist/actions/lend/utils/markets.js.map +1 -0
- package/dist/actions/shared/BaseNamespace.d.ts +29 -0
- package/dist/actions/shared/BaseNamespace.d.ts.map +1 -0
- package/dist/actions/shared/BaseNamespace.js +31 -0
- package/dist/actions/shared/BaseNamespace.js.map +1 -0
- package/dist/actions/shared/__tests__/BaseNamespace.spec.d.ts +2 -0
- package/dist/actions/shared/__tests__/BaseNamespace.spec.d.ts.map +1 -0
- package/dist/actions/shared/__tests__/BaseNamespace.spec.js +42 -0
- package/dist/actions/shared/__tests__/BaseNamespace.spec.js.map +1 -0
- package/dist/{lend/providers → actions/shared}/morpho/contracts.d.ts +2 -2
- package/dist/actions/shared/morpho/contracts.d.ts.map +1 -0
- package/dist/{lend/providers → actions/shared}/morpho/contracts.js +1 -1
- package/dist/{lend/providers → actions/shared}/morpho/contracts.js.map +1 -1
- package/dist/{types/lend/contracts.d.ts → actions/shared/morpho/types.d.ts} +2 -2
- package/dist/actions/shared/morpho/types.d.ts.map +1 -0
- package/dist/actions/shared/morpho/types.js.map +1 -0
- package/dist/{swap → actions/swap}/__mocks__/MockSwapProvider.d.ts +7 -6
- package/dist/actions/swap/__mocks__/MockSwapProvider.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/__mocks__/MockSwapProvider.js +5 -2
- package/dist/actions/swap/__mocks__/MockSwapProvider.js.map +1 -0
- package/dist/{swap → actions/swap}/core/SwapProvider.d.ts +29 -14
- package/dist/actions/swap/core/SwapProvider.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/core/SwapProvider.js +58 -39
- package/dist/actions/swap/core/SwapProvider.js.map +1 -0
- package/dist/actions/swap/core/__tests__/SwapProvider.test.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/core/__tests__/SwapProvider.test.js +39 -0
- package/dist/actions/swap/core/__tests__/SwapProvider.test.js.map +1 -0
- package/dist/{swap → actions/swap}/core/markets.d.ts +3 -3
- package/dist/actions/swap/core/markets.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/core/markets.js +2 -1
- package/dist/actions/swap/core/markets.js.map +1 -0
- package/dist/actions/swap/index.d.ts.map +1 -0
- package/dist/actions/swap/index.js.map +1 -0
- package/dist/actions/swap/namespaces/ActionsSwapNamespace.d.ts.map +1 -0
- package/dist/actions/swap/namespaces/ActionsSwapNamespace.js.map +1 -0
- package/dist/{swap → actions/swap}/namespaces/BaseSwapNamespace.d.ts +25 -28
- package/dist/actions/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/namespaces/BaseSwapNamespace.js +58 -59
- package/dist/actions/swap/namespaces/BaseSwapNamespace.js.map +1 -0
- package/dist/actions/swap/namespaces/WalletSwapNamespace.d.ts +56 -0
- package/dist/actions/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/namespaces/WalletSwapNamespace.js +46 -23
- package/dist/actions/swap/namespaces/WalletSwapNamespace.js.map +1 -0
- package/dist/actions/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/namespaces/__tests__/BaseSwapNamespace.spec.js +2 -2
- package/dist/actions/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -0
- package/dist/actions/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/namespaces/__tests__/WalletSwapNamespace.spec.js +83 -19
- package/dist/actions/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/uniswap/UniswapSwapProvider.d.ts +8 -5
- package/dist/actions/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/uniswap/UniswapSwapProvider.js +14 -5
- package/dist/actions/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -0
- package/dist/actions/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/uniswap/__tests__/UniswapSwapProvider.test.js +1 -1
- package/dist/actions/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -0
- package/dist/actions/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/uniswap/__tests__/sdk.test.js +47 -1
- package/dist/actions/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -0
- package/dist/actions/swap/providers/uniswap/abis.d.ts.map +1 -0
- package/dist/actions/swap/providers/uniswap/abis.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/uniswap/addresses.d.ts +1 -1
- package/dist/actions/swap/providers/uniswap/addresses.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/uniswap/addresses.js +6 -2
- package/dist/actions/swap/providers/uniswap/addresses.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/uniswap/encoding.d.ts +3 -3
- package/dist/actions/swap/providers/uniswap/encoding.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/uniswap/encoding.js +2 -2
- package/dist/actions/swap/providers/uniswap/encoding.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/uniswap/markets.d.ts +3 -3
- package/dist/actions/swap/providers/uniswap/markets.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/uniswap/markets.js +1 -1
- package/dist/actions/swap/providers/uniswap/markets.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/uniswap/types.d.ts +1 -1
- package/dist/actions/swap/providers/uniswap/types.d.ts.map +1 -0
- package/dist/actions/swap/providers/uniswap/types.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/VelodromeSwapProvider.d.ts +9 -4
- package/dist/actions/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/VelodromeSwapProvider.js +37 -11
- package/dist/actions/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
- package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
- package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
- package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +7 -6
- package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
- package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +39 -4
- package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
- package/dist/actions/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.cl.test.js +22 -1
- package/dist/actions/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.helpers.d.ts +1 -1
- package/dist/actions/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
- package/dist/actions/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
- package/dist/actions/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.v2.test.js +25 -1
- package/dist/actions/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
- package/dist/actions/swap/providers/velodrome/abis.d.ts.map +1 -0
- package/dist/actions/swap/providers/velodrome/abis.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/addresses.d.ts +1 -1
- package/dist/actions/swap/providers/velodrome/addresses.d.ts.map +1 -0
- package/dist/actions/swap/providers/velodrome/addresses.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/config.d.ts +1 -1
- package/dist/actions/swap/providers/velodrome/config.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/config.js +5 -1
- package/dist/actions/swap/providers/velodrome/config.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/encoding/helpers.d.ts +3 -3
- package/dist/actions/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/encoding/helpers.js +4 -3
- package/dist/actions/swap/providers/velodrome/encoding/helpers.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/encoding/index.d.ts +0 -1
- package/dist/actions/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/encoding/index.js +0 -1
- package/dist/actions/swap/providers/velodrome/encoding/index.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/encoding/poolRouter.d.ts +3 -3
- package/dist/actions/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/encoding/poolRouter.js +2 -1
- package/dist/actions/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/encoding/routers/cl.d.ts +24 -3
- package/dist/actions/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/encoding/routers/cl.js +22 -10
- package/dist/actions/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/encoding/routers/v2.d.ts +23 -3
- package/dist/actions/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/encoding/routers/v2.js +24 -13
- package/dist/actions/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/markets.d.ts +3 -3
- package/dist/actions/swap/providers/velodrome/markets.d.ts.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/markets.js +4 -3
- package/dist/actions/swap/providers/velodrome/markets.js.map +1 -0
- package/dist/{swap → actions/swap}/providers/velodrome/types.d.ts +1 -1
- package/dist/actions/swap/providers/velodrome/types.d.ts.map +1 -0
- package/dist/actions/swap/providers/velodrome/types.js +2 -0
- package/dist/actions/swap/providers/velodrome/types.js.map +1 -0
- package/dist/actions.d.ts +4 -3
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +45 -22
- package/dist/actions.js.map +1 -1
- package/dist/constants/supportedChains.d.ts +5790 -2
- package/dist/constants/supportedChains.d.ts.map +1 -1
- package/dist/constants/supportedChains.js +66 -20
- package/dist/constants/supportedChains.js.map +1 -1
- package/dist/core/error/__tests__/errors.test.d.ts +2 -0
- package/dist/core/error/__tests__/errors.test.d.ts.map +1 -0
- package/dist/core/error/__tests__/errors.test.js +195 -0
- package/dist/core/error/__tests__/errors.test.js.map +1 -0
- package/dist/core/error/errors.d.ts +155 -15
- package/dist/core/error/errors.d.ts.map +1 -1
- package/dist/core/error/errors.js +229 -17
- package/dist/core/error/errors.js.map +1 -1
- package/dist/index.d.ts +10 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -5
- package/dist/index.js.map +1 -1
- package/dist/services/ChainManager.d.ts.map +1 -1
- package/dist/services/ChainManager.js +42 -7
- package/dist/services/ChainManager.js.map +1 -1
- package/dist/services/__tests__/ChainManager.spec.d.ts.map +1 -0
- package/dist/services/{ChainManager.spec.js → __tests__/ChainManager.spec.js} +7 -7
- package/dist/services/__tests__/ChainManager.spec.js.map +1 -0
- package/dist/services/__tests__/tokenBalance.spec.d.ts.map +1 -0
- package/dist/services/{tokenBalance.spec.js → __tests__/tokenBalance.spec.js} +42 -5
- package/dist/services/__tests__/tokenBalance.spec.js.map +1 -0
- package/dist/{ens → services/nameservices/ens}/EnsNamespace.d.ts +1 -1
- package/dist/services/nameservices/ens/EnsNamespace.d.ts.map +1 -0
- package/dist/{ens → services/nameservices/ens}/EnsNamespace.js +1 -1
- package/dist/services/nameservices/ens/EnsNamespace.js.map +1 -0
- package/dist/services/nameservices/ens/__tests__/EnsNamespace.spec.d.ts.map +1 -0
- package/dist/{ens → services/nameservices/ens/__tests__}/EnsNamespace.spec.js +2 -2
- package/dist/services/nameservices/ens/__tests__/EnsNamespace.spec.js.map +1 -0
- package/dist/services/nameservices/ens/__tests__/utils.spec.d.ts +2 -0
- package/dist/services/nameservices/ens/__tests__/utils.spec.d.ts.map +1 -0
- package/dist/{utils/ens.test.js → services/nameservices/ens/__tests__/utils.spec.js} +3 -3
- package/dist/services/nameservices/ens/__tests__/utils.spec.js.map +1 -0
- package/dist/services/nameservices/ens/errors.d.ts.map +1 -0
- package/dist/services/nameservices/ens/errors.js.map +1 -0
- package/dist/{ens → services/nameservices/ens}/index.d.ts +1 -0
- package/dist/services/nameservices/ens/index.d.ts.map +1 -0
- package/dist/{ens → services/nameservices/ens}/index.js +1 -0
- package/dist/services/nameservices/ens/index.js.map +1 -0
- package/dist/{ens → services/nameservices/ens}/types.d.ts +1 -1
- package/dist/services/nameservices/ens/types.d.ts.map +1 -0
- package/dist/services/nameservices/ens/types.js.map +1 -0
- package/dist/{utils/ens.d.ts → services/nameservices/ens/utils.d.ts} +3 -3
- package/dist/services/nameservices/ens/utils.d.ts.map +1 -0
- package/dist/{utils/ens.js → services/nameservices/ens/utils.js} +3 -3
- package/dist/services/nameservices/ens/utils.js.map +1 -0
- package/dist/services/tokenBalance.d.ts +8 -5
- package/dist/services/tokenBalance.d.ts.map +1 -1
- package/dist/services/tokenBalance.js +15 -8
- package/dist/services/tokenBalance.js.map +1 -1
- package/dist/types/actions.d.ts +80 -13
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/actions.js +22 -1
- package/dist/types/actions.js.map +1 -1
- package/dist/types/asset.d.ts +7 -0
- package/dist/types/asset.d.ts.map +1 -1
- package/dist/types/common/FilterAssetChain.d.ts +13 -0
- package/dist/types/common/FilterAssetChain.d.ts.map +1 -0
- package/dist/types/common/FilterAssetChain.js +2 -0
- package/dist/types/common/FilterAssetChain.js.map +1 -0
- package/dist/types/common/TransactionOptions.d.ts +13 -0
- package/dist/types/common/TransactionOptions.d.ts.map +1 -0
- package/dist/types/common/TransactionOptions.js +2 -0
- package/dist/types/common/TransactionOptions.js.map +1 -0
- package/dist/types/common/index.d.ts +3 -0
- package/dist/types/common/index.d.ts.map +1 -0
- package/dist/types/common/index.js +3 -0
- package/dist/types/common/index.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/lend/base.d.ts +44 -34
- package/dist/types/lend/base.d.ts.map +1 -1
- package/dist/types/lend/base.js +3 -3
- package/dist/types/lend/base.js.map +1 -1
- package/dist/types/lend/index.d.ts +0 -1
- package/dist/types/lend/index.d.ts.map +1 -1
- package/dist/types/lend/index.js +0 -1
- package/dist/types/lend/index.js.map +1 -1
- package/dist/types/providers.d.ts +22 -8
- package/dist/types/providers.d.ts.map +1 -1
- package/dist/types/providers.js +12 -1
- package/dist/types/providers.js.map +1 -1
- package/dist/types/swap/base.d.ts +25 -13
- package/dist/types/swap/base.d.ts.map +1 -1
- package/dist/types/swap/base.js +3 -3
- package/dist/types/swap/base.js.map +1 -1
- package/dist/utils/__tests__/approve.test.d.ts.map +1 -0
- package/dist/utils/{approve.test.js → __tests__/approve.test.js} +40 -18
- package/dist/utils/__tests__/approve.test.js.map +1 -0
- package/dist/utils/__tests__/assets.test.d.ts.map +1 -0
- package/dist/utils/{assets.test.js → __tests__/assets.test.js} +2 -2
- package/dist/utils/__tests__/assets.test.js.map +1 -0
- package/dist/utils/__tests__/lendConfig.test.d.ts +2 -0
- package/dist/utils/__tests__/lendConfig.test.d.ts.map +1 -0
- package/dist/utils/__tests__/lendConfig.test.js +44 -0
- package/dist/utils/__tests__/lendConfig.test.js.map +1 -0
- package/dist/utils/__tests__/serializers.test.d.ts +2 -0
- package/dist/utils/__tests__/serializers.test.d.ts.map +1 -0
- package/dist/utils/__tests__/serializers.test.js +43 -0
- package/dist/utils/__tests__/serializers.test.js.map +1 -0
- package/dist/utils/__tests__/validateAddresses.test.d.ts.map +1 -0
- package/dist/utils/{validateAddresses.test.js → __tests__/validateAddresses.test.js} +10 -10
- package/dist/utils/__tests__/validateAddresses.test.js.map +1 -0
- package/dist/utils/abi/permit2.d.ts +48 -0
- package/dist/utils/abi/permit2.d.ts.map +1 -0
- package/dist/utils/abi/permit2.js +34 -0
- package/dist/utils/abi/permit2.js.map +1 -0
- package/dist/utils/approve.d.ts +26 -3
- package/dist/utils/approve.d.ts.map +1 -1
- package/dist/utils/approve.js +34 -37
- package/dist/utils/approve.js.map +1 -1
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/assets.js +3 -2
- package/dist/utils/assets.js.map +1 -1
- package/dist/utils/lendConfig.d.ts +9 -0
- package/dist/utils/lendConfig.d.ts.map +1 -0
- package/dist/utils/lendConfig.js +12 -0
- package/dist/utils/lendConfig.js.map +1 -0
- package/dist/utils/serializers.d.ts +16 -0
- package/dist/utils/serializers.d.ts.map +1 -0
- package/dist/utils/serializers.js +18 -0
- package/dist/utils/serializers.js.map +1 -0
- package/dist/utils/validation.d.ts +8 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +28 -8
- package/dist/utils/validation.js.map +1 -1
- package/dist/wallet/core/error/errors.d.ts +21 -0
- package/dist/wallet/core/error/errors.d.ts.map +1 -0
- package/dist/wallet/core/error/errors.js +24 -0
- package/dist/wallet/core/error/errors.js.map +1 -0
- package/dist/wallet/core/namespace/WalletNamespace.d.ts +24 -8
- package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
- package/dist/wallet/core/namespace/WalletNamespace.js +48 -17
- package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +105 -10
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
- package/dist/wallet/core/providers/WalletProvider.d.ts +3 -2
- package/dist/wallet/core/providers/WalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/WalletProvider.js +8 -2
- package/dist/wallet/core/providers/WalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +1 -1
- package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
- package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.d.ts.map +1 -1
- package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js +2 -1
- package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js +1 -1
- package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +1 -1
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
- package/dist/wallet/core/utils/__tests__/executeTransactionBatch.spec.d.ts +2 -0
- package/dist/wallet/core/utils/__tests__/executeTransactionBatch.spec.d.ts.map +1 -0
- package/dist/wallet/core/utils/__tests__/executeTransactionBatch.spec.js +31 -0
- package/dist/wallet/core/utils/__tests__/executeTransactionBatch.spec.js.map +1 -0
- package/dist/wallet/core/utils/__tests__/retryOnStaleRead.spec.d.ts.map +1 -0
- package/dist/wallet/core/utils/__tests__/retryOnStaleRead.spec.js.map +1 -0
- package/dist/wallet/core/utils/executeTransactionBatch.d.ts +22 -0
- package/dist/wallet/core/utils/executeTransactionBatch.d.ts.map +1 -0
- package/dist/wallet/core/utils/executeTransactionBatch.js +26 -0
- package/dist/wallet/core/utils/executeTransactionBatch.js.map +1 -0
- package/dist/wallet/core/utils/retryOnStaleRead.d.ts.map +1 -0
- package/dist/wallet/core/utils/retryOnStaleRead.js.map +1 -0
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts +17 -8
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.js +24 -12
- package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +3 -3
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +41 -2
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
- package/dist/wallet/core/wallets/eoa/EOAWallet.d.ts +13 -5
- package/dist/wallet/core/wallets/eoa/EOAWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/eoa/EOAWallet.js +17 -12
- package/dist/wallet/core/wallets/eoa/EOAWallet.js.map +1 -1
- package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js +37 -20
- package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js.map +1 -1
- package/dist/wallet/core/wallets/smart/abstract/SmartWallet.d.ts +1 -1
- package/dist/wallet/core/wallets/smart/abstract/SmartWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +2 -2
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +1 -1
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
- package/dist/wallet/node/index.d.ts +1 -0
- package/dist/wallet/node/index.d.ts.map +1 -1
- package/dist/wallet/node/index.js +1 -0
- package/dist/wallet/node/index.js.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -1
- package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +1 -1
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +4 -1
- package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -1
- package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
- package/dist/wallet/node/wallets/local/LocalWallet.d.ts +24 -0
- package/dist/wallet/node/wallets/local/LocalWallet.d.ts.map +1 -0
- package/dist/wallet/node/wallets/local/LocalWallet.js +21 -0
- package/dist/wallet/node/wallets/local/LocalWallet.js.map +1 -0
- package/dist/wallet/node/wallets/local/__tests__/LocalWallet.spec.d.ts +2 -0
- package/dist/wallet/node/wallets/local/__tests__/LocalWallet.spec.d.ts.map +1 -0
- package/dist/wallet/node/wallets/local/__tests__/LocalWallet.spec.js +52 -0
- package/dist/wallet/node/wallets/local/__tests__/LocalWallet.spec.js.map +1 -0
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -1
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +1 -1
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js +2 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +2 -1
- package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -1
- package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/actions.test.ts +3 -1
- package/src/{lend → actions/lend}/__mocks__/MockLendProvider.ts +24 -9
- package/src/{lend → actions/lend}/__mocks__/mockLendTransaction.ts +2 -2
- package/src/{lend → actions/lend}/core/LendProvider.ts +125 -41
- package/src/{lend → actions/lend}/core/__tests__/LendProvider.test.ts +82 -3
- package/src/actions/lend/index.ts +3 -0
- package/src/{lend → actions/lend}/namespaces/BaseLendNamespace.ts +20 -37
- package/src/{lend → actions/lend}/namespaces/WalletLendNamespace.ts +15 -22
- package/src/{lend → actions/lend}/namespaces/__tests__/ActionsLendNamespace.spec.ts +3 -3
- package/src/{lend → actions/lend}/namespaces/__tests__/BaseLendNamespace.spec.ts +3 -3
- package/src/{lend → actions/lend}/namespaces/__tests__/WalletLendNamespace.spec.ts +6 -6
- package/src/{lend → actions/lend}/providers/aave/AaveLendProvider.ts +65 -73
- package/src/{lend → actions/lend}/providers/aave/__tests__/AaveLendProvider.test.ts +7 -7
- package/src/{lend → actions/lend}/providers/aave/sdk.ts +15 -9
- package/src/{lend → actions/lend}/providers/morpho/MorphoLendProvider.ts +67 -53
- package/src/{lend → actions/lend}/providers/morpho/__tests__/MorphoLendProvider.test.ts +79 -5
- package/src/{lend → actions/lend}/providers/morpho/__tests__/api.test.ts +3 -3
- package/src/{lend → actions/lend}/providers/morpho/__tests__/sdk.test.ts +2 -2
- package/src/{lend → actions/lend}/providers/morpho/sdk.ts +23 -12
- package/src/actions/lend/utils/markets.ts +62 -0
- package/src/actions/shared/BaseNamespace.ts +46 -0
- package/src/actions/shared/__tests__/BaseNamespace.spec.ts +58 -0
- package/src/{lend/providers → actions/shared}/morpho/contracts.ts +3 -3
- package/src/{swap → actions/swap}/__mocks__/MockSwapProvider.ts +6 -2
- package/src/{swap → actions/swap}/core/SwapProvider.ts +89 -57
- package/src/{swap → actions/swap}/core/__tests__/SwapProvider.test.ts +51 -1
- package/src/{swap → actions/swap}/core/markets.ts +2 -1
- package/src/actions/swap/index.ts +19 -0
- package/src/{swap → actions/swap}/namespaces/ActionsSwapNamespace.ts +1 -1
- package/src/{swap → actions/swap}/namespaces/BaseSwapNamespace.ts +92 -90
- package/src/{swap → actions/swap}/namespaces/WalletSwapNamespace.ts +60 -34
- package/src/{swap → actions/swap}/namespaces/__tests__/BaseSwapNamespace.spec.ts +6 -6
- package/src/{swap → actions/swap}/namespaces/__tests__/WalletSwapNamespace.spec.ts +110 -22
- package/src/{swap → actions/swap}/providers/uniswap/UniswapSwapProvider.ts +34 -14
- package/src/{swap → actions/swap}/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +2 -2
- package/src/{swap → actions/swap}/providers/uniswap/__tests__/sdk.test.ts +65 -3
- package/src/{swap → actions/swap}/providers/uniswap/addresses.ts +5 -1
- package/src/{swap → actions/swap}/providers/uniswap/encoding.ts +3 -3
- package/src/{swap → actions/swap}/providers/uniswap/markets.ts +2 -2
- package/src/{swap → actions/swap}/providers/velodrome/VelodromeSwapProvider.ts +71 -31
- package/src/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +2 -2
- package/src/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +8 -7
- package/src/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +46 -5
- package/src/{swap → actions/swap}/providers/velodrome/__tests__/encoding.cl.test.ts +31 -2
- package/src/{swap → actions/swap}/providers/velodrome/__tests__/encoding.v2.test.ts +34 -3
- package/src/{swap → actions/swap}/providers/velodrome/config.ts +5 -1
- package/src/{swap → actions/swap}/providers/velodrome/encoding/helpers.ts +3 -2
- package/src/{swap → actions/swap}/providers/velodrome/encoding/index.ts +0 -1
- package/src/{swap → actions/swap}/providers/velodrome/encoding/poolRouter.ts +4 -3
- package/src/{swap → actions/swap}/providers/velodrome/encoding/routers/cl.ts +31 -23
- package/src/{swap → actions/swap}/providers/velodrome/encoding/routers/v2.ts +34 -27
- package/src/{swap → actions/swap}/providers/velodrome/markets.ts +4 -3
- package/src/actions.ts +68 -37
- package/src/constants/supportedChains.ts +81 -21
- package/src/core/error/__tests__/errors.test.ts +236 -0
- package/src/core/error/errors.ts +319 -22
- package/src/index.ts +31 -13
- package/src/services/ChainManager.ts +45 -9
- package/src/services/{ChainManager.spec.ts → __tests__/ChainManager.spec.ts} +6 -6
- package/src/services/{tokenBalance.spec.ts → __tests__/tokenBalance.spec.ts} +56 -1
- package/src/{ens → services/nameservices/ens}/EnsNamespace.ts +1 -1
- package/src/{ens → services/nameservices/ens/__tests__}/EnsNamespace.spec.ts +6 -4
- package/src/{utils/ens.test.ts → services/nameservices/ens/__tests__/utils.spec.ts} +3 -2
- package/src/{ens → services/nameservices/ens}/index.ts +5 -0
- package/src/{utils/ens.ts → services/nameservices/ens/utils.ts} +3 -3
- package/src/services/tokenBalance.ts +16 -7
- package/src/types/actions.ts +96 -16
- package/src/types/asset.ts +8 -0
- package/src/types/common/FilterAssetChain.ts +13 -0
- package/src/types/common/TransactionOptions.ts +12 -0
- package/src/types/common/index.ts +2 -0
- package/src/types/index.ts +1 -0
- package/src/types/lend/base.ts +48 -36
- package/src/types/lend/index.ts +0 -1
- package/src/types/providers.ts +26 -8
- package/src/types/swap/base.ts +25 -13
- package/src/utils/{approve.test.ts → __tests__/approve.test.ts} +51 -18
- package/src/utils/__tests__/lendConfig.test.ts +52 -0
- package/src/utils/__tests__/serializers.test.ts +53 -0
- package/src/utils/{validateAddresses.test.ts → __tests__/validateAddresses.test.ts} +9 -9
- package/src/utils/abi/permit2.ts +33 -0
- package/src/utils/approve.ts +48 -37
- package/src/utils/assets.ts +6 -6
- package/src/utils/lendConfig.ts +17 -0
- package/src/utils/serializers.ts +21 -0
- package/src/utils/validation.ts +42 -15
- package/src/wallet/core/error/errors.ts +30 -0
- package/src/wallet/core/namespace/WalletNamespace.ts +82 -20
- package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +141 -16
- package/src/wallet/core/providers/WalletProvider.ts +12 -3
- package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +1 -1
- package/src/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.ts +2 -1
- package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +1 -1
- package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +1 -1
- package/src/wallet/core/utils/__tests__/executeTransactionBatch.spec.ts +42 -0
- package/src/{core → wallet/core}/utils/__tests__/retryOnStaleRead.spec.ts +1 -1
- package/src/wallet/core/utils/executeTransactionBatch.ts +37 -0
- package/src/wallet/core/wallets/abstract/Wallet.ts +29 -15
- package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +3 -3
- package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +69 -3
- package/src/wallet/core/wallets/eoa/EOAWallet.ts +18 -13
- package/src/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.ts +43 -24
- package/src/wallet/core/wallets/smart/abstract/SmartWallet.ts +1 -1
- package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +3 -3
- package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +1 -1
- package/src/wallet/node/index.ts +1 -0
- package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -1
- package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +1 -1
- package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +1 -1
- package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +4 -1
- package/src/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -1
- package/src/wallet/node/wallets/local/LocalWallet.ts +48 -0
- package/src/wallet/node/wallets/local/__tests__/LocalWallet.spec.ts +65 -0
- package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +1 -1
- package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -1
- package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +1 -1
- package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +1 -1
- package/src/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.ts +2 -1
- package/src/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +2 -1
- package/src/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -1
- package/dist/core/asset/__mocks__/mockAsset.d.ts +0 -6
- package/dist/core/asset/__mocks__/mockAsset.d.ts.map +0 -1
- package/dist/core/asset/__mocks__/mockAsset.js +0 -12
- package/dist/core/asset/__mocks__/mockAsset.js.map +0 -1
- package/dist/core/utils/__tests__/retryOnStaleRead.spec.d.ts.map +0 -1
- package/dist/core/utils/__tests__/retryOnStaleRead.spec.js.map +0 -1
- package/dist/core/utils/retryOnStaleRead.d.ts.map +0 -1
- package/dist/core/utils/retryOnStaleRead.js.map +0 -1
- package/dist/ens/EnsNamespace.d.ts.map +0 -1
- package/dist/ens/EnsNamespace.js.map +0 -1
- package/dist/ens/EnsNamespace.spec.d.ts.map +0 -1
- package/dist/ens/EnsNamespace.spec.js.map +0 -1
- package/dist/ens/errors.d.ts.map +0 -1
- package/dist/ens/errors.js.map +0 -1
- package/dist/ens/index.d.ts.map +0 -1
- package/dist/ens/index.js.map +0 -1
- package/dist/ens/types.d.ts.map +0 -1
- package/dist/ens/types.js.map +0 -1
- package/dist/lend/__mocks__/MockLendProvider.d.ts.map +0 -1
- package/dist/lend/__mocks__/MockLendProvider.js.map +0 -1
- package/dist/lend/__mocks__/MockMarkets.d.ts.map +0 -1
- package/dist/lend/__mocks__/MockMarkets.js.map +0 -1
- package/dist/lend/__mocks__/mockLendTransaction.d.ts.map +0 -1
- package/dist/lend/__mocks__/mockLendTransaction.js.map +0 -1
- package/dist/lend/core/LendProvider.d.ts.map +0 -1
- package/dist/lend/core/LendProvider.js.map +0 -1
- package/dist/lend/core/__tests__/LendProvider.test.d.ts.map +0 -1
- package/dist/lend/core/__tests__/LendProvider.test.js.map +0 -1
- package/dist/lend/index.d.ts.map +0 -1
- package/dist/lend/index.js.map +0 -1
- package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +0 -1
- package/dist/lend/namespaces/ActionsLendNamespace.js.map +0 -1
- package/dist/lend/namespaces/BaseLendNamespace.d.ts +0 -43
- package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +0 -1
- package/dist/lend/namespaces/BaseLendNamespace.js.map +0 -1
- package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +0 -1
- package/dist/lend/namespaces/WalletLendNamespace.js.map +0 -1
- package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.d.ts.map +0 -1
- package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +0 -1
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts.map +0 -1
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +0 -1
- package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.d.ts.map +0 -1
- package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +0 -1
- package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +0 -1
- package/dist/lend/providers/aave/AaveLendProvider.js.map +0 -1
- package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts.map +0 -1
- package/dist/lend/providers/aave/__mocks__/mockReserve.js.map +0 -1
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts.map +0 -1
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +0 -1
- package/dist/lend/providers/aave/abis/pool.d.ts.map +0 -1
- package/dist/lend/providers/aave/abis/pool.js.map +0 -1
- package/dist/lend/providers/aave/addresses.d.ts.map +0 -1
- package/dist/lend/providers/aave/addresses.js.map +0 -1
- package/dist/lend/providers/aave/sdk.d.ts.map +0 -1
- package/dist/lend/providers/aave/sdk.js.map +0 -1
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +0 -1
- package/dist/lend/providers/morpho/MorphoLendProvider.js.map +0 -1
- package/dist/lend/providers/morpho/__mocks__/mockVault.d.ts.map +0 -1
- package/dist/lend/providers/morpho/__mocks__/mockVault.js.map +0 -1
- package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.d.ts.map +0 -1
- package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +0 -1
- package/dist/lend/providers/morpho/__tests__/api.test.d.ts.map +0 -1
- package/dist/lend/providers/morpho/__tests__/api.test.js.map +0 -1
- package/dist/lend/providers/morpho/__tests__/sdk.test.d.ts.map +0 -1
- package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +0 -1
- package/dist/lend/providers/morpho/api.d.ts.map +0 -1
- package/dist/lend/providers/morpho/api.js.map +0 -1
- package/dist/lend/providers/morpho/contracts.d.ts.map +0 -1
- package/dist/lend/providers/morpho/sdk.d.ts.map +0 -1
- package/dist/lend/providers/morpho/sdk.js.map +0 -1
- package/dist/services/ChainManager.spec.d.ts.map +0 -1
- package/dist/services/ChainManager.spec.js.map +0 -1
- package/dist/services/tokenBalance.spec.d.ts.map +0 -1
- package/dist/services/tokenBalance.spec.js.map +0 -1
- package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +0 -1
- package/dist/swap/__mocks__/MockSwapProvider.js.map +0 -1
- package/dist/swap/core/SwapProvider.d.ts.map +0 -1
- package/dist/swap/core/SwapProvider.js.map +0 -1
- package/dist/swap/core/__tests__/SwapProvider.test.d.ts.map +0 -1
- package/dist/swap/core/__tests__/SwapProvider.test.js.map +0 -1
- package/dist/swap/core/markets.d.ts.map +0 -1
- package/dist/swap/core/markets.js.map +0 -1
- package/dist/swap/index.d.ts.map +0 -1
- package/dist/swap/index.js.map +0 -1
- package/dist/swap/namespaces/ActionsSwapNamespace.d.ts.map +0 -1
- package/dist/swap/namespaces/ActionsSwapNamespace.js.map +0 -1
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +0 -1
- package/dist/swap/namespaces/BaseSwapNamespace.js.map +0 -1
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts +0 -35
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +0 -1
- package/dist/swap/namespaces/WalletSwapNamespace.js.map +0 -1
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +0 -1
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +0 -1
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +0 -1
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +0 -1
- package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +0 -1
- package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +0 -1
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +0 -1
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +0 -1
- package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +0 -1
- package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +0 -1
- package/dist/swap/providers/uniswap/abis.d.ts.map +0 -1
- package/dist/swap/providers/uniswap/abis.js.map +0 -1
- package/dist/swap/providers/uniswap/addresses.d.ts.map +0 -1
- package/dist/swap/providers/uniswap/addresses.js.map +0 -1
- package/dist/swap/providers/uniswap/encoding.d.ts.map +0 -1
- package/dist/swap/providers/uniswap/encoding.js.map +0 -1
- package/dist/swap/providers/uniswap/markets.d.ts.map +0 -1
- package/dist/swap/providers/uniswap/markets.js.map +0 -1
- package/dist/swap/providers/uniswap/types.d.ts.map +0 -1
- package/dist/swap/providers/uniswap/types.js.map +0 -1
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +0 -1
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +0 -1
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +0 -1
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +0 -1
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +0 -1
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +0 -1
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +0 -1
- package/dist/swap/providers/velodrome/abis.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/abis.js.map +0 -1
- package/dist/swap/providers/velodrome/addresses.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/addresses.js.map +0 -1
- package/dist/swap/providers/velodrome/config.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/config.js.map +0 -1
- package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/encoding/helpers.js.map +0 -1
- package/dist/swap/providers/velodrome/encoding/index.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/encoding/index.js.map +0 -1
- package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +0 -1
- package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +0 -15
- package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/encoding/routers/approval.js +0 -33
- package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +0 -1
- package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +0 -1
- package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +0 -1
- package/dist/swap/providers/velodrome/markets.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/markets.js.map +0 -1
- package/dist/swap/providers/velodrome/types.d.ts.map +0 -1
- package/dist/swap/providers/velodrome/types.js.map +0 -1
- package/dist/types/lend/contracts.d.ts.map +0 -1
- package/dist/types/lend/contracts.js +0 -2
- package/dist/types/lend/contracts.js.map +0 -1
- package/dist/utils/approve.test.d.ts.map +0 -1
- package/dist/utils/approve.test.js.map +0 -1
- package/dist/utils/assets.test.d.ts.map +0 -1
- package/dist/utils/assets.test.js.map +0 -1
- package/dist/utils/ens.d.ts.map +0 -1
- package/dist/utils/ens.js.map +0 -1
- package/dist/utils/ens.test.d.ts +0 -2
- package/dist/utils/ens.test.d.ts.map +0 -1
- package/dist/utils/ens.test.js.map +0 -1
- package/dist/utils/markets.d.ts +0 -17
- package/dist/utils/markets.d.ts.map +0 -1
- package/dist/utils/markets.js +0 -25
- package/dist/utils/markets.js.map +0 -1
- package/dist/utils/validateAddresses.test.d.ts.map +0 -1
- package/dist/utils/validateAddresses.test.js.map +0 -1
- package/src/core/asset/__mocks__/mockAsset.ts +0 -13
- package/src/lend/index.ts +0 -3
- package/src/swap/index.ts +0 -19
- package/src/swap/providers/velodrome/encoding/routers/approval.ts +0 -45
- package/src/utils/markets.ts +0 -35
- /package/dist/{lend → actions/lend}/core/__tests__/LendProvider.test.d.ts +0 -0
- /package/dist/{lend → actions/lend}/index.d.ts +0 -0
- /package/dist/{lend → actions/lend}/index.js +0 -0
- /package/dist/{lend → actions/lend}/namespaces/ActionsLendNamespace.d.ts +0 -0
- /package/dist/{lend → actions/lend}/namespaces/ActionsLendNamespace.js +0 -0
- /package/dist/{lend → actions/lend}/namespaces/__tests__/ActionsLendNamespace.spec.d.ts +0 -0
- /package/dist/{lend → actions/lend}/namespaces/__tests__/BaseLendNamespace.spec.d.ts +0 -0
- /package/dist/{lend → actions/lend}/namespaces/__tests__/WalletLendNamespace.spec.d.ts +0 -0
- /package/dist/{lend → actions/lend}/providers/aave/__mocks__/mockReserve.js +0 -0
- /package/dist/{lend → actions/lend}/providers/aave/__tests__/AaveLendProvider.test.d.ts +0 -0
- /package/dist/{lend → actions/lend}/providers/aave/abis/pool.d.ts +0 -0
- /package/dist/{lend → actions/lend}/providers/aave/abis/pool.js +0 -0
- /package/dist/{lend → actions/lend}/providers/aave/addresses.d.ts +0 -0
- /package/dist/{lend → actions/lend}/providers/aave/addresses.js +0 -0
- /package/dist/{lend → actions/lend}/providers/morpho/__mocks__/mockVault.d.ts +0 -0
- /package/dist/{lend → actions/lend}/providers/morpho/__mocks__/mockVault.js +0 -0
- /package/dist/{lend → actions/lend}/providers/morpho/__tests__/MorphoLendProvider.test.d.ts +0 -0
- /package/dist/{lend → actions/lend}/providers/morpho/__tests__/api.test.d.ts +0 -0
- /package/dist/{lend → actions/lend}/providers/morpho/__tests__/sdk.test.d.ts +0 -0
- /package/dist/{lend → actions/lend}/providers/morpho/api.d.ts +0 -0
- /package/dist/{lend → actions/lend}/providers/morpho/api.js +0 -0
- /package/dist/{swap/providers/uniswap → actions/shared/morpho}/types.js +0 -0
- /package/dist/{swap → actions/swap}/core/__tests__/SwapProvider.test.d.ts +0 -0
- /package/dist/{swap → actions/swap}/index.d.ts +0 -0
- /package/dist/{swap → actions/swap}/index.js +0 -0
- /package/dist/{swap → actions/swap}/namespaces/ActionsSwapNamespace.d.ts +0 -0
- /package/dist/{swap → actions/swap}/namespaces/ActionsSwapNamespace.js +0 -0
- /package/dist/{swap → actions/swap}/namespaces/__tests__/BaseSwapNamespace.spec.d.ts +0 -0
- /package/dist/{swap → actions/swap}/namespaces/__tests__/WalletSwapNamespace.spec.d.ts +0 -0
- /package/dist/{swap → actions/swap}/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts +0 -0
- /package/dist/{swap → actions/swap}/providers/uniswap/__tests__/sdk.test.d.ts +0 -0
- /package/dist/{swap → actions/swap}/providers/uniswap/abis.d.ts +0 -0
- /package/dist/{swap → actions/swap}/providers/uniswap/abis.js +0 -0
- /package/dist/{swap/providers/velodrome → actions/swap/providers/uniswap}/types.js +0 -0
- /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +0 -0
- /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +0 -0
- /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +0 -0
- /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +0 -0
- /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.cl.test.d.ts +0 -0
- /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.helpers.js +0 -0
- /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.v2.test.d.ts +0 -0
- /package/dist/{swap → actions/swap}/providers/velodrome/abis.d.ts +0 -0
- /package/dist/{swap → actions/swap}/providers/velodrome/abis.js +0 -0
- /package/dist/{swap → actions/swap}/providers/velodrome/addresses.js +0 -0
- /package/dist/services/{ChainManager.spec.d.ts → __tests__/ChainManager.spec.d.ts} +0 -0
- /package/dist/services/{tokenBalance.spec.d.ts → __tests__/tokenBalance.spec.d.ts} +0 -0
- /package/dist/{ens → services/nameservices/ens/__tests__}/EnsNamespace.spec.d.ts +0 -0
- /package/dist/{ens → services/nameservices/ens}/errors.d.ts +0 -0
- /package/dist/{ens → services/nameservices/ens}/errors.js +0 -0
- /package/dist/{ens → services/nameservices/ens}/types.js +0 -0
- /package/dist/utils/{approve.test.d.ts → __tests__/approve.test.d.ts} +0 -0
- /package/dist/utils/{assets.test.d.ts → __tests__/assets.test.d.ts} +0 -0
- /package/dist/utils/{validateAddresses.test.d.ts → __tests__/validateAddresses.test.d.ts} +0 -0
- /package/dist/{core → wallet/core}/utils/__tests__/retryOnStaleRead.spec.d.ts +0 -0
- /package/dist/{core → wallet/core}/utils/__tests__/retryOnStaleRead.spec.js +0 -0
- /package/dist/{core → wallet/core}/utils/retryOnStaleRead.d.ts +0 -0
- /package/dist/{core → wallet/core}/utils/retryOnStaleRead.js +0 -0
- /package/src/{lend → actions/lend}/__mocks__/MockMarkets.ts +0 -0
- /package/src/{lend → actions/lend}/namespaces/ActionsLendNamespace.ts +0 -0
- /package/src/{lend → actions/lend}/providers/aave/__mocks__/mockReserve.ts +0 -0
- /package/src/{lend → actions/lend}/providers/aave/abis/pool.ts +0 -0
- /package/src/{lend → actions/lend}/providers/aave/addresses.ts +0 -0
- /package/src/{lend → actions/lend}/providers/morpho/__mocks__/mockVault.ts +0 -0
- /package/src/{lend → actions/lend}/providers/morpho/api.ts +0 -0
- /package/src/{types/lend/contracts.ts → actions/shared/morpho/types.ts} +0 -0
- /package/src/{swap → actions/swap}/providers/uniswap/abis.ts +0 -0
- /package/src/{swap → actions/swap}/providers/uniswap/types.ts +0 -0
- /package/src/{swap → actions/swap}/providers/velodrome/__tests__/encoding.helpers.ts +0 -0
- /package/src/{swap → actions/swap}/providers/velodrome/abis.ts +0 -0
- /package/src/{swap → actions/swap}/providers/velodrome/addresses.ts +0 -0
- /package/src/{swap → actions/swap}/providers/velodrome/types.ts +0 -0
- /package/src/{ens → services/nameservices/ens}/errors.ts +0 -0
- /package/src/{ens → services/nameservices/ens}/types.ts +0 -0
- /package/src/utils/{assets.test.ts → __tests__/assets.test.ts} +0 -0
- /package/src/{core → wallet/core}/utils/retryOnStaleRead.ts +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { mainnet } from 'viem/chains'
|
|
2
2
|
import { describe, expect, it } from 'vitest'
|
|
3
3
|
|
|
4
|
-
import { MORPHO, USDC } from '@/constants/assets.js'
|
|
5
4
|
import {
|
|
6
5
|
calculateBaseApy,
|
|
7
6
|
calculateRewardsBreakdown,
|
|
8
|
-
} from '@/lend/providers/morpho/sdk.js'
|
|
7
|
+
} from '@/actions/lend/providers/morpho/sdk.js'
|
|
8
|
+
import { MORPHO, USDC } from '@/constants/assets.js'
|
|
9
9
|
|
|
10
10
|
const CHAIN_ID = mainnet.id
|
|
11
11
|
const USDC_ADDRESS = USDC.address[CHAIN_ID]!.toLowerCase()
|
|
@@ -7,12 +7,18 @@ 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'
|
|
11
10
|
import {
|
|
12
11
|
fetchRewards,
|
|
13
12
|
type RewardsBreakdown,
|
|
14
|
-
} from '@/lend/providers/morpho/api.js'
|
|
15
|
-
import { getMorphoContracts } from '@/
|
|
13
|
+
} from '@/actions/lend/providers/morpho/api.js'
|
|
14
|
+
import { getMorphoContracts } from '@/actions/shared/morpho/contracts.js'
|
|
15
|
+
import type { MorphoContracts } from '@/actions/shared/morpho/types.js'
|
|
16
|
+
import { NATIVELY_SUPPORTED_ASSETS } from '@/constants/assets.js'
|
|
17
|
+
import {
|
|
18
|
+
ChainNotSupportedError,
|
|
19
|
+
MarketNotAllowedError,
|
|
20
|
+
ProviderNotConfiguredError,
|
|
21
|
+
} from '@/core/error/errors.js'
|
|
16
22
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
17
23
|
import type { LendProviderConfig } from '@/types/actions.js'
|
|
18
24
|
import type { Asset } from '@/types/asset.js'
|
|
@@ -21,7 +27,6 @@ import type {
|
|
|
21
27
|
LendMarket,
|
|
22
28
|
LendMarketConfig,
|
|
23
29
|
LendMarketId,
|
|
24
|
-
MorphoContracts,
|
|
25
30
|
} from '@/types/lend/index.js'
|
|
26
31
|
import { SECONDS_PER_YEAR } from '@/utils/constants.js'
|
|
27
32
|
|
|
@@ -337,9 +342,11 @@ export async function getVault(params: GetVaultParams): Promise<LendMarket> {
|
|
|
337
342
|
: undefined
|
|
338
343
|
|
|
339
344
|
if (!marketConfig) {
|
|
340
|
-
throw new
|
|
341
|
-
|
|
342
|
-
|
|
345
|
+
throw new MarketNotAllowedError({
|
|
346
|
+
address: params.marketId.address,
|
|
347
|
+
chainId: params.marketId.chainId,
|
|
348
|
+
reason: 'Market not found in allowlist',
|
|
349
|
+
})
|
|
343
350
|
}
|
|
344
351
|
|
|
345
352
|
const publicClient = params.chainManager.getPublicClient(
|
|
@@ -400,9 +407,7 @@ export async function getVault(params: GetVaultParams): Promise<LendMarket> {
|
|
|
400
407
|
}
|
|
401
408
|
|
|
402
409
|
// No SDK support and no contracts configured
|
|
403
|
-
throw new
|
|
404
|
-
`Chain ${params.marketId.chainId} not supported by Morpho SDK and no contracts configured`,
|
|
405
|
-
)
|
|
410
|
+
throw new ChainNotSupportedError({ chainId: params.marketId.chainId })
|
|
406
411
|
}
|
|
407
412
|
|
|
408
413
|
interface GetVaultsParams {
|
|
@@ -447,7 +452,10 @@ export async function findBestVaultForAsset(
|
|
|
447
452
|
marketAllowlist: LendMarketConfig[],
|
|
448
453
|
): Promise<Address> {
|
|
449
454
|
if (!marketAllowlist || marketAllowlist.length === 0) {
|
|
450
|
-
throw new
|
|
455
|
+
throw new ProviderNotConfiguredError({
|
|
456
|
+
provider: 'marketAllowlist',
|
|
457
|
+
details: 'Market allowlist is required and cannot be empty',
|
|
458
|
+
})
|
|
451
459
|
}
|
|
452
460
|
|
|
453
461
|
const assetVaults = marketAllowlist.filter((vault) => {
|
|
@@ -456,7 +464,10 @@ export async function findBestVaultForAsset(
|
|
|
456
464
|
})
|
|
457
465
|
|
|
458
466
|
if (assetVaults.length === 0) {
|
|
459
|
-
throw new
|
|
467
|
+
throw new MarketNotAllowedError({
|
|
468
|
+
chainId: 0,
|
|
469
|
+
reason: `No vaults available for asset ${asset}`,
|
|
470
|
+
})
|
|
460
471
|
}
|
|
461
472
|
|
|
462
473
|
// For now, return the first (and only) supported vault for the asset
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
2
|
+
import { MarketNotAllowedError } from '@/core/error/errors.js'
|
|
3
|
+
import type { Asset } from '@/types/asset.js'
|
|
4
|
+
import type {
|
|
5
|
+
LendMarket,
|
|
6
|
+
LendMarketConfig,
|
|
7
|
+
LendMarketId,
|
|
8
|
+
} from '@/types/lend/index.js'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Find a market config in an allowlist by address + chainId (case-insensitive on address).
|
|
12
|
+
* @description Shared between `BaseLendNamespace.getProviderForMarket` and
|
|
13
|
+
* `MorphoLendProvider._getPosition` to avoid duplicate match logic.
|
|
14
|
+
* @param allowlist - Optional list of allowed markets (undefined or empty → always returns undefined)
|
|
15
|
+
* @param marketId - Market identifier to look up
|
|
16
|
+
* @returns The matching market config, or undefined if not present
|
|
17
|
+
*/
|
|
18
|
+
export function findMarketInAllowlist(
|
|
19
|
+
allowlist: readonly LendMarketConfig[] | undefined,
|
|
20
|
+
marketId: LendMarketId,
|
|
21
|
+
): LendMarketConfig | undefined {
|
|
22
|
+
if (!allowlist || allowlist.length === 0) return undefined
|
|
23
|
+
return allowlist.find(
|
|
24
|
+
(m) =>
|
|
25
|
+
m.address.toLowerCase() === marketId.address.toLowerCase() &&
|
|
26
|
+
m.chainId === marketId.chainId,
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Validates that an asset matches the market's asset
|
|
32
|
+
* @param market - Market information
|
|
33
|
+
* @param asset - Asset to validate
|
|
34
|
+
* @throws Error if asset doesn't match the market's asset
|
|
35
|
+
*/
|
|
36
|
+
export function validateMarketAsset(market: LendMarket, asset: Asset): void {
|
|
37
|
+
if (!isMarketAsset(market, asset)) {
|
|
38
|
+
const marketAssetAddress =
|
|
39
|
+
market.asset.address[market.marketId.chainId as SupportedChainId]
|
|
40
|
+
const providedAssetAddress =
|
|
41
|
+
asset.address[market.marketId.chainId as SupportedChainId]
|
|
42
|
+
throw new MarketNotAllowedError({
|
|
43
|
+
address: market.marketId.address,
|
|
44
|
+
chainId: market.marketId.chainId,
|
|
45
|
+
reason: `Asset mismatch: provided ${providedAssetAddress} but market ${market.marketId.address} uses ${marketAssetAddress}`,
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Checks if an asset matches the market's asset
|
|
52
|
+
* @param market - Market information
|
|
53
|
+
* @param asset - Asset to check
|
|
54
|
+
* @returns true if asset matches market's asset, false otherwise
|
|
55
|
+
*/
|
|
56
|
+
export function isMarketAsset(market: LendMarket, asset: Asset): boolean {
|
|
57
|
+
const marketAssetAddress =
|
|
58
|
+
market.asset.address[market.marketId.chainId as SupportedChainId]
|
|
59
|
+
const providedAssetAddress =
|
|
60
|
+
asset.address[market.marketId.chainId as SupportedChainId]
|
|
61
|
+
return marketAssetAddress === providedAssetAddress
|
|
62
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Minimum contract a concrete provider must expose for `BaseNamespace` to
|
|
5
|
+
* aggregate it. Domain providers (LendProvider, SwapProvider, BorrowProvider)
|
|
6
|
+
* implement this plus their domain-specific surface.
|
|
7
|
+
*/
|
|
8
|
+
export interface NamespaceProvider {
|
|
9
|
+
supportedChainIds(): readonly SupportedChainId[]
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Shared base for per-domain namespaces (Lend, Swap, Borrow, …).
|
|
14
|
+
* @description Holds the generic `providers` registry and exposes
|
|
15
|
+
* provider-enumeration + chain-union helpers every domain's namespace needs.
|
|
16
|
+
* Domain-specific routing and read operations live on the concrete
|
|
17
|
+
* `BaseXxxNamespace` subclass.
|
|
18
|
+
*/
|
|
19
|
+
export abstract class BaseNamespace<
|
|
20
|
+
TProvider extends NamespaceProvider,
|
|
21
|
+
TProviders extends Record<string, TProvider | undefined>,
|
|
22
|
+
> {
|
|
23
|
+
constructor(protected readonly providers: TProviders) {}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Union of chain IDs supported by any configured provider.
|
|
27
|
+
*/
|
|
28
|
+
supportedChainIds(): readonly SupportedChainId[] {
|
|
29
|
+
const chainIds = new Set<SupportedChainId>()
|
|
30
|
+
for (const provider of this.getAllProviders()) {
|
|
31
|
+
for (const chainId of provider.supportedChainIds()) {
|
|
32
|
+
chainIds.add(chainId)
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return [...chainIds]
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Enumerate every configured (non-undefined) provider.
|
|
40
|
+
*/
|
|
41
|
+
protected getAllProviders(): TProvider[] {
|
|
42
|
+
return Object.values(this.providers).filter(
|
|
43
|
+
(p): p is TProvider => p !== undefined,
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
BaseNamespace,
|
|
5
|
+
type NamespaceProvider,
|
|
6
|
+
} from '@/actions/shared/BaseNamespace.js'
|
|
7
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
8
|
+
|
|
9
|
+
class FakeProvider implements NamespaceProvider {
|
|
10
|
+
constructor(private readonly chains: readonly SupportedChainId[]) {}
|
|
11
|
+
supportedChainIds(): readonly SupportedChainId[] {
|
|
12
|
+
return this.chains
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
type FakeProviders = {
|
|
17
|
+
morpho?: FakeProvider
|
|
18
|
+
aave?: FakeProvider
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
class TestNamespace extends BaseNamespace<FakeProvider, FakeProviders> {
|
|
22
|
+
providersSnapshot(): FakeProvider[] {
|
|
23
|
+
return this.getAllProviders()
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
describe('BaseNamespace', () => {
|
|
28
|
+
it('returns only configured providers (skips undefined)', () => {
|
|
29
|
+
const morpho = new FakeProvider([1, 10])
|
|
30
|
+
const ns = new TestNamespace({ morpho, aave: undefined })
|
|
31
|
+
|
|
32
|
+
expect(ns.providersSnapshot()).toEqual([morpho])
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
it('returns all providers when multiple are configured', () => {
|
|
36
|
+
const morpho = new FakeProvider([1])
|
|
37
|
+
const aave = new FakeProvider([10])
|
|
38
|
+
const ns = new TestNamespace({ morpho, aave })
|
|
39
|
+
|
|
40
|
+
expect(ns.providersSnapshot()).toEqual([morpho, aave])
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
it('returns empty array when no providers are configured', () => {
|
|
44
|
+
const ns = new TestNamespace({})
|
|
45
|
+
expect(ns.providersSnapshot()).toEqual([])
|
|
46
|
+
expect(ns.supportedChainIds()).toEqual([])
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
it('unions supported chain ids across providers, deduplicated', () => {
|
|
50
|
+
const morpho = new FakeProvider([1, 10, 8453])
|
|
51
|
+
const aave = new FakeProvider([10, 8453, 42220])
|
|
52
|
+
const ns = new TestNamespace({ morpho, aave })
|
|
53
|
+
|
|
54
|
+
expect([...ns.supportedChainIds()].sort((a, b) => a - b)).toEqual([
|
|
55
|
+
1, 10, 8453, 42220,
|
|
56
|
+
])
|
|
57
|
+
})
|
|
58
|
+
})
|
|
@@ -10,11 +10,11 @@ import {
|
|
|
10
10
|
worldchain,
|
|
11
11
|
} from 'viem/chains'
|
|
12
12
|
|
|
13
|
-
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
14
13
|
import type {
|
|
15
14
|
MorphoContracts,
|
|
16
15
|
MorphoContractsRegistry,
|
|
17
|
-
} from '@/
|
|
16
|
+
} from '@/actions/shared/morpho/types.js'
|
|
17
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Morpho Blue core contract - same address on all chains via CREATE2
|
|
@@ -78,7 +78,7 @@ export function getMorphoContracts(
|
|
|
78
78
|
/**
|
|
79
79
|
* Get all chain IDs where Morpho contracts are deployed.
|
|
80
80
|
* Returns chains present in the local contracts registry.
|
|
81
|
-
* Filtering against
|
|
81
|
+
* Filtering against SUPPORTED_CHAIN_IDS and developer-configured chains
|
|
82
82
|
* is handled by the LendProvider base class.
|
|
83
83
|
*/
|
|
84
84
|
export function getSupportedChainIds(): number[] {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Address } from 'viem'
|
|
2
2
|
import { type MockedFunction, vi } from 'vitest'
|
|
3
3
|
|
|
4
|
+
import { SwapProvider } from '@/actions/swap/core/SwapProvider.js'
|
|
4
5
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
5
6
|
import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
|
|
6
7
|
import type { ChainManager } from '@/services/ChainManager.js'
|
|
7
|
-
import { SwapProvider } from '@/swap/core/SwapProvider.js'
|
|
8
8
|
import type { SwapSettings } from '@/types/actions.js'
|
|
9
9
|
import type { Asset } from '@/types/asset.js'
|
|
10
10
|
import type {
|
|
@@ -110,6 +110,10 @@ export class MockSwapProvider extends SwapProvider<SwapProviderConfig> {
|
|
|
110
110
|
return this.validateMarketAllowed(assetIn, assetOut, chainId)
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
+
public testBuildSwapTransactions(quote: SwapQuote): Promise<SwapTransaction> {
|
|
114
|
+
return this.buildSwapTransactions(quote)
|
|
115
|
+
}
|
|
116
|
+
|
|
113
117
|
protected async _execute(
|
|
114
118
|
params: ResolvedSwapParams,
|
|
115
119
|
): Promise<SwapTransaction> {
|
|
@@ -202,7 +206,7 @@ export class MockSwapProvider extends SwapProvider<SwapProviderConfig> {
|
|
|
202
206
|
quotedAt: now,
|
|
203
207
|
expiresAt: deadline,
|
|
204
208
|
gasEstimate: 150000n,
|
|
205
|
-
|
|
209
|
+
recipient: (params.recipient ??
|
|
206
210
|
'0x0000000000000000000000000000000000000001') as Address,
|
|
207
211
|
}
|
|
208
212
|
}
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import type { Address } from 'viem'
|
|
2
2
|
import { formatUnits } from 'viem'
|
|
3
3
|
|
|
4
|
+
import { UNIVERSAL_ROUTER_MSG_SENDER } from '@/actions/swap/core/markets.js'
|
|
4
5
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
5
|
-
import {
|
|
6
|
+
import { SUPPORTED_CHAIN_IDS } from '@/constants/supportedChains.js'
|
|
7
|
+
import {
|
|
8
|
+
MarketNotAllowedError,
|
|
9
|
+
ProviderNotConfiguredError,
|
|
10
|
+
QuoteExpiredError,
|
|
11
|
+
QuoteRecipientMissingError,
|
|
12
|
+
} from '@/core/error/errors.js'
|
|
13
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
6
14
|
import type {
|
|
7
15
|
SwapExecuteParamsResolved,
|
|
8
16
|
SwapQuoteParamsResolved,
|
|
9
|
-
} from '@/ens/types.js'
|
|
10
|
-
import type {
|
|
11
|
-
import { UNIVERSAL_ROUTER_MSG_SENDER } from '@/swap/core/markets.js'
|
|
12
|
-
import type { SwapSettings } from '@/types/actions.js'
|
|
17
|
+
} from '@/services/nameservices/ens/types.js'
|
|
18
|
+
import type { ApprovalMode, SwapSettings } from '@/types/actions.js'
|
|
13
19
|
import type { Asset } from '@/types/asset.js'
|
|
14
20
|
import type {
|
|
15
21
|
GetSwapMarketParams,
|
|
@@ -29,6 +35,9 @@ import {
|
|
|
29
35
|
buildTokenApprovalTx,
|
|
30
36
|
checkPermit2Allowance,
|
|
31
37
|
checkTokenAllowance,
|
|
38
|
+
resolveApprovalMode,
|
|
39
|
+
resolveErc20ApprovalAmount,
|
|
40
|
+
resolvePermit2ApprovalAmount,
|
|
32
41
|
} from '@/utils/approve.js'
|
|
33
42
|
import {
|
|
34
43
|
getAssetAddress,
|
|
@@ -75,7 +84,7 @@ export abstract class SwapProvider<
|
|
|
75
84
|
protected readonly _settings: SwapSettings
|
|
76
85
|
protected readonly chainManager: ChainManager
|
|
77
86
|
|
|
78
|
-
constructor(
|
|
87
|
+
protected constructor(
|
|
79
88
|
config: TConfig,
|
|
80
89
|
chainManager: ChainManager,
|
|
81
90
|
settings?: SwapSettings,
|
|
@@ -135,9 +144,20 @@ export abstract class SwapProvider<
|
|
|
135
144
|
async execute(
|
|
136
145
|
params: SwapExecuteParamsResolved | SwapQuote,
|
|
137
146
|
): Promise<SwapTransaction> {
|
|
147
|
+
// Resolve approval mode once at entry; the resolved value is set back on
|
|
148
|
+
// the params object so all downstream methods read a single populated field.
|
|
149
|
+
const resolvedApprovalMode = resolveApprovalMode(
|
|
150
|
+
params.approvalMode,
|
|
151
|
+
this._config.approvalMode,
|
|
152
|
+
this._settings.approvalMode,
|
|
153
|
+
)
|
|
154
|
+
|
|
138
155
|
if (QUOTE_DISCRIMINATOR in params) {
|
|
139
156
|
this.validateSwapExecute(params)
|
|
140
|
-
return this.executeFromQuote(
|
|
157
|
+
return this.executeFromQuote({
|
|
158
|
+
...params,
|
|
159
|
+
approvalMode: resolvedApprovalMode,
|
|
160
|
+
})
|
|
141
161
|
}
|
|
142
162
|
|
|
143
163
|
this.validateSwapExecute(params)
|
|
@@ -145,7 +165,9 @@ export abstract class SwapProvider<
|
|
|
145
165
|
// Raw params only
|
|
146
166
|
validateNotBothAmounts(params.amountIn, params.amountOut)
|
|
147
167
|
validateNotZeroAddress(params.walletAddress, 'walletAddress')
|
|
148
|
-
return this._execute(
|
|
168
|
+
return this._execute(
|
|
169
|
+
this.resolveParams({ ...params, approvalMode: resolvedApprovalMode }),
|
|
170
|
+
)
|
|
149
171
|
}
|
|
150
172
|
|
|
151
173
|
/**
|
|
@@ -200,7 +222,7 @@ export abstract class SwapProvider<
|
|
|
200
222
|
const configuredChains = this.chainManager.getSupportedChains()
|
|
201
223
|
return this.protocolSupportedChainIds().filter(
|
|
202
224
|
(id) =>
|
|
203
|
-
(
|
|
225
|
+
(SUPPORTED_CHAIN_IDS as readonly number[]).includes(id) &&
|
|
204
226
|
configuredChains.includes(id),
|
|
205
227
|
)
|
|
206
228
|
}
|
|
@@ -246,9 +268,12 @@ export abstract class SwapProvider<
|
|
|
246
268
|
marketBlocklist,
|
|
247
269
|
)
|
|
248
270
|
if (isBlocked) {
|
|
249
|
-
throw new
|
|
250
|
-
|
|
251
|
-
|
|
271
|
+
throw new MarketNotAllowedError({
|
|
272
|
+
assetInSymbol: assetIn.metadata.symbol,
|
|
273
|
+
assetOutSymbol: assetOut.metadata.symbol,
|
|
274
|
+
chainId,
|
|
275
|
+
reason: 'Pair is blocked',
|
|
276
|
+
})
|
|
252
277
|
}
|
|
253
278
|
}
|
|
254
279
|
|
|
@@ -260,9 +285,12 @@ export abstract class SwapProvider<
|
|
|
260
285
|
marketAllowlist,
|
|
261
286
|
)
|
|
262
287
|
if (!isAllowed) {
|
|
263
|
-
throw new
|
|
264
|
-
|
|
265
|
-
|
|
288
|
+
throw new MarketNotAllowedError({
|
|
289
|
+
assetInSymbol: assetIn.metadata.symbol,
|
|
290
|
+
assetOutSymbol: assetOut.metadata.symbol,
|
|
291
|
+
chainId,
|
|
292
|
+
reason: 'Pair is not in the allowlist',
|
|
293
|
+
})
|
|
266
294
|
}
|
|
267
295
|
}
|
|
268
296
|
}
|
|
@@ -309,9 +337,10 @@ export abstract class SwapProvider<
|
|
|
309
337
|
): SwapMarketConfig | undefined {
|
|
310
338
|
const { marketAllowlist } = this._config
|
|
311
339
|
if (!marketAllowlist?.length) {
|
|
312
|
-
throw new
|
|
313
|
-
|
|
314
|
-
|
|
340
|
+
throw new ProviderNotConfiguredError({
|
|
341
|
+
provider: 'marketAllowlist',
|
|
342
|
+
details: 'Provide a marketAllowlist in swap provider config.',
|
|
343
|
+
})
|
|
315
344
|
}
|
|
316
345
|
return this.findMatchingConfig(assetIn, assetOut, chainId, marketAllowlist)
|
|
317
346
|
}
|
|
@@ -320,7 +349,16 @@ export abstract class SwapProvider<
|
|
|
320
349
|
* Build Permit2 approval transactions for an ERC20 swap input.
|
|
321
350
|
* Skipped for native assets. Checks both ERC20→Permit2 and Permit2→spender allowances in parallel.
|
|
322
351
|
* Uses the resolved `permit2ExpirationSeconds` from provider → global → default.
|
|
323
|
-
*
|
|
352
|
+
*
|
|
353
|
+
* Approval amounts honour `params.approvalMode`:
|
|
354
|
+
* - `"exact"` approves only `requiredAmount` for both the outer ERC-20→Permit2
|
|
355
|
+
* allowance and the inner Permit2→spender allowance. Each subsequent swap
|
|
356
|
+
* needs its own approval transaction.
|
|
357
|
+
* - `"max"` approves `maxUint256` for the outer ERC-20 allowance and
|
|
358
|
+
* `maxUint160` (Permit2's allowance type) for the inner Permit2 allowance.
|
|
359
|
+
* Subsequent swaps within the expiration window skip the re-approval round
|
|
360
|
+
* trip entirely.
|
|
361
|
+
* @param params - Resolved swap params (wallet address, asset info, chain, approvalMode)
|
|
324
362
|
* @param requiredAmount - Amount as raw bigint that must be approved
|
|
325
363
|
* @param permit2Address - Permit2 contract address
|
|
326
364
|
* @param permit2Spender - The router/contract that Permit2 should approve (e.g. Universal Router)
|
|
@@ -359,7 +397,11 @@ export abstract class SwapProvider<
|
|
|
359
397
|
|
|
360
398
|
const tokenApproval =
|
|
361
399
|
tokenAllowance < requiredAmount
|
|
362
|
-
? buildTokenApprovalTx(
|
|
400
|
+
? buildTokenApprovalTx(
|
|
401
|
+
token,
|
|
402
|
+
permit2Address,
|
|
403
|
+
resolveErc20ApprovalAmount(params.approvalMode, requiredAmount),
|
|
404
|
+
)
|
|
363
405
|
: undefined
|
|
364
406
|
|
|
365
407
|
// Permit2 expiration is in Unix seconds (matching EVM block.timestamp)
|
|
@@ -371,7 +413,10 @@ export abstract class SwapProvider<
|
|
|
371
413
|
permit2Address,
|
|
372
414
|
token,
|
|
373
415
|
spender: permit2Spender,
|
|
374
|
-
amount:
|
|
416
|
+
amount: resolvePermit2ApprovalAmount(
|
|
417
|
+
params.approvalMode,
|
|
418
|
+
requiredAmount,
|
|
419
|
+
),
|
|
375
420
|
expirySeconds: this.permit2ExpirationSeconds,
|
|
376
421
|
})
|
|
377
422
|
: undefined
|
|
@@ -380,13 +425,20 @@ export abstract class SwapProvider<
|
|
|
380
425
|
}
|
|
381
426
|
|
|
382
427
|
/**
|
|
383
|
-
* Build a SwapTransaction from a quote by fetching approvals and wrapping
|
|
384
|
-
* Used by both the quote-execute path and provider
|
|
385
|
-
*
|
|
428
|
+
* Build a SwapTransaction from a quote by fetching approvals and wrapping
|
|
429
|
+
* the swap calldata. Used by both the quote-execute path and provider
|
|
430
|
+
* `_execute` implementations. Quotes are required to have `recipient` set
|
|
431
|
+
* by the provider's `_getQuote`; sub-providers can dereference
|
|
432
|
+
* `quote.recipient` directly. Reads `quote.approvalMode` (populated by
|
|
433
|
+
* `execute()` at entry).
|
|
434
|
+
* @param quote - SwapQuote with recipient and approvalMode set
|
|
386
435
|
*/
|
|
387
436
|
protected async buildSwapTransactions(
|
|
388
437
|
quote: SwapQuote,
|
|
389
438
|
): Promise<SwapTransaction> {
|
|
439
|
+
if (!quote.recipient) {
|
|
440
|
+
throw new QuoteRecipientMissingError()
|
|
441
|
+
}
|
|
390
442
|
const approvals = await this._buildApprovals(quote)
|
|
391
443
|
|
|
392
444
|
const swapTx: TransactionData = {
|
|
@@ -415,32 +467,6 @@ export abstract class SwapProvider<
|
|
|
415
467
|
private async executeFromQuote(quote: SwapQuote): Promise<SwapTransaction> {
|
|
416
468
|
this.validateQuoteExpiration(quote)
|
|
417
469
|
validateNotZeroAddress(quote.execution.routerAddress, 'routerAddress')
|
|
418
|
-
|
|
419
|
-
if (!quote.recipient) {
|
|
420
|
-
throw new Error(
|
|
421
|
-
'SwapQuote.recipient is required for execution. Pass the quote through WalletSwapNamespace.execute() which injects the wallet address.',
|
|
422
|
-
)
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
// If the recipient changed since the quote was built (e.g. quote from
|
|
426
|
-
// ActionsSwapNamespace executed through WalletSwapNamespace), re-encode
|
|
427
|
-
// calldata with the correct recipient to prevent tokens going to the wrong address.
|
|
428
|
-
if (quote.recipient !== quote.quotedRecipient) {
|
|
429
|
-
const freshQuote = await this._getQuote({
|
|
430
|
-
assetIn: quote.assetIn,
|
|
431
|
-
assetOut: quote.assetOut,
|
|
432
|
-
amountIn: quote.amountIn,
|
|
433
|
-
chainId: quote.chainId,
|
|
434
|
-
slippage: quote.slippage,
|
|
435
|
-
deadline: quote.deadline,
|
|
436
|
-
recipient: quote.recipient,
|
|
437
|
-
})
|
|
438
|
-
return this.buildSwapTransactions({
|
|
439
|
-
...freshQuote,
|
|
440
|
-
recipient: quote.recipient,
|
|
441
|
-
})
|
|
442
|
-
}
|
|
443
|
-
|
|
444
470
|
return this.buildSwapTransactions(quote)
|
|
445
471
|
}
|
|
446
472
|
|
|
@@ -454,19 +480,22 @@ export abstract class SwapProvider<
|
|
|
454
480
|
validateAmountPositiveIfExists(params.amountIn)
|
|
455
481
|
validateAmountPositiveIfExists(params.amountOut)
|
|
456
482
|
validateSlippage(params.slippage ?? this.defaultSlippage, this.maxSlippage)
|
|
457
|
-
validateRecipient(
|
|
483
|
+
validateRecipient(params.recipient)
|
|
458
484
|
}
|
|
459
485
|
|
|
460
486
|
private validateQuoteExpiration(quote: SwapQuote): void {
|
|
461
487
|
const now = Math.floor(Date.now() / 1000)
|
|
462
488
|
if (now >= quote.expiresAt) {
|
|
463
|
-
throw new
|
|
464
|
-
|
|
465
|
-
|
|
489
|
+
throw new QuoteExpiredError({
|
|
490
|
+
expiresAt: quote.expiresAt,
|
|
491
|
+
currentTime: now,
|
|
492
|
+
})
|
|
466
493
|
}
|
|
467
494
|
}
|
|
468
495
|
|
|
469
|
-
private resolveParams(
|
|
496
|
+
private resolveParams(
|
|
497
|
+
params: SwapExecuteParamsResolved & { approvalMode: ApprovalMode },
|
|
498
|
+
): ResolvedSwapParams {
|
|
470
499
|
return {
|
|
471
500
|
amountInRaw: parseAssetAmount(params.assetIn, params.amountIn),
|
|
472
501
|
amountOutRaw: parseAssetAmount(params.assetOut, params.amountOut),
|
|
@@ -480,6 +509,7 @@ export abstract class SwapProvider<
|
|
|
480
509
|
recipient: params.recipient ?? params.walletAddress,
|
|
481
510
|
walletAddress: params.walletAddress,
|
|
482
511
|
chainId: params.chainId,
|
|
512
|
+
approvalMode: params.approvalMode,
|
|
483
513
|
}
|
|
484
514
|
}
|
|
485
515
|
|
|
@@ -560,8 +590,10 @@ export abstract class SwapProvider<
|
|
|
560
590
|
|
|
561
591
|
/**
|
|
562
592
|
* Build provider-specific approval transactions for a swap.
|
|
563
|
-
* Called by the base class during executeFromQuote with a validated
|
|
564
|
-
*
|
|
593
|
+
* Called by the base class during executeFromQuote with a validated
|
|
594
|
+
* recipient and resolved approvalMode. Implementations read
|
|
595
|
+
* `quote.approvalMode` to choose between exact and max approvals.
|
|
596
|
+
* @param quote - SwapQuote with recipient set by the provider's _getQuote and approvalMode populated by execute() at entry
|
|
565
597
|
* @returns Approval transactions needed before the swap (tokenApproval, permit2Approval)
|
|
566
598
|
*/
|
|
567
599
|
protected abstract _buildApprovals(
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Address } from 'viem'
|
|
2
2
|
import { describe, expect, it } from 'vitest'
|
|
3
3
|
|
|
4
|
+
import { MockSwapProvider } from '@/actions/swap/__mocks__/MockSwapProvider.js'
|
|
4
5
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
5
|
-
import { MockSwapProvider } from '@/swap/__mocks__/MockSwapProvider.js'
|
|
6
6
|
import type { Asset } from '@/types/asset.js'
|
|
7
7
|
import type { SwapMarketConfig } from '@/types/swap/index.js'
|
|
8
8
|
|
|
@@ -225,6 +225,56 @@ describe('SwapProvider', () => {
|
|
|
225
225
|
})
|
|
226
226
|
})
|
|
227
227
|
|
|
228
|
+
describe('buildSwapTransactions()', () => {
|
|
229
|
+
it('passes quote.recipient through to _buildApprovals', async () => {
|
|
230
|
+
const provider = new MockSwapProvider()
|
|
231
|
+
const customRecipient =
|
|
232
|
+
'0xBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB' as Address
|
|
233
|
+
const quote = await provider.getQuote({
|
|
234
|
+
assetIn: MockUSDC,
|
|
235
|
+
assetOut: MockWETH,
|
|
236
|
+
amountIn: 100,
|
|
237
|
+
chainId: 84532 as SupportedChainId,
|
|
238
|
+
recipient: customRecipient,
|
|
239
|
+
})
|
|
240
|
+
expect(quote.recipient).toBe(customRecipient)
|
|
241
|
+
|
|
242
|
+
await provider.testBuildSwapTransactions(quote)
|
|
243
|
+
|
|
244
|
+
expect(provider.mockBuildApprovals).toHaveBeenCalledWith(
|
|
245
|
+
expect.objectContaining({ recipient: customRecipient }),
|
|
246
|
+
)
|
|
247
|
+
})
|
|
248
|
+
|
|
249
|
+
it('defaults quote.recipient to UNIVERSAL_ROUTER_MSG_SENDER when no recipient is provided', async () => {
|
|
250
|
+
const provider = new MockSwapProvider()
|
|
251
|
+
const quote = await provider.getQuote({
|
|
252
|
+
assetIn: MockUSDC,
|
|
253
|
+
assetOut: MockWETH,
|
|
254
|
+
amountIn: 100,
|
|
255
|
+
chainId: 84532 as SupportedChainId,
|
|
256
|
+
})
|
|
257
|
+
expect(quote.recipient).toBe('0x0000000000000000000000000000000000000001')
|
|
258
|
+
})
|
|
259
|
+
|
|
260
|
+
it('throws if quote.recipient is missing (chokepoint guard)', async () => {
|
|
261
|
+
const provider = new MockSwapProvider()
|
|
262
|
+
const quote = await provider.getQuote({
|
|
263
|
+
assetIn: MockUSDC,
|
|
264
|
+
assetOut: MockWETH,
|
|
265
|
+
amountIn: 100,
|
|
266
|
+
chainId: 84532 as SupportedChainId,
|
|
267
|
+
})
|
|
268
|
+
|
|
269
|
+
// Simulate a faulty _getQuote by stripping recipient. The base guard
|
|
270
|
+
// should fire before _buildApprovals.
|
|
271
|
+
const { recipient: _recipient, ...rest } = quote
|
|
272
|
+
await expect(
|
|
273
|
+
provider.testBuildSwapTransactions(rest as typeof quote),
|
|
274
|
+
).rejects.toThrow(/recipient missing/)
|
|
275
|
+
})
|
|
276
|
+
})
|
|
277
|
+
|
|
228
278
|
describe('getQuote()', () => {
|
|
229
279
|
it('should throw if chain not supported', async () => {
|
|
230
280
|
const provider = new MockSwapProvider()
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Address } from 'viem'
|
|
2
2
|
|
|
3
3
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
4
|
+
import { MarketNotFoundError } from '@/core/error/errors.js'
|
|
4
5
|
import type { Asset } from '@/types/asset.js'
|
|
5
6
|
import type {
|
|
6
7
|
GetSwapMarketsParams,
|
|
@@ -69,7 +70,7 @@ export function findMarket<T extends SwapMarketConfig>(
|
|
|
69
70
|
)
|
|
70
71
|
if (match) return match
|
|
71
72
|
}
|
|
72
|
-
throw new
|
|
73
|
+
throw new MarketNotFoundError({ chainId, poolId })
|
|
73
74
|
}
|
|
74
75
|
|
|
75
76
|
/**
|