@steerprotocol/sdk 1.26.0 → 1.28.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/cjs/base/FeeManagerClient.js +81 -0
- package/dist/cjs/base/FeeManagerClient.js.map +1 -0
- package/dist/cjs/base/PoolClient.js +1 -0
- package/dist/cjs/base/PoolClient.js.map +1 -0
- package/dist/cjs/base/SmartRewardClient.js +1 -0
- package/dist/cjs/base/SmartRewardClient.js.map +1 -0
- package/dist/cjs/base/SmartRewards.js +1 -0
- package/dist/cjs/base/SmartRewards.js.map +1 -0
- package/dist/cjs/base/StakingClient.js +1 -0
- package/dist/cjs/base/StakingClient.js.map +1 -0
- package/dist/cjs/base/SubgraphClient.js +1 -0
- package/dist/cjs/base/SubgraphClient.js.map +1 -0
- package/dist/cjs/base/VaultClient.js +1 -0
- package/dist/cjs/base/VaultClient.js.map +1 -0
- package/dist/cjs/base/vault/deposit/index.js +1 -0
- package/dist/cjs/base/vault/deposit/index.js.map +1 -0
- package/dist/cjs/base/vault/deposit/types.js +1 -0
- package/dist/cjs/base/vault/deposit/types.js.map +1 -0
- package/dist/cjs/base/vault/single-asset/calculateLimitPrice.js +1 -0
- package/dist/cjs/base/vault/single-asset/calculateLimitPrice.js.map +1 -0
- package/dist/cjs/base/vault/single-asset/calculateSwapAmount.js +1 -0
- package/dist/cjs/base/vault/single-asset/calculateSwapAmount.js.map +1 -0
- package/dist/cjs/base/vault/single-asset/estimateLpTokens.js +1 -0
- package/dist/cjs/base/vault/single-asset/estimateLpTokens.js.map +1 -0
- package/dist/cjs/base/vault/single-asset/index.js +1 -0
- package/dist/cjs/base/vault/single-asset/index.js.map +1 -0
- package/dist/cjs/base/vault/single-asset/simulateSwap.js +1 -0
- package/dist/cjs/base/vault/single-asset/simulateSwap.js.map +1 -0
- package/dist/cjs/base/vault/single-asset/singleAssetDeposit.js +1 -0
- package/dist/cjs/base/vault/single-asset/singleAssetDeposit.js.map +1 -0
- package/dist/cjs/base/vault/single-asset/types.js +1 -0
- package/dist/cjs/base/vault/single-asset/types.js.map +1 -0
- package/dist/cjs/base/vault/utils.js +1 -0
- package/dist/cjs/base/vault/utils.js.map +1 -0
- package/dist/cjs/base/vault/withdraw/index.js +1 -0
- package/dist/cjs/base/vault/withdraw/index.js.map +1 -0
- package/dist/cjs/base/vault/withdraw/types.js +1 -0
- package/dist/cjs/base/vault/withdraw/types.js.map +1 -0
- package/dist/cjs/client.js +1 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/const/abis/UniswapPool.js +1 -0
- package/dist/cjs/const/abis/UniswapPool.js.map +1 -0
- package/dist/cjs/const/abis/erc1155.js +1 -0
- package/dist/cjs/const/abis/erc1155.js.map +1 -0
- package/dist/cjs/const/abis/erc20.js +1 -0
- package/dist/cjs/const/abis/erc20.js.map +1 -0
- package/dist/cjs/const/abis/erc721.js +1 -0
- package/dist/cjs/const/abis/erc721.js.map +1 -0
- package/dist/cjs/const/abis/feeManager.js +1 -0
- package/dist/cjs/const/abis/feeManager.js.map +1 -0
- package/dist/cjs/const/abis/index.js +2 -0
- package/dist/cjs/const/abis/index.js.map +1 -0
- package/dist/cjs/const/abis/quoter.js +1 -0
- package/dist/cjs/const/abis/quoter.js.map +1 -0
- package/dist/cjs/const/abis/singleTokenDeposit.js +1 -0
- package/dist/cjs/const/abis/singleTokenDeposit.js.map +1 -0
- package/dist/cjs/const/abis/vaultFees.js +44 -0
- package/dist/cjs/const/abis/vaultFees.js.map +1 -0
- package/dist/cjs/const/amm/configs/ammConfig.js +1 -0
- package/dist/cjs/const/amm/configs/ammConfig.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/aerodrome-v2.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/aerodrome-v2.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/aerodrome.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/aerodrome.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/arthswap.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/arthswap.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/baseswap.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/baseswap.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/basex.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/basex.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/beam.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/beam.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/beamswap.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/beamswap.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/blackhole.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/blackhole.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/camelot.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/camelot.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/crust.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/crust.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/cypher.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/cypher.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/dodo.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/dodo.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/dragonswap.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/dragonswap.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/eddy.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/eddy.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/equilibre.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/equilibre.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/fenix.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/fenix.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/forge.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/forge.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/fusionx.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/fusionx.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/glyph.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/glyph.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/henjin.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/henjin.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/hercules.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/hercules.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/horiza.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/horiza.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/index.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/index.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/katana.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/katana.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/katanaIntegral.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/katanaIntegral.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/kim.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/kim.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/kinetix.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/kinetix.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/kodiak.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/kodiak.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/kyo.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/kyo.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/linehub.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/linehub.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/lynex.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/lynex.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/machinex.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/machinex.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/maia.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/maia.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/metavault.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/metavault.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/nest.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/nest.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/novaswap.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/novaswap.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/ocelex.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/ocelex.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/pancakeswap.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/pancakeswap.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/poolshark.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/poolshark.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/quickswap-algebra.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/quickswap-algebra.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/quickswap-integral.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/quickswap-integral.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/quickswap-univ3.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/quickswap-univ3.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/quickswap.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/quickswap.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/retro.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/retro.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/sailor.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/sailor.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/shadow.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/shadow.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/silverswap.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/silverswap.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/spark.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/spark.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/spark32.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/spark32.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/spookyswap.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/spookyswap.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/stellaswap.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/stellaswap.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/supswap.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/supswap.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/sushi.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/sushi.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/swapmode.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/swapmode.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/swapsicle.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/swapsicle.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/thena.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/thena.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/thick.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/thick.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/thickv2.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/thickv2.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/thruster.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/thruster.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/uniswap.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/uniswap.js.map +1 -0
- package/dist/cjs/const/amm/configs/protocols/wasabee.js +1 -0
- package/dist/cjs/const/amm/configs/protocols/wasabee.js.map +1 -0
- package/dist/cjs/const/amm/index.js +1 -0
- package/dist/cjs/const/amm/index.js.map +1 -0
- package/dist/cjs/const/amm/utils/beacon.js +1 -0
- package/dist/cjs/const/amm/utils/beacon.js.map +1 -0
- package/dist/cjs/const/amm/utils/contracts.js +1 -0
- package/dist/cjs/const/amm/utils/contracts.js.map +1 -0
- package/dist/cjs/const/amm/utils/index.js +1 -0
- package/dist/cjs/const/amm/utils/index.js.map +1 -0
- package/dist/cjs/const/amm/utils/protocol.js +1 -0
- package/dist/cjs/const/amm/utils/protocol.js.map +1 -0
- package/dist/cjs/const/api.js +1 -0
- package/dist/cjs/const/api.js.map +1 -0
- package/dist/cjs/const/capabilities.js +1 -0
- package/dist/cjs/const/capabilities.js.map +1 -0
- package/dist/cjs/const/chain.js +1 -0
- package/dist/cjs/const/chain.js.map +1 -0
- package/dist/cjs/const/deployments/abis.js +1 -0
- package/dist/cjs/const/deployments/abis.js.map +1 -0
- package/dist/cjs/const/deployments/apechain.js +1 -0
- package/dist/cjs/const/deployments/apechain.js.map +1 -0
- package/dist/cjs/const/deployments/arbitrum.js +1 -0
- package/dist/cjs/const/deployments/arbitrum.js.map +1 -0
- package/dist/cjs/const/deployments/arbitrumgoerli.js +1 -0
- package/dist/cjs/const/deployments/arbitrumgoerli.js.map +1 -0
- package/dist/cjs/const/deployments/astar.js +1 -0
- package/dist/cjs/const/deployments/astar.js.map +1 -0
- package/dist/cjs/const/deployments/astarzkevm.js +1 -0
- package/dist/cjs/const/deployments/astarzkevm.js.map +1 -0
- package/dist/cjs/const/deployments/avalanche.js +1 -0
- package/dist/cjs/const/deployments/avalanche.js.map +1 -0
- package/dist/cjs/const/deployments/bartiotest.js +1 -0
- package/dist/cjs/const/deployments/bartiotest.js.map +1 -0
- package/dist/cjs/const/deployments/base.js +1 -0
- package/dist/cjs/const/deployments/base.js.map +1 -0
- package/dist/cjs/const/deployments/bera.js +1 -0
- package/dist/cjs/const/deployments/bera.js.map +1 -0
- package/dist/cjs/const/deployments/berachainbartio.js +1 -0
- package/dist/cjs/const/deployments/berachainbartio.js.map +1 -0
- package/dist/cjs/const/deployments/blast.js +1 -0
- package/dist/cjs/const/deployments/blast.js.map +1 -0
- package/dist/cjs/const/deployments/bsc.js +1 -0
- package/dist/cjs/const/deployments/bsc.js.map +1 -0
- package/dist/cjs/const/deployments/celo.js +1 -0
- package/dist/cjs/const/deployments/celo.js.map +1 -0
- package/dist/cjs/const/deployments/core.js +1 -0
- package/dist/cjs/const/deployments/core.js.map +1 -0
- package/dist/cjs/const/deployments/eth.js +1 -0
- package/dist/cjs/const/deployments/eth.js.map +1 -0
- package/dist/cjs/const/deployments/evmos.js +1 -0
- package/dist/cjs/const/deployments/evmos.js.map +1 -0
- package/dist/cjs/const/deployments/fantom.js +1 -0
- package/dist/cjs/const/deployments/fantom.js.map +1 -0
- package/dist/cjs/const/deployments/filecoin.js +1 -0
- package/dist/cjs/const/deployments/filecoin.js.map +1 -0
- package/dist/cjs/const/deployments/flare.js +1 -0
- package/dist/cjs/const/deployments/flare.js.map +1 -0
- package/dist/cjs/const/deployments/goerli.js +1 -0
- package/dist/cjs/const/deployments/goerli.js.map +1 -0
- package/dist/cjs/const/deployments/hemi.js +1 -0
- package/dist/cjs/const/deployments/hemi.js.map +1 -0
- package/dist/cjs/const/deployments/hyperevm.js +1 -0
- package/dist/cjs/const/deployments/hyperevm.js.map +1 -0
- package/dist/cjs/const/deployments/index.js +1 -0
- package/dist/cjs/const/deployments/index.js.map +1 -0
- package/dist/cjs/const/deployments/katana.js +1 -0
- package/dist/cjs/const/deployments/katana.js.map +1 -0
- package/dist/cjs/const/deployments/kava.js +1 -0
- package/dist/cjs/const/deployments/kava.js.map +1 -0
- package/dist/cjs/const/deployments/linea.js +1 -0
- package/dist/cjs/const/deployments/linea.js.map +1 -0
- package/dist/cjs/const/deployments/localhost.js +1 -0
- package/dist/cjs/const/deployments/localhost.js.map +1 -0
- package/dist/cjs/const/deployments/manta.js +1 -0
- package/dist/cjs/const/deployments/manta.js.map +1 -0
- package/dist/cjs/const/deployments/mantle.js +1 -0
- package/dist/cjs/const/deployments/mantle.js.map +1 -0
- package/dist/cjs/const/deployments/metis.js +1 -0
- package/dist/cjs/const/deployments/metis.js.map +1 -0
- package/dist/cjs/const/deployments/mode.js +1 -0
- package/dist/cjs/const/deployments/mode.js.map +1 -0
- package/dist/cjs/const/deployments/moonbeam.js +1 -0
- package/dist/cjs/const/deployments/moonbeam.js.map +1 -0
- package/dist/cjs/const/deployments/mumbai.js +1 -0
- package/dist/cjs/const/deployments/mumbai.js.map +1 -0
- package/dist/cjs/const/deployments/nibiru.js +1 -0
- package/dist/cjs/const/deployments/nibiru.js.map +1 -0
- package/dist/cjs/const/deployments/okxtestnet.js +1 -0
- package/dist/cjs/const/deployments/okxtestnet.js.map +1 -0
- package/dist/cjs/const/deployments/optimism.js +1 -0
- package/dist/cjs/const/deployments/optimism.js.map +1 -0
- package/dist/cjs/const/deployments/optimismgoerli.js +1 -0
- package/dist/cjs/const/deployments/optimismgoerli.js.map +1 -0
- package/dist/cjs/const/deployments/peaq.js +1 -0
- package/dist/cjs/const/deployments/peaq.js.map +1 -0
- package/dist/cjs/const/deployments/polygon.js +1 -0
- package/dist/cjs/const/deployments/polygon.js.map +1 -0
- package/dist/cjs/const/deployments/polyzkevm.js +1 -0
- package/dist/cjs/const/deployments/polyzkevm.js.map +1 -0
- package/dist/cjs/const/deployments/pyzkevm.js +1 -0
- package/dist/cjs/const/deployments/pyzkevm.js.map +1 -0
- package/dist/cjs/const/deployments/ronin.js +1 -0
- package/dist/cjs/const/deployments/ronin.js.map +1 -0
- package/dist/cjs/const/deployments/rootstock.js +1 -0
- package/dist/cjs/const/deployments/rootstock.js.map +1 -0
- package/dist/cjs/const/deployments/saga.js +1 -0
- package/dist/cjs/const/deployments/saga.js.map +1 -0
- package/dist/cjs/const/deployments/scroll.js +1 -0
- package/dist/cjs/const/deployments/scroll.js.map +1 -0
- package/dist/cjs/const/deployments/sei.js +1 -0
- package/dist/cjs/const/deployments/sei.js.map +1 -0
- package/dist/cjs/const/deployments/soneium.js +1 -0
- package/dist/cjs/const/deployments/soneium.js.map +1 -0
- package/dist/cjs/const/deployments/sonic.js +1 -0
- package/dist/cjs/const/deployments/sonic.js.map +1 -0
- package/dist/cjs/const/deployments/taiko.js +1 -0
- package/dist/cjs/const/deployments/taiko.js.map +1 -0
- package/dist/cjs/const/deployments/tataratestnet.js +1 -0
- package/dist/cjs/const/deployments/tataratestnet.js.map +1 -0
- package/dist/cjs/const/deployments/telos.js +1 -0
- package/dist/cjs/const/deployments/telos.js.map +1 -0
- package/dist/cjs/const/deployments/thundercore.js +1 -0
- package/dist/cjs/const/deployments/thundercore.js.map +1 -0
- package/dist/cjs/const/deployments/uni.js +1 -0
- package/dist/cjs/const/deployments/uni.js.map +1 -0
- package/dist/cjs/const/deployments/xlayer.js +1 -0
- package/dist/cjs/const/deployments/xlayer.js.map +1 -0
- package/dist/cjs/const/deployments/zeta.js +1 -0
- package/dist/cjs/const/deployments/zeta.js.map +1 -0
- package/dist/cjs/const/deployments/zircuit.js +1 -0
- package/dist/cjs/const/deployments/zircuit.js.map +1 -0
- package/dist/cjs/const/deployments/zklinknova.js +1 -0
- package/dist/cjs/const/deployments/zklinknova.js.map +1 -0
- package/dist/cjs/const/index.js +1 -0
- package/dist/cjs/const/index.js.map +1 -0
- package/dist/cjs/const/network.js +1 -0
- package/dist/cjs/const/network.js.map +1 -0
- package/dist/cjs/const/protocol.js +1 -0
- package/dist/cjs/const/protocol.js.map +1 -0
- package/dist/cjs/const/quoter.js +1 -0
- package/dist/cjs/const/quoter.js.map +1 -0
- package/dist/cjs/const/stabilityVaults/index.js +1 -0
- package/dist/cjs/const/stabilityVaults/index.js.map +1 -0
- package/dist/cjs/const/stabilityVaults/stabilityVaultsConfig.js +1 -0
- package/dist/cjs/const/stabilityVaults/stabilityVaultsConfig.js.map +1 -0
- package/dist/cjs/const/subgraph.js +1 -0
- package/dist/cjs/const/subgraph.js.map +1 -0
- package/dist/cjs/const/thegraph.js +1 -0
- package/dist/cjs/const/thegraph.js.map +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/scripts/processDeployments.js +1 -0
- package/dist/cjs/scripts/processDeployments.js.map +1 -0
- package/dist/cjs/types.js +1 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils/PoolQueryAdapter.js +1 -0
- package/dist/cjs/utils/PoolQueryAdapter.js.map +1 -0
- package/dist/cjs/utils/SubgraphVaultClient.js +1 -0
- package/dist/cjs/utils/SubgraphVaultClient.js.map +1 -0
- package/dist/cjs/utils/subgraph-types.js +1 -0
- package/dist/cjs/utils/subgraph-types.js.map +1 -0
- package/dist/esm/base/FeeManagerClient.js +81 -0
- package/dist/esm/base/FeeManagerClient.js.map +1 -0
- package/dist/esm/base/PoolClient.js +1 -0
- package/dist/esm/base/PoolClient.js.map +1 -0
- package/dist/esm/base/SmartRewardClient.js +1 -0
- package/dist/esm/base/SmartRewardClient.js.map +1 -0
- package/dist/esm/base/SmartRewards.js +1 -0
- package/dist/esm/base/SmartRewards.js.map +1 -0
- package/dist/esm/base/StakingClient.js +1 -0
- package/dist/esm/base/StakingClient.js.map +1 -0
- package/dist/esm/base/SubgraphClient.js +1 -0
- package/dist/esm/base/SubgraphClient.js.map +1 -0
- package/dist/esm/base/VaultClient.js +1 -0
- package/dist/esm/base/VaultClient.js.map +1 -0
- package/dist/esm/base/vault/deposit/index.js +1 -0
- package/dist/esm/base/vault/deposit/index.js.map +1 -0
- package/dist/esm/base/vault/deposit/types.js +1 -0
- package/dist/esm/base/vault/deposit/types.js.map +1 -0
- package/dist/esm/base/vault/single-asset/calculateLimitPrice.js +1 -0
- package/dist/esm/base/vault/single-asset/calculateLimitPrice.js.map +1 -0
- package/dist/esm/base/vault/single-asset/calculateSwapAmount.js +1 -0
- package/dist/esm/base/vault/single-asset/calculateSwapAmount.js.map +1 -0
- package/dist/esm/base/vault/single-asset/estimateLpTokens.js +1 -0
- package/dist/esm/base/vault/single-asset/estimateLpTokens.js.map +1 -0
- package/dist/esm/base/vault/single-asset/index.js +1 -0
- package/dist/esm/base/vault/single-asset/index.js.map +1 -0
- package/dist/esm/base/vault/single-asset/simulateSwap.js +1 -0
- package/dist/esm/base/vault/single-asset/simulateSwap.js.map +1 -0
- package/dist/esm/base/vault/single-asset/singleAssetDeposit.js +1 -0
- package/dist/esm/base/vault/single-asset/singleAssetDeposit.js.map +1 -0
- package/dist/esm/base/vault/single-asset/types.js +1 -0
- package/dist/esm/base/vault/single-asset/types.js.map +1 -0
- package/dist/esm/base/vault/utils.js +1 -0
- package/dist/esm/base/vault/utils.js.map +1 -0
- package/dist/esm/base/vault/withdraw/index.js +1 -0
- package/dist/esm/base/vault/withdraw/index.js.map +1 -0
- package/dist/esm/base/vault/withdraw/types.js +1 -0
- package/dist/esm/base/vault/withdraw/types.js.map +1 -0
- package/dist/esm/client.js +1 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/const/abis/UniswapPool.js +1 -0
- package/dist/esm/const/abis/UniswapPool.js.map +1 -0
- package/dist/esm/const/abis/erc1155.js +1 -0
- package/dist/esm/const/abis/erc1155.js.map +1 -0
- package/dist/esm/const/abis/erc20.js +1 -0
- package/dist/esm/const/abis/erc20.js.map +1 -0
- package/dist/esm/const/abis/erc721.js +1 -0
- package/dist/esm/const/abis/erc721.js.map +1 -0
- package/dist/esm/const/abis/feeManager.js +1 -0
- package/dist/esm/const/abis/feeManager.js.map +1 -0
- package/dist/esm/const/abis/index.js +2 -0
- package/dist/esm/const/abis/index.js.map +1 -0
- package/dist/esm/const/abis/quoter.js +1 -0
- package/dist/esm/const/abis/quoter.js.map +1 -0
- package/dist/esm/const/abis/singleTokenDeposit.js +1 -0
- package/dist/esm/const/abis/singleTokenDeposit.js.map +1 -0
- package/dist/esm/const/abis/vaultFees.js +41 -0
- package/dist/esm/const/abis/vaultFees.js.map +1 -0
- package/dist/esm/const/amm/configs/ammConfig.js +1 -0
- package/dist/esm/const/amm/configs/ammConfig.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/aerodrome-v2.js +1 -0
- package/dist/esm/const/amm/configs/protocols/aerodrome-v2.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/aerodrome.js +1 -0
- package/dist/esm/const/amm/configs/protocols/aerodrome.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/arthswap.js +1 -0
- package/dist/esm/const/amm/configs/protocols/arthswap.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/baseswap.js +1 -0
- package/dist/esm/const/amm/configs/protocols/baseswap.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/basex.js +1 -0
- package/dist/esm/const/amm/configs/protocols/basex.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/beam.js +1 -0
- package/dist/esm/const/amm/configs/protocols/beam.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/beamswap.js +1 -0
- package/dist/esm/const/amm/configs/protocols/beamswap.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/blackhole.js +1 -0
- package/dist/esm/const/amm/configs/protocols/blackhole.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/camelot.js +1 -0
- package/dist/esm/const/amm/configs/protocols/camelot.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/crust.js +1 -0
- package/dist/esm/const/amm/configs/protocols/crust.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/cypher.js +1 -0
- package/dist/esm/const/amm/configs/protocols/cypher.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/dodo.js +1 -0
- package/dist/esm/const/amm/configs/protocols/dodo.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/dragonswap.js +1 -0
- package/dist/esm/const/amm/configs/protocols/dragonswap.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/eddy.js +1 -0
- package/dist/esm/const/amm/configs/protocols/eddy.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/equilibre.js +1 -0
- package/dist/esm/const/amm/configs/protocols/equilibre.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/fenix.js +1 -0
- package/dist/esm/const/amm/configs/protocols/fenix.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/forge.js +1 -0
- package/dist/esm/const/amm/configs/protocols/forge.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/fusionx.js +1 -0
- package/dist/esm/const/amm/configs/protocols/fusionx.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/glyph.js +1 -0
- package/dist/esm/const/amm/configs/protocols/glyph.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/henjin.js +1 -0
- package/dist/esm/const/amm/configs/protocols/henjin.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/hercules.js +1 -0
- package/dist/esm/const/amm/configs/protocols/hercules.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/horiza.js +1 -0
- package/dist/esm/const/amm/configs/protocols/horiza.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/index.js +1 -0
- package/dist/esm/const/amm/configs/protocols/index.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/katana.js +1 -0
- package/dist/esm/const/amm/configs/protocols/katana.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/katanaIntegral.js +1 -0
- package/dist/esm/const/amm/configs/protocols/katanaIntegral.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/kim.js +1 -0
- package/dist/esm/const/amm/configs/protocols/kim.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/kinetix.js +1 -0
- package/dist/esm/const/amm/configs/protocols/kinetix.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/kodiak.js +1 -0
- package/dist/esm/const/amm/configs/protocols/kodiak.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/kyo.js +1 -0
- package/dist/esm/const/amm/configs/protocols/kyo.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/linehub.js +1 -0
- package/dist/esm/const/amm/configs/protocols/linehub.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/lynex.js +1 -0
- package/dist/esm/const/amm/configs/protocols/lynex.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/machinex.js +1 -0
- package/dist/esm/const/amm/configs/protocols/machinex.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/maia.js +1 -0
- package/dist/esm/const/amm/configs/protocols/maia.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/metavault.js +1 -0
- package/dist/esm/const/amm/configs/protocols/metavault.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/nest.js +1 -0
- package/dist/esm/const/amm/configs/protocols/nest.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/novaswap.js +1 -0
- package/dist/esm/const/amm/configs/protocols/novaswap.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/ocelex.js +1 -0
- package/dist/esm/const/amm/configs/protocols/ocelex.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/pancakeswap.js +1 -0
- package/dist/esm/const/amm/configs/protocols/pancakeswap.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/poolshark.js +1 -0
- package/dist/esm/const/amm/configs/protocols/poolshark.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/quickswap-algebra.js +1 -0
- package/dist/esm/const/amm/configs/protocols/quickswap-algebra.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/quickswap-integral.js +1 -0
- package/dist/esm/const/amm/configs/protocols/quickswap-integral.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/quickswap-univ3.js +1 -0
- package/dist/esm/const/amm/configs/protocols/quickswap-univ3.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/quickswap.js +1 -0
- package/dist/esm/const/amm/configs/protocols/quickswap.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/retro.js +1 -0
- package/dist/esm/const/amm/configs/protocols/retro.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/sailor.js +1 -0
- package/dist/esm/const/amm/configs/protocols/sailor.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/shadow.js +1 -0
- package/dist/esm/const/amm/configs/protocols/shadow.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/silverswap.js +1 -0
- package/dist/esm/const/amm/configs/protocols/silverswap.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/spark.js +1 -0
- package/dist/esm/const/amm/configs/protocols/spark.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/spark32.js +1 -0
- package/dist/esm/const/amm/configs/protocols/spark32.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/spookyswap.js +1 -0
- package/dist/esm/const/amm/configs/protocols/spookyswap.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/stellaswap.js +1 -0
- package/dist/esm/const/amm/configs/protocols/stellaswap.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/supswap.js +1 -0
- package/dist/esm/const/amm/configs/protocols/supswap.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/sushi.js +1 -0
- package/dist/esm/const/amm/configs/protocols/sushi.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/swapmode.js +1 -0
- package/dist/esm/const/amm/configs/protocols/swapmode.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/swapsicle.js +1 -0
- package/dist/esm/const/amm/configs/protocols/swapsicle.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/thena.js +1 -0
- package/dist/esm/const/amm/configs/protocols/thena.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/thick.js +1 -0
- package/dist/esm/const/amm/configs/protocols/thick.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/thickv2.js +1 -0
- package/dist/esm/const/amm/configs/protocols/thickv2.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/thruster.js +1 -0
- package/dist/esm/const/amm/configs/protocols/thruster.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/uniswap.js +1 -0
- package/dist/esm/const/amm/configs/protocols/uniswap.js.map +1 -0
- package/dist/esm/const/amm/configs/protocols/wasabee.js +1 -0
- package/dist/esm/const/amm/configs/protocols/wasabee.js.map +1 -0
- package/dist/esm/const/amm/index.js +1 -0
- package/dist/esm/const/amm/index.js.map +1 -0
- package/dist/esm/const/amm/utils/beacon.js +1 -0
- package/dist/esm/const/amm/utils/beacon.js.map +1 -0
- package/dist/esm/const/amm/utils/contracts.js +1 -0
- package/dist/esm/const/amm/utils/contracts.js.map +1 -0
- package/dist/esm/const/amm/utils/index.js +1 -0
- package/dist/esm/const/amm/utils/index.js.map +1 -0
- package/dist/esm/const/amm/utils/protocol.js +1 -0
- package/dist/esm/const/amm/utils/protocol.js.map +1 -0
- package/dist/esm/const/api.js +1 -0
- package/dist/esm/const/api.js.map +1 -0
- package/dist/esm/const/capabilities.js +1 -0
- package/dist/esm/const/capabilities.js.map +1 -0
- package/dist/esm/const/chain.js +1 -0
- package/dist/esm/const/chain.js.map +1 -0
- package/dist/esm/const/deployments/abis.js +1 -0
- package/dist/esm/const/deployments/abis.js.map +1 -0
- package/dist/esm/const/deployments/apechain.js +1 -0
- package/dist/esm/const/deployments/apechain.js.map +1 -0
- package/dist/esm/const/deployments/arbitrum.js +1 -0
- package/dist/esm/const/deployments/arbitrum.js.map +1 -0
- package/dist/esm/const/deployments/arbitrumgoerli.js +1 -0
- package/dist/esm/const/deployments/arbitrumgoerli.js.map +1 -0
- package/dist/esm/const/deployments/astar.js +1 -0
- package/dist/esm/const/deployments/astar.js.map +1 -0
- package/dist/esm/const/deployments/astarzkevm.js +1 -0
- package/dist/esm/const/deployments/astarzkevm.js.map +1 -0
- package/dist/esm/const/deployments/avalanche.js +1 -0
- package/dist/esm/const/deployments/avalanche.js.map +1 -0
- package/dist/esm/const/deployments/bartiotest.js +1 -0
- package/dist/esm/const/deployments/bartiotest.js.map +1 -0
- package/dist/esm/const/deployments/base.js +1 -0
- package/dist/esm/const/deployments/base.js.map +1 -0
- package/dist/esm/const/deployments/bera.js +1 -0
- package/dist/esm/const/deployments/bera.js.map +1 -0
- package/dist/esm/const/deployments/berachainbartio.js +1 -0
- package/dist/esm/const/deployments/berachainbartio.js.map +1 -0
- package/dist/esm/const/deployments/blast.js +1 -0
- package/dist/esm/const/deployments/blast.js.map +1 -0
- package/dist/esm/const/deployments/bsc.js +1 -0
- package/dist/esm/const/deployments/bsc.js.map +1 -0
- package/dist/esm/const/deployments/celo.js +1 -0
- package/dist/esm/const/deployments/celo.js.map +1 -0
- package/dist/esm/const/deployments/core.js +1 -0
- package/dist/esm/const/deployments/core.js.map +1 -0
- package/dist/esm/const/deployments/eth.js +1 -0
- package/dist/esm/const/deployments/eth.js.map +1 -0
- package/dist/esm/const/deployments/evmos.js +1 -0
- package/dist/esm/const/deployments/evmos.js.map +1 -0
- package/dist/esm/const/deployments/fantom.js +1 -0
- package/dist/esm/const/deployments/fantom.js.map +1 -0
- package/dist/esm/const/deployments/filecoin.js +1 -0
- package/dist/esm/const/deployments/filecoin.js.map +1 -0
- package/dist/esm/const/deployments/flare.js +1 -0
- package/dist/esm/const/deployments/flare.js.map +1 -0
- package/dist/esm/const/deployments/goerli.js +1 -0
- package/dist/esm/const/deployments/goerli.js.map +1 -0
- package/dist/esm/const/deployments/hemi.js +1 -0
- package/dist/esm/const/deployments/hemi.js.map +1 -0
- package/dist/esm/const/deployments/hyperevm.js +1 -0
- package/dist/esm/const/deployments/hyperevm.js.map +1 -0
- package/dist/esm/const/deployments/index.js +1 -0
- package/dist/esm/const/deployments/index.js.map +1 -0
- package/dist/esm/const/deployments/katana.js +1 -0
- package/dist/esm/const/deployments/katana.js.map +1 -0
- package/dist/esm/const/deployments/kava.js +1 -0
- package/dist/esm/const/deployments/kava.js.map +1 -0
- package/dist/esm/const/deployments/linea.js +1 -0
- package/dist/esm/const/deployments/linea.js.map +1 -0
- package/dist/esm/const/deployments/localhost.js +1 -0
- package/dist/esm/const/deployments/localhost.js.map +1 -0
- package/dist/esm/const/deployments/manta.js +1 -0
- package/dist/esm/const/deployments/manta.js.map +1 -0
- package/dist/esm/const/deployments/mantle.js +1 -0
- package/dist/esm/const/deployments/mantle.js.map +1 -0
- package/dist/esm/const/deployments/metis.js +1 -0
- package/dist/esm/const/deployments/metis.js.map +1 -0
- package/dist/esm/const/deployments/mode.js +1 -0
- package/dist/esm/const/deployments/mode.js.map +1 -0
- package/dist/esm/const/deployments/moonbeam.js +1 -0
- package/dist/esm/const/deployments/moonbeam.js.map +1 -0
- package/dist/esm/const/deployments/mumbai.js +1 -0
- package/dist/esm/const/deployments/mumbai.js.map +1 -0
- package/dist/esm/const/deployments/nibiru.js +1 -0
- package/dist/esm/const/deployments/nibiru.js.map +1 -0
- package/dist/esm/const/deployments/okxtestnet.js +1 -0
- package/dist/esm/const/deployments/okxtestnet.js.map +1 -0
- package/dist/esm/const/deployments/optimism.js +1 -0
- package/dist/esm/const/deployments/optimism.js.map +1 -0
- package/dist/esm/const/deployments/optimismgoerli.js +1 -0
- package/dist/esm/const/deployments/optimismgoerli.js.map +1 -0
- package/dist/esm/const/deployments/peaq.js +1 -0
- package/dist/esm/const/deployments/peaq.js.map +1 -0
- package/dist/esm/const/deployments/polygon.js +1 -0
- package/dist/esm/const/deployments/polygon.js.map +1 -0
- package/dist/esm/const/deployments/polyzkevm.js +1 -0
- package/dist/esm/const/deployments/polyzkevm.js.map +1 -0
- package/dist/esm/const/deployments/pyzkevm.js +1 -0
- package/dist/esm/const/deployments/pyzkevm.js.map +1 -0
- package/dist/esm/const/deployments/ronin.js +1 -0
- package/dist/esm/const/deployments/ronin.js.map +1 -0
- package/dist/esm/const/deployments/rootstock.js +1 -0
- package/dist/esm/const/deployments/rootstock.js.map +1 -0
- package/dist/esm/const/deployments/saga.js +1 -0
- package/dist/esm/const/deployments/saga.js.map +1 -0
- package/dist/esm/const/deployments/scroll.js +1 -0
- package/dist/esm/const/deployments/scroll.js.map +1 -0
- package/dist/esm/const/deployments/sei.js +1 -0
- package/dist/esm/const/deployments/sei.js.map +1 -0
- package/dist/esm/const/deployments/soneium.js +1 -0
- package/dist/esm/const/deployments/soneium.js.map +1 -0
- package/dist/esm/const/deployments/sonic.js +1 -0
- package/dist/esm/const/deployments/sonic.js.map +1 -0
- package/dist/esm/const/deployments/taiko.js +1 -0
- package/dist/esm/const/deployments/taiko.js.map +1 -0
- package/dist/esm/const/deployments/tataratestnet.js +1 -0
- package/dist/esm/const/deployments/tataratestnet.js.map +1 -0
- package/dist/esm/const/deployments/telos.js +1 -0
- package/dist/esm/const/deployments/telos.js.map +1 -0
- package/dist/esm/const/deployments/thundercore.js +1 -0
- package/dist/esm/const/deployments/thundercore.js.map +1 -0
- package/dist/esm/const/deployments/uni.js +1 -0
- package/dist/esm/const/deployments/uni.js.map +1 -0
- package/dist/esm/const/deployments/xlayer.js +1 -0
- package/dist/esm/const/deployments/xlayer.js.map +1 -0
- package/dist/esm/const/deployments/zeta.js +1 -0
- package/dist/esm/const/deployments/zeta.js.map +1 -0
- package/dist/esm/const/deployments/zircuit.js +1 -0
- package/dist/esm/const/deployments/zircuit.js.map +1 -0
- package/dist/esm/const/deployments/zklinknova.js +1 -0
- package/dist/esm/const/deployments/zklinknova.js.map +1 -0
- package/dist/esm/const/index.js +1 -0
- package/dist/esm/const/index.js.map +1 -0
- package/dist/esm/const/network.js +1 -0
- package/dist/esm/const/network.js.map +1 -0
- package/dist/esm/const/protocol.js +1 -0
- package/dist/esm/const/protocol.js.map +1 -0
- package/dist/esm/const/quoter.js +1 -0
- package/dist/esm/const/quoter.js.map +1 -0
- package/dist/esm/const/stabilityVaults/index.js +1 -0
- package/dist/esm/const/stabilityVaults/index.js.map +1 -0
- package/dist/esm/const/stabilityVaults/stabilityVaultsConfig.js +1 -0
- package/dist/esm/const/stabilityVaults/stabilityVaultsConfig.js.map +1 -0
- package/dist/esm/const/subgraph.js +1 -0
- package/dist/esm/const/subgraph.js.map +1 -0
- package/dist/esm/const/thegraph.js +1 -0
- package/dist/esm/const/thegraph.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/scripts/processDeployments.js +1 -0
- package/dist/esm/scripts/processDeployments.js.map +1 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/PoolQueryAdapter.js +1 -0
- package/dist/esm/utils/PoolQueryAdapter.js.map +1 -0
- package/dist/esm/utils/SubgraphVaultClient.js +1 -0
- package/dist/esm/utils/SubgraphVaultClient.js.map +1 -0
- package/dist/esm/utils/subgraph-types.js +1 -0
- package/dist/esm/utils/subgraph-types.js.map +1 -0
- package/dist/types/base/FeeManagerClient.d.ts +27 -1
- package/dist/types/base/FeeManagerClient.d.ts.map +1 -1
- package/dist/types/const/abis/index.d.ts +1 -0
- package/dist/types/const/abis/index.d.ts.map +1 -1
- package/dist/types/const/abis/vaultFees.d.ts +30 -0
- package/dist/types/const/abis/vaultFees.d.ts.map +1 -0
- package/package.json +3 -2
- package/src/__tests__/base/FeeManagerClient.test.ts +706 -0
- package/src/__tests__/base/PoolClient.test.ts +542 -0
- package/src/__tests__/base/SmartRewards.test.ts +465 -0
- package/src/__tests__/base/StakingClient.test.ts +772 -0
- package/src/__tests__/base/SubgraphClient.test.ts +99 -0
- package/src/__tests__/base/VaultClient.test.ts +1011 -0
- package/src/__tests__/base/vault/single-asset/calculateLimitPrice.test.ts +324 -0
- package/src/__tests__/base/vault/single-asset/calculateSwapAmount.test.ts +322 -0
- package/src/__tests__/base/vault/single-asset/estimateLpTokens.test.ts +612 -0
- package/src/__tests__/base/vault/single-asset/simulateSwap.test.ts +467 -0
- package/src/__tests__/base/vault/single-asset/singleAssetDepositClient.test.ts +400 -0
- package/src/__tests__/client.test.ts +48 -0
- package/src/__tests__/const/capabilities.test.ts +24 -0
- package/src/base/FeeManagerClient.ts +711 -0
- package/src/base/PoolClient.ts +678 -0
- package/src/base/SmartRewardClient.ts +57 -0
- package/src/base/SmartRewards.ts +783 -0
- package/src/base/StakingClient.ts +917 -0
- package/src/base/SubgraphClient.ts +93 -0
- package/src/base/VaultClient.ts +1642 -0
- package/src/base/vault/deposit/index.ts +705 -0
- package/src/base/vault/deposit/types.ts +49 -0
- package/src/base/vault/single-asset/README.md +541 -0
- package/src/base/vault/single-asset/calculateLimitPrice.ts +279 -0
- package/src/base/vault/single-asset/calculateSwapAmount.ts +74 -0
- package/src/base/vault/single-asset/estimateLpTokens.ts +393 -0
- package/src/base/vault/single-asset/index.ts +85 -0
- package/src/base/vault/single-asset/readmes/API_REFERENCE.md +478 -0
- package/src/base/vault/single-asset/readmes/calculateLimitPrice.md +455 -0
- package/src/base/vault/single-asset/readmes/calculateSwapAmount.md +345 -0
- package/src/base/vault/single-asset/readmes/estimateLpTokens.md +585 -0
- package/src/base/vault/single-asset/readmes/index.md +174 -0
- package/src/base/vault/single-asset/readmes/simulateSwap.md +612 -0
- package/src/base/vault/single-asset/simulateSwap.ts +451 -0
- package/src/base/vault/single-asset/singleAssetDeposit.ts +411 -0
- package/src/base/vault/single-asset/types.ts +186 -0
- package/src/base/vault/utils.ts +633 -0
- package/src/base/vault/withdraw/index.ts +187 -0
- package/src/base/vault/withdraw/types.ts +14 -0
- package/src/client.ts +161 -0
- package/src/const/abis/UniswapPool.ts +1 -0
- package/src/const/abis/erc1155.ts +314 -0
- package/src/const/abis/erc20.ts +224 -0
- package/src/const/abis/erc721.ts +346 -0
- package/src/const/abis/feeManager.ts +672 -0
- package/src/const/abis/index.ts +8 -0
- package/src/const/abis/quoter.ts +1585 -0
- package/src/const/abis/singleTokenDeposit.ts +921 -0
- package/src/const/abis/vaultFees.ts +40 -0
- package/src/const/amm/configs/ammConfig.ts +130 -0
- package/src/const/amm/configs/protocols/aerodrome-v2.ts +18 -0
- package/src/const/amm/configs/protocols/aerodrome.ts +18 -0
- package/src/const/amm/configs/protocols/arthswap.ts +21 -0
- package/src/const/amm/configs/protocols/baseswap.ts +17 -0
- package/src/const/amm/configs/protocols/basex.ts +20 -0
- package/src/const/amm/configs/protocols/beam.ts +16 -0
- package/src/const/amm/configs/protocols/beamswap.ts +17 -0
- package/src/const/amm/configs/protocols/blackhole.ts +22 -0
- package/src/const/amm/configs/protocols/camelot.ts +26 -0
- package/src/const/amm/configs/protocols/crust.ts +16 -0
- package/src/const/amm/configs/protocols/cypher.ts +20 -0
- package/src/const/amm/configs/protocols/dodo.ts +17 -0
- package/src/const/amm/configs/protocols/dragonswap.ts +16 -0
- package/src/const/amm/configs/protocols/eddy.ts +17 -0
- package/src/const/amm/configs/protocols/equilibre.ts +17 -0
- package/src/const/amm/configs/protocols/fenix.ts +17 -0
- package/src/const/amm/configs/protocols/forge.ts +22 -0
- package/src/const/amm/configs/protocols/fusionx.ts +21 -0
- package/src/const/amm/configs/protocols/glyph.ts +22 -0
- package/src/const/amm/configs/protocols/henjin.ts +17 -0
- package/src/const/amm/configs/protocols/hercules.ts +16 -0
- package/src/const/amm/configs/protocols/horiza.ts +23 -0
- package/src/const/amm/configs/protocols/index.ts +79 -0
- package/src/const/amm/configs/protocols/katana.ts +15 -0
- package/src/const/amm/configs/protocols/katanaIntegral.ts +15 -0
- package/src/const/amm/configs/protocols/kim.ts +24 -0
- package/src/const/amm/configs/protocols/kinetix.ts +23 -0
- package/src/const/amm/configs/protocols/kodiak.ts +21 -0
- package/src/const/amm/configs/protocols/kyo.ts +20 -0
- package/src/const/amm/configs/protocols/linehub.ts +17 -0
- package/src/const/amm/configs/protocols/lynex.ts +23 -0
- package/src/const/amm/configs/protocols/machinex.ts +22 -0
- package/src/const/amm/configs/protocols/maia.ts +22 -0
- package/src/const/amm/configs/protocols/metavault.ts +23 -0
- package/src/const/amm/configs/protocols/nest.ts +19 -0
- package/src/const/amm/configs/protocols/novaswap.ts +16 -0
- package/src/const/amm/configs/protocols/ocelex.ts +17 -0
- package/src/const/amm/configs/protocols/pancakeswap.ts +26 -0
- package/src/const/amm/configs/protocols/poolshark.ts +17 -0
- package/src/const/amm/configs/protocols/quickswap-algebra.ts +20 -0
- package/src/const/amm/configs/protocols/quickswap-integral.ts +24 -0
- package/src/const/amm/configs/protocols/quickswap-univ3.ts +29 -0
- package/src/const/amm/configs/protocols/quickswap.ts +29 -0
- package/src/const/amm/configs/protocols/retro.ts +23 -0
- package/src/const/amm/configs/protocols/sailor.ts +16 -0
- package/src/const/amm/configs/protocols/shadow.ts +18 -0
- package/src/const/amm/configs/protocols/silverswap.ts +22 -0
- package/src/const/amm/configs/protocols/spark.ts +17 -0
- package/src/const/amm/configs/protocols/spark32.ts +17 -0
- package/src/const/amm/configs/protocols/spookyswap.ts +16 -0
- package/src/const/amm/configs/protocols/stellaswap.ts +23 -0
- package/src/const/amm/configs/protocols/supswap.ts +17 -0
- package/src/const/amm/configs/protocols/sushi.ts +86 -0
- package/src/const/amm/configs/protocols/swapmode.ts +17 -0
- package/src/const/amm/configs/protocols/swapsicle.ts +17 -0
- package/src/const/amm/configs/protocols/thena.ts +22 -0
- package/src/const/amm/configs/protocols/thick.ts +19 -0
- package/src/const/amm/configs/protocols/thickv2.ts +17 -0
- package/src/const/amm/configs/protocols/thruster.ts +19 -0
- package/src/const/amm/configs/protocols/uniswap.ts +98 -0
- package/src/const/amm/configs/protocols/wasabee.ts +16 -0
- package/src/const/amm/index.ts +3 -0
- package/src/const/amm/utils/beacon.ts +216 -0
- package/src/const/amm/utils/contracts.ts +162 -0
- package/src/const/amm/utils/index.ts +127 -0
- package/src/const/amm/utils/protocol.ts +171 -0
- package/src/const/api.ts +27 -0
- package/src/const/capabilities.ts +115 -0
- package/src/const/chain.ts +243 -0
- package/src/const/deployments/abis.ts +6752 -0
- package/src/const/deployments/apechain.ts +17 -0
- package/src/const/deployments/arbitrum.ts +26 -0
- package/src/const/deployments/arbitrumgoerli.ts +16 -0
- package/src/const/deployments/astar.ts +16 -0
- package/src/const/deployments/astarzkevm.ts +16 -0
- package/src/const/deployments/avalanche.ts +45 -0
- package/src/const/deployments/bartiotest.ts +16 -0
- package/src/const/deployments/base.ts +24 -0
- package/src/const/deployments/bera.ts +16 -0
- package/src/const/deployments/berachainbartio.ts +40 -0
- package/src/const/deployments/blast.ts +16 -0
- package/src/const/deployments/bsc.ts +16 -0
- package/src/const/deployments/celo.ts +16 -0
- package/src/const/deployments/core.ts +16 -0
- package/src/const/deployments/eth.ts +22 -0
- package/src/const/deployments/evmos.ts +16 -0
- package/src/const/deployments/fantom.ts +16 -0
- package/src/const/deployments/filecoin.ts +16 -0
- package/src/const/deployments/flare.ts +16 -0
- package/src/const/deployments/goerli.ts +16 -0
- package/src/const/deployments/hemi.ts +16 -0
- package/src/const/deployments/hyperevm.ts +49 -0
- package/src/const/deployments/index.ts +49 -0
- package/src/const/deployments/katana.ts +48 -0
- package/src/const/deployments/kava.ts +16 -0
- package/src/const/deployments/linea.ts +16 -0
- package/src/const/deployments/localhost.ts +8 -0
- package/src/const/deployments/manta.ts +16 -0
- package/src/const/deployments/mantle.ts +16 -0
- package/src/const/deployments/metis.ts +16 -0
- package/src/const/deployments/mode.ts +16 -0
- package/src/const/deployments/moonbeam.ts +16 -0
- package/src/const/deployments/mumbai.ts +16 -0
- package/src/const/deployments/nibiru.ts +49 -0
- package/src/const/deployments/okxtestnet.ts +16 -0
- package/src/const/deployments/optimism.ts +16 -0
- package/src/const/deployments/optimismgoerli.ts +16 -0
- package/src/const/deployments/peaq.ts +25 -0
- package/src/const/deployments/polygon.ts +25 -0
- package/src/const/deployments/polyzkevm.ts +16 -0
- package/src/const/deployments/pyzkevm.ts +9 -0
- package/src/const/deployments/ronin.ts +17 -0
- package/src/const/deployments/rootstock.ts +16 -0
- package/src/const/deployments/saga.ts +49 -0
- package/src/const/deployments/scroll.ts +16 -0
- package/src/const/deployments/sei.ts +16 -0
- package/src/const/deployments/soneium.ts +16 -0
- package/src/const/deployments/sonic.ts +16 -0
- package/src/const/deployments/taiko.ts +16 -0
- package/src/const/deployments/tataratestnet.ts +16 -0
- package/src/const/deployments/telos.ts +16 -0
- package/src/const/deployments/thundercore.ts +16 -0
- package/src/const/deployments/uni.ts +16 -0
- package/src/const/deployments/xlayer.ts +16 -0
- package/src/const/deployments/zeta.ts +16 -0
- package/src/const/deployments/zircuit.ts +16 -0
- package/src/const/deployments/zklinknova.ts +21 -0
- package/src/const/index.ts +12 -0
- package/src/const/network.ts +635 -0
- package/src/const/protocol.ts +229 -0
- package/src/const/quoter.ts +571 -0
- package/src/const/stabilityVaults/index.ts +2 -0
- package/src/const/stabilityVaults/stabilityVaultsConfig.ts +41 -0
- package/src/const/subgraph.ts +157 -0
- package/src/const/thegraph.ts +3 -0
- package/src/index.ts +80 -0
- package/src/scripts/processDeployments.ts +174 -0
- package/src/types.ts +202 -0
- package/src/utils/PoolQueryAdapter.ts +943 -0
- package/src/utils/SubgraphVaultClient.ts +408 -0
- package/src/utils/subgraph-types.ts +108 -0
|
@@ -0,0 +1,1011 @@
|
|
|
1
|
+
import { createPublicClient, createTestClient, createWalletClient, http, publicActions, walletActions } from 'viem';
|
|
2
|
+
import { privateKeyToAccount } from 'viem/accounts';
|
|
3
|
+
import { avalanche, foundry, polygon, ronin } from 'viem/chains';
|
|
4
|
+
import { VaultClient } from '../../base/VaultClient.js';
|
|
5
|
+
import { SteerClient } from '../../client.js';
|
|
6
|
+
|
|
7
|
+
describe('VaultClient', () => {
|
|
8
|
+
let client: VaultClient;
|
|
9
|
+
// let viemClient: TestClient;
|
|
10
|
+
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
const testClient = createTestClient({
|
|
13
|
+
account: privateKeyToAccount("0x40199ba8875ac583658a7e936e16354f4bf1ea54dac73a2bc24fd17159ceb821"),
|
|
14
|
+
chain: {
|
|
15
|
+
...foundry,
|
|
16
|
+
id: 137
|
|
17
|
+
},
|
|
18
|
+
mode: 'anvil',
|
|
19
|
+
transport: http(),
|
|
20
|
+
})
|
|
21
|
+
.extend(publicActions)
|
|
22
|
+
.extend(walletActions);
|
|
23
|
+
|
|
24
|
+
// @ts-expect-error test client is not a PublicClient
|
|
25
|
+
client = new VaultClient(testClient);
|
|
26
|
+
// viemClient = testClient;
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
describe('getLatestVaults', () => {
|
|
30
|
+
it('should fetch latest vaults successfully', async () => {
|
|
31
|
+
const response = await client.getLatestVaults();
|
|
32
|
+
expect(response.success).toBe(true);
|
|
33
|
+
expect(response.status).toBe(200);
|
|
34
|
+
expect(response.data).toBeDefined();
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
it('should handle errors gracefully', async () => {
|
|
39
|
+
global.fetch = jest.fn().mockImplementationOnce(() =>
|
|
40
|
+
Promise.resolve({
|
|
41
|
+
ok: false,
|
|
42
|
+
status: 500,
|
|
43
|
+
})
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
const response = await client.getLatestVaults();
|
|
47
|
+
expect(response.success).toBe(false);
|
|
48
|
+
expect(response.status).toBe(500);
|
|
49
|
+
expect(response.error).toBeDefined();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
describe('prepareDepositTx', () => {
|
|
54
|
+
it('should successfully prepare deposit transaction data', async () => {
|
|
55
|
+
const testVaultAddress = '0x1234567890123456789012345678901234567890';
|
|
56
|
+
const amount0Desired = BigInt('1000000000000000000'); // 1 token
|
|
57
|
+
const amount1Desired = BigInt('2000000000000000000'); // 2 tokens
|
|
58
|
+
const slippage = 0.01; // 1%
|
|
59
|
+
|
|
60
|
+
const response = await client.prepareDepositTx({
|
|
61
|
+
vaultAddress: testVaultAddress as `0x${string}`,
|
|
62
|
+
amount0Desired,
|
|
63
|
+
amount1Desired,
|
|
64
|
+
slippage
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
expect(response.success).toBe(true);
|
|
68
|
+
expect(response.status).toBe(200);
|
|
69
|
+
expect(response.data).toBeDefined();
|
|
70
|
+
|
|
71
|
+
if (response.data) {
|
|
72
|
+
// Verify the structure of the transaction data
|
|
73
|
+
expect(response.data.address).toBe(testVaultAddress);
|
|
74
|
+
expect(response.data.functionName).toBe('deposit');
|
|
75
|
+
expect(response.data.abi).toBeDefined();
|
|
76
|
+
expect(response.data.args).toBeDefined();
|
|
77
|
+
expect(response.data.args.length).toBe(6);
|
|
78
|
+
|
|
79
|
+
// Verify the ABI structure
|
|
80
|
+
expect(response.data.abi[0].type).toBe('function');
|
|
81
|
+
expect(response.data.abi[0].name).toBe('deposit');
|
|
82
|
+
expect(response.data.abi[0].inputs.length).toBe(6);
|
|
83
|
+
|
|
84
|
+
// Verify the arguments
|
|
85
|
+
const [vault, amount0, amount1, min0, min1] = response.data.args;
|
|
86
|
+
expect(vault).toBe(testVaultAddress);
|
|
87
|
+
expect(amount0).toBe(amount0Desired);
|
|
88
|
+
expect(amount1).toBe(amount1Desired);
|
|
89
|
+
// Verify min amounts are calculated correctly with slippage
|
|
90
|
+
expect(min0).toBe(amount0Desired * BigInt(990) / BigInt(1000)); // 1% slippage
|
|
91
|
+
expect(min1).toBe(amount1Desired * BigInt(990) / BigInt(1000)); // 1% slippage
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it('should handle errors when preparing deposit transaction', async () => {
|
|
96
|
+
const invalidAddress = '0x0000000000000000000000000000000000000000';
|
|
97
|
+
const amount0Desired = BigInt('1000000000000000000');
|
|
98
|
+
const amount1Desired = BigInt('2000000000000000000');
|
|
99
|
+
const slippage = 0.01;
|
|
100
|
+
|
|
101
|
+
const response = await client.prepareDepositTx({
|
|
102
|
+
vaultAddress: invalidAddress as `0x${string}`,
|
|
103
|
+
amount0Desired,
|
|
104
|
+
amount1Desired,
|
|
105
|
+
slippage
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
expect(response.success).toBe(false);
|
|
109
|
+
expect(response.status).toBe(500);
|
|
110
|
+
expect(response.error).toBeDefined();
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
it('should handle custom recipient address', async () => {
|
|
114
|
+
const testVaultAddress = '0x1234567890123456789012345678901234567890';
|
|
115
|
+
const customRecipient = '0x9876543210987654321098765432109876543210';
|
|
116
|
+
const amount0Desired = BigInt('1000000000000000000');
|
|
117
|
+
const amount1Desired = BigInt('2000000000000000000');
|
|
118
|
+
const slippage = 0.01;
|
|
119
|
+
|
|
120
|
+
const response = await client.prepareDepositTx({
|
|
121
|
+
vaultAddress: testVaultAddress as `0x${string}`,
|
|
122
|
+
amount0Desired,
|
|
123
|
+
amount1Desired,
|
|
124
|
+
slippage,
|
|
125
|
+
to: customRecipient as `0x${string}`
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
expect(response.success).toBe(true);
|
|
129
|
+
expect(response.status).toBe(200);
|
|
130
|
+
expect(response.data).toBeDefined();
|
|
131
|
+
|
|
132
|
+
if (response.data) {
|
|
133
|
+
// Verify the custom recipient is used in the args
|
|
134
|
+
const [, , , , , to] = response.data.args;
|
|
135
|
+
expect(to).toBe(customRecipient);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
describe('withdraw', () => {
|
|
141
|
+
it('should successfully withdraw tokens', async () => {
|
|
142
|
+
const testVaultAddress = '0x1234567890123456789012345678901234567890';
|
|
143
|
+
const shares = BigInt('1000000000000000000'); // 1 share
|
|
144
|
+
const amount0Min = BigInt('500000000000000000'); // 0.5 token0
|
|
145
|
+
const amount1Min = BigInt('750000000000000000'); // 0.75 token1
|
|
146
|
+
|
|
147
|
+
const response = await client.withdraw({
|
|
148
|
+
vaultAddress: testVaultAddress as `0x${string}`,
|
|
149
|
+
shares,
|
|
150
|
+
amount0Min,
|
|
151
|
+
amount1Min
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
expect(response.success).toBe(true);
|
|
155
|
+
expect(response.status).toBe(200);
|
|
156
|
+
expect(response.data).toBeDefined();
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
it('should handle errors during withdrawal', async () => {
|
|
160
|
+
const invalidAddress = '0x0000000000000000000000000000000000000000';
|
|
161
|
+
const shares = BigInt('1000000000000000000');
|
|
162
|
+
const amount0Min = BigInt('500000000000000000');
|
|
163
|
+
const amount1Min = BigInt('750000000000000000');
|
|
164
|
+
|
|
165
|
+
const response = await client.withdraw({
|
|
166
|
+
vaultAddress: invalidAddress as `0x${string}`,
|
|
167
|
+
shares,
|
|
168
|
+
amount0Min,
|
|
169
|
+
amount1Min
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
expect(response.success).toBe(false);
|
|
173
|
+
expect(response.status).toBe(500);
|
|
174
|
+
expect(response.error).toBeDefined();
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
it('should handle custom recipient address', async () => {
|
|
178
|
+
const testVaultAddress = '0x1234567890123456789012345678901234567890';
|
|
179
|
+
const customRecipient = '0x9876543210987654321098765432109876543210';
|
|
180
|
+
const shares = BigInt('1000000000000000000');
|
|
181
|
+
const amount0Min = BigInt('500000000000000000');
|
|
182
|
+
const amount1Min = BigInt('750000000000000000');
|
|
183
|
+
|
|
184
|
+
const response = await client.withdraw({
|
|
185
|
+
vaultAddress: testVaultAddress as `0x${string}`,
|
|
186
|
+
shares,
|
|
187
|
+
amount0Min,
|
|
188
|
+
amount1Min,
|
|
189
|
+
to: customRecipient as `0x${string}`
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
expect(response.success).toBe(true);
|
|
193
|
+
expect(response.status).toBe(200);
|
|
194
|
+
expect(response.data).toBeDefined();
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
describe('prepareWithdrawTx', () => {
|
|
199
|
+
it('should successfully prepare withdraw transaction data', async () => {
|
|
200
|
+
const testVaultAddress = '0x1234567890123456789012345678901234567890';
|
|
201
|
+
const shares = BigInt('1000000000000000000'); // 1 share
|
|
202
|
+
const amount0Min = BigInt('500000000000000000'); // 0.5 token0
|
|
203
|
+
const amount1Min = BigInt('750000000000000000'); // 0.75 token1
|
|
204
|
+
|
|
205
|
+
const response = await client.prepareWithdrawTx({
|
|
206
|
+
vaultAddress: testVaultAddress as `0x${string}`,
|
|
207
|
+
shares,
|
|
208
|
+
amount0Min,
|
|
209
|
+
amount1Min
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
expect(response.success).toBe(true);
|
|
213
|
+
expect(response.status).toBe(200);
|
|
214
|
+
expect(response.data).toBeDefined();
|
|
215
|
+
|
|
216
|
+
if (response.data) {
|
|
217
|
+
// Verify the structure of the transaction data
|
|
218
|
+
expect(response.data.address).toBe(testVaultAddress);
|
|
219
|
+
expect(response.data.functionName).toBe('withdraw');
|
|
220
|
+
expect(response.data.abi).toBeDefined();
|
|
221
|
+
expect(response.data.args).toBeDefined();
|
|
222
|
+
expect(response.data.args.length).toBe(4);
|
|
223
|
+
|
|
224
|
+
// Verify the ABI structure
|
|
225
|
+
expect(response.data.abi[0].type).toBe('function');
|
|
226
|
+
expect(response.data.abi[0].name).toBe('withdraw');
|
|
227
|
+
expect(response.data.abi[0].inputs.length).toBe(4);
|
|
228
|
+
|
|
229
|
+
// Verify the arguments
|
|
230
|
+
const [sharesArg, amount0MinArg, amount1MinArg] = response.data.args;
|
|
231
|
+
expect(sharesArg).toBe(shares);
|
|
232
|
+
expect(amount0MinArg).toBe(amount0Min);
|
|
233
|
+
expect(amount1MinArg).toBe(amount1Min);
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
it('should handle errors when preparing withdraw transaction', async () => {
|
|
238
|
+
const invalidAddress = '0x0000000000000000000000000000000000000000';
|
|
239
|
+
const shares = BigInt('1000000000000000000');
|
|
240
|
+
const amount0Min = BigInt('500000000000000000');
|
|
241
|
+
const amount1Min = BigInt('750000000000000000');
|
|
242
|
+
|
|
243
|
+
const response = await client.prepareWithdrawTx({
|
|
244
|
+
vaultAddress: invalidAddress as `0x${string}`,
|
|
245
|
+
shares,
|
|
246
|
+
amount0Min,
|
|
247
|
+
amount1Min
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
expect(response.success).toBe(false);
|
|
251
|
+
expect(response.status).toBe(500);
|
|
252
|
+
expect(response.error).toBeDefined();
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
it('should handle custom recipient address', async () => {
|
|
256
|
+
const testVaultAddress = '0x1234567890123456789012345678901234567890';
|
|
257
|
+
const customRecipient = '0x9876543210987654321098765432109876543210';
|
|
258
|
+
const shares = BigInt('1000000000000000000');
|
|
259
|
+
const amount0Min = BigInt('500000000000000000');
|
|
260
|
+
const amount1Min = BigInt('750000000000000000');
|
|
261
|
+
|
|
262
|
+
const response = await client.prepareWithdrawTx({
|
|
263
|
+
vaultAddress: testVaultAddress as `0x${string}`,
|
|
264
|
+
shares,
|
|
265
|
+
amount0Min,
|
|
266
|
+
amount1Min,
|
|
267
|
+
to: customRecipient as `0x${string}`
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
expect(response.success).toBe(true);
|
|
271
|
+
expect(response.status).toBe(200);
|
|
272
|
+
expect(response.data).toBeDefined();
|
|
273
|
+
|
|
274
|
+
if (response.data) {
|
|
275
|
+
// Verify the custom recipient is used in the args
|
|
276
|
+
const [, , , to] = response.data.args;
|
|
277
|
+
expect(to).toBe(customRecipient);
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
describe('approve', () => {
|
|
283
|
+
it('should successfully approve spending', async () => {
|
|
284
|
+
const testAddress = '0x1234567890123456789012345678901234567890';
|
|
285
|
+
const spender = '0x2234567890123456789012345678901234567890';
|
|
286
|
+
const amount = BigInt(1000);
|
|
287
|
+
|
|
288
|
+
const response = await client.approve({
|
|
289
|
+
vaultAddress: testAddress as `0x${string}`,
|
|
290
|
+
spender: spender as `0x${string}`,
|
|
291
|
+
amount
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
expect(response.success).toBe(true);
|
|
295
|
+
expect(response.status).toBe(200);
|
|
296
|
+
expect(response.data).toBeDefined();
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
it('should handle errors during approval', async () => {
|
|
300
|
+
const testAddress = '0x0000000000000000000000000000000000000000';
|
|
301
|
+
const spender = '0x0000000000000000000000000000000000000000';
|
|
302
|
+
const amount = BigInt(1000);
|
|
303
|
+
|
|
304
|
+
const response = await client.approve({
|
|
305
|
+
vaultAddress: testAddress as `0x${string}`,
|
|
306
|
+
spender: spender as `0x${string}`,
|
|
307
|
+
amount
|
|
308
|
+
});
|
|
309
|
+
|
|
310
|
+
expect(response.success).toBe(false);
|
|
311
|
+
expect(response.status).toBe(500);
|
|
312
|
+
expect(response.error).toBeDefined();
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
|
|
316
|
+
describe('allowance', () => {
|
|
317
|
+
it('should successfully get allowance', async () => {
|
|
318
|
+
const testAddress = '0x1234567890123456789012345678901234567890';
|
|
319
|
+
const owner = '0x3234567890123456789012345678901234567890';
|
|
320
|
+
const spender = '0x2234567890123456789012345678901234567890';
|
|
321
|
+
|
|
322
|
+
const response = await client.allowance({
|
|
323
|
+
vaultAddress: testAddress as `0x${string}`,
|
|
324
|
+
owner: owner as `0x${string}`,
|
|
325
|
+
spender: spender as `0x${string}`
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
expect(response.success).toBe(true);
|
|
329
|
+
expect(response.status).toBe(200);
|
|
330
|
+
expect(response.data).toBeDefined();
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
it('should handle errors when getting allowance', async () => {
|
|
334
|
+
const testAddress = '0x0000000000000000000000000000000000000000';
|
|
335
|
+
const owner = '0x0000000000000000000000000000000000000000';
|
|
336
|
+
const spender = '0x0000000000000000000000000000000000000000';
|
|
337
|
+
|
|
338
|
+
const response = await client.allowance({
|
|
339
|
+
vaultAddress: testAddress as `0x${string}`,
|
|
340
|
+
owner: owner as `0x${string}`,
|
|
341
|
+
spender: spender as `0x${string}`
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
expect(response.success).toBe(false);
|
|
345
|
+
expect(response.status).toBe(500);
|
|
346
|
+
expect(response.error).toBeDefined();
|
|
347
|
+
});
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
describe('getTokensFromLp', () => {
|
|
351
|
+
it('should calculate token amounts correctly for non-zero LP supply', async () => {
|
|
352
|
+
const testVaultAddress = '0x1234567890123456789012345678901234567890';
|
|
353
|
+
const lpTokenAmount = BigInt('1000000000000000000'); // 1 LP token
|
|
354
|
+
|
|
355
|
+
const response = await client.getTokensFromLp(
|
|
356
|
+
testVaultAddress as `0x${string}`,
|
|
357
|
+
lpTokenAmount
|
|
358
|
+
);
|
|
359
|
+
|
|
360
|
+
expect(response.success).toBe(true);
|
|
361
|
+
expect(response.status).toBe(200);
|
|
362
|
+
expect(response.data).toBeDefined();
|
|
363
|
+
|
|
364
|
+
if (response.data) {
|
|
365
|
+
// Verify the structure of the response
|
|
366
|
+
expect(typeof response.data.token0Val).toBe('bigint');
|
|
367
|
+
expect(typeof response.data.token1Val).toBe('bigint');
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
it('should handle zero LP supply case', async () => {
|
|
372
|
+
const testVaultAddress = '0x1234567890123456789012345678901234567890';
|
|
373
|
+
const lpTokenAmount = BigInt('1000000000000000000'); // 1 LP token
|
|
374
|
+
|
|
375
|
+
const response = await client.getTokensFromLp(
|
|
376
|
+
testVaultAddress as `0x${string}`,
|
|
377
|
+
lpTokenAmount
|
|
378
|
+
);
|
|
379
|
+
|
|
380
|
+
expect(response.success).toBe(true);
|
|
381
|
+
expect(response.status).toBe(200);
|
|
382
|
+
expect(response.data).toBeDefined();
|
|
383
|
+
|
|
384
|
+
if (response.data) {
|
|
385
|
+
// When LP supply is 0, both values should be 1
|
|
386
|
+
expect(response.data.token0Val).toBe(BigInt(1));
|
|
387
|
+
expect(response.data.token1Val).toBe(BigInt(1));
|
|
388
|
+
}
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
it('should handle errors gracefully', async () => {
|
|
392
|
+
const invalidAddress = '0x0000000000000000000000000000000000000000';
|
|
393
|
+
const lpTokenAmount = BigInt('1000000000000000000');
|
|
394
|
+
|
|
395
|
+
const response = await client.getTokensFromLp(
|
|
396
|
+
invalidAddress as `0x${string}`,
|
|
397
|
+
lpTokenAmount
|
|
398
|
+
);
|
|
399
|
+
|
|
400
|
+
expect(response.success).toBe(false);
|
|
401
|
+
expect(response.status).toBe(500);
|
|
402
|
+
expect(response.error).toBeDefined();
|
|
403
|
+
});
|
|
404
|
+
});
|
|
405
|
+
|
|
406
|
+
describe('getAllVaults', () => {
|
|
407
|
+
let realSteerClient: SteerClient;
|
|
408
|
+
|
|
409
|
+
beforeAll(() => {
|
|
410
|
+
// Create real clients for blockchain interaction
|
|
411
|
+
const publicClient = createPublicClient({
|
|
412
|
+
chain: polygon,
|
|
413
|
+
transport: http()
|
|
414
|
+
});
|
|
415
|
+
|
|
416
|
+
const walletClient = createWalletClient({
|
|
417
|
+
chain: polygon,
|
|
418
|
+
transport: http(),
|
|
419
|
+
|
|
420
|
+
});
|
|
421
|
+
|
|
422
|
+
// Initialize SteerClient with real clients
|
|
423
|
+
realSteerClient = new SteerClient({
|
|
424
|
+
environment: 'production',
|
|
425
|
+
client: publicClient,
|
|
426
|
+
walletClient: walletClient
|
|
427
|
+
});
|
|
428
|
+
});
|
|
429
|
+
|
|
430
|
+
it('should fetch all vaults with chainId filter successfully', async () => {
|
|
431
|
+
const filter = { chainId: 137 }; // Polygon chainId
|
|
432
|
+
const response = await realSteerClient.vaults.getAllVaults(filter);
|
|
433
|
+
|
|
434
|
+
expect(response.success).toBe(true);
|
|
435
|
+
expect(response.status).toBe(200);
|
|
436
|
+
expect(response.data).toBeDefined();
|
|
437
|
+
expect(Array.isArray(response.data)).toBe(true);
|
|
438
|
+
}, 300000);
|
|
439
|
+
|
|
440
|
+
it('should fetch all vaults with multiple filter parameters', async () => {
|
|
441
|
+
const filter = {
|
|
442
|
+
chainId: 137,
|
|
443
|
+
protocol: 'uniswap',
|
|
444
|
+
isActive: true
|
|
445
|
+
};
|
|
446
|
+
const response = await client.getAllVaults(filter);
|
|
447
|
+
|
|
448
|
+
expect(response.success).toBe(true);
|
|
449
|
+
expect(response.status).toBe(200);
|
|
450
|
+
expect(response.data).toBeDefined();
|
|
451
|
+
expect(Array.isArray(response.data)).toBe(true);
|
|
452
|
+
});
|
|
453
|
+
|
|
454
|
+
it('should fetch all vaults with custom batch size', async () => {
|
|
455
|
+
const filter = { chainId: 137 };
|
|
456
|
+
const batchSize = 50;
|
|
457
|
+
const response = await client.getAllVaults(filter, batchSize);
|
|
458
|
+
|
|
459
|
+
expect(response.success).toBe(true);
|
|
460
|
+
expect(response.status).toBe(200);
|
|
461
|
+
expect(response.data).toBeDefined();
|
|
462
|
+
expect(Array.isArray(response.data)).toBe(true);
|
|
463
|
+
});
|
|
464
|
+
|
|
465
|
+
it('should fetch all vaults without filter', async () => {
|
|
466
|
+
const response = await client.getAllVaults();
|
|
467
|
+
|
|
468
|
+
expect(response.success).toBe(true);
|
|
469
|
+
expect(response.status).toBe(200);
|
|
470
|
+
expect(response.data).toBeDefined();
|
|
471
|
+
expect(Array.isArray(response.data)).toBe(true);
|
|
472
|
+
});
|
|
473
|
+
|
|
474
|
+
it('should handle errors gracefully when API fails', async () => {
|
|
475
|
+
// Mock the getVaults method to simulate API failure
|
|
476
|
+
const originalGetVaults = client.getVaults;
|
|
477
|
+
client.getVaults = jest.fn().mockResolvedValue({
|
|
478
|
+
success: false,
|
|
479
|
+
status: 500,
|
|
480
|
+
error: 'API Error',
|
|
481
|
+
data: null
|
|
482
|
+
});
|
|
483
|
+
|
|
484
|
+
const filter = { chainId: 137 };
|
|
485
|
+
const response = await client.getAllVaults(filter);
|
|
486
|
+
|
|
487
|
+
expect(response.success).toBe(false);
|
|
488
|
+
expect(response.status).toBe(500);
|
|
489
|
+
expect(response.error).toBeDefined();
|
|
490
|
+
expect(response.data).toBeNull();
|
|
491
|
+
|
|
492
|
+
// Restore original method
|
|
493
|
+
client.getVaults = originalGetVaults;
|
|
494
|
+
});
|
|
495
|
+
|
|
496
|
+
it('should handle pagination correctly when fetching multiple pages', async () => {
|
|
497
|
+
// Mock getVaults to return paginated responses
|
|
498
|
+
const mockPage1 = {
|
|
499
|
+
success: true,
|
|
500
|
+
status: 200,
|
|
501
|
+
data: {
|
|
502
|
+
edges: [
|
|
503
|
+
{ node: { id: 'vault1', name: 'Test Vault 1', protocolBaseType: 'uniswap' } },
|
|
504
|
+
{ node: { id: 'vault2', name: 'Test Vault 2', protocolBaseType: 'uniswap' } }
|
|
505
|
+
],
|
|
506
|
+
pageInfo: {
|
|
507
|
+
hasNextPage: true,
|
|
508
|
+
hasPreviousPage: false,
|
|
509
|
+
startCursor: 'cursor1',
|
|
510
|
+
endCursor: 'cursor2'
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
};
|
|
514
|
+
|
|
515
|
+
const mockPage2 = {
|
|
516
|
+
success: true,
|
|
517
|
+
status: 200,
|
|
518
|
+
data: {
|
|
519
|
+
edges: [
|
|
520
|
+
{ node: { id: 'vault3', name: 'Test Vault 3', protocolBaseType: 'sushi' } }
|
|
521
|
+
],
|
|
522
|
+
pageInfo: {
|
|
523
|
+
hasNextPage: false,
|
|
524
|
+
hasPreviousPage: true,
|
|
525
|
+
startCursor: 'cursor2',
|
|
526
|
+
endCursor: 'cursor3'
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
};
|
|
530
|
+
|
|
531
|
+
const originalGetVaults = client.getVaults;
|
|
532
|
+
client.getVaults = jest.fn()
|
|
533
|
+
.mockResolvedValueOnce(mockPage1)
|
|
534
|
+
.mockResolvedValueOnce(mockPage2);
|
|
535
|
+
|
|
536
|
+
const filter = { chainId: 137 };
|
|
537
|
+
const response = await client.getAllVaults(filter);
|
|
538
|
+
|
|
539
|
+
expect(response.success).toBe(true);
|
|
540
|
+
expect(response.status).toBe(200);
|
|
541
|
+
expect(response.data).toBeDefined();
|
|
542
|
+
expect(response.data?.length).toBe(3); // Should have all vaults from both pages
|
|
543
|
+
expect(response.data?.[0].id).toBe('vault1');
|
|
544
|
+
expect(response.data?.[1].id).toBe('vault2');
|
|
545
|
+
expect(response.data?.[2].id).toBe('vault3');
|
|
546
|
+
|
|
547
|
+
// Verify getVaults was called twice with correct parameters
|
|
548
|
+
expect(client.getVaults).toHaveBeenCalledTimes(2);
|
|
549
|
+
expect(client.getVaults).toHaveBeenNthCalledWith(1, filter, 100, null);
|
|
550
|
+
expect(client.getVaults).toHaveBeenNthCalledWith(2, filter, 100, 'cursor2');
|
|
551
|
+
|
|
552
|
+
// Restore original method
|
|
553
|
+
client.getVaults = originalGetVaults;
|
|
554
|
+
});
|
|
555
|
+
|
|
556
|
+
it('should handle exception during fetching', async () => {
|
|
557
|
+
// Mock getVaults to throw an exception
|
|
558
|
+
const originalGetVaults = client.getVaults;
|
|
559
|
+
client.getVaults = jest.fn().mockRejectedValue(new Error('Network error'));
|
|
560
|
+
|
|
561
|
+
const filter = { chainId: 137 };
|
|
562
|
+
const response = await client.getAllVaults(filter);
|
|
563
|
+
|
|
564
|
+
expect(response.success).toBe(false);
|
|
565
|
+
expect(response.status).toBe(500);
|
|
566
|
+
expect(response.error).toBe('Network error');
|
|
567
|
+
expect(response.data).toBeNull();
|
|
568
|
+
|
|
569
|
+
// Restore original method
|
|
570
|
+
client.getVaults = originalGetVaults;
|
|
571
|
+
});
|
|
572
|
+
});
|
|
573
|
+
|
|
574
|
+
describe('Integration Tests with Real Chain Data', () => {
|
|
575
|
+
// Using Polygon for testing
|
|
576
|
+
let realSteerClient: SteerClient;
|
|
577
|
+
|
|
578
|
+
beforeAll(() => {
|
|
579
|
+
// Create real clients for blockchain interaction
|
|
580
|
+
const publicClient = createPublicClient({
|
|
581
|
+
chain: avalanche,
|
|
582
|
+
transport: http()
|
|
583
|
+
});
|
|
584
|
+
|
|
585
|
+
const walletClient = createWalletClient({
|
|
586
|
+
chain: avalanche,
|
|
587
|
+
transport: http()
|
|
588
|
+
});
|
|
589
|
+
|
|
590
|
+
// Initialize SteerClient with real clients
|
|
591
|
+
realSteerClient = new SteerClient({
|
|
592
|
+
environment: 'production',
|
|
593
|
+
client: publicClient,
|
|
594
|
+
walletClient: walletClient
|
|
595
|
+
});
|
|
596
|
+
});
|
|
597
|
+
|
|
598
|
+
it('should calculate token amounts from LP tokens for a real vault', async () => {
|
|
599
|
+
// Test with a known vault on Polygon
|
|
600
|
+
const testVault = "0x777f8dcee1e1e55afc5aeed241fd94f48fc3a355" as `0x${string}`;
|
|
601
|
+
const lpTokenAmount = BigInt('1000000000000000000'); // 1 LP token
|
|
602
|
+
|
|
603
|
+
const response = await realSteerClient.vaults.getTokensFromLp(testVault, lpTokenAmount);
|
|
604
|
+
expect(response.success).toBe(true);
|
|
605
|
+
expect(response.data).toBeDefined();
|
|
606
|
+
|
|
607
|
+
if (response.data) {
|
|
608
|
+
// Log the calculated amounts for verification
|
|
609
|
+
console.log('Token0 amount for 1 LP token:', response.data.token0Val.toString());
|
|
610
|
+
console.log('Token1 amount for 1 LP token:', response.data.token1Val.toString());
|
|
611
|
+
|
|
612
|
+
// Verify the structure and types
|
|
613
|
+
expect(typeof response.data.token0Val).toBe('bigint');
|
|
614
|
+
expect(typeof response.data.token1Val).toBe('bigint');
|
|
615
|
+
}
|
|
616
|
+
}, 30000); // Increased timeout for real API calls
|
|
617
|
+
|
|
618
|
+
it('should handle token calculations for vault with no liquidity', async () => {
|
|
619
|
+
// Test with a known new/empty vault on Polygon
|
|
620
|
+
const emptyVault = '0x7b85fa7540b75fb214df632f9357eebe48f76edb' as `0x${string}`;
|
|
621
|
+
const lpTokenAmount = BigInt('1000000000000000000'); // 1 LP token
|
|
622
|
+
|
|
623
|
+
const response = await realSteerClient.vaults.getTokensFromLp(emptyVault, lpTokenAmount);
|
|
624
|
+
expect(response.success).toBe(true);
|
|
625
|
+
expect(response.data).toBeDefined();
|
|
626
|
+
|
|
627
|
+
if (response.data) {
|
|
628
|
+
// Log the calculated amounts for verification
|
|
629
|
+
console.log('Token0 amount for empty vault:', response.data.token0Val.toString());
|
|
630
|
+
console.log('Token1 amount for empty vault:', response.data.token1Val.toString());
|
|
631
|
+
|
|
632
|
+
// For empty vault, both values should be 1
|
|
633
|
+
expect(response.data.token0Val).toBe(BigInt(1));
|
|
634
|
+
expect(response.data.token1Val).toBe(BigInt(1));
|
|
635
|
+
}
|
|
636
|
+
}, 30000);
|
|
637
|
+
|
|
638
|
+
it.only('should calculate corresponding token amount for real vault - zeroForOne true', async () => {
|
|
639
|
+
// Test with a known vault on Polygon
|
|
640
|
+
const testVault = '0x616ae107237ce398bf32f08fd6048dd904ed8efb' as `0x${string}`;
|
|
641
|
+
const token0Amount = BigInt('2222322000000'); // 1 token0
|
|
642
|
+
|
|
643
|
+
const response = await realSteerClient.vaults.getCorrespondingTokenAmount(
|
|
644
|
+
testVault,
|
|
645
|
+
token0Amount,
|
|
646
|
+
false // zeroForOne = true, calculating token1 amount for given token0
|
|
647
|
+
);
|
|
648
|
+
|
|
649
|
+
expect(response.success).toBe(true);
|
|
650
|
+
expect(response.data).toBeDefined();
|
|
651
|
+
expect(typeof response.data).toBe('bigint');
|
|
652
|
+
|
|
653
|
+
if (response.data) {
|
|
654
|
+
console.log('Token1 amount for 1 token0 (zeroForOne=true):', response.data.toString());
|
|
655
|
+
// The corresponding amount should be greater than 0 for an active vault
|
|
656
|
+
expect(response.data).toBeGreaterThan(BigInt(0));
|
|
657
|
+
}
|
|
658
|
+
}, 30000);
|
|
659
|
+
|
|
660
|
+
it('should calculate corresponding token amount for real vault - zeroForOne false', async () => {
|
|
661
|
+
// Test with a known vault on Polygon
|
|
662
|
+
const testVault = '0x0fe4cbd6ce903ec1ea8e743972660aecab6badf7' as `0x${string}`;
|
|
663
|
+
const token1Amount = BigInt('1000000000000000000'); // 1 token1
|
|
664
|
+
|
|
665
|
+
const response = await realSteerClient.vaults.getCorrespondingTokenAmount(
|
|
666
|
+
testVault,
|
|
667
|
+
token1Amount,
|
|
668
|
+
false // zeroForOne = false, calculating token0 amount for given token1
|
|
669
|
+
);
|
|
670
|
+
|
|
671
|
+
expect(response.success).toBe(true);
|
|
672
|
+
expect(response.data).toBeDefined();
|
|
673
|
+
expect(typeof response.data).toBe('bigint');
|
|
674
|
+
|
|
675
|
+
if (response.data) {
|
|
676
|
+
console.log('Token0 amount for 1 token1 (zeroForOne=false):', response.data.toString());
|
|
677
|
+
// The corresponding amount should be greater than 0 for an active vault
|
|
678
|
+
expect(response.data).toBeGreaterThan(BigInt(0));
|
|
679
|
+
}
|
|
680
|
+
}, 30000);
|
|
681
|
+
|
|
682
|
+
it('should handle corresponding token amount calculation with different amounts', async () => {
|
|
683
|
+
// Test with a known vault on Polygon
|
|
684
|
+
const testVault = '0x0fe4cbd6ce903ec1ea8e743972660aecab6badf7' as `0x${string}`;
|
|
685
|
+
|
|
686
|
+
// Test with multiple amounts to verify proportional scaling
|
|
687
|
+
const amounts = [
|
|
688
|
+
BigInt('500000000000000000'), // 0.5 tokens
|
|
689
|
+
BigInt('1000000000000000000'), // 1 token
|
|
690
|
+
BigInt('2000000000000000000') // 2 tokens
|
|
691
|
+
];
|
|
692
|
+
|
|
693
|
+
const results: bigint[] = [];
|
|
694
|
+
|
|
695
|
+
for (const amount of amounts) {
|
|
696
|
+
const response = await realSteerClient.vaults.getCorrespondingTokenAmount(
|
|
697
|
+
testVault,
|
|
698
|
+
amount,
|
|
699
|
+
true // zeroForOne = true
|
|
700
|
+
);
|
|
701
|
+
|
|
702
|
+
expect(response.success).toBe(true);
|
|
703
|
+
expect(response.data).toBeDefined();
|
|
704
|
+
expect(typeof response.data).toBe('bigint');
|
|
705
|
+
|
|
706
|
+
if (response.data) {
|
|
707
|
+
results.push(response.data);
|
|
708
|
+
console.log(`Token1 amount for ${amount.toString()} token0:`, response.data.toString());
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
// Verify that the amounts scale proportionally (approximately)
|
|
713
|
+
if (results.length === 3) {
|
|
714
|
+
// The ratio between results should be approximately the same as the ratio between input amounts
|
|
715
|
+
// Allow for some rounding differences in the calculations
|
|
716
|
+
const ratio1 = Number(results[1]) / Number(results[0]); // Should be ~2
|
|
717
|
+
const ratio2 = Number(results[2]) / Number(results[1]); // Should be ~2
|
|
718
|
+
|
|
719
|
+
expect(ratio1).toBeGreaterThan(1.9);
|
|
720
|
+
expect(ratio1).toBeLessThan(2.1);
|
|
721
|
+
expect(ratio2).toBeGreaterThan(1.9);
|
|
722
|
+
expect(ratio2).toBeLessThan(2.1);
|
|
723
|
+
}
|
|
724
|
+
}, 45000);
|
|
725
|
+
|
|
726
|
+
it('should handle errors gracefully for invalid vault address in getCorrespondingTokenAmount', async () => {
|
|
727
|
+
const invalidVault = '0x0000000000000000000000000000000000000000' as `0x${string}`;
|
|
728
|
+
const amount = BigInt('1000000000000000000');
|
|
729
|
+
|
|
730
|
+
const response = await realSteerClient.vaults.getCorrespondingTokenAmount(
|
|
731
|
+
invalidVault,
|
|
732
|
+
amount,
|
|
733
|
+
true
|
|
734
|
+
);
|
|
735
|
+
|
|
736
|
+
expect(response.success).toBe(false);
|
|
737
|
+
expect(response.status).toBe(500);
|
|
738
|
+
expect(response.error).toBeDefined();
|
|
739
|
+
expect(response.data).toBeNull();
|
|
740
|
+
}, 30000);
|
|
741
|
+
});
|
|
742
|
+
|
|
743
|
+
describe('Reward Management', () => {
|
|
744
|
+
describe('calculatePendingRewards', () => {
|
|
745
|
+
it('should successfully calculate pending rewards', async () => {
|
|
746
|
+
const testVaultAddress = '0x1234567890123456789012345678901234567890';
|
|
747
|
+
const userAddress = '0x2234567890123456789012345678901234567890';
|
|
748
|
+
|
|
749
|
+
// Mock the readContract call to return reward data
|
|
750
|
+
const mockRewards = [BigInt('1000000000000000000'), BigInt('500000000000000000')]; // 1 reward, 0.5 extraReward
|
|
751
|
+
jest.spyOn(client['publicClient'], 'readContract').mockResolvedValueOnce(mockRewards);
|
|
752
|
+
|
|
753
|
+
const response = await client.calculatePendingRewards({
|
|
754
|
+
vaultAddress: testVaultAddress as `0x${string}`,
|
|
755
|
+
user: userAddress as `0x${string}`
|
|
756
|
+
});
|
|
757
|
+
|
|
758
|
+
expect(response.success).toBe(true);
|
|
759
|
+
expect(response.status).toBe(200);
|
|
760
|
+
expect(response.data).toBeDefined();
|
|
761
|
+
|
|
762
|
+
if (response.data) {
|
|
763
|
+
expect(response.data.rewards).toBe(BigInt('1000000000000000000'));
|
|
764
|
+
expect(response.data.extraRewards).toBe(BigInt('500000000000000000'));
|
|
765
|
+
}
|
|
766
|
+
});
|
|
767
|
+
|
|
768
|
+
it('should return zero values when calculatePendingRewards function reverts', async () => {
|
|
769
|
+
const testVaultAddress = '0x1234567890123456789012345678901234567890';
|
|
770
|
+
const userAddress = '0x2234567890123456789012345678901234567890';
|
|
771
|
+
|
|
772
|
+
// Mock the readContract call to throw an error (simulating revert)
|
|
773
|
+
jest.spyOn(client['publicClient'], 'readContract').mockRejectedValueOnce(
|
|
774
|
+
new Error('Contract function reverted')
|
|
775
|
+
);
|
|
776
|
+
|
|
777
|
+
const response = await client.calculatePendingRewards({
|
|
778
|
+
vaultAddress: testVaultAddress as `0x${string}`,
|
|
779
|
+
user: userAddress as `0x${string}`
|
|
780
|
+
});
|
|
781
|
+
|
|
782
|
+
expect(response.success).toBe(true);
|
|
783
|
+
expect(response.status).toBe(200);
|
|
784
|
+
expect(response.data).toBeDefined();
|
|
785
|
+
|
|
786
|
+
if (response.data) {
|
|
787
|
+
expect(response.data.rewards).toBe(BigInt(0));
|
|
788
|
+
expect(response.data.extraRewards).toBe(BigInt(0));
|
|
789
|
+
}
|
|
790
|
+
});
|
|
791
|
+
|
|
792
|
+
it('should handle various reward amounts correctly', async () => {
|
|
793
|
+
const testVaultAddress = '0x1234567890123456789012345678901234567890';
|
|
794
|
+
const userAddress = '0x2234567890123456789012345678901234567890';
|
|
795
|
+
|
|
796
|
+
const testCases = [
|
|
797
|
+
[BigInt(0), BigInt(0)], // No rewards
|
|
798
|
+
[BigInt('999999999999999999'), BigInt('1')], // Almost 1 token rewards
|
|
799
|
+
[BigInt('1000000000000000000000'), BigInt('2000000000000000000000')], // Large rewards
|
|
800
|
+
];
|
|
801
|
+
|
|
802
|
+
for (const [rewards, extraRewards] of testCases) {
|
|
803
|
+
jest.spyOn(client['publicClient'], 'readContract').mockResolvedValueOnce([rewards, extraRewards]);
|
|
804
|
+
|
|
805
|
+
const response = await client.calculatePendingRewards({
|
|
806
|
+
vaultAddress: testVaultAddress as `0x${string}`,
|
|
807
|
+
user: userAddress as `0x${string}`
|
|
808
|
+
});
|
|
809
|
+
|
|
810
|
+
expect(response.success).toBe(true);
|
|
811
|
+
expect(response.data?.rewards).toBe(rewards);
|
|
812
|
+
expect(response.data?.extraRewards).toBe(extraRewards);
|
|
813
|
+
}
|
|
814
|
+
});
|
|
815
|
+
});
|
|
816
|
+
|
|
817
|
+
describe('claimPendingRewards', () => {
|
|
818
|
+
let realSteerClient: SteerClient;
|
|
819
|
+
const publicClient = createPublicClient({
|
|
820
|
+
chain: avalanche,
|
|
821
|
+
transport: http()
|
|
822
|
+
});
|
|
823
|
+
|
|
824
|
+
const walletClient = createWalletClient({
|
|
825
|
+
chain: avalanche,
|
|
826
|
+
transport: http()
|
|
827
|
+
});
|
|
828
|
+
realSteerClient = new SteerClient({
|
|
829
|
+
environment: 'production',
|
|
830
|
+
client: publicClient,
|
|
831
|
+
walletClient: walletClient
|
|
832
|
+
});
|
|
833
|
+
|
|
834
|
+
it('should successfully claim pending rewards', async () => {
|
|
835
|
+
const testVaultAddress = '0x5c1d454f08975c554f6b70a84fd8859fbdfcc069';
|
|
836
|
+
// Mock the simulateContract and writeContract calls
|
|
837
|
+
|
|
838
|
+
const response = await realSteerClient.vaults.claimBlackholePendingRewards({
|
|
839
|
+
vaultAddress: testVaultAddress as `0x${string}`
|
|
840
|
+
});
|
|
841
|
+
|
|
842
|
+
expect(response.success).toBe(true);
|
|
843
|
+
expect(response.status).toBe(200);
|
|
844
|
+
});
|
|
845
|
+
|
|
846
|
+
it('should return zero values when claimBlackHolePendingRewards function reverts', async () => {
|
|
847
|
+
const testVaultAddress = '0x1234567890123456789012345678901234567890';
|
|
848
|
+
|
|
849
|
+
// Mock the simulateContract call to throw an error (simulating revert)
|
|
850
|
+
jest.spyOn(client['publicClient'], 'simulateContract').mockRejectedValueOnce(
|
|
851
|
+
new Error('Contract function reverted')
|
|
852
|
+
);
|
|
853
|
+
|
|
854
|
+
const response = await client.claimBlackholePendingRewards({
|
|
855
|
+
vaultAddress: testVaultAddress as `0x${string}`
|
|
856
|
+
});
|
|
857
|
+
|
|
858
|
+
expect(response.success).toBe(true);
|
|
859
|
+
expect(response.status).toBe(200);
|
|
860
|
+
expect(response.data).toBeDefined();
|
|
861
|
+
|
|
862
|
+
if (response.data && typeof response.data === 'object' && 'rewards' in response.data) {
|
|
863
|
+
expect(response.data.rewards).toBe(BigInt(0));
|
|
864
|
+
expect(response.data.extraRewards).toBe(BigInt(0));
|
|
865
|
+
}
|
|
866
|
+
});
|
|
867
|
+
|
|
868
|
+
it('should handle wallet client errors gracefully', async () => {
|
|
869
|
+
const testVaultAddress = '0x1234567890123456789012345678901234567890';
|
|
870
|
+
|
|
871
|
+
// Mock successful simulation but failed transaction
|
|
872
|
+
jest.spyOn(client['publicClient'], 'simulateContract').mockResolvedValueOnce({
|
|
873
|
+
request: {
|
|
874
|
+
address: testVaultAddress,
|
|
875
|
+
abi: expect.any(Array),
|
|
876
|
+
functionName: 'claimBlackHolePendingRewards',
|
|
877
|
+
args: []
|
|
878
|
+
}
|
|
879
|
+
} as any);
|
|
880
|
+
|
|
881
|
+
jest.spyOn(client['walletClient'], 'writeContract').mockRejectedValueOnce(
|
|
882
|
+
new Error('Transaction failed')
|
|
883
|
+
);
|
|
884
|
+
|
|
885
|
+
const response = await client.claimBlackholePendingRewards({
|
|
886
|
+
vaultAddress: testVaultAddress as `0x${string}`
|
|
887
|
+
});
|
|
888
|
+
|
|
889
|
+
expect(response.success).toBe(true);
|
|
890
|
+
expect(response.status).toBe(200);
|
|
891
|
+
expect(response.data).toBeDefined();
|
|
892
|
+
|
|
893
|
+
if (response.data && typeof response.data === 'object' && 'rewards' in response.data) {
|
|
894
|
+
expect(response.data.rewards).toBe(BigInt(0));
|
|
895
|
+
expect(response.data.extraRewards).toBe(BigInt(0));
|
|
896
|
+
}
|
|
897
|
+
});
|
|
898
|
+
|
|
899
|
+
it('should handle missing wallet account gracefully', async () => {
|
|
900
|
+
const testVaultAddress = '0x1234567890123456789012345678901234567890';
|
|
901
|
+
|
|
902
|
+
// Mock getAddresses to return empty array
|
|
903
|
+
jest.spyOn(client['walletClient'], 'getAddresses').mockResolvedValueOnce([]);
|
|
904
|
+
|
|
905
|
+
const response = await client.claimBlackholePendingRewards({
|
|
906
|
+
vaultAddress: testVaultAddress as `0x${string}`
|
|
907
|
+
});
|
|
908
|
+
|
|
909
|
+
expect(response.success).toBe(true);
|
|
910
|
+
expect(response.status).toBe(200);
|
|
911
|
+
expect(response.data).toBeDefined();
|
|
912
|
+
|
|
913
|
+
if (response.data && typeof response.data === 'object' && 'rewards' in response.data) {
|
|
914
|
+
expect(response.data.rewards).toBe(BigInt(0));
|
|
915
|
+
expect(response.data.extraRewards).toBe(BigInt(0));
|
|
916
|
+
}
|
|
917
|
+
});
|
|
918
|
+
});
|
|
919
|
+
|
|
920
|
+
describe('Integration Tests for Reward Functions', () => {
|
|
921
|
+
let realSteerClient: SteerClient;
|
|
922
|
+
|
|
923
|
+
beforeAll(() => {
|
|
924
|
+
// Create real clients for blockchain interaction
|
|
925
|
+
const publicClient = createPublicClient({
|
|
926
|
+
chain: avalanche,
|
|
927
|
+
transport: http()
|
|
928
|
+
});
|
|
929
|
+
|
|
930
|
+
const walletClient = createWalletClient({
|
|
931
|
+
chain: avalanche,
|
|
932
|
+
transport: http(),
|
|
933
|
+
});
|
|
934
|
+
|
|
935
|
+
// Initialize SteerClient with real clients
|
|
936
|
+
realSteerClient = new SteerClient({
|
|
937
|
+
environment: 'production',
|
|
938
|
+
client: publicClient,
|
|
939
|
+
walletClient: walletClient
|
|
940
|
+
});
|
|
941
|
+
});
|
|
942
|
+
|
|
943
|
+
it('should calculate pending rewards for real vault', async () => {
|
|
944
|
+
// Using a real vault address on Polygon for testing
|
|
945
|
+
const testVault = "0xa49c49d120ecfbd1f40d3e16bad63b2caf149926" as `0x${string}`;
|
|
946
|
+
const userAddress = "0xCD88431107B72b1a1aa13DE27Ab894e27C7D1a61" as `0x${string}`;
|
|
947
|
+
|
|
948
|
+
const response = await realSteerClient.vaults.calculatePendingRewards({
|
|
949
|
+
vaultAddress: testVault,
|
|
950
|
+
user: userAddress
|
|
951
|
+
});
|
|
952
|
+
|
|
953
|
+
expect(response.success).toBe(true);
|
|
954
|
+
expect(response.status).toBe(200);
|
|
955
|
+
expect(response.data).toBeDefined();
|
|
956
|
+
|
|
957
|
+
if (response.data) {
|
|
958
|
+
// The function should return bigint values (even if zero)
|
|
959
|
+
expect(typeof response.data.rewards).toBe('bigint');
|
|
960
|
+
expect(typeof response.data.extraRewards).toBe('bigint');
|
|
961
|
+
|
|
962
|
+
console.log('Pending rewards:', response.data.rewards.toString());
|
|
963
|
+
console.log('Pending extra rewards:', response.data.extraRewards.toString());
|
|
964
|
+
}
|
|
965
|
+
}, 30000);
|
|
966
|
+
|
|
967
|
+
it('should handle reward calculation for vault without reward function', async () => {
|
|
968
|
+
// Using a vault that likely doesn't have the reward function
|
|
969
|
+
const testVault = "0x0fe4cbd6ce903ec1ea8e743972660aecab6badf7" as `0x${string}`;
|
|
970
|
+
const userAddress = "0x1234567890123456789012345678901234567890" as `0x${string}`;
|
|
971
|
+
|
|
972
|
+
const response = await realSteerClient.vaults.calculatePendingRewards({
|
|
973
|
+
vaultAddress: testVault,
|
|
974
|
+
user: userAddress
|
|
975
|
+
});
|
|
976
|
+
|
|
977
|
+
expect(response.success).toBe(true);
|
|
978
|
+
expect(response.status).toBe(200);
|
|
979
|
+
expect(response.data).toBeDefined();
|
|
980
|
+
|
|
981
|
+
if (response.data) {
|
|
982
|
+
// Should return zero values when function doesn't exist or reverts
|
|
983
|
+
expect(response.data.rewards).toBe(BigInt(0));
|
|
984
|
+
expect(response.data.extraRewards).toBe(BigInt(0));
|
|
985
|
+
}
|
|
986
|
+
}, 30000);
|
|
987
|
+
|
|
988
|
+
it('should handle claim rewards for vault without claim function', async () => {
|
|
989
|
+
// Note: This test won't actually send a transaction since we don't have a real private key
|
|
990
|
+
// But it will test the error handling path
|
|
991
|
+
const testVault = "0x0fe4cbd6ce903ec1ea8e743972660aecab6badf7" as `0x${string}`;
|
|
992
|
+
|
|
993
|
+
const response = await realSteerClient.vaults.claimBlackholePendingRewards({
|
|
994
|
+
vaultAddress: testVault
|
|
995
|
+
});
|
|
996
|
+
|
|
997
|
+
expect(response.success).toBe(true);
|
|
998
|
+
expect(response.status).toBe(200);
|
|
999
|
+
expect(response.data).toBeDefined();
|
|
1000
|
+
|
|
1001
|
+
if (response.data && typeof response.data === 'object' && 'rewards' in response.data) {
|
|
1002
|
+
// Should return zero values when function doesn't exist or reverts
|
|
1003
|
+
expect(response.data.rewards).toBe(BigInt(0));
|
|
1004
|
+
expect(response.data.extraRewards).toBe(BigInt(0));
|
|
1005
|
+
}
|
|
1006
|
+
}, 30000);
|
|
1007
|
+
});
|
|
1008
|
+
});
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
});
|