@eth-optimism/actions-sdk 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__mocks__/MockAssets.d.ts +17 -2
- package/dist/__mocks__/MockAssets.d.ts.map +1 -1
- package/dist/__mocks__/MockAssets.js +49 -4
- package/dist/__mocks__/MockAssets.js.map +1 -1
- package/dist/__tests__/actions.test.js +1 -5
- package/dist/__tests__/actions.test.js.map +1 -1
- package/dist/actions.d.ts +23 -9
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +68 -36
- package/dist/actions.js.map +1 -1
- package/dist/constants/assets.d.ts +217 -2
- package/dist/constants/assets.d.ts.map +1 -1
- package/dist/constants/assets.js +744 -6
- package/dist/constants/assets.js.map +1 -1
- package/dist/constants/contracts.d.ts +4 -0
- package/dist/constants/contracts.d.ts.map +1 -0
- package/dist/constants/contracts.js +3 -0
- package/dist/constants/contracts.js.map +1 -0
- package/dist/constants/providers.d.ts +6 -0
- package/dist/constants/providers.d.ts.map +1 -0
- package/dist/constants/providers.js +6 -0
- package/dist/constants/providers.js.map +1 -0
- package/dist/constants/supportedChains.d.ts +2 -2
- package/dist/constants/supportedChains.d.ts.map +1 -1
- package/dist/constants/supportedChains.js +12 -2
- package/dist/constants/supportedChains.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/lend/__mocks__/MockLendProvider.d.ts +1 -1
- package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -1
- package/dist/lend/__mocks__/MockLendProvider.js +7 -2
- package/dist/lend/__mocks__/MockLendProvider.js.map +1 -1
- package/dist/lend/core/LendProvider.d.ts +12 -14
- package/dist/lend/core/LendProvider.d.ts.map +1 -1
- package/dist/lend/core/LendProvider.js +16 -31
- package/dist/lend/core/LendProvider.js.map +1 -1
- package/dist/lend/core/__tests__/LendProvider.test.js +2 -4
- package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
- package/dist/lend/namespaces/BaseLendNamespace.d.ts +2 -6
- package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -1
- package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -1
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +7 -4
- package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -1
- package/dist/lend/providers/aave/AaveLendProvider.d.ts +1 -6
- package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
- package/dist/lend/providers/aave/AaveLendProvider.js +3 -6
- package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +14 -6
- package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -1
- package/dist/lend/providers/aave/addresses.d.ts +13 -39
- package/dist/lend/providers/aave/addresses.d.ts.map +1 -1
- package/dist/lend/providers/aave/addresses.js +65 -60
- package/dist/lend/providers/aave/addresses.js.map +1 -1
- package/dist/lend/providers/aave/sdk.d.ts +2 -2
- package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
- package/dist/lend/providers/aave/sdk.js +6 -28
- package/dist/lend/providers/aave/sdk.js.map +1 -1
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +1 -6
- package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
- package/dist/lend/providers/morpho/MorphoLendProvider.js +4 -13
- package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/api.test.js +52 -43
- package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
- package/dist/lend/providers/morpho/__tests__/sdk.test.js +41 -41
- package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
- package/dist/lend/providers/morpho/api.d.ts +3 -3
- package/dist/lend/providers/morpho/api.d.ts.map +1 -1
- package/dist/lend/providers/morpho/api.js +2 -2
- package/dist/lend/providers/morpho/api.js.map +1 -1
- package/dist/lend/providers/morpho/contracts.d.ts +11 -10
- package/dist/lend/providers/morpho/contracts.d.ts.map +1 -1
- package/dist/lend/providers/morpho/contracts.js +43 -10
- package/dist/lend/providers/morpho/contracts.js.map +1 -1
- package/dist/lend/providers/morpho/sdk.d.ts +7 -2
- package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
- package/dist/lend/providers/morpho/sdk.js +67 -54
- package/dist/lend/providers/morpho/sdk.js.map +1 -1
- package/dist/nodeActionsFactory.d.ts +1 -1
- package/dist/reactActionsFactory.d.ts +1 -1
- package/dist/services/ChainManager.d.ts +8 -8
- package/dist/services/ChainManager.d.ts.map +1 -1
- package/dist/services/ChainManager.js.map +1 -1
- package/dist/services/__mocks__/MockChainManager.d.ts +4 -4
- package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
- package/dist/services/__mocks__/MockChainManager.js.map +1 -1
- package/dist/services/tokenBalance.d.ts +1 -1
- package/dist/services/tokenBalance.d.ts.map +1 -1
- package/dist/services/tokenBalance.js +31 -30
- package/dist/services/tokenBalance.js.map +1 -1
- package/dist/services/tokenBalance.spec.js +20 -24
- package/dist/services/tokenBalance.spec.js.map +1 -1
- package/dist/swap/__mocks__/MockSwapProvider.d.ts +50 -0
- package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -0
- package/dist/swap/__mocks__/MockSwapProvider.js +161 -0
- package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -0
- package/dist/swap/core/SwapProvider.d.ts +145 -0
- package/dist/swap/core/SwapProvider.d.ts.map +1 -0
- package/dist/swap/core/SwapProvider.js +359 -0
- package/dist/swap/core/SwapProvider.js.map +1 -0
- package/dist/swap/core/__tests__/SwapProvider.test.d.ts +2 -0
- package/dist/swap/core/__tests__/SwapProvider.test.d.ts.map +1 -0
- package/dist/swap/core/__tests__/SwapProvider.test.js +435 -0
- package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -0
- package/dist/swap/core/markets.d.ts +47 -0
- package/dist/swap/core/markets.d.ts.map +1 -0
- package/dist/swap/core/markets.js +65 -0
- package/dist/swap/core/markets.js.map +1 -0
- package/dist/swap/index.d.ts +9 -0
- package/dist/swap/index.d.ts.map +1 -0
- package/dist/swap/index.js +9 -0
- package/dist/swap/index.js.map +1 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +8 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.d.ts.map +1 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.js +8 -0
- package/dist/swap/namespaces/ActionsSwapNamespace.js.map +1 -0
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts +73 -0
- package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -0
- package/dist/swap/namespaces/BaseSwapNamespace.js +181 -0
- package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -0
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts +34 -0
- package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -0
- package/dist/swap/namespaces/WalletSwapNamespace.js +84 -0
- package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts +2 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +1 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +245 -0
- package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts +2 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +1 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +209 -0
- package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +35 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.js +148 -0
- package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts +2 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +258 -0
- package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts +2 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.js +312 -0
- package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -0
- package/dist/swap/providers/uniswap/abis.d.ts +227 -0
- package/dist/swap/providers/uniswap/abis.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/abis.js +138 -0
- package/dist/swap/providers/uniswap/abis.js.map +1 -0
- package/dist/swap/providers/uniswap/addresses.d.ts +26 -0
- package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/addresses.js +81 -0
- package/dist/swap/providers/uniswap/addresses.js.map +1 -0
- package/dist/swap/providers/uniswap/encoding.d.ts +77 -0
- package/dist/swap/providers/uniswap/encoding.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/encoding.js +233 -0
- package/dist/swap/providers/uniswap/encoding.js.map +1 -0
- package/dist/swap/providers/uniswap/markets.d.ts +19 -0
- package/dist/swap/providers/uniswap/markets.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/markets.js +48 -0
- package/dist/swap/providers/uniswap/markets.js.map +1 -0
- package/dist/swap/providers/uniswap/types.d.ts +21 -0
- package/dist/swap/providers/uniswap/types.d.ts.map +1 -0
- package/dist/swap/providers/uniswap/types.js +2 -0
- package/dist/swap/providers/uniswap/types.js.map +1 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +49 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.js +140 -0
- package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +255 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +166 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +419 -0
- package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js +51 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts +14 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js +13 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts +2 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js +173 -0
- package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
- package/dist/swap/providers/velodrome/abis.d.ts +396 -0
- package/dist/swap/providers/velodrome/abis.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/abis.js +257 -0
- package/dist/swap/providers/velodrome/abis.js.map +1 -0
- package/dist/swap/providers/velodrome/addresses.d.ts +39 -0
- package/dist/swap/providers/velodrome/addresses.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/addresses.js +57 -0
- package/dist/swap/providers/velodrome/addresses.js.map +1 -0
- package/dist/swap/providers/velodrome/config.d.ts +22 -0
- package/dist/swap/providers/velodrome/config.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/config.js +29 -0
- package/dist/swap/providers/velodrome/config.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/helpers.d.ts +37 -0
- package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/helpers.js +60 -0
- package/dist/swap/providers/velodrome/encoding/helpers.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/index.d.ts +8 -0
- package/dist/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/index.js +5 -0
- package/dist/swap/providers/velodrome/encoding/index.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts +39 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.js +83 -0
- package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +15 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.js +33 -0
- package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts +40 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.js +80 -0
- package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts +42 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.js +166 -0
- package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
- package/dist/swap/providers/velodrome/markets.d.ts +21 -0
- package/dist/swap/providers/velodrome/markets.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/markets.js +69 -0
- package/dist/swap/providers/velodrome/markets.js.map +1 -0
- package/dist/swap/providers/velodrome/types.d.ts +31 -0
- package/dist/swap/providers/velodrome/types.d.ts.map +1 -0
- package/dist/swap/providers/velodrome/types.js +2 -0
- package/dist/swap/providers/velodrome/types.js.map +1 -0
- package/dist/types/actions.d.ts +60 -11
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/asset.d.ts +7 -9
- package/dist/types/asset.d.ts.map +1 -1
- package/dist/types/chain.d.ts +2 -2
- package/dist/types/chain.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/lend/base.d.ts +9 -19
- package/dist/types/lend/base.d.ts.map +1 -1
- package/dist/types/lend/base.js.map +1 -1
- package/dist/types/lend/contracts.d.ts +2 -1
- package/dist/types/lend/contracts.d.ts.map +1 -1
- package/dist/types/providers.d.ts +21 -0
- package/dist/types/providers.d.ts.map +1 -0
- package/dist/types/providers.js +2 -0
- package/dist/types/providers.js.map +1 -0
- package/dist/types/swap/base.d.ts +338 -0
- package/dist/types/swap/base.d.ts.map +1 -0
- package/dist/types/swap/base.js +4 -0
- package/dist/types/swap/base.js.map +1 -0
- package/dist/types/swap/index.d.ts +2 -0
- package/dist/types/swap/index.d.ts.map +1 -0
- package/dist/types/swap/index.js +2 -0
- package/dist/types/swap/index.js.map +1 -0
- package/dist/types/transaction.d.ts +14 -0
- package/dist/types/transaction.d.ts.map +1 -0
- package/dist/types/transaction.js +2 -0
- package/dist/types/transaction.js.map +1 -0
- package/dist/utils/approve.d.ts +82 -0
- package/dist/utils/approve.d.ts.map +1 -0
- package/dist/utils/approve.js +134 -0
- package/dist/utils/approve.js.map +1 -0
- package/dist/utils/approve.test.d.ts +2 -0
- package/dist/utils/approve.test.d.ts.map +1 -0
- package/dist/utils/approve.test.js +203 -0
- package/dist/utils/approve.test.js.map +1 -0
- package/dist/utils/assets.d.ts +10 -5
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/assets.js +14 -11
- package/dist/utils/assets.js.map +1 -1
- package/dist/utils/assets.test.js +13 -1
- package/dist/utils/assets.test.js.map +1 -1
- package/dist/utils/validateAddresses.d.ts +32 -0
- package/dist/utils/validateAddresses.d.ts.map +1 -0
- package/dist/utils/validateAddresses.js +103 -0
- package/dist/utils/validateAddresses.js.map +1 -0
- package/dist/utils/validateAddresses.test.d.ts +2 -0
- package/dist/utils/validateAddresses.test.d.ts.map +1 -0
- package/dist/utils/validateAddresses.test.js +314 -0
- package/dist/utils/validateAddresses.test.js.map +1 -0
- package/dist/utils/validation.d.ts +12 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +44 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/wallet/core/namespace/WalletNamespace.d.ts +21 -9
- package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
- package/dist/wallet/core/namespace/WalletNamespace.js +44 -15
- package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
- package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +4 -10
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +2 -1
- package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -7
- package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +5 -6
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +5 -1
- package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +2 -2
- package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts +12 -12
- package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/Wallet.js +9 -4
- package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +10 -1
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +2 -2
- package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +12 -4
- package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +5 -7
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +6 -5
- package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
- package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +4 -6
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -1
- package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +2 -4
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +8 -9
- package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +4 -4
- package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +3 -6
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +4 -2
- package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +4 -6
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +4 -3
- package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -6
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
- package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -6
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +7 -2
- package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +1 -0
- package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +5 -6
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +6 -2
- package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -0
- package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +5 -8
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -4
- package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +2 -4
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +11 -13
- package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +6 -6
- package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +7 -6
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +5 -3
- package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +2 -6
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +5 -6
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
- package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -6
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
- package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
- package/package.json +4 -3
- package/src/__mocks__/MockAssets.ts +54 -4
- package/src/__tests__/actions.test.ts +1 -5
- package/src/actions.ts +106 -71
- package/src/constants/assets.ts +792 -5
- package/src/constants/contracts.ts +5 -0
- package/src/constants/providers.ts +5 -0
- package/src/constants/supportedChains.ts +22 -2
- package/src/index.ts +76 -6
- package/src/lend/__mocks__/MockLendProvider.ts +8 -3
- package/src/lend/core/LendProvider.ts +28 -41
- package/src/lend/core/__tests__/LendProvider.test.ts +2 -5
- package/src/lend/namespaces/BaseLendNamespace.ts +2 -6
- package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +12 -5
- package/src/lend/providers/aave/AaveLendProvider.ts +3 -7
- package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +16 -7
- package/src/lend/providers/aave/addresses.ts +82 -64
- package/src/lend/providers/aave/sdk.ts +11 -36
- package/src/lend/providers/morpho/MorphoLendProvider.ts +4 -16
- package/src/lend/providers/morpho/__tests__/api.test.ts +65 -44
- package/src/lend/providers/morpho/__tests__/sdk.test.ts +43 -42
- package/src/lend/providers/morpho/api.ts +7 -4
- package/src/lend/providers/morpho/contracts.ts +62 -13
- package/src/lend/providers/morpho/sdk.ts +85 -54
- package/src/services/ChainManager.ts +12 -21
- package/src/services/__mocks__/MockChainManager.ts +4 -7
- package/src/services/tokenBalance.spec.ts +20 -24
- package/src/services/tokenBalance.ts +39 -33
- package/src/swap/__mocks__/MockSwapProvider.ts +251 -0
- package/src/swap/core/SwapProvider.ts +577 -0
- package/src/swap/core/__tests__/SwapProvider.test.ts +620 -0
- package/src/swap/core/markets.ts +104 -0
- package/src/swap/index.ts +19 -0
- package/src/swap/namespaces/ActionsSwapNamespace.ts +7 -0
- package/src/swap/namespaces/BaseSwapNamespace.ts +258 -0
- package/src/swap/namespaces/WalletSwapNamespace.ts +121 -0
- package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +365 -0
- package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +257 -0
- package/src/swap/providers/uniswap/UniswapSwapProvider.ts +217 -0
- package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +299 -0
- package/src/swap/providers/uniswap/__tests__/sdk.test.ts +369 -0
- package/src/swap/providers/uniswap/abis.ts +144 -0
- package/src/swap/providers/uniswap/addresses.ts +110 -0
- package/src/swap/providers/uniswap/encoding.ts +406 -0
- package/src/swap/providers/uniswap/markets.ts +84 -0
- package/src/swap/providers/uniswap/types.ts +25 -0
- package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +224 -0
- package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +341 -0
- package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +202 -0
- package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +506 -0
- package/src/swap/providers/velodrome/__tests__/encoding.cl.test.ts +69 -0
- package/src/swap/providers/velodrome/__tests__/encoding.helpers.ts +20 -0
- package/src/swap/providers/velodrome/__tests__/encoding.v2.test.ts +235 -0
- package/src/swap/providers/velodrome/abis.ts +264 -0
- package/src/swap/providers/velodrome/addresses.ts +107 -0
- package/src/swap/providers/velodrome/config.ts +46 -0
- package/src/swap/providers/velodrome/encoding/helpers.ts +82 -0
- package/src/swap/providers/velodrome/encoding/index.ts +7 -0
- package/src/swap/providers/velodrome/encoding/poolRouter.ts +124 -0
- package/src/swap/providers/velodrome/encoding/routers/approval.ts +45 -0
- package/src/swap/providers/velodrome/encoding/routers/cl.ts +156 -0
- package/src/swap/providers/velodrome/encoding/routers/v2.ts +267 -0
- package/src/swap/providers/velodrome/markets.ts +100 -0
- package/src/swap/providers/velodrome/types.ts +30 -0
- package/src/types/actions.ts +68 -12
- package/src/types/asset.ts +12 -9
- package/src/types/chain.ts +2 -2
- package/src/types/index.ts +2 -0
- package/src/types/lend/base.ts +10 -20
- package/src/types/lend/contracts.ts +5 -1
- package/src/types/providers.ts +22 -0
- package/src/types/swap/base.ts +372 -0
- package/src/types/swap/index.ts +1 -0
- package/src/types/transaction.ts +14 -0
- package/src/utils/approve.test.ts +258 -0
- package/src/utils/approve.ts +197 -0
- package/src/utils/assets.test.ts +16 -1
- package/src/utils/assets.ts +27 -10
- package/src/utils/validateAddresses.test.ts +439 -0
- package/src/utils/validateAddresses.ts +153 -0
- package/src/utils/validation.ts +76 -0
- package/src/wallet/core/namespace/WalletNamespace.ts +70 -16
- package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +8 -4
- package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +6 -10
- package/src/wallet/core/providers/hosted/types/index.ts +9 -7
- package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +10 -10
- package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +2 -0
- package/src/wallet/core/wallets/abstract/Wallet.ts +23 -14
- package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +13 -1
- package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +21 -5
- package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +11 -14
- package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
- package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +11 -7
- package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +16 -8
- package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
- package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +6 -7
- package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +8 -11
- package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +7 -11
- package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +11 -7
- package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +1 -0
- package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +10 -7
- package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -0
- package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +10 -9
- package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +38 -13
- package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
- package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +13 -11
- package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
- package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +11 -11
- package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +11 -11
- package/dist/supported/tokens.d.ts +0 -25
- package/dist/supported/tokens.d.ts.map +0 -1
- package/dist/supported/tokens.js +0 -37
- package/dist/supported/tokens.js.map +0 -1
- package/src/supported/tokens.ts +0 -52
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { encodeCLSwap, getCLQuote } from './routers/cl.js';
|
|
2
|
+
import { encodeSwap, getQuote } from './routers/v2.js';
|
|
3
|
+
/**
|
|
4
|
+
* Fetch a price quote by routing to the correct pool type (v2 AMM or CL/Slipstream).
|
|
5
|
+
* @returns Internal quote and provider context for the SwapQuote
|
|
6
|
+
* @throws If CL pool requested on a chain without CL factory/quoter
|
|
7
|
+
*/
|
|
8
|
+
export async function fetchPoolQuote(poolConfig, params) {
|
|
9
|
+
const { assetIn, assetOut, amountInRaw, chainId, publicClient, chain } = params;
|
|
10
|
+
if (poolConfig.type === 'cl') {
|
|
11
|
+
if (!chain.contracts.clPoolFactory || !chain.contracts.clQuoterV2) {
|
|
12
|
+
throw new Error(`CL pools not supported on chain ${chainId}`);
|
|
13
|
+
}
|
|
14
|
+
const internalQuote = await getCLQuote({
|
|
15
|
+
assetIn,
|
|
16
|
+
assetOut,
|
|
17
|
+
amountInRaw,
|
|
18
|
+
chainId,
|
|
19
|
+
publicClient,
|
|
20
|
+
clFactoryAddress: chain.contracts.clPoolFactory,
|
|
21
|
+
clQuoterAddress: chain.contracts.clQuoterV2,
|
|
22
|
+
tickSpacing: poolConfig.tickSpacing,
|
|
23
|
+
});
|
|
24
|
+
return {
|
|
25
|
+
internalQuote,
|
|
26
|
+
providerContext: {
|
|
27
|
+
tickSpacing: poolConfig.tickSpacing,
|
|
28
|
+
clFactoryAddress: chain.contracts.clPoolFactory,
|
|
29
|
+
poolAddress: internalQuote.route.pools[0]?.address,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const internalQuote = await getQuote({
|
|
34
|
+
assetIn,
|
|
35
|
+
assetOut,
|
|
36
|
+
amountInRaw,
|
|
37
|
+
chainId,
|
|
38
|
+
publicClient,
|
|
39
|
+
routerAddress: chain.contracts.router,
|
|
40
|
+
routerType: chain.metadata.routerType,
|
|
41
|
+
stable: poolConfig.stable,
|
|
42
|
+
factoryAddress: chain.contracts.poolFactory,
|
|
43
|
+
});
|
|
44
|
+
return {
|
|
45
|
+
internalQuote,
|
|
46
|
+
providerContext: {
|
|
47
|
+
stable: poolConfig.stable,
|
|
48
|
+
factoryAddress: chain.contracts.poolFactory,
|
|
49
|
+
routerType: chain.metadata.routerType,
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Encode swap calldata by routing to the correct pool type (v2 AMM or CL/Slipstream).
|
|
55
|
+
* @returns Encoded calldata as hex string
|
|
56
|
+
*/
|
|
57
|
+
export function encodePoolSwap(poolConfig, params) {
|
|
58
|
+
if (poolConfig.type === 'cl') {
|
|
59
|
+
return encodeCLSwap({
|
|
60
|
+
assetIn: params.assetIn,
|
|
61
|
+
assetOut: params.assetOut,
|
|
62
|
+
amountInRaw: params.amountInRaw,
|
|
63
|
+
amountOutMin: params.amountOutMinRaw,
|
|
64
|
+
tickSpacing: poolConfig.tickSpacing,
|
|
65
|
+
recipient: params.recipient,
|
|
66
|
+
deadline: params.deadline,
|
|
67
|
+
chainId: params.chainId,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return encodeSwap({
|
|
71
|
+
assetIn: params.assetIn,
|
|
72
|
+
assetOut: params.assetOut,
|
|
73
|
+
amountInRaw: params.amountInRaw,
|
|
74
|
+
amountOutMin: params.amountOutMinRaw,
|
|
75
|
+
routerType: params.chain.metadata.routerType,
|
|
76
|
+
stable: poolConfig.stable,
|
|
77
|
+
factoryAddress: params.chain.contracts.poolFactory,
|
|
78
|
+
recipient: params.recipient,
|
|
79
|
+
deadline: params.deadline,
|
|
80
|
+
chainId: params.chainId,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=poolRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poolRouter.js","sourceRoot":"","sources":["../../../../../src/swap/providers/velodrome/encoding/poolRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Address, PublicClient } from 'viem';
|
|
2
|
+
import type { VelodromeRouterType } from '../../config.js';
|
|
3
|
+
import type { TransactionData } from '../../../../../types/transaction.js';
|
|
4
|
+
/**
|
|
5
|
+
* Build a token approval or transfer transaction for swap input.
|
|
6
|
+
*
|
|
7
|
+
* Universal Router uses a direct ERC20 transfer instead of approve+transferFrom.
|
|
8
|
+
* This works because smart wallet batching (4337) bundles the transfer and swap
|
|
9
|
+
* into a single atomic UserOperation — the router receives tokens before executing
|
|
10
|
+
* the swap in the same transaction. The caller must already hold the tokens.
|
|
11
|
+
*
|
|
12
|
+
* Legacy routers (v2, leaf) use standard approve, approving only the deficit.
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildTokenApproval(token: Address, router: Address, routerType: VelodromeRouterType, amount: bigint, owner: Address, publicClient: PublicClient): Promise<TransactionData | undefined>;
|
|
15
|
+
//# sourceMappingURL=approval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../../../../src/swap/providers/velodrome/encoding/routers/approval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAGjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAG7D;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,mBAAmB,EAC/B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAoBtC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { encodeFunctionData, erc20Abi } from 'viem';
|
|
2
|
+
import { buildApprovalTxIfNeeded } from '../../../../../utils/approve.js';
|
|
3
|
+
/**
|
|
4
|
+
* Build a token approval or transfer transaction for swap input.
|
|
5
|
+
*
|
|
6
|
+
* Universal Router uses a direct ERC20 transfer instead of approve+transferFrom.
|
|
7
|
+
* This works because smart wallet batching (4337) bundles the transfer and swap
|
|
8
|
+
* into a single atomic UserOperation — the router receives tokens before executing
|
|
9
|
+
* the swap in the same transaction. The caller must already hold the tokens.
|
|
10
|
+
*
|
|
11
|
+
* Legacy routers (v2, leaf) use standard approve, approving only the deficit.
|
|
12
|
+
*/
|
|
13
|
+
export async function buildTokenApproval(token, router, routerType, amount, owner, publicClient) {
|
|
14
|
+
if (routerType === 'universal') {
|
|
15
|
+
return {
|
|
16
|
+
to: token,
|
|
17
|
+
data: encodeFunctionData({
|
|
18
|
+
abi: erc20Abi,
|
|
19
|
+
functionName: 'transfer',
|
|
20
|
+
args: [router, amount],
|
|
21
|
+
}),
|
|
22
|
+
value: 0n,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
return buildApprovalTxIfNeeded({
|
|
26
|
+
publicClient,
|
|
27
|
+
token,
|
|
28
|
+
owner,
|
|
29
|
+
spender: router,
|
|
30
|
+
amount,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=approval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../../../../src/swap/providers/velodrome/encoding/routers/approval.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAInD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAE5D;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAc,EACd,MAAe,EACf,UAA+B,EAC/B,MAAc,EACd,KAAc,EACd,YAA0B;IAE1B,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QAC/B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,kBAAkB,CAAC;gBACvB,GAAG,EAAE,QAAQ;gBACb,YAAY,EAAE,UAAU;gBACxB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;aACvB,CAAC;YACF,KAAK,EAAE,EAAE;SACV,CAAA;IACH,CAAC;IAED,OAAO,uBAAuB,CAAC;QAC7B,YAAY;QACZ,KAAK;QACL,KAAK;QACL,OAAO,EAAE,MAAM;QACf,MAAM;KACP,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Address, Hex, PublicClient } from 'viem';
|
|
2
|
+
import type { SupportedChainId } from '../../../../../constants/supportedChains.js';
|
|
3
|
+
import type { Asset } from '../../../../../types/asset.js';
|
|
4
|
+
import type { SwapPrice } from '../../../../../types/swap/index.js';
|
|
5
|
+
export interface GetCLQuoteParams {
|
|
6
|
+
assetIn: Asset;
|
|
7
|
+
assetOut: Asset;
|
|
8
|
+
amountInRaw: bigint;
|
|
9
|
+
chainId: SupportedChainId;
|
|
10
|
+
publicClient: PublicClient;
|
|
11
|
+
clFactoryAddress: Address;
|
|
12
|
+
clQuoterAddress: Address;
|
|
13
|
+
tickSpacing: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Get a swap quote from a CL/Slipstream pool via QuoterV2.
|
|
17
|
+
* Verifies the pool exists via the CL factory, then quotes via QuoterV2.
|
|
18
|
+
* @param params - CL quote parameters
|
|
19
|
+
* @returns Price quote with amounts and route
|
|
20
|
+
* @throws If no CL pool exists for the given pair and tickSpacing
|
|
21
|
+
*/
|
|
22
|
+
export declare function getCLQuote(params: GetCLQuoteParams): Promise<SwapPrice>;
|
|
23
|
+
export interface EncodeCLSwapParams {
|
|
24
|
+
assetIn: Asset;
|
|
25
|
+
assetOut: Asset;
|
|
26
|
+
amountInRaw: bigint;
|
|
27
|
+
amountOutMin: bigint;
|
|
28
|
+
tickSpacing: number;
|
|
29
|
+
recipient: Address;
|
|
30
|
+
deadline: number;
|
|
31
|
+
chainId: SupportedChainId;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Encode a V3_SWAP_EXACT_IN command for a CL/Slipstream pool on the Universal Router.
|
|
35
|
+
* Path: encodePacked([tokenIn (20), tickSpacing as int24 (3), tokenOut (20)]) — 43 bytes.
|
|
36
|
+
* @param params - CL swap encoding parameters
|
|
37
|
+
* @returns Encoded calldata as hex string
|
|
38
|
+
*/
|
|
39
|
+
export declare function encodeCLSwap(params: EncodeCLSwapParams): Hex;
|
|
40
|
+
//# sourceMappingURL=cl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl.d.ts","sourceRoot":"","sources":["../../../../../../src/swap/providers/velodrome/encoding/routers/cl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAGtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAWtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,uBAAuB,CAAA;AAMjE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,KAAK,CAAA;IACd,QAAQ,EAAE,KAAK,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,gBAAgB,CAAA;IACzB,YAAY,EAAE,YAAY,CAAA;IAC1B,gBAAgB,EAAE,OAAO,CAAA;IACzB,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAoD7E;AAMD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,KAAK,CAAA;IACd,QAAQ,EAAE,KAAK,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,gBAAgB,CAAA;CAC1B;AAKD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,GAAG,CAsC5D"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { encodeAbiParameters, encodeFunctionData, encodePacked } from 'viem';
|
|
2
|
+
import { CL_POOL_FACTORY_ABI, CL_QUOTER_ABI, UNIVERSAL_ROUTER_ABI, } from '../../abis.js';
|
|
3
|
+
import { buildSwapPrice, resolveTokens, UNIVERSAL_ROUTER_MSG_SENDER, } from '../helpers.js';
|
|
4
|
+
/**
|
|
5
|
+
* Get a swap quote from a CL/Slipstream pool via QuoterV2.
|
|
6
|
+
* Verifies the pool exists via the CL factory, then quotes via QuoterV2.
|
|
7
|
+
* @param params - CL quote parameters
|
|
8
|
+
* @returns Price quote with amounts and route
|
|
9
|
+
* @throws If no CL pool exists for the given pair and tickSpacing
|
|
10
|
+
*/
|
|
11
|
+
export async function getCLQuote(params) {
|
|
12
|
+
const { assetIn, assetOut, amountInRaw, publicClient, clFactoryAddress, clQuoterAddress, tickSpacing, chainId, } = params;
|
|
13
|
+
const { tokenIn, tokenOut } = resolveTokens(assetIn, assetOut, chainId);
|
|
14
|
+
// Verify the CL pool exists
|
|
15
|
+
const poolAddress = await publicClient.readContract({
|
|
16
|
+
address: clFactoryAddress,
|
|
17
|
+
abi: CL_POOL_FACTORY_ABI,
|
|
18
|
+
functionName: 'getPool',
|
|
19
|
+
args: [tokenIn, tokenOut, tickSpacing],
|
|
20
|
+
});
|
|
21
|
+
if (!poolAddress ||
|
|
22
|
+
poolAddress === '0x0000000000000000000000000000000000000000') {
|
|
23
|
+
throw new Error(`No CL pool found for ${assetIn.metadata.symbol}/${assetOut.metadata.symbol} (tickSpacing=${tickSpacing})`);
|
|
24
|
+
}
|
|
25
|
+
// Quote via QuoterV2.quoteExactInputSingle
|
|
26
|
+
// sqrtPriceLimitX96 = 0 means no price limit
|
|
27
|
+
const quoteResult = (await publicClient.readContract({
|
|
28
|
+
address: clQuoterAddress,
|
|
29
|
+
abi: CL_QUOTER_ABI,
|
|
30
|
+
functionName: 'quoteExactInputSingle',
|
|
31
|
+
args: [
|
|
32
|
+
{
|
|
33
|
+
tokenIn,
|
|
34
|
+
tokenOut,
|
|
35
|
+
amountIn: amountInRaw,
|
|
36
|
+
tickSpacing,
|
|
37
|
+
sqrtPriceLimitX96: 0n,
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
}));
|
|
41
|
+
const route = {
|
|
42
|
+
path: [assetIn, assetOut],
|
|
43
|
+
pools: [{ address: poolAddress, fee: 0, version: 'v3' }],
|
|
44
|
+
};
|
|
45
|
+
return buildSwapPrice(assetIn, assetOut, amountInRaw, quoteResult[0], route);
|
|
46
|
+
}
|
|
47
|
+
/** Universal Router V3_SWAP_EXACT_IN command byte */
|
|
48
|
+
const V3_SWAP_EXACT_IN = 0x00;
|
|
49
|
+
/**
|
|
50
|
+
* Encode a V3_SWAP_EXACT_IN command for a CL/Slipstream pool on the Universal Router.
|
|
51
|
+
* Path: encodePacked([tokenIn (20), tickSpacing as int24 (3), tokenOut (20)]) — 43 bytes.
|
|
52
|
+
* @param params - CL swap encoding parameters
|
|
53
|
+
* @returns Encoded calldata as hex string
|
|
54
|
+
*/
|
|
55
|
+
export function encodeCLSwap(params) {
|
|
56
|
+
const { amountInRaw, amountOutMin, tickSpacing, deadline, chainId } = params;
|
|
57
|
+
const { tokenIn, tokenOut } = resolveTokens(params.assetIn, params.assetOut, chainId);
|
|
58
|
+
const commands = `0x${V3_SWAP_EXACT_IN.toString(16).padStart(2, '0')}`;
|
|
59
|
+
// CL path: [tokenIn (20)] [tickSpacing as int24 (3)] [tokenOut (20)] — 43 bytes
|
|
60
|
+
const path = encodePacked(['address', 'int24', 'address'], [tokenIn, tickSpacing, tokenOut]);
|
|
61
|
+
const input = encodeAbiParameters([
|
|
62
|
+
{ type: 'address' },
|
|
63
|
+
{ type: 'uint256' },
|
|
64
|
+
{ type: 'uint256' },
|
|
65
|
+
{ type: 'bytes' },
|
|
66
|
+
{ type: 'bool' },
|
|
67
|
+
], [
|
|
68
|
+
UNIVERSAL_ROUTER_MSG_SENDER, // recipient = msg.sender (Universal Router sentinel)
|
|
69
|
+
amountInRaw,
|
|
70
|
+
amountOutMin,
|
|
71
|
+
path,
|
|
72
|
+
false, // payerIsUser — tokens pre-transferred to router
|
|
73
|
+
]);
|
|
74
|
+
return encodeFunctionData({
|
|
75
|
+
abi: UNIVERSAL_ROUTER_ABI,
|
|
76
|
+
functionName: 'execute',
|
|
77
|
+
args: [commands, [input], BigInt(deadline)],
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=cl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl.js","sourceRoot":"","sources":["../../../../../../src/swap/providers/velodrome/encoding/routers/cl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Address, Hex, PublicClient } from 'viem';
|
|
2
|
+
import type { SupportedChainId } from '../../../../../constants/supportedChains.js';
|
|
3
|
+
import type { VelodromeRouterType } from '../../config.js';
|
|
4
|
+
import type { Asset } from '../../../../../types/asset.js';
|
|
5
|
+
import type { SwapPrice } from '../../../../../types/swap/index.js';
|
|
6
|
+
export interface GetQuoteParams {
|
|
7
|
+
assetIn: Asset;
|
|
8
|
+
assetOut: Asset;
|
|
9
|
+
amountInRaw: bigint;
|
|
10
|
+
chainId: SupportedChainId;
|
|
11
|
+
publicClient: PublicClient;
|
|
12
|
+
routerAddress: Address;
|
|
13
|
+
routerType: VelodromeRouterType;
|
|
14
|
+
stable: boolean;
|
|
15
|
+
factoryAddress: Address;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get a v2 AMM swap quote.
|
|
19
|
+
* @param params - Quote parameters including router type
|
|
20
|
+
* @returns Price quote with amounts and route
|
|
21
|
+
*/
|
|
22
|
+
export declare function getQuote(params: GetQuoteParams): Promise<SwapPrice>;
|
|
23
|
+
export interface EncodeSwapParams {
|
|
24
|
+
assetIn: Asset;
|
|
25
|
+
assetOut: Asset;
|
|
26
|
+
amountInRaw: bigint;
|
|
27
|
+
amountOutMin: bigint;
|
|
28
|
+
routerType: VelodromeRouterType;
|
|
29
|
+
stable: boolean;
|
|
30
|
+
factoryAddress: Address;
|
|
31
|
+
recipient: Address;
|
|
32
|
+
deadline: number;
|
|
33
|
+
chainId: SupportedChainId;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Encode swap calldata for the appropriate router type.
|
|
37
|
+
* @param params - Swap encoding parameters
|
|
38
|
+
* @returns Encoded calldata as hex string
|
|
39
|
+
* @throws If router type is unknown
|
|
40
|
+
*/
|
|
41
|
+
export declare function encodeSwap(params: EncodeSwapParams): Hex;
|
|
42
|
+
//# sourceMappingURL=v2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2.d.ts","sourceRoot":"","sources":["../../../../../../src/swap/providers/velodrome/encoding/routers/v2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAGtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAQtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAM/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,uBAAuB,CAAA;AAUjE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAA;IACd,QAAQ,EAAE,KAAK,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,gBAAgB,CAAA;IACzB,YAAY,EAAE,YAAY,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAA;IACtB,UAAU,EAAE,mBAAmB,CAAA;IAC/B,MAAM,EAAE,OAAO,CAAA;IACf,cAAc,EAAE,OAAO,CAAA;CACxB;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CASzE;AAyFD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,KAAK,CAAA;IACd,QAAQ,EAAE,KAAK,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,mBAAmB,CAAA;IAC/B,MAAM,EAAE,OAAO,CAAA;IACf,cAAc,EAAE,OAAO,CAAA;IACvB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,gBAAgB,CAAA;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,GAAG,CA2BxD"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { encodeAbiParameters, encodeFunctionData, encodePacked } from 'viem';
|
|
2
|
+
import { LEAF_ROUTER_ABI, POOL_ABI, POOL_FACTORY_ABI, UNIVERSAL_ROUTER_ABI, V2_ROUTER_ABI, } from '../../abis.js';
|
|
3
|
+
import { buildSwapPrice, resolveTokens, UNIVERSAL_ROUTER_MSG_SENDER, } from '../helpers.js';
|
|
4
|
+
import { isNativeAsset } from '../../../../../utils/assets.js';
|
|
5
|
+
/** Universal Router V2_SWAP_EXACT_IN command byte */
|
|
6
|
+
const V2_SWAP_EXACT_IN = 0x08;
|
|
7
|
+
/**
|
|
8
|
+
* Get a v2 AMM swap quote.
|
|
9
|
+
* @param params - Quote parameters including router type
|
|
10
|
+
* @returns Price quote with amounts and route
|
|
11
|
+
*/
|
|
12
|
+
export async function getQuote(params) {
|
|
13
|
+
const { assetIn, assetOut, amountInRaw, chainId } = params;
|
|
14
|
+
const { tokenIn, tokenOut } = resolveTokens(assetIn, assetOut, chainId);
|
|
15
|
+
const amountOutRaw = await fetchAmountOut(params, tokenIn, tokenOut);
|
|
16
|
+
const route = {
|
|
17
|
+
path: [assetIn, assetOut],
|
|
18
|
+
pools: [{ address: tokenIn, fee: 0, version: 'v2' }],
|
|
19
|
+
};
|
|
20
|
+
return buildSwapPrice(assetIn, assetOut, amountInRaw, amountOutRaw, route);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Fetch the output amount using the appropriate quoting mechanism for the router type.
|
|
24
|
+
* @param params - Quote parameters
|
|
25
|
+
* @param tokenIn - Resolved input token address
|
|
26
|
+
* @param tokenOut - Resolved output token address
|
|
27
|
+
* @returns Output amount as raw bigint
|
|
28
|
+
* @throws If router type is unknown
|
|
29
|
+
*/
|
|
30
|
+
async function fetchAmountOut(params, tokenIn, tokenOut) {
|
|
31
|
+
const { routerType } = params;
|
|
32
|
+
if (routerType === 'universal') {
|
|
33
|
+
return fetchAmountOutViaPool(params, tokenIn, tokenOut);
|
|
34
|
+
}
|
|
35
|
+
if (routerType === 'v2') {
|
|
36
|
+
return fetchAmountOutViaRouter(params, V2_ROUTER_ABI, {
|
|
37
|
+
from: tokenIn,
|
|
38
|
+
to: tokenOut,
|
|
39
|
+
stable: params.stable,
|
|
40
|
+
factory: params.factoryAddress,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (routerType === 'leaf') {
|
|
44
|
+
return fetchAmountOutViaRouter(params, LEAF_ROUTER_ABI, {
|
|
45
|
+
from: tokenIn,
|
|
46
|
+
to: tokenOut,
|
|
47
|
+
stable: params.stable,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
throw new Error(`Unknown router type: ${routerType}`);
|
|
51
|
+
}
|
|
52
|
+
/** Quote via Pool.getAmountOut (Universal Router path — no router-level quoting available). */
|
|
53
|
+
async function fetchAmountOutViaPool(params, tokenIn, tokenOut) {
|
|
54
|
+
const { publicClient, factoryAddress, stable, assetIn, assetOut } = params;
|
|
55
|
+
const poolAddress = await publicClient.readContract({
|
|
56
|
+
address: factoryAddress,
|
|
57
|
+
abi: POOL_FACTORY_ABI,
|
|
58
|
+
functionName: 'getPool',
|
|
59
|
+
args: [tokenIn, tokenOut, stable],
|
|
60
|
+
});
|
|
61
|
+
if (!poolAddress ||
|
|
62
|
+
poolAddress === '0x0000000000000000000000000000000000000000') {
|
|
63
|
+
throw new Error(`No Velodrome pool found for ${assetIn.metadata.symbol}/${assetOut.metadata.symbol} (stable=${stable})`);
|
|
64
|
+
}
|
|
65
|
+
return (await publicClient.readContract({
|
|
66
|
+
address: poolAddress,
|
|
67
|
+
abi: POOL_ABI,
|
|
68
|
+
functionName: 'getAmountOut',
|
|
69
|
+
args: [params.amountInRaw, tokenIn],
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
/** Quote via Router.getAmountsOut (v2 and leaf router path). */
|
|
73
|
+
async function fetchAmountOutViaRouter(params, abi, route) {
|
|
74
|
+
const amounts = await params.publicClient.readContract({
|
|
75
|
+
address: params.routerAddress,
|
|
76
|
+
abi,
|
|
77
|
+
functionName: 'getAmountsOut',
|
|
78
|
+
args: [params.amountInRaw, [route]],
|
|
79
|
+
});
|
|
80
|
+
return amounts[1];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Encode swap calldata for the appropriate router type.
|
|
84
|
+
* @param params - Swap encoding parameters
|
|
85
|
+
* @returns Encoded calldata as hex string
|
|
86
|
+
* @throws If router type is unknown
|
|
87
|
+
*/
|
|
88
|
+
export function encodeSwap(params) {
|
|
89
|
+
const { routerType } = params;
|
|
90
|
+
const { tokenIn, tokenOut } = resolveTokens(params.assetIn, params.assetOut, params.chainId);
|
|
91
|
+
if (routerType === 'universal') {
|
|
92
|
+
return encodeUniversalV2Swap(tokenIn, tokenOut, params);
|
|
93
|
+
}
|
|
94
|
+
if (routerType === 'v2') {
|
|
95
|
+
return encodeRouterSwap(tokenIn, tokenOut, params, V2_ROUTER_ABI, {
|
|
96
|
+
from: tokenIn,
|
|
97
|
+
to: tokenOut,
|
|
98
|
+
stable: params.stable,
|
|
99
|
+
factory: params.factoryAddress,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
if (routerType === 'leaf') {
|
|
103
|
+
return encodeRouterSwap(tokenIn, tokenOut, params, LEAF_ROUTER_ABI, {
|
|
104
|
+
from: tokenIn,
|
|
105
|
+
to: tokenOut,
|
|
106
|
+
stable: params.stable,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
throw new Error(`Unknown router type: ${routerType}`);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Encode a V2_SWAP_EXACT_IN command for the Universal Router.
|
|
113
|
+
* Route: encodePacked(tokenIn, stable, tokenOut) — 41 bytes per hop.
|
|
114
|
+
* payerIsUser = false: tokens are pre-transferred to the Router by the smart wallet.
|
|
115
|
+
*/
|
|
116
|
+
function encodeUniversalV2Swap(tokenIn, tokenOut, params) {
|
|
117
|
+
const commands = `0x${V2_SWAP_EXACT_IN.toString(16).padStart(2, '0')}`;
|
|
118
|
+
const routes = encodePacked(['address', 'bool', 'address'], [tokenIn, params.stable, tokenOut]);
|
|
119
|
+
const input = encodeAbiParameters([
|
|
120
|
+
{ type: 'address' },
|
|
121
|
+
{ type: 'uint256' },
|
|
122
|
+
{ type: 'uint256' },
|
|
123
|
+
{ type: 'bytes' },
|
|
124
|
+
{ type: 'bool' },
|
|
125
|
+
{ type: 'bool' },
|
|
126
|
+
], [
|
|
127
|
+
UNIVERSAL_ROUTER_MSG_SENDER, // recipient = msg.sender (Universal Router sentinel)
|
|
128
|
+
params.amountInRaw,
|
|
129
|
+
params.amountOutMin,
|
|
130
|
+
routes,
|
|
131
|
+
false, // payerIsUser
|
|
132
|
+
false, // isUni — false for Velodrome/Aerodrome
|
|
133
|
+
]);
|
|
134
|
+
return encodeFunctionData({
|
|
135
|
+
abi: UNIVERSAL_ROUTER_ABI,
|
|
136
|
+
functionName: 'execute',
|
|
137
|
+
args: [commands, [input], BigInt(params.deadline)],
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Encode swap calldata for v2 or leaf routers.
|
|
142
|
+
* Selects the correct swap function based on whether native ETH is involved.
|
|
143
|
+
*/
|
|
144
|
+
function encodeRouterSwap(tokenIn, tokenOut, params, abi, route) {
|
|
145
|
+
const { assetIn, assetOut, amountInRaw, amountOutMin, recipient, deadline } = params;
|
|
146
|
+
if (isNativeAsset(assetIn)) {
|
|
147
|
+
return encodeFunctionData({
|
|
148
|
+
abi,
|
|
149
|
+
functionName: 'swapExactETHForTokens',
|
|
150
|
+
args: [amountOutMin, [route], recipient, BigInt(deadline)],
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
if (isNativeAsset(assetOut)) {
|
|
154
|
+
return encodeFunctionData({
|
|
155
|
+
abi,
|
|
156
|
+
functionName: 'swapExactTokensForETH',
|
|
157
|
+
args: [amountInRaw, amountOutMin, [route], recipient, BigInt(deadline)],
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
return encodeFunctionData({
|
|
161
|
+
abi,
|
|
162
|
+
functionName: 'swapExactTokensForTokens',
|
|
163
|
+
args: [amountInRaw, amountOutMin, [route], recipient, BigInt(deadline)],
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=v2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2.js","sourceRoot":"","sources":["../../../../../../src/swap/providers/velodrome/encoding/routers/v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SupportedChainId } from '../../../constants/supportedChains.js';
|
|
2
|
+
import type { Asset } from '../../../types/asset.js';
|
|
3
|
+
import type { SwapMarket } from '../../../types/swap/index.js';
|
|
4
|
+
import type { ResolvedPoolConfig, VelodromeMarketConfig } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Resolve a VelodromeMarketConfig to a discriminated ResolvedPoolConfig.
|
|
7
|
+
* Exactly one of stable or tickSpacing must be set.
|
|
8
|
+
* @param config - Raw market config
|
|
9
|
+
* @returns Resolved pool config with discriminated type
|
|
10
|
+
* @throws If both or neither of stable/tickSpacing are set
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolvePoolConfig(config: VelodromeMarketConfig): ResolvedPoolConfig;
|
|
13
|
+
/**
|
|
14
|
+
* Expand a single VelodromeMarketConfig into SwapMarket objects for a given chain.
|
|
15
|
+
* Used as the `toMarkets` callback for shared findMarket/expandMarkets.
|
|
16
|
+
* @param config - Market config with pool parameters
|
|
17
|
+
* @param chainId - Target chain
|
|
18
|
+
* @param asset - If provided, only return markets containing this asset
|
|
19
|
+
*/
|
|
20
|
+
export declare function configToMarkets(config: VelodromeMarketConfig, chainId: SupportedChainId, asset?: Asset): SwapMarket[];
|
|
21
|
+
//# sourceMappingURL=markets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markets.d.ts","sourceRoot":"","sources":["../../../../src/swap/providers/velodrome/markets.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAE3E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,qBAAqB,GAC5B,kBAAkB,CAiBpB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,gBAAgB,EACzB,KAAK,CAAC,EAAE,KAAK,GACZ,UAAU,EAAE,CAKd"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { concat, keccak256 } from 'viem';
|
|
2
|
+
import { VELODROME } from '../../../constants/providers.js';
|
|
3
|
+
import { assetPairs } from '../../core/markets.js';
|
|
4
|
+
/**
|
|
5
|
+
* Resolve a VelodromeMarketConfig to a discriminated ResolvedPoolConfig.
|
|
6
|
+
* Exactly one of stable or tickSpacing must be set.
|
|
7
|
+
* @param config - Raw market config
|
|
8
|
+
* @returns Resolved pool config with discriminated type
|
|
9
|
+
* @throws If both or neither of stable/tickSpacing are set
|
|
10
|
+
*/
|
|
11
|
+
export function resolvePoolConfig(config) {
|
|
12
|
+
const hasStable = config.stable !== undefined;
|
|
13
|
+
const hasTick = config.tickSpacing !== undefined;
|
|
14
|
+
if (hasStable && hasTick) {
|
|
15
|
+
throw new Error('stable and tickSpacing are mutually exclusive — set one, not both');
|
|
16
|
+
}
|
|
17
|
+
if (!hasStable && !hasTick) {
|
|
18
|
+
throw new Error('Either stable (v2 AMM) or tickSpacing (CL) must be configured');
|
|
19
|
+
}
|
|
20
|
+
if (hasTick) {
|
|
21
|
+
return { type: 'cl', tickSpacing: config.tickSpacing };
|
|
22
|
+
}
|
|
23
|
+
return { type: 'v2', stable: config.stable };
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Expand a single VelodromeMarketConfig into SwapMarket objects for a given chain.
|
|
27
|
+
* Used as the `toMarkets` callback for shared findMarket/expandMarkets.
|
|
28
|
+
* @param config - Market config with pool parameters
|
|
29
|
+
* @param chainId - Target chain
|
|
30
|
+
* @param asset - If provided, only return markets containing this asset
|
|
31
|
+
*/
|
|
32
|
+
export function configToMarkets(config, chainId, asset) {
|
|
33
|
+
const poolConfig = resolvePoolConfig(config);
|
|
34
|
+
return assetPairs(config.assets, asset)
|
|
35
|
+
.map(([a, b]) => pairToMarket(a, b, chainId, poolConfig))
|
|
36
|
+
.filter((m) => m !== null);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Build a SwapMarket from two assets and Velodrome pool parameters.
|
|
40
|
+
* For v2: poolId = keccak256(sortedA, sortedB, stable)
|
|
41
|
+
* For CL: poolId = keccak256(sortedA, sortedB, tickSpacing as int24)
|
|
42
|
+
* @returns SwapMarket, or null if either asset lacks an address on this chain
|
|
43
|
+
*/
|
|
44
|
+
function pairToMarket(assetA, assetB, chainId, poolConfig) {
|
|
45
|
+
const addrA = assetA.address[chainId];
|
|
46
|
+
const addrB = assetB.address[chainId];
|
|
47
|
+
if (!addrA || addrA === 'native' || !addrB || addrB === 'native')
|
|
48
|
+
return null;
|
|
49
|
+
const [sortedA, sortedB] = addrA.toLowerCase() < addrB.toLowerCase() ? [addrA, addrB] : [addrB, addrA];
|
|
50
|
+
let poolId;
|
|
51
|
+
if (poolConfig.type === 'cl') {
|
|
52
|
+
const tickBytes = `0x${(poolConfig.tickSpacing & 0xffffff).toString(16).padStart(6, '0')}`;
|
|
53
|
+
poolId = keccak256(concat([sortedA, sortedB, tickBytes]));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
poolId = keccak256(concat([
|
|
57
|
+
sortedA,
|
|
58
|
+
sortedB,
|
|
59
|
+
poolConfig.stable ? '0x01' : '0x00',
|
|
60
|
+
]));
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
marketId: { poolId, chainId },
|
|
64
|
+
assets: [assetA, assetB],
|
|
65
|
+
fee: 0,
|
|
66
|
+
provider: VELODROME,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=markets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markets.js","sourceRoot":"","sources":["../../../../src/swap/providers/velodrome/markets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { SwapMarketConfig, SwapProviderConfig } from '../../../types/swap/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Velodrome/Aerodrome market config.
|
|
4
|
+
* Exactly one of `stable` (v2 AMM) or `tickSpacing` (CL/Slipstream) must be set.
|
|
5
|
+
*/
|
|
6
|
+
export interface VelodromeMarketConfig extends SwapMarketConfig {
|
|
7
|
+
/** true = stable pool (correlated assets), false = volatile pool. For v2 AMM pools. */
|
|
8
|
+
stable?: boolean;
|
|
9
|
+
/** Tick spacing for CL/Slipstream pools. Mutually exclusive with stable. */
|
|
10
|
+
tickSpacing?: number;
|
|
11
|
+
}
|
|
12
|
+
/** Resolved v2 AMM pool config */
|
|
13
|
+
export type ResolvedV2Config = {
|
|
14
|
+
type: 'v2';
|
|
15
|
+
stable: boolean;
|
|
16
|
+
};
|
|
17
|
+
/** Resolved CL/Slipstream pool config */
|
|
18
|
+
export type ResolvedCLConfig = {
|
|
19
|
+
type: 'cl';
|
|
20
|
+
tickSpacing: number;
|
|
21
|
+
};
|
|
22
|
+
/** Discriminated union of resolved pool configs */
|
|
23
|
+
export type ResolvedPoolConfig = ResolvedV2Config | ResolvedCLConfig;
|
|
24
|
+
/**
|
|
25
|
+
* Velodrome/Aerodrome swap provider configuration
|
|
26
|
+
*/
|
|
27
|
+
export interface VelodromeSwapProviderConfig extends SwapProviderConfig {
|
|
28
|
+
marketAllowlist?: VelodromeMarketConfig[];
|
|
29
|
+
marketBlocklist?: VelodromeMarketConfig[];
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/swap/providers/velodrome/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,uBAAuB,CAAA;AAE9B;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,uFAAuF;IACvF,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,kCAAkC;AAClC,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAA;AAC9D,yCAAyC;AACzC,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAA;AAClE,mDAAmD;AACnD,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,gBAAgB,CAAA;AAEpE;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,kBAAkB;IACrE,eAAe,CAAC,EAAE,qBAAqB,EAAE,CAAA;IACzC,eAAe,CAAC,EAAE,qBAAqB,EAAE,CAAA;CAC1C"}
|