@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,6 +1,16 @@
|
|
|
1
|
+
import { BaseNamespace } from '@/actions/shared/BaseNamespace.js'
|
|
2
|
+
import type { SwapProvider } from '@/actions/swap/core/SwapProvider.js'
|
|
1
3
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
+
import {
|
|
5
|
+
MarketNotAllowedError,
|
|
6
|
+
MarketNotFoundError,
|
|
7
|
+
ProviderNotConfiguredError,
|
|
8
|
+
} from '@/core/error/errors.js'
|
|
9
|
+
import type { SwapQuoteParamsResolved } from '@/services/nameservices/ens/types.js'
|
|
10
|
+
import {
|
|
11
|
+
passthroughResolver,
|
|
12
|
+
type RecipientResolver,
|
|
13
|
+
} from '@/services/nameservices/ens/utils.js'
|
|
4
14
|
import type { SwapProviderName, SwapSettings } from '@/types/actions.js'
|
|
5
15
|
import type { Asset } from '@/types/asset.js'
|
|
6
16
|
import type {
|
|
@@ -12,19 +22,24 @@ import type {
|
|
|
12
22
|
SwapQuote,
|
|
13
23
|
SwapQuoteParams,
|
|
14
24
|
} from '@/types/swap/index.js'
|
|
15
|
-
|
|
25
|
+
|
|
26
|
+
type ConfiguredSwapProvider = SwapProvider<SwapProviderConfig>
|
|
16
27
|
|
|
17
28
|
/**
|
|
18
29
|
* Base swap namespace with shared read-only operations
|
|
19
30
|
*/
|
|
20
|
-
export abstract class BaseSwapNamespace
|
|
31
|
+
export abstract class BaseSwapNamespace extends BaseNamespace<
|
|
32
|
+
ConfiguredSwapProvider,
|
|
33
|
+
SwapProviders
|
|
34
|
+
> {
|
|
21
35
|
protected readonly resolveRecipient: RecipientResolver
|
|
22
36
|
|
|
23
37
|
constructor(
|
|
24
|
-
|
|
38
|
+
providers: SwapProviders,
|
|
25
39
|
resolveRecipient?: RecipientResolver,
|
|
26
40
|
protected readonly settings?: SwapSettings,
|
|
27
41
|
) {
|
|
42
|
+
super(providers)
|
|
28
43
|
this.resolveRecipient = resolveRecipient ?? passthroughResolver
|
|
29
44
|
}
|
|
30
45
|
|
|
@@ -64,64 +79,7 @@ export abstract class BaseSwapNamespace {
|
|
|
64
79
|
}
|
|
65
80
|
|
|
66
81
|
/**
|
|
67
|
-
* Fetch quotes from all
|
|
68
|
-
* @param params - Quote parameters
|
|
69
|
-
* @returns The quote with the highest amountOut
|
|
70
|
-
* @throws If no provider returns a valid quote
|
|
71
|
-
*/
|
|
72
|
-
private async getBestQuote(
|
|
73
|
-
params: SwapQuoteParamsResolved,
|
|
74
|
-
): Promise<SwapQuote> {
|
|
75
|
-
const quotes = await this.fetchAllQuotes(params)
|
|
76
|
-
|
|
77
|
-
let best: SwapQuote | null = null
|
|
78
|
-
for (const quote of quotes) {
|
|
79
|
-
if (!best || quote.amountOutRaw > best.amountOutRaw) {
|
|
80
|
-
best = quote
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
if (!best) {
|
|
85
|
-
throw new Error(
|
|
86
|
-
`All providers failed to quote ${params.assetIn.metadata.symbol}/${params.assetOut.metadata.symbol}`,
|
|
87
|
-
)
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return best
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Fetch quotes from all eligible providers in parallel.
|
|
95
|
-
* Providers that don't support the pair or fail to quote are silently skipped.
|
|
96
|
-
* @param params - Quote parameters
|
|
97
|
-
* @returns Array of successful quotes (may be empty if all providers fail)
|
|
98
|
-
*/
|
|
99
|
-
private async fetchAllQuotes(
|
|
100
|
-
params: SwapQuoteParamsResolved,
|
|
101
|
-
): Promise<SwapQuote[]> {
|
|
102
|
-
const eligible = this.getAllProviders().filter((p) =>
|
|
103
|
-
p.isMarketSupported(params.assetIn, params.assetOut, params.chainId),
|
|
104
|
-
)
|
|
105
|
-
|
|
106
|
-
if (eligible.length === 0) {
|
|
107
|
-
throw new Error(
|
|
108
|
-
`No provider supports ${params.assetIn.metadata.symbol}/${params.assetOut.metadata.symbol} on chain ${params.chainId}`,
|
|
109
|
-
)
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
const results = await Promise.allSettled(
|
|
113
|
-
eligible.map((p) => p.getQuote(params)),
|
|
114
|
-
)
|
|
115
|
-
|
|
116
|
-
return results
|
|
117
|
-
.filter(
|
|
118
|
-
(r): r is PromiseFulfilledResult<SwapQuote> => r.status === 'fulfilled',
|
|
119
|
-
)
|
|
120
|
-
.map((r) => r.value)
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Fetch quotes from all eligible providers in parallel.
|
|
82
|
+
* Fetch quotes from all providers with the wallet address as recipient.
|
|
125
83
|
* Unlike getQuote(), returns all successful quotes instead of just the best.
|
|
126
84
|
* If an explicit provider is specified, returns a single-element array from that provider.
|
|
127
85
|
* @param params - Quote parameters (assets, amounts, chain, optional provider)
|
|
@@ -165,7 +123,7 @@ export abstract class BaseSwapNamespace {
|
|
|
165
123
|
if (provider) {
|
|
166
124
|
const named = this.providers[provider]
|
|
167
125
|
if (!named) {
|
|
168
|
-
throw new
|
|
126
|
+
throw new ProviderNotConfiguredError({ provider })
|
|
169
127
|
}
|
|
170
128
|
return named.getMarket(params)
|
|
171
129
|
}
|
|
@@ -177,9 +135,10 @@ export abstract class BaseSwapNamespace {
|
|
|
177
135
|
continue
|
|
178
136
|
}
|
|
179
137
|
}
|
|
180
|
-
throw new
|
|
181
|
-
|
|
182
|
-
|
|
138
|
+
throw new MarketNotFoundError({
|
|
139
|
+
chainId: params.chainId,
|
|
140
|
+
poolId: params.poolId,
|
|
141
|
+
})
|
|
183
142
|
}
|
|
184
143
|
|
|
185
144
|
/**
|
|
@@ -194,26 +153,6 @@ export abstract class BaseSwapNamespace {
|
|
|
194
153
|
return results.flat()
|
|
195
154
|
}
|
|
196
155
|
|
|
197
|
-
/**
|
|
198
|
-
* Get all supported chain IDs across all providers
|
|
199
|
-
*/
|
|
200
|
-
supportedChainIds(): SupportedChainId[] {
|
|
201
|
-
const chainIds = new Set<SupportedChainId>()
|
|
202
|
-
for (const provider of this.getAllProviders()) {
|
|
203
|
-
for (const chainId of provider.supportedChainIds()) {
|
|
204
|
-
chainIds.add(chainId)
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
return Array.from(chainIds)
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// SwapProviders keys are optional (uniswap?, velodrome?, etc.) so filter out unconfigured ones
|
|
211
|
-
protected getAllProviders(): Array<SwapProvider<SwapProviderConfig>> {
|
|
212
|
-
return Object.values(this.providers).filter(
|
|
213
|
-
(p): p is SwapProvider<SwapProviderConfig> => p !== undefined,
|
|
214
|
-
)
|
|
215
|
-
}
|
|
216
|
-
|
|
217
156
|
/**
|
|
218
157
|
* Resolve which provider handles a request.
|
|
219
158
|
*
|
|
@@ -229,17 +168,17 @@ export abstract class BaseSwapNamespace {
|
|
|
229
168
|
assetIn: Asset,
|
|
230
169
|
assetOut: Asset,
|
|
231
170
|
chainId: SupportedChainId,
|
|
232
|
-
):
|
|
171
|
+
): ConfiguredSwapProvider {
|
|
233
172
|
const allProviders = this.getAllProviders()
|
|
234
173
|
if (allProviders.length === 0) {
|
|
235
|
-
throw new
|
|
174
|
+
throw new ProviderNotConfiguredError({ provider: 'swap' })
|
|
236
175
|
}
|
|
237
176
|
|
|
238
177
|
// 1. Explicit provider param
|
|
239
178
|
if (provider) {
|
|
240
179
|
const named = this.providers[provider]
|
|
241
180
|
if (!named) {
|
|
242
|
-
throw new
|
|
181
|
+
throw new ProviderNotConfiguredError({ provider })
|
|
243
182
|
}
|
|
244
183
|
return named
|
|
245
184
|
}
|
|
@@ -271,4 +210,67 @@ export abstract class BaseSwapNamespace {
|
|
|
271
210
|
|
|
272
211
|
return allProviders[0]
|
|
273
212
|
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Fetch quotes from all eligible providers in parallel and return the best.
|
|
216
|
+
* @param params - Quote parameters
|
|
217
|
+
* @returns The quote with the highest amountOut
|
|
218
|
+
* @throws If no provider returns a valid quote
|
|
219
|
+
*/
|
|
220
|
+
private async getBestQuote(
|
|
221
|
+
params: SwapQuoteParamsResolved,
|
|
222
|
+
): Promise<SwapQuote> {
|
|
223
|
+
const quotes = await this.fetchAllQuotes(params)
|
|
224
|
+
|
|
225
|
+
let best: SwapQuote | null = null
|
|
226
|
+
for (const quote of quotes) {
|
|
227
|
+
if (!best || quote.amountOutRaw > best.amountOutRaw) {
|
|
228
|
+
best = quote
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
if (!best) {
|
|
233
|
+
throw new MarketNotAllowedError({
|
|
234
|
+
assetInSymbol: params.assetIn.metadata.symbol,
|
|
235
|
+
assetOutSymbol: params.assetOut.metadata.symbol,
|
|
236
|
+
chainId: params.chainId,
|
|
237
|
+
reason: 'All providers failed to quote this pair',
|
|
238
|
+
})
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
return best
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Fetch quotes from all eligible providers in parallel.
|
|
246
|
+
* Providers that don't support the pair or fail to quote are silently skipped.
|
|
247
|
+
* @param params - Quote parameters
|
|
248
|
+
* @returns Array of successful quotes (may be empty if all providers fail)
|
|
249
|
+
*/
|
|
250
|
+
private async fetchAllQuotes(
|
|
251
|
+
params: SwapQuoteParamsResolved,
|
|
252
|
+
): Promise<SwapQuote[]> {
|
|
253
|
+
const eligible = this.getAllProviders().filter((p) =>
|
|
254
|
+
p.isMarketSupported(params.assetIn, params.assetOut, params.chainId),
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
if (eligible.length === 0) {
|
|
258
|
+
throw new MarketNotAllowedError({
|
|
259
|
+
assetInSymbol: params.assetIn.metadata.symbol,
|
|
260
|
+
assetOutSymbol: params.assetOut.metadata.symbol,
|
|
261
|
+
chainId: params.chainId,
|
|
262
|
+
reason: 'No configured provider supports this pair on this chain',
|
|
263
|
+
})
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
const results = await Promise.allSettled(
|
|
267
|
+
eligible.map((p) => p.getQuote(params)),
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
return results
|
|
271
|
+
.filter(
|
|
272
|
+
(r): r is PromiseFulfilledResult<SwapQuote> => r.status === 'fulfilled',
|
|
273
|
+
)
|
|
274
|
+
.map((r) => r.value)
|
|
275
|
+
}
|
|
274
276
|
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { isAddressEqual } from 'viem'
|
|
2
|
+
|
|
3
|
+
import { QUOTE_DISCRIMINATOR } from '@/actions/swap/core/SwapProvider.js'
|
|
4
|
+
import { BaseSwapNamespace } from '@/actions/swap/namespaces/BaseSwapNamespace.js'
|
|
5
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
6
|
+
import type { SwapExecuteParamsResolved } from '@/services/nameservices/ens/types.js'
|
|
7
|
+
import type { RecipientResolver } from '@/services/nameservices/ens/utils.js'
|
|
8
|
+
import type { SwapSettings } from '@/types/actions.js'
|
|
9
|
+
import type {
|
|
10
|
+
SwapProviders,
|
|
11
|
+
SwapQuote,
|
|
12
|
+
SwapQuoteParams,
|
|
13
|
+
SwapReceipt,
|
|
14
|
+
SwapTransaction,
|
|
15
|
+
WalletSwapParams,
|
|
16
|
+
} from '@/types/swap/index.js'
|
|
17
|
+
import type { TransactionData } from '@/types/transaction.js'
|
|
18
|
+
import { executeTransactionBatch } from '@/wallet/core/utils/executeTransactionBatch.js'
|
|
19
|
+
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Wallet swap namespace with full operations including signing.
|
|
23
|
+
* Provides getQuote() for pricing and execute() for swapping tokens.
|
|
24
|
+
*/
|
|
25
|
+
export class WalletSwapNamespace extends BaseSwapNamespace {
|
|
26
|
+
constructor(
|
|
27
|
+
providers: SwapProviders,
|
|
28
|
+
private readonly wallet: Wallet,
|
|
29
|
+
resolveRecipient?: RecipientResolver,
|
|
30
|
+
settings?: SwapSettings,
|
|
31
|
+
) {
|
|
32
|
+
super(providers, resolveRecipient, settings)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Get a swap quote with the wallet address as recipient.
|
|
37
|
+
* Ensures calldata is encoded for the real wallet, not a placeholder.
|
|
38
|
+
*/
|
|
39
|
+
override async getQuote(params: SwapQuoteParams): Promise<SwapQuote> {
|
|
40
|
+
return super.getQuote({
|
|
41
|
+
...params,
|
|
42
|
+
recipient: params.recipient ?? this.wallet.address,
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Get quotes from all providers with the wallet address as recipient.
|
|
48
|
+
*/
|
|
49
|
+
override async getQuotes(params: SwapQuoteParams): Promise<SwapQuote[]> {
|
|
50
|
+
return super.getQuotes({
|
|
51
|
+
...params,
|
|
52
|
+
recipient: params.recipient ?? this.wallet.address,
|
|
53
|
+
})
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Execute a token swap.
|
|
58
|
+
* Accepts either raw params (re-quotes internally) or a pre-built SwapQuote
|
|
59
|
+
* (skips re-quoting). When a pre-built quote is passed, its recipient must
|
|
60
|
+
* equal this wallet's address — otherwise the calldata would route output
|
|
61
|
+
* tokens to a different address (a real risk on Velodrome v2/leaf paths
|
|
62
|
+
* where the recipient is encoded directly into the swap call). Re-quote via
|
|
63
|
+
* `wallet.swap.getQuote(...)` to bind the quote to this wallet.
|
|
64
|
+
* @param params - Swap parameters or a pre-built SwapQuote from getQuote()
|
|
65
|
+
* @returns Swap receipt with transaction details
|
|
66
|
+
* @throws If `params` is a SwapQuote whose recipient differs from this wallet
|
|
67
|
+
*/
|
|
68
|
+
async execute(params: WalletSwapParams | SwapQuote): Promise<SwapReceipt> {
|
|
69
|
+
const executeParams =
|
|
70
|
+
QUOTE_DISCRIMINATOR in params
|
|
71
|
+
? this.requireQuoteForThisWallet(params)
|
|
72
|
+
: await this.resolveRawParams(params)
|
|
73
|
+
|
|
74
|
+
const provider = this.resolveProvider(
|
|
75
|
+
params.provider,
|
|
76
|
+
params.assetIn,
|
|
77
|
+
params.assetOut,
|
|
78
|
+
params.chainId,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
const swapTx = await provider.execute(executeParams)
|
|
82
|
+
const receipt = await this.dispatch(swapTx, params.chainId)
|
|
83
|
+
return this.buildReceipt(swapTx, receipt)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Validate that a pre-built quote is bound to this wallet. Throws when the
|
|
88
|
+
* quote's recipient differs from `wallet.address` — silently swapping
|
|
89
|
+
* recipients would route output tokens to the wrong address on routers that
|
|
90
|
+
* encode the recipient directly into calldata (e.g. Velodrome v2/leaf).
|
|
91
|
+
*/
|
|
92
|
+
private requireQuoteForThisWallet(quote: SwapQuote): SwapQuote {
|
|
93
|
+
if (!isAddressEqual(quote.recipient, this.wallet.address)) {
|
|
94
|
+
throw new Error(
|
|
95
|
+
`SwapQuote was generated for a different recipient (${quote.recipient}). ` +
|
|
96
|
+
`Re-quote via wallet.swap.getQuote(...) so calldata is bound to this wallet (${this.wallet.address}).`,
|
|
97
|
+
)
|
|
98
|
+
}
|
|
99
|
+
return quote
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Inject `walletAddress` (needed for validation and on-chain allowance
|
|
104
|
+
* checks) and resolve any ENS recipient so providers only ever receive an
|
|
105
|
+
* `Address`.
|
|
106
|
+
*/
|
|
107
|
+
private async resolveRawParams(
|
|
108
|
+
params: WalletSwapParams,
|
|
109
|
+
): Promise<SwapExecuteParamsResolved> {
|
|
110
|
+
return {
|
|
111
|
+
...params,
|
|
112
|
+
walletAddress: this.wallet.address,
|
|
113
|
+
recipient: await this.resolveRecipient(
|
|
114
|
+
params.recipient ?? this.wallet.address,
|
|
115
|
+
),
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
private buildReceipt(
|
|
120
|
+
swapTx: SwapTransaction,
|
|
121
|
+
receipt: SwapReceipt['receipt'],
|
|
122
|
+
): SwapReceipt {
|
|
123
|
+
return {
|
|
124
|
+
receipt,
|
|
125
|
+
amountIn: swapTx.amountIn,
|
|
126
|
+
amountOut: swapTx.amountOut,
|
|
127
|
+
amountInRaw: swapTx.amountInRaw,
|
|
128
|
+
amountOutRaw: swapTx.amountOutRaw,
|
|
129
|
+
assetIn: swapTx.assetIn,
|
|
130
|
+
assetOut: swapTx.assetOut,
|
|
131
|
+
price: swapTx.price,
|
|
132
|
+
priceImpact: swapTx.priceImpact,
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Send a swap transaction, collecting any token/Permit2 approvals ahead
|
|
138
|
+
* of the swap call. Defers to `executeTransactionBatch` for the actual
|
|
139
|
+
* 1-vs-N send/sendBatch dispatch.
|
|
140
|
+
*/
|
|
141
|
+
private dispatch(
|
|
142
|
+
swapTx: SwapTransaction,
|
|
143
|
+
chainId: SupportedChainId,
|
|
144
|
+
): Promise<SwapReceipt['receipt']> {
|
|
145
|
+
const { transactionData } = swapTx
|
|
146
|
+
const txs: TransactionData[] = []
|
|
147
|
+
if (transactionData.tokenApproval) txs.push(transactionData.tokenApproval)
|
|
148
|
+
if (transactionData.permit2Approval) {
|
|
149
|
+
txs.push(transactionData.permit2Approval)
|
|
150
|
+
}
|
|
151
|
+
txs.push(transactionData.swap)
|
|
152
|
+
return executeTransactionBatch(this.wallet, txs, chainId)
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest'
|
|
2
2
|
|
|
3
|
-
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
4
|
-
import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
|
|
5
|
-
import type { ChainManager } from '@/services/ChainManager.js'
|
|
6
3
|
import {
|
|
7
4
|
createMockSwapProvider,
|
|
8
5
|
MockSwapProvider,
|
|
9
|
-
} from '@/swap/__mocks__/MockSwapProvider.js'
|
|
10
|
-
import { ActionsSwapNamespace } from '@/swap/namespaces/ActionsSwapNamespace.js'
|
|
6
|
+
} from '@/actions/swap/__mocks__/MockSwapProvider.js'
|
|
7
|
+
import { ActionsSwapNamespace } from '@/actions/swap/namespaces/ActionsSwapNamespace.js'
|
|
8
|
+
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
9
|
+
import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
|
|
10
|
+
import type { ChainManager } from '@/services/ChainManager.js'
|
|
11
11
|
|
|
12
12
|
describe('BaseSwapNamespace', () => {
|
|
13
13
|
const USDC = {
|
|
@@ -50,7 +50,7 @@ describe('BaseSwapNamespace', () => {
|
|
|
50
50
|
amountIn: 100,
|
|
51
51
|
chainId: 84532 as SupportedChainId,
|
|
52
52
|
}),
|
|
53
|
-
).rejects.toThrow('
|
|
53
|
+
).rejects.toThrow("A 'swap' provider is not configured")
|
|
54
54
|
})
|
|
55
55
|
})
|
|
56
56
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Address } from 'viem'
|
|
2
2
|
import { describe, expect, it, vi } from 'vitest'
|
|
3
3
|
|
|
4
|
+
import { createMockSwapProvider } from '@/actions/swap/__mocks__/MockSwapProvider.js'
|
|
5
|
+
import { WalletSwapNamespace } from '@/actions/swap/namespaces/WalletSwapNamespace.js'
|
|
4
6
|
import type { SupportedChainId } from '@/constants/supportedChains.js'
|
|
5
|
-
import { createMockSwapProvider } from '@/swap/__mocks__/MockSwapProvider.js'
|
|
6
|
-
import { WalletSwapNamespace } from '@/swap/namespaces/WalletSwapNamespace.js'
|
|
7
7
|
import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
|
|
8
8
|
|
|
9
9
|
describe('WalletSwapNamespace', () => {
|
|
@@ -118,6 +118,47 @@ describe('WalletSwapNamespace', () => {
|
|
|
118
118
|
)
|
|
119
119
|
})
|
|
120
120
|
|
|
121
|
+
it('defaults recipient to wallet address when omitted', async () => {
|
|
122
|
+
const provider = createMockSwapProvider()
|
|
123
|
+
const wallet = createMockWallet()
|
|
124
|
+
const namespace = new WalletSwapNamespace({ uniswap: provider }, wallet)
|
|
125
|
+
|
|
126
|
+
await namespace.execute({
|
|
127
|
+
amountIn: 100,
|
|
128
|
+
assetIn: USDC,
|
|
129
|
+
assetOut: ETH,
|
|
130
|
+
chainId: 84532 as SupportedChainId,
|
|
131
|
+
})
|
|
132
|
+
|
|
133
|
+
expect(provider.mockExecute).toHaveBeenCalledWith(
|
|
134
|
+
expect.objectContaining({
|
|
135
|
+
recipient: mockWalletAddress,
|
|
136
|
+
}),
|
|
137
|
+
)
|
|
138
|
+
})
|
|
139
|
+
|
|
140
|
+
it('preserves explicit recipient over wallet address', async () => {
|
|
141
|
+
const provider = createMockSwapProvider()
|
|
142
|
+
const wallet = createMockWallet()
|
|
143
|
+
const namespace = new WalletSwapNamespace({ uniswap: provider }, wallet)
|
|
144
|
+
const customRecipient =
|
|
145
|
+
'0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' as Address
|
|
146
|
+
|
|
147
|
+
await namespace.execute({
|
|
148
|
+
amountIn: 100,
|
|
149
|
+
assetIn: USDC,
|
|
150
|
+
assetOut: ETH,
|
|
151
|
+
chainId: 84532 as SupportedChainId,
|
|
152
|
+
recipient: customRecipient,
|
|
153
|
+
})
|
|
154
|
+
|
|
155
|
+
expect(provider.mockExecute).toHaveBeenCalledWith(
|
|
156
|
+
expect.objectContaining({
|
|
157
|
+
recipient: customRecipient,
|
|
158
|
+
}),
|
|
159
|
+
)
|
|
160
|
+
})
|
|
161
|
+
|
|
121
162
|
it('throws when no provider configured', async () => {
|
|
122
163
|
const wallet = createMockWallet()
|
|
123
164
|
const namespace = new WalletSwapNamespace({}, wallet)
|
|
@@ -129,7 +170,7 @@ describe('WalletSwapNamespace', () => {
|
|
|
129
170
|
assetOut: ETH,
|
|
130
171
|
chainId: 84532 as SupportedChainId,
|
|
131
172
|
}),
|
|
132
|
-
).rejects.toThrow('
|
|
173
|
+
).rejects.toThrow("A 'swap' provider is not configured")
|
|
133
174
|
})
|
|
134
175
|
|
|
135
176
|
it('executes swap from a SwapQuote (skips re-quoting)', async () => {
|
|
@@ -170,7 +211,7 @@ describe('WalletSwapNamespace', () => {
|
|
|
170
211
|
})
|
|
171
212
|
|
|
172
213
|
// Quote should have wallet address as the encoded recipient
|
|
173
|
-
expect(quote.
|
|
214
|
+
expect(quote.recipient).toBe(mockWalletAddress)
|
|
174
215
|
})
|
|
175
216
|
|
|
176
217
|
it('preserves explicit recipient over wallet address', async () => {
|
|
@@ -188,43 +229,61 @@ describe('WalletSwapNamespace', () => {
|
|
|
188
229
|
recipient: customRecipient,
|
|
189
230
|
})
|
|
190
231
|
|
|
191
|
-
expect(quote.
|
|
232
|
+
expect(quote.recipient).toBe(customRecipient)
|
|
192
233
|
})
|
|
193
234
|
})
|
|
194
235
|
|
|
195
236
|
describe('execute with recipient mismatch', () => {
|
|
196
|
-
it('
|
|
237
|
+
it('throws when quote.recipient does not match wallet.address', async () => {
|
|
197
238
|
const provider = createMockSwapProvider()
|
|
198
239
|
const wallet = createMockWallet()
|
|
199
240
|
const namespace = new WalletSwapNamespace({ uniswap: provider }, wallet)
|
|
200
241
|
|
|
201
|
-
// Get quote without wallet (simulates ActionsSwapNamespace quote
|
|
242
|
+
// Get quote without wallet (simulates ActionsSwapNamespace quote — recipient
|
|
243
|
+
// defaults to UNIVERSAL_ROUTER_MSG_SENDER, not the executing wallet)
|
|
202
244
|
const quote = await provider.getQuote({
|
|
203
245
|
assetIn: USDC,
|
|
204
246
|
assetOut: ETH,
|
|
205
247
|
amountIn: 100,
|
|
206
248
|
chainId: 84532 as SupportedChainId,
|
|
207
|
-
// No recipient — uses placeholder
|
|
208
249
|
})
|
|
209
250
|
|
|
210
|
-
|
|
211
|
-
expect(quote.quotedRecipient).not.toBe(mockWalletAddress)
|
|
251
|
+
expect(quote.recipient).not.toBe(mockWalletAddress)
|
|
212
252
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
253
|
+
await expect(namespace.execute(quote)).rejects.toThrow(
|
|
254
|
+
/generated for a different recipient/i,
|
|
255
|
+
)
|
|
256
|
+
// Provider's getQuote was called once (the original); execute did not re-quote.
|
|
257
|
+
expect(provider.mockGetQuote).toHaveBeenCalledTimes(1)
|
|
258
|
+
})
|
|
259
|
+
|
|
260
|
+
it('throws on a quote built for a different wallet address', async () => {
|
|
261
|
+
const provider = createMockSwapProvider()
|
|
262
|
+
const wallet = createMockWallet()
|
|
263
|
+
const namespace = new WalletSwapNamespace({ uniswap: provider }, wallet)
|
|
264
|
+
const otherWallet =
|
|
265
|
+
'0x9999999999999999999999999999999999999999' as Address
|
|
266
|
+
|
|
267
|
+
const quote = await provider.getQuote({
|
|
268
|
+
assetIn: USDC,
|
|
269
|
+
assetOut: ETH,
|
|
270
|
+
amountIn: 100,
|
|
271
|
+
chainId: 84532 as SupportedChainId,
|
|
272
|
+
recipient: otherWallet,
|
|
273
|
+
})
|
|
274
|
+
|
|
275
|
+
expect(quote.recipient).toBe(otherWallet)
|
|
216
276
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
277
|
+
await expect(namespace.execute(quote)).rejects.toThrow(
|
|
278
|
+
/generated for a different recipient/i,
|
|
279
|
+
)
|
|
220
280
|
})
|
|
221
281
|
|
|
222
|
-
it('
|
|
282
|
+
it('executes when quote.recipient equals wallet.address', async () => {
|
|
223
283
|
const provider = createMockSwapProvider()
|
|
224
284
|
const wallet = createMockWallet()
|
|
225
285
|
const namespace = new WalletSwapNamespace({ uniswap: provider }, wallet)
|
|
226
286
|
|
|
227
|
-
// Get quote through wallet namespace (has correct recipient)
|
|
228
287
|
const quote = await namespace.getQuote({
|
|
229
288
|
assetIn: USDC,
|
|
230
289
|
assetOut: ETH,
|
|
@@ -232,15 +291,44 @@ describe('WalletSwapNamespace', () => {
|
|
|
232
291
|
chainId: 84532 as SupportedChainId,
|
|
233
292
|
})
|
|
234
293
|
|
|
235
|
-
expect(quote.
|
|
294
|
+
expect(quote.recipient).toBe(mockWalletAddress)
|
|
236
295
|
|
|
237
|
-
// Execute — should NOT re-quote
|
|
238
296
|
const result = await namespace.execute(quote)
|
|
239
297
|
expect(result.price).toBeDefined()
|
|
240
|
-
|
|
241
|
-
// getQuote called only once (the original)
|
|
298
|
+
// Single getQuote call — no re-quote, no re-encode.
|
|
242
299
|
expect(provider.mockGetQuote).toHaveBeenCalledTimes(1)
|
|
243
300
|
})
|
|
301
|
+
|
|
302
|
+
it('executes when quote.recipient differs only in case from wallet.address', async () => {
|
|
303
|
+
// Address with hex letters so case actually changes the string. The
|
|
304
|
+
// wallet uses checksummed casing; the quote uses lowercase. Without
|
|
305
|
+
// `isAddressEqual` the strict `!==` would falsely reject.
|
|
306
|
+
const checksummedAddress =
|
|
307
|
+
'0xAbCdEf1234567890aBcDeF1234567890ABcDeF12' as Address
|
|
308
|
+
const lowercaseAddress = checksummedAddress.toLowerCase() as Address
|
|
309
|
+
|
|
310
|
+
const provider = createMockSwapProvider()
|
|
311
|
+
const wallet = {
|
|
312
|
+
address: checksummedAddress,
|
|
313
|
+
send: vi.fn().mockResolvedValue({ transactionHash: '0xtx1' }),
|
|
314
|
+
sendBatch: vi.fn().mockResolvedValue({ transactionHash: '0xtx2' }),
|
|
315
|
+
} as unknown as Wallet
|
|
316
|
+
const namespace = new WalletSwapNamespace({ uniswap: provider }, wallet)
|
|
317
|
+
|
|
318
|
+
const quote = await provider.getQuote({
|
|
319
|
+
assetIn: USDC,
|
|
320
|
+
assetOut: ETH,
|
|
321
|
+
amountIn: 100,
|
|
322
|
+
chainId: 84532 as SupportedChainId,
|
|
323
|
+
recipient: lowercaseAddress,
|
|
324
|
+
})
|
|
325
|
+
|
|
326
|
+
expect(quote.recipient).toBe(lowercaseAddress)
|
|
327
|
+
expect(quote.recipient).not.toBe(checksummedAddress)
|
|
328
|
+
|
|
329
|
+
const result = await namespace.execute(quote)
|
|
330
|
+
expect(result.price).toBeDefined()
|
|
331
|
+
})
|
|
244
332
|
})
|
|
245
333
|
|
|
246
334
|
describe('inherits read-only methods', () => {
|