@eth-optimism/actions-sdk 0.5.0 → 0.6.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 +61 -22
- 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 +1 -1
- package/dist/actions/shared/morpho/contracts.d.ts.map +1 -0
- 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 +57 -38
- 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 +43 -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/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 +131 -15
- package/dist/core/error/errors.d.ts.map +1 -1
- package/dist/core/error/errors.js +201 -17
- package/dist/core/error/errors.js.map +1 -1
- package/dist/index.d.ts +7 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/services/ChainManager.d.ts.map +1 -1
- package/dist/services/ChainManager.js +26 -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 +69 -7
- package/dist/types/actions.d.ts.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 +2 -2
- package/dist/types/providers.d.ts.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__/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/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 +8 -8
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.js +13 -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 +28 -2
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
- package/dist/wallet/core/wallets/eoa/EOAWallet.d.ts +1 -1
- package/dist/wallet/core/wallets/eoa/EOAWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/eoa/EOAWallet.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/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 +51 -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/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 +123 -39
- 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 +2 -2
- package/src/{swap → actions/swap}/__mocks__/MockSwapProvider.ts +6 -2
- package/src/{swap → actions/swap}/core/SwapProvider.ts +88 -55
- 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/actions/swap/namespaces/WalletSwapNamespace.ts +154 -0
- 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/core/error/__tests__/errors.test.ts +236 -0
- package/src/core/error/errors.ts +282 -22
- package/src/index.ts +18 -12
- package/src/services/ChainManager.ts +26 -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 +72 -7
- 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 +2 -2
- package/src/types/swap/base.ts +25 -13
- package/src/utils/{approve.test.ts → __tests__/approve.test.ts} +51 -18
- 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/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 +17 -15
- package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +3 -3
- package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +54 -3
- package/src/wallet/core/wallets/eoa/EOAWallet.ts +1 -1
- 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/local/LocalWallet.ts +48 -0
- package/src/wallet/node/wallets/local/__tests__/LocalWallet.spec.ts +64 -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/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/namespaces/WalletSwapNamespace.ts +0 -129
- 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/{lend/providers → actions/shared}/morpho/contracts.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
|
|
@@ -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,20 @@
|
|
|
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
6
|
import { ACTIONS_SUPPORTED_CHAIN_IDS } from '@/constants/supportedChains.js'
|
|
7
|
+
import {
|
|
8
|
+
MarketNotAllowedError,
|
|
9
|
+
ProviderNotConfiguredError,
|
|
10
|
+
QuoteExpiredError,
|
|
11
|
+
} from '@/core/error/errors.js'
|
|
12
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
6
13
|
import type {
|
|
7
14
|
SwapExecuteParamsResolved,
|
|
8
15
|
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'
|
|
16
|
+
} from '@/services/nameservices/ens/types.js'
|
|
17
|
+
import type { ApprovalMode, SwapSettings } from '@/types/actions.js'
|
|
13
18
|
import type { Asset } from '@/types/asset.js'
|
|
14
19
|
import type {
|
|
15
20
|
GetSwapMarketParams,
|
|
@@ -29,6 +34,9 @@ import {
|
|
|
29
34
|
buildTokenApprovalTx,
|
|
30
35
|
checkPermit2Allowance,
|
|
31
36
|
checkTokenAllowance,
|
|
37
|
+
resolveApprovalMode,
|
|
38
|
+
resolveErc20ApprovalAmount,
|
|
39
|
+
resolvePermit2ApprovalAmount,
|
|
32
40
|
} from '@/utils/approve.js'
|
|
33
41
|
import {
|
|
34
42
|
getAssetAddress,
|
|
@@ -75,7 +83,7 @@ export abstract class SwapProvider<
|
|
|
75
83
|
protected readonly _settings: SwapSettings
|
|
76
84
|
protected readonly chainManager: ChainManager
|
|
77
85
|
|
|
78
|
-
constructor(
|
|
86
|
+
protected constructor(
|
|
79
87
|
config: TConfig,
|
|
80
88
|
chainManager: ChainManager,
|
|
81
89
|
settings?: SwapSettings,
|
|
@@ -135,9 +143,20 @@ export abstract class SwapProvider<
|
|
|
135
143
|
async execute(
|
|
136
144
|
params: SwapExecuteParamsResolved | SwapQuote,
|
|
137
145
|
): Promise<SwapTransaction> {
|
|
146
|
+
// Resolve approval mode once at entry; the resolved value is set back on
|
|
147
|
+
// the params object so all downstream methods read a single populated field.
|
|
148
|
+
const resolvedApprovalMode = resolveApprovalMode(
|
|
149
|
+
params.approvalMode,
|
|
150
|
+
this._config.approvalMode,
|
|
151
|
+
this._settings.approvalMode,
|
|
152
|
+
)
|
|
153
|
+
|
|
138
154
|
if (QUOTE_DISCRIMINATOR in params) {
|
|
139
155
|
this.validateSwapExecute(params)
|
|
140
|
-
return this.executeFromQuote(
|
|
156
|
+
return this.executeFromQuote({
|
|
157
|
+
...params,
|
|
158
|
+
approvalMode: resolvedApprovalMode,
|
|
159
|
+
})
|
|
141
160
|
}
|
|
142
161
|
|
|
143
162
|
this.validateSwapExecute(params)
|
|
@@ -145,7 +164,9 @@ export abstract class SwapProvider<
|
|
|
145
164
|
// Raw params only
|
|
146
165
|
validateNotBothAmounts(params.amountIn, params.amountOut)
|
|
147
166
|
validateNotZeroAddress(params.walletAddress, 'walletAddress')
|
|
148
|
-
return this._execute(
|
|
167
|
+
return this._execute(
|
|
168
|
+
this.resolveParams({ ...params, approvalMode: resolvedApprovalMode }),
|
|
169
|
+
)
|
|
149
170
|
}
|
|
150
171
|
|
|
151
172
|
/**
|
|
@@ -246,9 +267,12 @@ export abstract class SwapProvider<
|
|
|
246
267
|
marketBlocklist,
|
|
247
268
|
)
|
|
248
269
|
if (isBlocked) {
|
|
249
|
-
throw new
|
|
250
|
-
|
|
251
|
-
|
|
270
|
+
throw new MarketNotAllowedError({
|
|
271
|
+
assetInSymbol: assetIn.metadata.symbol,
|
|
272
|
+
assetOutSymbol: assetOut.metadata.symbol,
|
|
273
|
+
chainId,
|
|
274
|
+
reason: 'Pair is blocked',
|
|
275
|
+
})
|
|
252
276
|
}
|
|
253
277
|
}
|
|
254
278
|
|
|
@@ -260,9 +284,12 @@ export abstract class SwapProvider<
|
|
|
260
284
|
marketAllowlist,
|
|
261
285
|
)
|
|
262
286
|
if (!isAllowed) {
|
|
263
|
-
throw new
|
|
264
|
-
|
|
265
|
-
|
|
287
|
+
throw new MarketNotAllowedError({
|
|
288
|
+
assetInSymbol: assetIn.metadata.symbol,
|
|
289
|
+
assetOutSymbol: assetOut.metadata.symbol,
|
|
290
|
+
chainId,
|
|
291
|
+
reason: 'Pair is not in the allowlist',
|
|
292
|
+
})
|
|
266
293
|
}
|
|
267
294
|
}
|
|
268
295
|
}
|
|
@@ -309,9 +336,10 @@ export abstract class SwapProvider<
|
|
|
309
336
|
): SwapMarketConfig | undefined {
|
|
310
337
|
const { marketAllowlist } = this._config
|
|
311
338
|
if (!marketAllowlist?.length) {
|
|
312
|
-
throw new
|
|
313
|
-
|
|
314
|
-
|
|
339
|
+
throw new ProviderNotConfiguredError({
|
|
340
|
+
provider: 'marketAllowlist',
|
|
341
|
+
details: 'Provide a marketAllowlist in swap provider config.',
|
|
342
|
+
})
|
|
315
343
|
}
|
|
316
344
|
return this.findMatchingConfig(assetIn, assetOut, chainId, marketAllowlist)
|
|
317
345
|
}
|
|
@@ -320,7 +348,16 @@ export abstract class SwapProvider<
|
|
|
320
348
|
* Build Permit2 approval transactions for an ERC20 swap input.
|
|
321
349
|
* Skipped for native assets. Checks both ERC20→Permit2 and Permit2→spender allowances in parallel.
|
|
322
350
|
* Uses the resolved `permit2ExpirationSeconds` from provider → global → default.
|
|
323
|
-
*
|
|
351
|
+
*
|
|
352
|
+
* Approval amounts honour `params.approvalMode`:
|
|
353
|
+
* - `"exact"` approves only `requiredAmount` for both the outer ERC-20→Permit2
|
|
354
|
+
* allowance and the inner Permit2→spender allowance. Each subsequent swap
|
|
355
|
+
* needs its own approval transaction.
|
|
356
|
+
* - `"max"` approves `maxUint256` for the outer ERC-20 allowance and
|
|
357
|
+
* `maxUint160` (Permit2's allowance type) for the inner Permit2 allowance.
|
|
358
|
+
* Subsequent swaps within the expiration window skip the re-approval round
|
|
359
|
+
* trip entirely.
|
|
360
|
+
* @param params - Resolved swap params (wallet address, asset info, chain, approvalMode)
|
|
324
361
|
* @param requiredAmount - Amount as raw bigint that must be approved
|
|
325
362
|
* @param permit2Address - Permit2 contract address
|
|
326
363
|
* @param permit2Spender - The router/contract that Permit2 should approve (e.g. Universal Router)
|
|
@@ -359,7 +396,11 @@ export abstract class SwapProvider<
|
|
|
359
396
|
|
|
360
397
|
const tokenApproval =
|
|
361
398
|
tokenAllowance < requiredAmount
|
|
362
|
-
? buildTokenApprovalTx(
|
|
399
|
+
? buildTokenApprovalTx(
|
|
400
|
+
token,
|
|
401
|
+
permit2Address,
|
|
402
|
+
resolveErc20ApprovalAmount(params.approvalMode, requiredAmount),
|
|
403
|
+
)
|
|
363
404
|
: undefined
|
|
364
405
|
|
|
365
406
|
// Permit2 expiration is in Unix seconds (matching EVM block.timestamp)
|
|
@@ -371,7 +412,10 @@ export abstract class SwapProvider<
|
|
|
371
412
|
permit2Address,
|
|
372
413
|
token,
|
|
373
414
|
spender: permit2Spender,
|
|
374
|
-
amount:
|
|
415
|
+
amount: resolvePermit2ApprovalAmount(
|
|
416
|
+
params.approvalMode,
|
|
417
|
+
requiredAmount,
|
|
418
|
+
),
|
|
375
419
|
expirySeconds: this.permit2ExpirationSeconds,
|
|
376
420
|
})
|
|
377
421
|
: undefined
|
|
@@ -380,13 +424,22 @@ export abstract class SwapProvider<
|
|
|
380
424
|
}
|
|
381
425
|
|
|
382
426
|
/**
|
|
383
|
-
* Build a SwapTransaction from a quote by fetching approvals and wrapping
|
|
384
|
-
* Used by both the quote-execute path and provider
|
|
385
|
-
*
|
|
427
|
+
* Build a SwapTransaction from a quote by fetching approvals and wrapping
|
|
428
|
+
* the swap calldata. Used by both the quote-execute path and provider
|
|
429
|
+
* `_execute` implementations. Quotes are required to have `recipient` set
|
|
430
|
+
* by the provider's `_getQuote`; sub-providers can dereference
|
|
431
|
+
* `quote.recipient` directly. Reads `quote.approvalMode` (populated by
|
|
432
|
+
* `execute()` at entry).
|
|
433
|
+
* @param quote - SwapQuote with recipient and approvalMode set
|
|
386
434
|
*/
|
|
387
435
|
protected async buildSwapTransactions(
|
|
388
436
|
quote: SwapQuote,
|
|
389
437
|
): Promise<SwapTransaction> {
|
|
438
|
+
if (!quote.recipient) {
|
|
439
|
+
throw new Error(
|
|
440
|
+
'SwapQuote.recipient missing — _getQuote must populate it',
|
|
441
|
+
)
|
|
442
|
+
}
|
|
390
443
|
const approvals = await this._buildApprovals(quote)
|
|
391
444
|
|
|
392
445
|
const swapTx: TransactionData = {
|
|
@@ -415,32 +468,6 @@ export abstract class SwapProvider<
|
|
|
415
468
|
private async executeFromQuote(quote: SwapQuote): Promise<SwapTransaction> {
|
|
416
469
|
this.validateQuoteExpiration(quote)
|
|
417
470
|
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
471
|
return this.buildSwapTransactions(quote)
|
|
445
472
|
}
|
|
446
473
|
|
|
@@ -454,19 +481,22 @@ export abstract class SwapProvider<
|
|
|
454
481
|
validateAmountPositiveIfExists(params.amountIn)
|
|
455
482
|
validateAmountPositiveIfExists(params.amountOut)
|
|
456
483
|
validateSlippage(params.slippage ?? this.defaultSlippage, this.maxSlippage)
|
|
457
|
-
validateRecipient(
|
|
484
|
+
validateRecipient(params.recipient)
|
|
458
485
|
}
|
|
459
486
|
|
|
460
487
|
private validateQuoteExpiration(quote: SwapQuote): void {
|
|
461
488
|
const now = Math.floor(Date.now() / 1000)
|
|
462
489
|
if (now >= quote.expiresAt) {
|
|
463
|
-
throw new
|
|
464
|
-
|
|
465
|
-
|
|
490
|
+
throw new QuoteExpiredError({
|
|
491
|
+
expiresAt: quote.expiresAt,
|
|
492
|
+
currentTime: now,
|
|
493
|
+
})
|
|
466
494
|
}
|
|
467
495
|
}
|
|
468
496
|
|
|
469
|
-
private resolveParams(
|
|
497
|
+
private resolveParams(
|
|
498
|
+
params: SwapExecuteParamsResolved & { approvalMode: ApprovalMode },
|
|
499
|
+
): ResolvedSwapParams {
|
|
470
500
|
return {
|
|
471
501
|
amountInRaw: parseAssetAmount(params.assetIn, params.amountIn),
|
|
472
502
|
amountOutRaw: parseAssetAmount(params.assetOut, params.amountOut),
|
|
@@ -480,6 +510,7 @@ export abstract class SwapProvider<
|
|
|
480
510
|
recipient: params.recipient ?? params.walletAddress,
|
|
481
511
|
walletAddress: params.walletAddress,
|
|
482
512
|
chainId: params.chainId,
|
|
513
|
+
approvalMode: params.approvalMode,
|
|
483
514
|
}
|
|
484
515
|
}
|
|
485
516
|
|
|
@@ -560,8 +591,10 @@ export abstract class SwapProvider<
|
|
|
560
591
|
|
|
561
592
|
/**
|
|
562
593
|
* Build provider-specific approval transactions for a swap.
|
|
563
|
-
* Called by the base class during executeFromQuote with a validated
|
|
564
|
-
*
|
|
594
|
+
* Called by the base class during executeFromQuote with a validated
|
|
595
|
+
* recipient and resolved approvalMode. Implementations read
|
|
596
|
+
* `quote.approvalMode` to choose between exact and max approvals.
|
|
597
|
+
* @param quote - SwapQuote with recipient set by the provider's _getQuote and approvalMode populated by execute() at entry
|
|
565
598
|
* @returns Approval transactions needed before the swap (tokenApproval, permit2Approval)
|
|
566
599
|
*/
|
|
567
600
|
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
|
/**
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Core
|
|
2
|
+
export { SwapProvider } from '@/actions/swap/core/SwapProvider.js'
|
|
3
|
+
|
|
4
|
+
// Namespaces
|
|
5
|
+
export { ActionsSwapNamespace } from '@/actions/swap/namespaces/ActionsSwapNamespace.js'
|
|
6
|
+
export { BaseSwapNamespace } from '@/actions/swap/namespaces/BaseSwapNamespace.js'
|
|
7
|
+
export { WalletSwapNamespace } from '@/actions/swap/namespaces/WalletSwapNamespace.js'
|
|
8
|
+
|
|
9
|
+
// Providers
|
|
10
|
+
export type {
|
|
11
|
+
UniswapMarketConfig,
|
|
12
|
+
UniswapSwapProviderConfig,
|
|
13
|
+
} from '@/actions/swap/providers/uniswap/types.js'
|
|
14
|
+
export { UniswapSwapProvider } from '@/actions/swap/providers/uniswap/UniswapSwapProvider.js'
|
|
15
|
+
export type {
|
|
16
|
+
VelodromeMarketConfig,
|
|
17
|
+
VelodromeSwapProviderConfig,
|
|
18
|
+
} from '@/actions/swap/providers/velodrome/types.js'
|
|
19
|
+
export { VelodromeSwapProvider } from '@/actions/swap/providers/velodrome/VelodromeSwapProvider.js'
|