@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 @@
|
|
|
1
|
+
{"version":3,"file":"VaultClient.js","sourceRoot":"","sources":["../../../src/base/VaultClient.ts"],"names":[],"mappings":"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","sourcesContent":["import { createClient } from '@steerprotocol/api-sdk';\nimport { Pool as PoolV3 } from \"@uniswap/v3-sdk\";\nimport type { Address, Hash, PublicClient, WalletClient } from 'viem';\nimport { chainIdToName, getBeaconNameByProtocol } from '../const';\nimport { getProtocolsForChainId } from '../const/amm/utils/protocol';\nimport { ChainId, MultiPositionManagers, Protocol } from '../const/chain';\nimport { steerSubgraphConfig } from '../const/subgraph';\nimport { SubgraphVaultClient } from '../utils/SubgraphVaultClient';\nimport { getApiUrl } from '../const/api.js';\nimport { abis } from '../const/deployments/abis.js';\nimport { SteerResponse, VaultDetailsResponse } from '../types.js';\nimport { SubgraphClient } from './SubgraphClient.js';\nimport { VaultDepositClient } from './vault/deposit/index.js';\nimport { PoolInstanceParams, VaultDepositParams } from './vault/deposit/types.js';\nimport { SingleAssetDepositClient } from './vault/single-asset/index.js';\nimport type {\n SingleAssetDepositParams,\n SingleAssetDepositPreview\n} from './vault/single-asset/types.js';\nimport { VaultWithdrawClient } from './vault/withdraw/index.js';\nimport { TokensFromLpResponse, VaultWithdrawParams } from './vault/withdraw/types.js';\nexport * from \"./vault/single-asset/index.js\";\n\nconst VAULT_ABI = abis.QuickSwapUniv3MultiPositionLiquidityManager;\n\n// Custom ABI for reward functions\nconst REWARD_FUNCTIONS_ABI = [\n {\n \"type\": \"function\",\n \"name\": \"calculatePendingRewards\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"rewards\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"extraRewards\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"inputs\": [],\n \"name\": \"claimUserRewards\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n \n] as const;\n\nexport interface VaultApproveParams {\n vaultAddress: Address;\n spender: Address;\n amount: bigint;\n}\n\nexport interface VaultAllowanceParams {\n vaultAddress: Address;\n owner: Address;\n spender: Address;\n}\n\nexport interface VaultBalanceParams {\n vaultAddress: Address;\n account: Address;\n}\n\n// Pagination interfaces matching API SDK types\nexport interface ApiPageInfo {\n hasNextPage: boolean;\n endCursor: string | null;\n}\n\nexport interface VaultNode {\n id: string;\n chainId: number;\n vaultAddress: string;\n protocol: string;\n beaconName: string;\n protocolBaseType: string;\n name: string;\n feeApr?: number;\n stakingApr?: number;\n merklApr?: number;\n pool: {\n poolAddress: string;\n id: string;\n feeTier: string;\n tick?: string;\n liquidity?: string;\n volumeUSD?: string;\n totalValueLockedUSD?: string;\n };\n token0: {\n id: string;\n symbol: string;\n name: string;\n decimals: number;\n address: string;\n chainId: number;\n };\n token1: {\n id: string;\n symbol: string;\n name: string;\n decimals: number;\n address: string;\n chainId: number;\n };\n}\n\nexport interface VaultEdge {\n cursor: string;\n node: VaultNode;\n}\n\nexport interface VaultsConnection {\n edges: readonly VaultEdge[];\n pageInfo: ApiPageInfo;\n totalCount: number;\n}\n\nexport interface TokenNode {\n id: string;\n symbol: string;\n name: string;\n decimals: number;\n chainId: number;\n address: string;\n}\n\nexport interface TokenEdge {\n cursor: string;\n node: TokenNode;\n}\n\nexport interface TokensConnection {\n edges: readonly TokenEdge[];\n pageInfo: ApiPageInfo;\n totalCount: number;\n}\n\nexport interface PoolNode {\n id: string;\n chainId: number;\n feeTier: string;\n token0: {\n id: string;\n symbol: string;\n name: string;\n decimals: number;\n address: string;\n chainId: number;\n };\n token1: {\n id: string;\n symbol: string;\n name: string;\n decimals: number;\n address: string;\n chainId: number;\n };\n}\n\nexport interface PoolEdge {\n cursor: string;\n node: PoolNode;\n}\n\nexport interface PoolsConnection {\n edges: readonly PoolEdge[];\n pageInfo: ApiPageInfo;\n totalCount: number;\n}\n\nexport interface VaultFilter {\n chainId?: number;\n protocol?: string;\n isActive?: boolean;\n beaconName?: string;\n}\n\nexport interface TokenFilter {\n chainId?: number;\n symbol?: string;\n}\n\nexport interface PoolFilter {\n chainId?: number;\n protocol?: string;\n minLiquidity?: string;\n}\n\nexport interface VaultApr {\n apr: {\n apr: number;\n message: string;\n };\n beaconName: string;\n vaultAddress: string;\n}\n\nexport interface AprResponse {\n vaults: VaultApr[];\n}\n\nexport interface AprFilter {\n chainId: number;\n protocol: string;\n}\n\nexport interface PendingRewardsParams {\n vaultAddress: Address;\n user: Address;\n}\n\nexport interface PendingRewardsResponse {\n rewards: bigint;\n extraRewards: bigint;\n}\n\nexport interface ClaimRewardsParams {\n vaultAddress: Address;\n}\n\nexport interface BlackholeAprDetailedParams {\n vaultAddress: Address;\n chainId: number;\n}\n\nexport interface BlackholeSnapshotAnalysis {\n period: number;\n fromTimestamp: number;\n toTimestamp: number;\n fromDate: string;\n toDate: string;\n durationSeconds: number;\n durationHours: number;\n tvlUSD: number;\n feesUSD: number;\n apr: number;\n}\n\nexport interface BlackholeAprDetailedResponse {\n vaultAddress: string;\n beaconName: string;\n apr: {\n apr: number;\n message: string;\n };\n snapshotAnalysis: BlackholeSnapshotAnalysis[];\n}\n\n/**\n * Client for interacting with Steer Protocol's Vault system.\n * This client provides functionality for vault operations, deposit/withdraw, and comprehensive data fetching.\n * \n * **Features:**\n * - Vault data includes associated pool information (pool address, fee tier) along with token details\n * - Full pagination support for all data fetching methods\n * - API client integration for efficient data retrieval\n * - Backward compatibility with subgraph queries\n * \n * **Available API Client Methods:**\n * - `getVaults()` - Get vaults with pagination and filtering\n * - `getTokens()` - Get tokens with pagination and filtering\n * - `getPools()` - Get pools with pagination and filtering\n * - `getAllVaults()` - Get all vaults (auto-pagination)\n * - `getAllTokens()` - Get all tokens (auto-pagination)\n * - `getAllPools()` - Get all pools (auto-pagination)\n * \n * @example\n * ```typescript\n * import { createPublicClient, createWalletClient, http } from 'viem';\n * import { mainnet } from 'viem/chains';\n * import { VaultClient } from '@steerprotocol/sdk';\n * \n * // Create viem clients\n * const publicClient = createPublicClient({\n * chain: mainnet,\n * transport: http()\n * });\n * \n * const walletClient = createWalletClient({\n * chain: mainnet,\n * transport: http()\n * });\n * \n * // Initialize the Vault client\n * const vaultClient = new VaultClient(publicClient, walletClient, 'production');\n * \n * // Get vaults with pagination - includes pool information\n * const vaults = await vaultClient.getVaults({ chainId: 1 }, 10, null);\n * \n * if (vaults.success && vaults.data) {\n * vaults.data.edges.forEach((edge) => {\n * const vault = edge.node;\n * console.log(`${vault.token0.symbol}/${vault.token1.symbol} vault`);\n * console.log(`Pool: ${vault.pool.id} (${vault.pool.feeTier} fee tier)`);\n * console.log(`Protocol: ${vault.protocol} (${vault.beaconName})`);\n * });\n * }\n * \n * // Get all tokens for a chain\n * const allTokens = await vaultClient.getAllTokens({ chainId: 1 });\n * \n * // Get pools with specific filters\n * const pools = await vaultClient.getPools({ \n * chainId: 1, \n * protocol: 'uniswap-v3' \n * });\n * \n * // Traditional vault operations\n * const depositTx = await vaultClient.deposit(depositParams);\n * const withdrawTx = await vaultClient.withdraw(withdrawParams);\n * ```\n * \n * @group Client\n */\nexport class VaultClient extends SubgraphClient {\n protected readonly apiClient: ReturnType<typeof createClient>;\n protected readonly publicClient: PublicClient;\n protected readonly walletClient: WalletClient;\n private readonly depositClient: VaultDepositClient;\n private readonly withdrawClient: VaultWithdrawClient;\n public readonly singleAssetDepositClient: SingleAssetDepositClient;\n private readonly subgraphVaultClient: SubgraphVaultClient;\n private readonly subgraphStudioKey: string;\n\n /**\n * Creates a new instance of VaultClient\n * @param publicClient - The public client for reading from the blockchain\n * @param walletClient - The wallet client for writing to the blockchain\n * @param environment - The environment to use ('production' or 'development')\n * @param version - Optional API version to use (defaults to 'v1')\n * @param subgraphStudioKey - Optional subgraph studio key for protocol data fetching\n */\n constructor(\n publicClient: PublicClient, \n walletClient: WalletClient,\n environment: 'production' | 'development',\n version: 'v1' = 'v1',\n subgraphStudioKey?: string\n ) {\n const combinedClient = publicClient as PublicClient & WalletClient;\n super(combinedClient);\n \n const apiUrl = getApiUrl(environment, version);\n this.apiClient = createClient(apiUrl);\n this.publicClient = publicClient;\n this.walletClient = walletClient;\n this.depositClient = new VaultDepositClient(publicClient, walletClient);\n this.withdrawClient = new VaultWithdrawClient(publicClient, walletClient);\n this.singleAssetDepositClient = new SingleAssetDepositClient(publicClient, walletClient);\n this.subgraphVaultClient = new SubgraphVaultClient();\n this.subgraphStudioKey = subgraphStudioKey || '';\n }\n\n /**\n * Gets vaults with pagination support\n * @param filter - Optional filter criteria\n * @param first - Number of items to fetch (default: 50)\n * @param after - Cursor for pagination (null for first page)\n * @returns Promise resolving to paginated vaults data\n * \n * @example\n * ```typescript\n * // Get first 20 vaults for Ethereum\n * const vaults = await vaultClient.getVaults({ chainId: 1 }, 20);\n * \n * if (vaults.success && vaults.data) {\n * vaults.data.edges.forEach((edge) => {\n * const vault = edge.node;\n * console.log(`Vault: ${vault.name}`);\n * console.log(`Pool: ${vault.pool.id}`);\n * console.log(`Pool Fee Tier: ${vault.pool.feeTier}`);\n * console.log(`Tokens: ${vault.token0.symbol}/${vault.token1.symbol}`);\n * });\n * }\n * \n * // Get next page using cursor\n * if (vaults.data?.pageInfo.hasNextPage) {\n * const nextPage = await vaultClient.getVaults(\n * { chainId: 1 }, \n * 20, \n * vaults.data.pageInfo.endCursor\n * );\n * }\n * \n * // For additional pool details (liquidity, volume, etc.), use the PoolClient:\n * // const poolDetails = await poolClient.getPoolById(vault.pool.id, protocol, chainId);\n * ```\n */\n public async getVaults(\n filter?: VaultFilter,\n first: number = 50,\n after?: string | null\n ): Promise<SteerResponse<VaultsConnection>> {\n\n \n\n if (filter?.chainId !== ChainId.Avalanche) {\n try {\n // First try the API client\n const response = await this.apiClient.vaults({\n filter,\n first,\n after\n });\n\n if (response.data?.vaults) {\n // Transform the response to match our interface\n const transformedData: VaultsConnection = {\n edges: response.data.vaults.edges.map(edge => ({\n cursor: edge.cursor,\n node: {\n id: edge.node.id,\n chainId: edge.node.chainId,\n vaultAddress: edge.node.vaultAddress,\n protocol: edge.node.protocol,\n beaconName: edge.node.beaconName,\n protocolBaseType: edge.node.protocolBaseType,\n name: edge.node.name || '',\n feeApr: edge.node.feeApr || undefined,\n stakingApr: edge.node.stakingApr || undefined,\n merklApr: edge.node.merklApr || undefined,\n pool: {\n id: edge.node.pool?.id || '',\n poolAddress: edge.node.pool?.poolAddress || '',\n feeTier: edge.node.pool?.feeTier || '',\n tick: undefined, // Not available in API response\n liquidity: undefined, // Not available in API response\n volumeUSD: undefined, // Not available in API response\n totalValueLockedUSD: undefined // Not available in API response\n },\n token0: {\n id: edge.node.token0?.id || '',\n symbol: edge.node.token0?.symbol || '',\n name: edge.node.token0?.name || '',\n decimals: edge.node.token0?.decimals || 0,\n address: edge.node.token0?.address || '',\n chainId: edge.node.token0?.chainId || 0\n },\n token1: {\n id: edge.node.token1?.id || '',\n symbol: edge.node.token1?.symbol || '',\n name: edge.node.token1?.name || '',\n decimals: edge.node.token1?.decimals || 0,\n address: edge.node.token1?.address || '',\n chainId: edge.node.token1?.chainId || 0\n }\n }\n })),\n pageInfo: {\n hasNextPage: response.data.vaults.pageInfo.hasNextPage,\n endCursor: response.data.vaults.pageInfo.endCursor ?? null\n },\n totalCount: response.data.vaults.totalCount\n };\n\n return {\n data: transformedData,\n status: response.status,\n success: true\n };\n }\n } catch (apiError) {\n console.warn('API client failed, falling back to subgraph:', apiError);\n }\n }\n\n // Fallback to subgraph if API fails or returns no data\n try {\n return await this.getVaultsFromSubgraph(filter, first, after);\n } catch (subgraphError) {\n console.error('Both API and subgraph failed:', subgraphError);\n return {\n data: null,\n status: 500,\n success: false,\n error: subgraphError instanceof Error ? subgraphError.message : 'Both API and subgraph requests failed'\n };\n }\n }\n\n /**\n * Fallback method to fetch vaults from subgraph\n * @param filter - Optional filter criteria\n * @param first - Number of items to fetch (default: 50)\n * @param after - Cursor for pagination (null for first page)\n * @returns Promise resolving to paginated vaults data from subgraph\n * @private\n */\n private async getVaultsFromSubgraph(\n filter?: VaultFilter,\n first: number = 50,\n after?: string | null\n ): Promise<SteerResponse<VaultsConnection>> {\n try {\n // Extract chainId from filter\n const chainId = filter?.chainId;\n if (!chainId) {\n throw new Error('ChainId is required for subgraph fallback');\n }\n\n // Get chain enum from chainId\n\n const chain = chainIdToName(chainId);\n \n if (!chain) { \n throw new Error(`Unsupported chainId: ${chainId}`);\n }\n\n // Get subgraph URL for this chain\n const subgraphUrl = steerSubgraphConfig[chain];\n if (!subgraphUrl) {\n throw new Error(`No subgraph configured for chain: ${chain}`);\n }\n\n const beaconNames = [];\n\n if (filter?.protocol) {\n const beacon = getBeaconNameByProtocol(filter.protocol as Protocol);\n beaconNames.push(beacon);\n\n if (filter?.protocol === Protocol.Blackhole) {\n beaconNames.push(MultiPositionManagers.MultiPositionBlackholeOld);\n }\n }\n\n if (filter?.beaconName) {\n beaconNames.push(filter.beaconName);\n }\n\n // Fetch all vaults from subgraph\n const subgraphVaults = await this.subgraphVaultClient.getAllVaultsFromSubgraph({\n subgraphUrl,\n chainId,\n showDeprecated: false,\n showCurrentProtocol: false,\n beaconNames: beaconNames\n });\n\n // Get all supported protocols for this chain\n const supportedProtocols = getProtocolsForChainId(chainId, this.subgraphStudioKey);\n \n // Fetch APR data for all protocols in parallel\n const aprPromises = supportedProtocols.map(protocol => \n this.getAprs({ chainId, protocol }).catch(error => {\n console.warn(`Failed to fetch APR for protocol ${protocol}:`, error);\n return { success: false, data: null };\n })\n );\n\n const aprResults = await Promise.all(aprPromises);\n \n // Create a map of vault address to APR for quick lookup\n const aprMap = new Map<string, number>();\n aprResults && aprResults.forEach(aprResult => {\n if (aprResult.success && aprResult.data) {\n aprResult?.data?.vaults && aprResult.data.vaults.forEach(vaultApr => {\n aprMap.set(vaultApr.vaultAddress.toLowerCase(), vaultApr.apr.apr);\n });\n }\n });\n\n // Transform to VaultsConnection format with pagination and populate APR data\n const vaultsConnection = this.subgraphVaultClient.transformToVaultsConnection(\n subgraphVaults,\n chainId,\n first,\n aprMap,\n after\n );\n\n // Enhance vault data with APR information\n if (vaultsConnection.edges) {\n vaultsConnection.edges = vaultsConnection.edges.map(edge => ({\n ...edge,\n node: {\n ...edge.node,\n feeApr: aprMap.get(edge.node.vaultAddress.toLowerCase()) || edge.node.feeApr\n }\n }));\n }\n\n return {\n data: vaultsConnection,\n status: 200,\n success: true\n };\n\n } catch (error) {\n console.error('Subgraph vault fetch failed:', error);\n throw error;\n }\n }\n\n /**\n * Gets tokens with pagination support\n * @param filter - Optional filter criteria\n * @param first - Number of items to fetch (default: 50)\n * @param after - Cursor for pagination (null for first page)\n * @returns Promise resolving to paginated tokens data\n * \n * @example\n * ```typescript\n * // Get first 100 tokens\n * const tokens = await vaultClient.getTokens({ chainId: 1 }, 100);\n * \n * // Filter by symbol\n * const usdcTokens = await vaultClient.getTokens({ symbol: 'USDC' });\n * ```\n */\n public async getTokens(\n filter?: TokenFilter,\n first: number = 50,\n after?: string | null\n ): Promise<SteerResponse<TokensConnection>> {\n try {\n const response = await this.apiClient.tokens({\n filter,\n first,\n after\n });\n\n if (!response.data?.tokens) {\n return {\n data: null,\n status: response.status,\n success: true\n };\n }\n\n // Transform the response to match our interface\n const transformedData: TokensConnection = {\n edges: response.data.tokens.edges.map(edge => ({\n cursor: edge.cursor,\n node: {\n id: edge.node.id,\n symbol: edge.node.symbol,\n name: edge.node.name,\n decimals: edge.node.decimals,\n chainId: edge.node.chainId,\n address: edge.node.address\n }\n })),\n pageInfo: {\n hasNextPage: response.data.tokens.pageInfo.hasNextPage,\n endCursor: response.data.tokens.pageInfo.endCursor ?? null\n },\n totalCount: response.data.tokens.totalCount\n };\n\n return {\n data: transformedData,\n status: response.status,\n success: true\n };\n } catch (error) {\n return {\n data: null,\n status: 501,\n success: false,\n error: 'getTokens is not supported for this configuration'\n };\n }\n }\n\n /**\n * Gets pools with pagination support\n * @param filter - Optional filter criteria\n * @param first - Number of items to fetch (default: 50)\n * @param after - Cursor for pagination (null for first page)\n * @returns Promise resolving to paginated pools data\n * \n * @example\n * ```typescript\n * // Get first 50 pools for Ethereum\n * const pools = await vaultClient.getPools({ chainId: 1 }, 50);\n * \n * // Filter by minimum liquidity\n * const liquidPools = await vaultClient.getPools({ \n * chainId: 1, \n * minLiquidity: '1000000' \n * });\n * ```\n */\n public async getPools(\n filter?: PoolFilter,\n first: number = 50,\n after?: string | null\n ): Promise<SteerResponse<PoolsConnection>> {\n try {\n const response = await this.apiClient.pools({\n filter,\n first,\n after\n });\n\n if (!response.data?.pools) {\n return {\n data: null,\n status: response.status,\n success: true\n };\n }\n\n // Transform the response to match our interface\n const transformedData: PoolsConnection = {\n edges: response.data.pools.edges.map(edge => ({\n cursor: edge.cursor,\n node: {\n id: edge.node.id,\n chainId: edge.node.chainId,\n feeTier: edge.node.feeTier,\n token0: {\n id: edge.node.token0?.id || '',\n symbol: edge.node.token0?.symbol || '',\n name: edge.node.token0?.name || '',\n decimals: edge.node.token0?.decimals || 0,\n address: edge.node.token0?.address || '',\n chainId: edge.node.token0?.chainId || 0\n },\n token1: {\n id: edge.node.token1?.id || '',\n symbol: edge.node.token1?.symbol || '',\n name: edge.node.token1?.name || '',\n decimals: edge.node.token1?.decimals || 0,\n address: edge.node.token1?.address || '',\n chainId: edge.node.token1?.chainId || 0\n }\n }\n })),\n pageInfo: {\n hasNextPage: response.data.pools.pageInfo.hasNextPage,\n endCursor: response.data.pools.pageInfo.endCursor ?? null\n },\n totalCount: response.data.pools.totalCount\n };\n\n return {\n data: transformedData,\n status: response.status,\n success: true\n };\n } catch (error) {\n return {\n data: null,\n status: 501,\n success: false,\n error: 'getPools is not supported for this configuration'\n };\n }\n }\n\n /**\n * Gets all vaults by fetching all pages automatically\n * @param filter - Optional filter criteria\n * @param batchSize - Number of items to fetch per batch (default: 100)\n * @returns Promise resolving to all vaults data (includes pool information)\n * \n * @example\n * ```typescript\n * // Get all vaults for a specific chain\n * const allVaults = await vaultClient.getAllVaults({ chainId: 1 });\n * console.log(`Found ${allVaults.data?.length} vaults`);\n * \n * // Access pool information for each vault\n * allVaults.data?.forEach(vault => {\n * console.log(`Vault ${vault.name}: Pool ${vault.pool.id} (${vault.pool.feeTier} fee)`);\n * });\n * ```\n */\n public async getAllVaults(\n filter?: VaultFilter,\n batchSize: number = 100\n ): Promise<SteerResponse<VaultNode[]>> {\n try {\n const allVaults: VaultNode[] = [];\n let hasNextPage = true;\n let cursor: string | null = null;\n\n while (hasNextPage) {\n const response = await this.getVaults(filter, batchSize, cursor);\n \n if (!response.success || !response.data) {\n return {\n data: null,\n status: response.status,\n success: false,\n error: response.error || 'Failed to fetch vaults'\n };\n }\n\n allVaults.push(...response.data.edges.map(edge => edge.node));\n hasNextPage = response.data.pageInfo.hasNextPage;\n cursor = response.data.pageInfo.endCursor;\n }\n\n return {\n data: allVaults,\n status: 200,\n success: true\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred'\n };\n }\n }\n\n /**\n * Gets all tokens by fetching all pages automatically\n * @param filter - Optional filter criteria\n * @param batchSize - Number of items to fetch per batch (default: 100)\n * @returns Promise resolving to all tokens data\n */\n public async getAllTokens(\n filter?: TokenFilter,\n batchSize: number = 100\n ): Promise<SteerResponse<TokenNode[]>> {\n try {\n const allTokens: TokenNode[] = [];\n let hasNextPage = true;\n let cursor: string | null = null;\n\n while (hasNextPage) {\n const response = await this.getTokens(filter, batchSize, cursor);\n \n if (!response.success || !response.data) {\n return {\n data: null,\n status: response.status,\n success: false,\n error: response.error || 'Failed to fetch tokens'\n };\n }\n\n allTokens.push(...response.data.edges.map(edge => edge.node));\n hasNextPage = response.data.pageInfo.hasNextPage;\n cursor = response.data.pageInfo.endCursor;\n }\n\n return {\n data: allTokens,\n status: 200,\n success: true\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred'\n };\n }\n }\n\n /**\n * Gets all pools by fetching all pages automatically\n * @param filter - Optional filter criteria\n * @param batchSize - Number of items to fetch per batch (default: 100)\n * @returns Promise resolving to all pools data\n */\n public async getAllPools(\n filter?: PoolFilter,\n batchSize: number = 100\n ): Promise<SteerResponse<PoolNode[]>> {\n try {\n const allPools: PoolNode[] = [];\n let hasNextPage = true;\n let cursor: string | null = null;\n\n while (hasNextPage) {\n const response = await this.getPools(filter, batchSize, cursor);\n \n if (!response.success || !response.data) {\n return {\n data: null,\n status: response.status,\n success: false,\n error: response.error || 'Failed to fetch pools'\n };\n }\n\n allPools.push(...response.data.edges.map(edge => edge.node));\n hasNextPage = response.data.pageInfo.hasNextPage;\n cursor = response.data.pageInfo.endCursor;\n }\n\n return {\n data: allPools,\n status: 200,\n success: true\n };\n } catch (error) {\n return {\n data: null,\n status: 501,\n success: false,\n error: 'getAllPools is not supported for this configuration'\n };\n }\n }\n\n /**\n * Gets APR data for vaults from the Steer Finance API\n * @param filter - Filter containing chainId and protocol\n * @returns Promise resolving to APR data for vaults\n * \n * @example\n * ```typescript\n * // Get APRs for Uniswap vaults on Nibiru (chainId: 6900)\n * const aprs = await vaultClient.getAprs({ chainId: 6900, protocol: 'Uniswap' });\n * \n * if (aprs.success && aprs.data) {\n * aprs.data.vaults.forEach(vault => {\n * console.log(`Vault: ${vault.vaultAddress}`);\n * console.log(`APR: ${vault.apr.apr}% (${vault.apr.message})`);\n * console.log(`Beacon: ${vault.beaconName}`);\n * });\n * }\n * ```\n */\n public async getAprs(filter: AprFilter): Promise<SteerResponse<AprResponse>> {\n try {\n const { chainId, protocol } = filter;\n \n // Build the API URL\n const apiUrl = `https://api.steer.finance/getAprs?chainId=${chainId}&dexName=${protocol}`;\n \n const response = await fetch(apiUrl, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n return {\n data: null,\n status: response.status,\n success: false,\n error: `API request failed: ${response.statusText}`\n };\n }\n\n const data: AprResponse = await response.json();\n\n return {\n data,\n status: response.status,\n success: true\n };\n\n } catch (error) {\n return {\n data: null,\n status: 501,\n success: false,\n error: 'getAprs is not supported for this configuration'\n };\n }\n }\n\n /**\n * Gets detailed APR data for a specific Blackhole vault from the Steer Finance API\n * This includes snapshot analysis with historical APR data over different time periods\n * \n * @param params - Parameters containing vault address and chain ID\n * @returns Promise resolving to detailed APR data including snapshot analysis\n * \n * @example\n * ```typescript\n * // Get detailed APR for a Blackhole vault on Avalanche\n * const aprDetails = await vaultClient.getBlackholeAprDetailed({\n * vaultAddress: '0x5c1d454f08975c554f6b70a84fd8859fbdfcc069',\n * chainId: 43114\n * });\n * \n * if (aprDetails.success && aprDetails.data) {\n * console.log(`Vault: ${aprDetails.data.vaultAddress}`);\n * console.log(`Beacon: ${aprDetails.data.beaconName}`);\n * console.log(`Current APR: ${aprDetails.data.apr.apr}% (${aprDetails.data.apr.message})`);\n * \n * // Access snapshot analysis\n * aprDetails.data.snapshotAnalysis.forEach(snapshot => {\n * console.log(`Period ${snapshot.period}:`);\n * console.log(` Duration: ${snapshot.durationHours} hours`);\n * console.log(` TVL: $${snapshot.tvlUSD}`);\n * console.log(` Fees: $${snapshot.feesUSD}`);\n * console.log(` APR: ${snapshot.apr}%`);\n * });\n * }\n * ```\n */\n public async getBlackholeVaultApr(params: BlackholeAprDetailedParams): Promise<SteerResponse<BlackholeAprDetailedResponse>> {\n try {\n const { vaultAddress, chainId } = params;\n \n // Build the API URL\n const apiUrl = `https://api.steer.finance/blackhole/apr-detailed?vaultAddress=${vaultAddress}&chainId=${chainId}`;\n \n const response = await fetch(apiUrl, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n return {\n data: null,\n status: response.status,\n success: false,\n error: `API request failed: ${response.statusText}`\n };\n }\n\n const data: BlackholeAprDetailedResponse = await response.json();\n\n return {\n data,\n status: response.status,\n success: true\n };\n\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Failed to fetch Blackhole APR details'\n };\n }\n }\n\n /**\n * Gets the latest vaults from the subgraph\n */\n public async getLatestVaults<T>(): Promise<SteerResponse<T>> {\n const query = ` \n query latestVaults{\n vaults(first: 250, skip: 0, orderBy: createdAt, orderDirection: desc, where: {\n gasUsed_gt: 0\n } ) {\n id\n beaconName\n createdAt\n gasUsed\n token1Symbol\n token0Symbol\n token0\n token1\n token0Name\n token1Name\n strategyToken {\n id\n name\n creator {\n id\n }\n }\n }\n }\n `;\n\n return this.executeSubgraphQuery<T>(query);\n }\n\n /**\n * Deposits tokens into a vault\n * @param params The deposit parameters\n */\n public async deposit(params: VaultDepositParams): Promise<SteerResponse<Hash>> {\n return this.depositClient.deposit(params);\n }\n\n /**\n * Prepares the transaction data for depositing tokens into a vault without executing it\n * @param params The deposit parameters\n */\n public async prepareDepositTx(params: VaultDepositParams): Promise<SteerResponse<{\n address: Address;\n abi: {\n type: string;\n inputs: {\n name: string;\n internalType: string;\n type: string;\n }[];\n name: string;\n outputs: {\n internalType: string;\n name: string;\n type: string;\n }[];\n stateMutability: string;\n }[];\n functionName: string;\n args: readonly [Address, bigint, bigint, bigint, bigint, Address] | readonly [bigint, bigint, bigint, bigint, Address];\n }>> {\n return this.depositClient.prepareDepositTx(params);\n }\n\n /**\n * Gets the deposit ratio for a vault\n * @param vaultAddress The vault address\n */\n public async getDepositRatio(vaultAddress: Address, zeroForOne: boolean): Promise<SteerResponse<VaultDetailsResponse>> {\n try {\n const ratioResponse = await this.depositClient.getDepositRatio(vaultAddress, zeroForOne);\n if (!ratioResponse.success || !ratioResponse.data) {\n throw new Error(ratioResponse.error || 'Failed to get deposit ratio');\n }\n\n return {\n data: {\n details: ratioResponse.data.vaultDetails,\n ratio: ratioResponse.data.ratio,\n },\n status: 200,\n success: true\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred'\n };\n }\n }\n\n /**\n * Withdraws tokens from a vault\n * @param params The withdrawal parameters\n */\n public async withdraw(params: VaultWithdrawParams): Promise<SteerResponse<Hash>> {\n return this.withdrawClient.withdraw(params);\n }\n\n /**\n * Prepares the transaction data for withdrawing tokens from a vault without executing it\n * @param params The withdrawal parameters\n */\n public async prepareWithdrawTx(params: VaultWithdrawParams): Promise<SteerResponse<{\n address: Address;\n abi: {\n type: string;\n inputs: {\n name: string;\n internalType: string;\n type: string;\n }[];\n name: string;\n outputs: never[];\n stateMutability: string;\n }[];\n functionName: string;\n args: readonly [\n bigint,\n bigint,\n bigint,\n Address\n ];\n }>> {\n return this.withdrawClient.prepareWithdrawTx(params);\n }\n\n /**\n * Calculates the amount of tokens that would be received for a given amount of LP tokens\n * @param vaultAddress The vault address\n * @param lpToken The amount of LP tokens to calculate for\n */\n public async getTokensFromLp(\n vaultAddress: Address,\n lpToken: bigint\n ): Promise<SteerResponse<TokensFromLpResponse>> {\n return this.withdrawClient.getTokensFromLp(vaultAddress, lpToken);\n }\n\n /**\n * Approves spending of tokens for a vault\n * @param params The approval parameters\n */\n public async approve(params: VaultApproveParams): Promise<SteerResponse<Hash>> {\n try {\n const account = await this.walletClient.getAddresses();\n if (!account[0]) throw new Error('No account found');\n\n const { request } = await this.publicClient.simulateContract({\n address: params.vaultAddress,\n abi: VAULT_ABI,\n functionName: 'approve',\n args: [params.spender, params.amount],\n account: account[0],\n });\n\n const hash = await this.walletClient.writeContract(request);\n\n return {\n data: hash,\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Gets the allowance for a vault token\n * @param params The allowance parameters\n */\n public async allowance(params: VaultAllowanceParams): Promise<SteerResponse<bigint>> {\n try {\n const allowance = await this.publicClient.readContract({\n address: params.vaultAddress,\n abi: VAULT_ABI,\n functionName: 'allowance',\n args: [params.owner, params.spender],\n });\n\n return {\n data: allowance,\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Gets the balance of a vault token for an account\n * @param params The balance parameters\n */\n public async balanceOf(params: VaultBalanceParams): Promise<SteerResponse<bigint>> {\n try {\n const balance = await this.publicClient.readContract({\n address: params.vaultAddress,\n abi: VAULT_ABI,\n functionName: 'balanceOf',\n args: [params.account],\n });\n\n return {\n data: balance,\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Gets the total supply of a vault token\n * @param vaultAddress The vault address\n */\n public async totalSupply(vaultAddress: Address): Promise<SteerResponse<bigint>> {\n try {\n const totalSupply = await this.publicClient.readContract({\n address: vaultAddress,\n abi: VAULT_ABI,\n functionName: 'totalSupply',\n });\n\n return {\n data: totalSupply,\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Gets the decimals of a vault token\n * @param vaultAddress The vault address\n */\n public async decimals(vaultAddress: Address): Promise<SteerResponse<number>> {\n try {\n const decimals = await this.publicClient.readContract({\n address: vaultAddress,\n abi: VAULT_ABI,\n functionName: 'decimals',\n });\n\n return {\n data: decimals,\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Gets the symbol of a vault token\n * @param vaultAddress The vault address\n */\n public async symbol(vaultAddress: Address): Promise<SteerResponse<string>> {\n try {\n const result = await this.publicClient.readContract({\n address: vaultAddress,\n abi: VAULT_ABI,\n functionName: 'symbol',\n });\n\n return {\n data: result,\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Gets the name of a vault token\n * @param vaultAddress The vault address\n */\n public async name(vaultAddress: Address): Promise<SteerResponse<string>> {\n try {\n const result = await this.publicClient.readContract({\n address: vaultAddress,\n abi: VAULT_ABI,\n functionName: 'name',\n });\n\n return {\n data: result,\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n public async pool(vaultAddress: Address): Promise<SteerResponse<Address>> {\n try {\n const pool = await this.publicClient.readContract({\n address: vaultAddress,\n abi: VAULT_ABI,\n functionName: 'pool',\n });\n\n return {\n data: pool,\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Gets a pool instance for a vault\n * @param params The pool instance parameters\n */\n public async getPoolInstance(params: PoolInstanceParams): Promise<SteerResponse<PoolV3>> {\n return this.depositClient.getPoolInstance(params);\n }\n\n /**\n * Gets the corresponding token amount based on the provided token amount and ratio\n * @param vaultAddress The vault address\n * @param amount The amount of token to calculate the corresponding amount for\n * @param zeroForOne If true, calculates token1 amount for given token0, if false calculates token0 amount for given token1\n */\n public async getCorrespondingTokenAmount(\n vaultAddress: Address,\n amount: bigint,\n zeroForOne: boolean\n ): Promise<SteerResponse<bigint>> {\n return this.depositClient.getCorrespondingTokenAmount(vaultAddress, amount, zeroForOne);\n }\n\n // Single-Asset Deposit Methods\n\n /**\n * Previews a single-asset deposit by running all simulation steps\n * This allows users to see the expected outcome before executing the transaction\n * \n * @param params - Single-asset deposit parameters\n * @param poolAddress - Address of the pool (must be provided separately)\n * @returns Promise resolving to the complete deposit preview\n * \n * @example\n * ```typescript\n * const preview = await vaultClient.previewSingleAssetDeposit({\n * assets: parseEther('100'),\n * receiver: userAddress,\n * vault: vaultAddress,\n * isToken0: true,\n * depositSlippagePercent: 5n,\n * swapSlippageBP: 500,\n * ammType: AMMType.UniswapV3,\n * singleAssetDepositContract: contractAddress\n * }, poolAddress);\n * \n * if (preview.success) {\n * console.log('Expected LP tokens:', preview.data.lpEstimation.lpTokens);\n * console.log('Swap amount:', preview.data.swapAmount);\n * }\n * ```\n */\n public async previewSingleAssetDeposit(\n params: SingleAssetDepositParams,\n poolAddress: Address\n ): Promise<SteerResponse<SingleAssetDepositPreview>> {\n return this.singleAssetDepositClient.previewDeposit(params, poolAddress);\n }\n\n /**\n * Executes a single-asset deposit transaction\n * \n * @param params - Single-asset deposit parameters\n * @returns Promise resolving to the transaction hash\n * \n * @example\n * ```typescript\n * const result = await vaultClient.singleAssetDeposit({\n * assets: parseEther('100'),\n * receiver: userAddress,\n * vault: vaultAddress,\n * isToken0: true,\n * depositSlippagePercent: 5n,\n * swapSlippageBP: 500,\n * ammType: AMMType.UniswapV3,\n * singleAssetDepositContract: contractAddress\n * });\n * \n * if (result.success) {\n * console.log('Transaction hash:', result.data);\n * }\n * ```\n */\n public async singleAssetDeposit(params: SingleAssetDepositParams): Promise<SteerResponse<Hash>> {\n return this.singleAssetDepositClient.deposit(params);\n }\n\n /**\n * Prepares a single-asset deposit transaction without executing it\n * Useful for batching transactions or custom execution logic\n * \n * @param params - Single-asset deposit parameters\n * @returns Promise resolving to the prepared transaction data\n */\n public async prepareSingleAssetDepositTx(params: SingleAssetDepositParams) {\n return this.singleAssetDepositClient.prepareDepositTx(params);\n }\n\n /**\n * Validates single-asset deposit parameters\n * \n * @param params - Parameters to validate\n * @throws Error if parameters are invalid\n */\n public validateSingleAssetDepositParams(params: SingleAssetDepositParams): void {\n return this.singleAssetDepositClient.validateDepositParams(params);\n }\n\n // Reward Management Methods\n\n /**\n * Calculates pending rewards for a user from a vault\n * This is a view function that doesn't modify state\n * \n * @param params - Parameters containing vault address and user address\n * @returns Promise resolving to pending rewards data or zero values if function reverts\n * \n * @example\n * ```typescript\n * const pendingRewards = await vaultClient.calculatePendingRewards({\n * vaultAddress: '0x123...',\n * user: '0xabc...'\n * });\n * \n * if (pendingRewards.success && pendingRewards.data) {\n * console.log('Rewards:', pendingRewards.data.rewards);\n * console.log('Extra Rewards:', pendingRewards.data.extraRewards);\n * }\n * ```\n */\n public async calculatePendingRewards(params: PendingRewardsParams): Promise<SteerResponse<PendingRewardsResponse>> {\n try {\n const result = await this.publicClient.readContract({\n address: params.vaultAddress,\n abi: REWARD_FUNCTIONS_ABI,\n functionName: 'calculatePendingRewards',\n args: [params.user],\n }) as [bigint, bigint];\n\n return {\n data: {\n rewards: result[0],\n extraRewards: result[1]\n },\n status: 200,\n success: true,\n };\n } catch (error) {\n // If the function reverts or doesn't exist, return zero values\n console.warn('calculatePendingRewards failed, returning zero values:', error);\n return {\n data: {\n rewards: 0n,\n extraRewards: 0n\n },\n status: 200,\n success: true,\n };\n }\n }\n\n /**\n * Claims pending rewards from a vault using the claimBlackHolePendingRewards function\n * \n * @param params - Parameters containing vault address\n * @returns Promise resolving to transaction hash or zero values if function reverts\n * \n * @example\n * ```typescript\n * const claimResult = await vaultClient.claimPendingRewards({\n * vaultAddress: '0x123...'\n * });\n * \n * if (claimResult.success && claimResult.data) {\n * console.log('Claim transaction hash:', claimResult.data);\n * }\n * ```\n */\n public async claimBlackholePendingRewards(params: ClaimRewardsParams): Promise<SteerResponse<Hash | PendingRewardsResponse>> {\n try {\n const account = await this.walletClient.getAddresses();\n if (!account[0]) throw new Error('No account found');\n\n const { request } = await this.publicClient.simulateContract({\n address: params.vaultAddress,\n abi: REWARD_FUNCTIONS_ABI,\n functionName: 'claimUserRewards',\n args: [],\n account: account[0],\n });\n\n const hash = await this.walletClient.writeContract(request);\n\n return {\n data: hash,\n status: 200,\n success: true,\n };\n } catch (error) {\n console.error('claimBlackHolePendingRewards failed, error:', error);\n // If the function reverts or doesn't exist, return zero values instead of transaction hash\n console.warn('claimBlackHolePendingRewards failed, returning zero values:', error);\n return {\n data: {\n rewards: 0n,\n extraRewards: 0n\n },\n status: 200,\n success: true,\n };\n }\n }\n\n} \n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/base/vault/deposit/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Rounding, Token } from '@uniswap/sdk-core';\nimport { Pool as PoolV3 } from '@uniswap/v3-sdk';\nimport { Decimal } from 'decimal.js';\nimport { Address, Hash, PublicClient, WalletClient } from 'viem';\nimport { UniswapV3PoolABI } from '../../../const/abis/UniswapPool.js';\nimport { abis } from '../../../const/deployments/abis.js';\nimport { getContractAddressByChainIdAndContractName } from '../../../const/network.js';\nimport { isAlgebraDirectionProtocol, isAlgebraIntegralProtocol, isAlgebraProtocol, isPoolSharkProtocol } from '../../../const/protocol.js';\nimport { AlgebraVaultDetails, PoolData, SteerResponse, VaultDetails } from '../../../types.js';\nimport { getGlobalState, getGlobalStateAlgebraIntegral, getGlobalStatePoolShark, getSlot0 } from '../utils.js';\nimport { DepositRatioResponse, PoolInstanceParams, VaultDepositParams } from './types.js';\nimport { getProtocolTypeByBeacon } from \"../../../const/index.js\";\n\nconst VAULT_ABI = abis.QuickSwapUniv3MultiPositionLiquidityManager;\nconst PERIPHERY_ABI = abis.SteerPeriphery;\n\nexport class VaultDepositClient {\n constructor(\n protected readonly publicClient: PublicClient,\n protected readonly walletClient: WalletClient\n ) {}\n\n /**\n * Deposits tokens into a vault\n * @param params The deposit parameters\n */\n public async deposit(params: VaultDepositParams): Promise<SteerResponse<Hash>> {\n try {\n const account = await this.walletClient.getAddresses();\n if (!account[0]) throw new Error('No account found');\n\n // Calculate min amounts based on slippage\n const amount0Min =\n (params.amount0Desired * BigInt(Math.floor((1 - params.slippage) * 1000))) / 1000n;\n const amount1Min =\n (params.amount1Desired * BigInt(Math.floor((1 - params.slippage) * 1000))) / 1000n;\n\n let hash: Hash;\n\n // If using Steer Periphery\n if (params.isSteerPeriphery) {\n if (!params.chainId) {\n throw new Error('chainId is required when using Steer Periphery');\n }\n\n const steerPeripheryAddress = getContractAddressByChainIdAndContractName(\n params.chainId,\n 'SteerPeriphery'\n );\n\n if (!steerPeripheryAddress) {\n throw new Error(`SteerPeriphery address not found for chainId: ${params.chainId}`);\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: steerPeripheryAddress as Address,\n abi: PERIPHERY_ABI,\n functionName: 'deposit',\n args: [\n params.vaultAddress,\n params.amount0Desired,\n params.amount1Desired,\n amount0Min,\n amount1Min,\n params.to ?? account[0],\n ],\n account: account[0],\n });\n hash = await this.walletClient.writeContract(request);\n } else {\n // Regular vault deposit\n const { request } = await this.publicClient.simulateContract({\n address: params.vaultAddress,\n abi: VAULT_ABI,\n functionName: 'deposit',\n args: [\n params.amount0Desired,\n params.amount1Desired,\n amount0Min,\n amount1Min,\n params.to ?? account[0],\n ],\n account: account[0],\n });\n hash = await this.walletClient.writeContract(request);\n }\n\n return {\n data: hash,\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Prepares the transaction data for depositing tokens into a vault without executing it\n * @param params The deposit parameters\n */\n public async prepareDepositTx(params: VaultDepositParams): Promise<\n SteerResponse<{\n address: Address;\n abi: {\n type: string;\n inputs: {\n name: string;\n internalType: string;\n type: string;\n }[];\n name: string;\n outputs: {\n internalType: string;\n name: string;\n type: string;\n }[];\n stateMutability: string;\n }[];\n functionName: string;\n args: readonly [Address, bigint, bigint, bigint, bigint, Address] | readonly [bigint, bigint, bigint, bigint, Address];\n }>\n > {\n try {\n const account = await this.walletClient.getAddresses();\n if (!params.to) {\n if (!account[0]) throw new Error('No account found');\n }\n\n const amount0Min = 0n;\n const amount1Min = 0n;\n\n // If using Steer Periphery\n if (params.isSteerPeriphery) {\n if (!params.chainId) {\n throw new Error('chainId is required when using Steer Periphery');\n }\n\n const steerPeripheryAddress = getContractAddressByChainIdAndContractName(\n params.chainId,\n 'SteerPeriphery'\n );\n\n if (!steerPeripheryAddress) {\n throw new Error(`SteerPeriphery address not found for chainId: ${params.chainId}`);\n }\n\n // Steer Periphery ABI and parameters\n return {\n data: {\n address: steerPeripheryAddress as Address,\n abi: [\n {\n type: 'function',\n inputs: [\n { name: 'vaultAddress', internalType: 'address', type: 'address' },\n { name: 'amount0Desired', internalType: 'uint256', type: 'uint256' },\n { name: 'amount1Desired', internalType: 'uint256', type: 'uint256' },\n { name: 'amount0Min', internalType: 'uint256', type: 'uint256' },\n { name: 'amount1Min', internalType: 'uint256', type: 'uint256' },\n { name: 'to', internalType: 'address', type: 'address' },\n ],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n ],\n functionName: 'deposit',\n args: [\n params.vaultAddress,\n params.amount0Desired,\n params.amount1Desired,\n amount0Min,\n amount1Min,\n params.to ?? account[0],\n ] as const,\n },\n status: 200,\n success: true,\n };\n }\n\n // Regular vault deposit\n return {\n data: {\n address: params.vaultAddress,\n abi: [\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'amount0Desired',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Desired',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount0Min',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Min',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n ],\n name: 'deposit',\n outputs: [\n {\n internalType: 'uint256',\n name: 'shares',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount0Used',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Used',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n ],\n functionName: 'deposit',\n args: [\n params.amount0Desired,\n params.amount1Desired,\n amount0Min,\n amount1Min,\n params.to ?? account[0],\n ] as const,\n },\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Gets the deposit ratio for a vault\n * @param vaultAddress The vault address\n */\n public async getDepositRatio(\n vaultAddress: Address,\n zeroForOne: boolean\n ): Promise<SteerResponse<DepositRatioResponse>> {\n try {\n // Try to get vault details, first attempt with regular vault\n let vaultDetails: VaultDetails | AlgebraVaultDetails;\n let isAlgebraVault = false;\n\n const chainId = await this.publicClient.getChainId();\n\n const steerPeripheryAddress = getContractAddressByChainIdAndContractName(\n chainId,\n 'SteerPeriphery'\n );\n if (!steerPeripheryAddress) throw new Error('SteerPeriphery address not found');\n try {\n // First try regular vault\n vaultDetails = (await this.publicClient.readContract({\n address: steerPeripheryAddress as Address,\n abi: PERIPHERY_ABI,\n functionName: 'vaultDetailsByAddress',\n args: [vaultAddress],\n })) as VaultDetails;\n } catch (error) {\n // If regular vault fails, try Algebra vault\n vaultDetails = (await this.publicClient.readContract({\n address: steerPeripheryAddress as Address,\n abi: PERIPHERY_ABI,\n functionName: 'algebraVaultDetailsByAddress',\n args: [vaultAddress],\n })) as AlgebraVaultDetails;\n isAlgebraVault = true;\n }\n\n const token0Balance = vaultDetails.token0Balance;\n const token1Balance = vaultDetails.token1Balance;\n const token0Decimals = vaultDetails.token0Decimals;\n const token1Decimals = vaultDetails.token1Decimals;\n\n let ratio: string;\n\n // Case 1: No liquidity in the vault\n if (token0Balance === 0n && token1Balance === 0n) {\n // Get pool instance to calculate price\n const chainId = await this.publicClient.getChainId();\n\n // Get the pool address\n const pool = await this.getPool(vaultAddress);\n if (!pool.data) throw new Error('Failed to retrieve pool for ratio calculation');\n\n // Determine the protocol\n const protocol = getProtocolTypeByBeacon(vaultDetails.vaultType);\n if (!protocol) throw new Error('Unsupported protocol type');\n console.log('Protocol detected:', protocol);\n\n // Get pool instance with the correct protocol type\n const poolInstanceResponse = await this.getPoolInstance({\n vaultAddress,\n chain: { id: chainId },\n isAlgebraPool: isAlgebraProtocol(protocol),\n isPoolSharkPool: isPoolSharkProtocol(protocol),\n isAlgebraIntegralPool: isAlgebraIntegralProtocol(protocol),\n isAlgebraDirectionPool: isAlgebraDirectionProtocol(protocol),\n });\n\n if (!poolInstanceResponse.success || !poolInstanceResponse.data) {\n throw new Error('Failed to get pool instance for price calculation');\n }\n\n const poolInstance = poolInstanceResponse.data;\n // Get price based on zeroForOne\n const price = zeroForOne\n ? poolInstance.priceOf(poolInstance.token0)\n : poolInstance.priceOf(poolInstance.token0).invert();\n\n // Convert price to string using Decimal for maximum precision\n ratio = price.toSignificant(undefined, undefined, Rounding.ROUND_DOWN);\n }\n // Case 2: Vault has liquidity\n else {\n // Convert bigint values to Decimal instances for precise calculation\n // Convert bigints to strings first to avoid type errors\n const token0Bal = new Decimal(token0Balance.toString());\n const token1Bal = new Decimal(token1Balance.toString());\n const token0Dec = new Decimal(10).pow(Number(token0Decimals));\n const token1Dec = new Decimal(10).pow(Number(token1Decimals));\n\n // Calculate adjusted balances\n const token0Adjusted = token0Bal.div(token0Dec);\n const token1Adjusted = token1Bal.div(token1Dec);\n\n // Calculate ratio based on token balances\n // If zeroForOne is true: ratio = token1/token0\n // If zeroForOne is false: ratio = token0/token1\n ratio = zeroForOne\n ? token1Adjusted.div(token0Adjusted).toString() // token1/token0 ratio\n : token0Adjusted.div(token1Adjusted).toString(); // token0/token1 ratio\n }\n\n return {\n data: {\n ratio,\n token0Balance,\n token1Balance,\n token0Decimals,\n token1Decimals,\n vaultDetails,\n isAlgebraVault,\n },\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Gets the pool address for a vault\n * @param vaultAddress The vault address\n */\n private async getPool(vaultAddress: Address): Promise<SteerResponse<Address>> {\n try {\n const pool = (await this.publicClient.readContract({\n address: vaultAddress,\n abi: VAULT_ABI,\n functionName: 'pool',\n })) as Address;\n\n return {\n data: pool,\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Gets a pool instance for a vault\n * @param params The pool instance parameters\n */\n public async getPoolInstance(params: PoolInstanceParams): Promise<SteerResponse<PoolV3>> {\n console.log('Fetching pool instance...');\n\n try {\n const poolData = await this.preparePoolData(params.vaultAddress);\n console.log('Pool data fetched:', poolData);\n\n if (!poolData.success || !poolData.data) {\n throw new Error('Failed to fetch pool data');\n }\n\n let slot0Response;\n\n // Handle different protocol types\n if (params.isAlgebraIntegralPool) {\n // For Algebra Integral pools\n slot0Response = await getGlobalStateAlgebraIntegral(\n this.publicClient,\n poolData.data.id,\n params.isAlgebraDirectionPool\n );\n } else if (params.isPoolSharkPool) {\n // For PoolShark pools\n const poolSharkResponse = await getGlobalStatePoolShark(\n this.publicClient,\n poolData.data.id\n );\n if (poolSharkResponse.success && poolSharkResponse.data) {\n slot0Response = {\n success: true,\n status: 200,\n data: {\n sqrtPriceX96: poolSharkResponse.data.pool.price,\n tick: poolSharkResponse.data.pool.tickAtPrice,\n observationIndex: 0,\n observationCardinality: 0,\n observationCardinalityNext: 0,\n feeProtocol: 0,\n unlocked: poolSharkResponse.data.unlocked === 1,\n },\n };\n } else {\n slot0Response = poolSharkResponse;\n }\n }\n if (params.isAlgebraPool) {\n // For Algebra pools\n slot0Response = await getGlobalState(\n this.publicClient,\n poolData.data.id,\n params.isAlgebraDirectionPool\n );\n } else {\n // For standard Uniswap V3 pools\n slot0Response = await getSlot0(this.publicClient, poolData.data.id);\n }\n\n if (!slot0Response.success || !slot0Response.data) {\n throw new Error('Failed to read pool state');\n }\n\n const slot0 = slot0Response.data;\n\n const token0 = new Token(\n params.chain.id,\n poolData.data.token0.id,\n Number(poolData.data.token0.decimals),\n poolData.data.token0.symbol,\n poolData.data.token0.name\n );\n\n const token1 = new Token(\n params.chain.id,\n poolData.data.token1.id,\n Number(poolData.data.token1.decimals),\n poolData.data.token1.symbol,\n poolData.data.token1.name\n );\n\n // Get liquidity\n const liquidity = await this.getPoolLiquidity(poolData.data.id);\n if (!liquidity.success || !liquidity.data) {\n throw new Error('Failed to fetch pool liquidity');\n }\n\n let price: bigint | undefined;\n\n if (params.isAlgebraPool && !params.isAlgebraIntegralPool) {\n price = slot0Response?.data?.price;\n } else if (params.isAlgebraIntegralPool) {\n price = slot0Response?.data?.price;\n } else if (params.isPoolSharkPool) {\n price = (slot0Response?.data?.tick as unknown as { price: bigint })?.price;\n } else {\n price = slot0Response?.data?.sqrtPriceX96;\n }\n\n if (!price) {\n throw new Error('Failed to get pool price');\n }\n\n return {\n data: new PoolV3(\n token0,\n token1,\n poolData.data.feeTier,\n price.toString(),\n liquidity.data.toString(),\n slot0.tick\n ),\n status: 200,\n success: true,\n };\n } catch (error) {\n console.error('Error creating pool instance:', error);\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Gets the pool liquidity\n * @param poolAddress The pool address\n */\n private async getPoolLiquidity(poolAddress: Address): Promise<SteerResponse<bigint>> {\n try {\n const liquidity = (await this.publicClient.readContract({\n address: poolAddress,\n abi: UniswapV3PoolABI,\n functionName: 'liquidity',\n })) as bigint;\n\n return {\n data: liquidity,\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Gets the corresponding token amount based on the provided token amount and ratio\n * @param vaultAddress The vault address\n * @param amount The amount of token to calculate the corresponding amount for\n * @param zeroForOne If true, calculates token1 amount for given token0, if false calculates token0 amount for given token1\n */\n public async getCorrespondingTokenAmount(\n vaultAddress: Address,\n amount: bigint,\n zeroForOne: boolean\n ): Promise<SteerResponse<bigint>> {\n try {\n // Get the deposit ratio for the vault\n const ratioResponse = await this.getDepositRatio(vaultAddress, zeroForOne);\n if (!ratioResponse.success || !ratioResponse.data) {\n throw new Error('Failed to get deposit ratio');\n }\n\n const { ratio, token0Decimals, token1Decimals } = ratioResponse.data;\n\n // Calculate the decimal adjustment based on token decimals\n const decimalDiff = zeroForOne\n ? token1Decimals - token0Decimals\n : token0Decimals - token1Decimals;\n\n // Convert all values to Decimal for precise calculation\n const amountDecimal = new Decimal(amount.toString());\n const ratioDecimal = new Decimal(ratio);\n const adjustmentDecimal = new Decimal(10).pow(Number(decimalDiff));\n\n // Perform calculation using Decimal.js\n const result = amountDecimal.times(ratioDecimal).times(adjustmentDecimal);\n\n // Convert result back to bigint, rounding down to nearest integer\n // Use toFixed(0) to avoid scientific notation which BigInt cannot parse\n const correspondingAmount = BigInt(result.floor().toFixed(0));\n\n return {\n data: correspondingAmount,\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Prepares pool data from vault details\n * @param vaultAddress The vault address\n */\n private async preparePoolData(vaultAddress: Address): Promise<SteerResponse<PoolData>> {\n try {\n // Try to get vault details, first attempt with regular vault\n let vaultDetails: VaultDetails | AlgebraVaultDetails;\n\n const chainId = await this.publicClient.getChainId();\n\n const steerPeripheryAddress = getContractAddressByChainIdAndContractName(\n chainId,\n 'SteerPeriphery'\n );\n if (!steerPeripheryAddress) throw new Error('SteerPeriphery address not found');\n\n try {\n // First try regular vault\n vaultDetails = (await this.publicClient.readContract({\n address: steerPeripheryAddress as Address,\n abi: PERIPHERY_ABI,\n functionName: 'vaultDetailsByAddress',\n args: [vaultAddress],\n })) as VaultDetails;\n } catch (error) {\n // If regular vault fails, try Algebra vault\n vaultDetails = (await this.publicClient.readContract({\n address: steerPeripheryAddress as Address,\n abi: PERIPHERY_ABI,\n functionName: 'algebraVaultDetailsByAddress',\n args: [vaultAddress],\n })) as AlgebraVaultDetails;\n }\n\n // Get the pool contract to fetch tick spacing\n const pool = await this.getPool(vaultAddress);\n if (!pool.data) throw new Error('Failed to retrieve pool');\n\n // Get tick spacing\n const tickSpacing = (await this.publicClient.readContract({\n address: pool.data,\n abi: UniswapV3PoolABI,\n functionName: 'tickSpacing',\n })) as number;\n\n const poolData: PoolData = {\n id: pool.data,\n token0: {\n id: vaultDetails.token0,\n decimals: vaultDetails.token0Decimals.toString(),\n symbol: vaultDetails.token0Symbol,\n name: vaultDetails.token0Symbol,\n },\n token1: {\n id: vaultDetails.token1,\n decimals: vaultDetails.token1Decimals.toString(),\n symbol: vaultDetails.token1Symbol,\n name: vaultDetails.token1Symbol,\n },\n chainId: await this.publicClient.getChainId(),\n feeTier: 3000, // Fixed fee tier as specified\n tickSpacing,\n };\n\n return {\n data: poolData,\n status: 200,\n success: true,\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/base/vault/deposit/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Address } from 'viem';\nimport { VaultDetails, AlgebraVaultDetails } from '../../../types.js';\n\nexport interface VaultDepositParams {\n vaultAddress: Address;\n amount0Desired: bigint;\n amount1Desired: bigint;\n slippage: number; // percentage as decimal (e.g. 0.01 for 1%)\n to?: Address; // optional, defaults to sender\n isSteerPeriphery?: boolean; // optional, determines whether to use steer periphery or vault directly\n chainId?: number; // optional, required when isSteerPeriphery is true to determine which chain's periphery to use\n}\n\nexport interface DepositRatioResponse {\n ratio: string;\n token0Balance: bigint;\n token1Balance: bigint;\n token0Decimals: bigint;\n token1Decimals: bigint;\n vaultDetails: VaultDetails | AlgebraVaultDetails;\n isAlgebraVault: boolean;\n}\n\nexport interface Chain {\n id: number;\n}\n\nexport interface Token {\n id: Address;\n decimals: string;\n symbol: string;\n name: string;\n}\n\nexport interface Pool {\n id: Address;\n token0: Token;\n token1: Token;\n feeTier: number;\n}\n\nexport interface PoolInstanceParams {\n vaultAddress: Address;\n chain: Chain;\n isAlgebraPool: boolean;\n isAlgebraDirectionPool: boolean;\n isPoolSharkPool: boolean;\n isAlgebraIntegralPool: boolean;\n} \n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculateLimitPrice.js","sourceRoot":"","sources":["../../../../../src/base/vault/single-asset/calculateLimitPrice.ts"],"names":[],"mappings":"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","sourcesContent":["import { Decimal } from 'decimal.js';\nimport type { PublicClient } from 'viem';\nimport { erc20Abi } from '../../../const/abis/erc20.js';\nimport { SteerResponse } from '../../../types.js';\nimport { getPoolPrice, getPoolState, getPoolStateWithPrice } from '../utils.js';\nimport type { CalculateLimitPriceParams, PoolSlot0 } from './types.js';\nimport { AMMType } from './types.js';\n\n/**\n * Configure Decimal.js for high precision calculations\n */\nDecimal.config({ \n precision: 50, // High precision for financial calculations\n rounding: Decimal.ROUND_DOWN // Conservative rounding for safety\n});\n\n/**\n * Constants matching the Solidity contract using Decimal.js\n */\nconst BASIS_POINTS = new Decimal(10000);\nconst Q96 = new Decimal(2).pow(96);\nconst Q192 = Q96.mul(Q96);\nconst Q128 = new Decimal(2).pow(128);\nconst Q64 = new Decimal(2).pow(64);\nconst UINT128_MAX = new Decimal(2).pow(128).sub(1);\n\n/**\n * High-precision multiplication and division using Decimal.js\n * Equivalent to Solidity's FullMath.mulDiv\n */\nfunction mulDiv(a: Decimal, b: Decimal, denominator: Decimal): Decimal {\n return a.mul(b).div(denominator);\n}\n\n/**\n * High-precision square root using Decimal.js\n */\nfunction sqrt(value: Decimal): Decimal {\n if (value.isZero()) return new Decimal(0);\n return value.sqrt();\n}\n\n/**\n * Convert BigInt to Decimal for calculations\n */\nexport function bigintToDecimal(value: bigint): Decimal {\n return new Decimal(value.toString());\n}\n\n/**\n * Convert Decimal back to BigInt for return values\n * Uses toFixed(0) to get full decimal representation without scientific notation\n */\nexport function decimalToBigint(value: Decimal): bigint {\n // Use toFixed(0) to get full integer representation without scientific notation\n const stringValue = value.floor().toFixed(0);\n return BigInt(stringValue);\n}\n\n/**\n * Get quote from sqrtRatioX96 using high-precision Decimal arithmetic\n * Equivalent to Solidity's getQuoteFromSqrtRatioX96\n * @param sqrtRatioX96 The sqrt ratio for which to compute the quote\n * @param baseAmount Amount of base token\n * @param baseToken Address of base token\n * @param quoteToken Address of quote token\n * @returns The quote amount as Decimal\n */\nexport function getQuoteFromSqrtRatioX96(\n sqrtRatioX96: Decimal,\n baseAmount: Decimal,\n baseToken: `0x${string}`,\n quoteToken: `0x${string}`\n): Decimal {\n // Calculate quoteAmount with better precision if it doesn't overflow when multiplied by itself\n if (sqrtRatioX96.lte(UINT128_MAX)) {\n const ratioX192 = sqrtRatioX96.mul(sqrtRatioX96);\n return baseToken < quoteToken\n ? mulDiv(ratioX192, baseAmount, Q192)\n : mulDiv(Q192, baseAmount, ratioX192);\n } else {\n const ratioX128 = mulDiv(sqrtRatioX96, sqrtRatioX96, Q64);\n return baseToken < quoteToken\n ? mulDiv(ratioX128, baseAmount, Q128)\n : mulDiv(Q128, baseAmount, ratioX128);\n }\n}\n\n/**\n * Applies slippage protection to sqrtPriceX96 based on swap direction using high-precision arithmetic\n * Equivalent to Solidity's applySlippageProtection function\n * @param sqrtPriceX96 The current square root price\n * @param slippageBP Slippage protection in basis points (e.g., 300 = 3%)\n * @param zeroForOne True if swapping token0 for token1\n * @param token0 Address of token0\n * @param token1 Address of token1\n * @param publicClient Viem public client for reading token decimals\n * @returns The price limit with slippage protection as Decimal\n */\nasync function applySlippageProtection(\n sqrtPriceX96: Decimal,\n slippageBP: Decimal,\n zeroForOne: boolean,\n token0: `0x${string}`,\n token1: `0x${string}`,\n publicClient: PublicClient\n): Promise<Decimal> {\n // Get current price: how much token1 per 1 unit of token0\n const decimals0 = await publicClient.readContract({\n address: token0,\n abi: erc20Abi,\n functionName: 'decimals'\n }) as number;\n \n const baseAmount = new Decimal(10).pow(decimals0);\n \n const currentQuote = getQuoteFromSqrtRatioX96(\n sqrtPriceX96,\n baseAmount,\n token0,\n token1\n );\n \n let adjustedQuote: Decimal;\n \n if (zeroForOne) {\n // Swapping token0 for token1\n // We want to ensure we don't get less than expected token1\n // So we set a minimum acceptable rate (decrease the quote)\n adjustedQuote = mulDiv(currentQuote, BASIS_POINTS.sub(slippageBP), BASIS_POINTS);\n } else {\n // Swapping token1 for token0 \n // We want to ensure we don't pay more than expected token1\n // So we set a maximum acceptable rate (increase the quote)\n adjustedQuote = mulDiv(currentQuote, BASIS_POINTS.add(slippageBP), BASIS_POINTS);\n }\n \n if (adjustedQuote.isZero()) {\n throw new Error('AdjustedQuoteCalculationFailed');\n }\n \n // Convert adjusted quote back to sqrtPriceX96\n // This is the reverse of getQuoteFromSqrtRatioX96\n let adjustedRatioX192: Decimal;\n if (token0 < token1) {\n // ratioX192 = (adjustedQuote * 2^192) / baseAmount\n adjustedRatioX192 = mulDiv(adjustedQuote, Q192, baseAmount);\n } else {\n // ratioX192 = (baseAmount * 2^192) / adjustedQuote \n adjustedRatioX192 = mulDiv(baseAmount, Q192, adjustedQuote);\n }\n \n return sqrt(adjustedRatioX192);\n}\n\n/**\n * Calculates the sqrt price limit for slippage protection during swaps using high-precision arithmetic\n * \n * @param publicClient - Viem public client for blockchain reads\n * @param params - Parameters for limit price calculation\n * @returns Promise resolving to the calculated sqrt price limit\n * \n * @example\n * ```typescript\n * const result = await calculateLimitPrice(publicClient, {\n * pool: '0x...',\n * slippageBP: 500, // 5% slippage\n * zeroForOne: true,\n * ammType: AMMType.UniswapV3,\n * token0: '0x...',\n * token1: '0x...'\n * });\n * \n * if (result.success) {\n * console.log('Sqrt price limit:', result.data);\n * }\n * ```\n */\nexport async function calculateLimitPrice(\n publicClient: PublicClient,\n params: CalculateLimitPriceParams\n): Promise<SteerResponse<bigint>> {\n try {\n // Get current pool state from slot0\n const slot0Data = await getPoolState(\n publicClient,\n {\n poolAddress: params.pool,\n isAlgebraPool: params.ammType === AMMType.Algebra,\n isAlgebraIntegralPool: params.ammType === AMMType.AlgebraIntegral,\n isAlgebraDirectionPool: params.ammType === AMMType.AlgebraDirectional,\n isPoolSharkPool: false // PoolShark not defined in AMMType enum\n }\n );\n\n if (!slot0Data.success || !slot0Data.data) {\n throw new Error(slot0Data.error || 'Failed to get pool state');\n }\n\n const sqrtPriceX96BigInt = getPoolPrice(slot0Data.data, {\n isAlgebraPool: params.ammType === AMMType.Algebra,\n isAlgebraIntegralPool: params.ammType === AMMType.AlgebraIntegral,\n isPoolSharkPool: false // PoolShark not defined in AMMType enum\n });\n\n if (!sqrtPriceX96BigInt) {\n throw new Error('Failed to extract pool price');\n }\n \n // Convert to Decimal for high-precision calculations\n const sqrtPriceX96 = bigintToDecimal(sqrtPriceX96BigInt);\n const slippageBP = new Decimal(params.slippageBP);\n\n // Apply slippage protection using high-precision arithmetic\n const limitSqrtPriceX96Decimal = await applySlippageProtection(\n sqrtPriceX96,\n slippageBP,\n params.zeroForOne,\n params.token0,\n params.token1,\n publicClient\n );\n\n return {\n data: decimalToBigint(limitSqrtPriceX96Decimal),\n status: 200,\n success: true\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Failed to calculate limit price'\n };\n }\n}\n\n/**\n * Gets the current pool state from slot0\n * Currently supports UniswapV3 only\n * \n * @param publicClient - Viem public client for blockchain reads\n * @param poolAddress - Address of the pool\n * @param ammType - Type of AMM\n * @returns Promise resolving to the pool slot0 data\n */\nexport async function getPoolSlot0(\n publicClient: PublicClient,\n poolAddress: `0x${string}`,\n ammType: AMMType\n): Promise<SteerResponse<PoolSlot0>> {\n try {\n const poolState = await getPoolStateWithPrice(publicClient, {\n poolAddress,\n isAlgebraPool: ammType === AMMType.Algebra,\n isAlgebraIntegralPool: ammType === AMMType.AlgebraIntegral,\n isAlgebraDirectionPool: ammType === AMMType.AlgebraDirectional,\n isPoolSharkPool: false // PoolShark not defined in AMMType enum\n });\n\n if (!poolState.success || !poolState.data) {\n throw new Error(poolState.error || 'Failed to get pool state');\n }\n\n return {\n data: poolState.data.state as PoolSlot0,\n status: 200,\n success: true\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Failed to get pool slot0 data'\n };\n }\n} "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculateSwapAmount.js","sourceRoot":"","sources":["../../../../../src/base/vault/single-asset/calculateSwapAmount.ts"],"names":[],"mappings":";;AA+BA,kDA0CC;AAxED,qFAAkF;AAGlF,sDAAqF;AAErF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACI,KAAK,UAAU,mBAAmB,CACvC,YAA0B,EAC1B,MAAiC;IAEjC,IAAI,CAAC;QACH,yDAAyD;QAEzD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,mBAAmB,GAAG,MAAM,CAAC,0BAA0B,IAAI,IAAA,qDAA0C,EAAC,OAAO,EAAE,oBAAoB,CAAC,CAAA;QAE1I,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;YAC7C,OAAO,EAAE,mBAAmB;YAC5B,GAAG,EAAE,6CAAqB;YAC1B,YAAY,EAAE,qBAAqB;YACnC,IAAI,EAAE;gBACJ,MAAM,CAAC,aAAa;gBACpB,MAAM,CAAC,QAAQ;gBACf,MAAM,CAAC,KAAK;gBACZ,MAAM,CAAC,IAAI;gBACX,MAAM,CAAC,OAAO;aACf;SACF,CAAC,CAAC;QAEH,+CAA+C;QAC/C,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,MAA0B,CAAC;QAE3D,OAAO;YACL,IAAI,EAAE;gBACJ,UAAU;gBACV,SAAS;aACV;YACD,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC;SAClF,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import type { PublicClient } from 'viem';\nimport { singleTokenDepositAbi } from '../../../const/abis/singleTokenDeposit.js';\nimport { SteerResponse } from '../../../types.js';\nimport type { CalculateSwapAmountParams, SwapAmountResponse } from './types.js';\nimport { getContractAddressByChainIdAndContractName } from '../../../const/index.js';\n\n/**\n * Calculates the amount that needs to be swapped for a single-asset deposit\n * This function calls the smart contract's calculateSwapAmount function\n * \n * @param publicClient - Viem public client for blockchain reads\n * @param params - Parameters for swap amount calculation\n * @returns Promise resolving to swap amount and current sqrt price\n * \n * @example\n * ```typescript\n * const result = await calculateSwapAmount(publicClient, {\n * depositAmount: parseEther('100'),\n * isToken0: true,\n * vault: '0x...',\n * pool: '0x...',\n * ammType: AMMType.UniswapV3,\n * singleAssetDepositContract: '0x...'\n * });\n * \n * if (result.success) {\n * console.log('Swap amount:', result.data.swapAmount);\n * console.log('Current sqrt price:', result.data.sqrtPrice);\n * }\n * ```\n */\nexport async function calculateSwapAmount(\n publicClient: PublicClient,\n params: CalculateSwapAmountParams\n): Promise<SteerResponse<SwapAmountResponse>> {\n try {\n // Call the smart contract's calculateSwapAmount function\n\n const chainId = await publicClient.getChainId();\n const singleAssentDeposit = params.singleAssetDepositContract || getContractAddressByChainIdAndContractName(chainId, 'SingleAssetDeposit')\n\n const result = await publicClient.readContract({\n address: singleAssentDeposit,\n abi: singleTokenDepositAbi,\n functionName: 'calculateSwapAmount',\n args: [\n params.depositAmount,\n params.isToken0,\n params.vault,\n params.pool,\n params.ammType\n ]\n });\n\n // The contract returns [swapAmount, sqrtPrice]\n const [swapAmount, sqrtPrice] = result as [bigint, bigint];\n\n return {\n data: {\n swapAmount,\n sqrtPrice\n },\n status: 200,\n success: true\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Failed to calculate swap amount'\n };\n }\n} "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"estimateLpTokens.js","sourceRoot":"","sources":["../../../../../src/base/vault/single-asset/estimateLpTokens.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Address, PublicClient } from 'viem';\nimport { abis } from '../../../const/deployments/abis.js';\nimport { getContractAddressByChainIdAndContractName } from '../../../const/network.js';\nimport { SteerResponse } from '../../../types.js';\nimport type { EstimateLpTokensParams, LpTokenEstimationResponse } from './types.js';\n\n// Use the vault ABI for reading vault state\nconst VAULT_ABI = abis.QuickSwapUniv3MultiPositionLiquidityManager;\n\n/**\n * Estimates the amount of LP tokens that will be received based on the final token amounts\n * This calculation follows the Solidity getShares implementation from the vault contract\n * \n * @param publicClient - Viem public client for blockchain reads\n * @param params - Parameters for LP token estimation\n * @returns Promise resolving to the estimated LP tokens and final amounts\n * \n * @example\n * ```typescript\n * const result = await estimateLpTokens(publicClient, {\n * vault: '0x...',\n * originalAssets: parseEther('100'),\n * swapAmount: parseEther('50'),\n * swapResult: { amount0: -parseEther('50'), amount1: parseEther('150') },\n * isToken0: true\n * });\n * \n * if (result.success) {\n * console.log('Estimated LP tokens:', result.data.lpTokens);\n * console.log('Final amount0:', result.data.finalAmount0);\n * console.log('Final amount1:', result.data.finalAmount1);\n * }\n * ```\n */\nexport async function estimateLpTokens(\n publicClient: PublicClient,\n params: EstimateLpTokensParams\n): Promise<SteerResponse<LpTokenEstimationResponse>> {\n try {\n // Calculate final amounts based on original deposit and swap results\n const finalAmount0 = params.isToken0 \n ? params.originalAssets - params.swapAmount + (params.swapResult.amount0 < 0n ? -params.swapResult.amount0 : params.swapResult.amount0)\n : (params.swapResult.amount0 < 0n ? -params.swapResult.amount0 : params.swapResult.amount0);\n \n const finalAmount1 = params.isToken0\n ? (params.swapResult.amount1 < 0n ? -params.swapResult.amount1 : params.swapResult.amount1)\n : params.originalAssets - params.swapAmount + (params.swapResult.amount1 < 0n ? -params.swapResult.amount1 : params.swapResult.amount1);\n\n // Get vault reserves and total supply\n const [totalSupply, tokenBalances] = await Promise.all([\n publicClient.readContract({\n address: params.vault,\n abi: [ {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },],\n functionName: 'totalSupply'\n }) as Promise<bigint>,\n \n // Get token0 address first, then balance\n publicClient.readContract({\n address: params.vault,\n abi: [ {\n \"inputs\": [],\n \"name\": \"getTotalAmounts\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"total0\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"total1\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },],\n functionName: 'getTotalAmounts'\n })\n ])\n\n const chainId = await publicClient.getChainId();\n const helper = getContractAddressByChainIdAndContractName(\n chainId,\n 'Helper'\n )\n\n const [shares, amount0Used, amount1Used] = await publicClient.readContract({\n address: helper as Address,\n abi: [{\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_totalSupply\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"total0\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"total1\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount0Desired\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount1Desired\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount0Min\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount1Min\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minShares\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getShares\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"shares\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount0Used\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount1Used\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n }],\n functionName: 'getShares',\n args: [\n totalSupply,\n tokenBalances[0],\n tokenBalances[1],\n finalAmount0,\n finalAmount1,\n 0n, // amount0Min = 0 as requested\n 0n, // amount1Min = 0 as requested\n 0n // minShares = 0\n ]\n })\n\n\n return {\n data: {\n lpTokens: shares,\n finalAmount0: amount0Used,\n finalAmount1: amount1Used\n },\n status: 200,\n success: true\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Failed to estimate LP tokens'\n };\n }\n}\n\n/**\n * Calculates shares (LP tokens) based on deposit amounts and vault reserves\n * This is a TypeScript implementation of the Solidity getShares function\n * \n * @param totalSupply - Current total supply of LP tokens\n * @param total0 - Current balance of token0 in vault\n * @param total1 - Current balance of token1 in vault\n * @param amount0Desired - Desired amount of token0 to deposit\n * @param amount1Desired - Desired amount of token1 to deposit\n * @param amount0Min - Minimum amount of token0 (set to 0n)\n * @param amount1Min - Minimum amount of token1 (set to 0n)\n * @param minShares - Minimum shares required (set to 0n)\n * @returns Object with shares, amount0Used, and amount1Used\n */\nexport function getShares(\n totalSupply: bigint,\n total0: bigint,\n total1: bigint,\n amount0Desired: bigint,\n amount1Desired: bigint,\n amount0Min: bigint,\n amount1Min: bigint,\n minShares: bigint\n): { shares: bigint; amount0Used: bigint; amount1Used: bigint } {\n // If total supply > 0, vault can't be empty.\n if (!(totalSupply === 0n || total0 > 0n || total1 > 0n)) {\n throw new Error('Invalid vault state');\n }\n\n let shares: bigint;\n let amount0Used: bigint = 0n;\n let amount1Used: bigint = 0n;\n\n if (totalSupply === 0n) {\n // For first deposit, just use the amounts desired\n amount0Used = amount0Desired;\n amount1Used = amount1Desired;\n shares = amount0Used > amount1Used ? amount0Used : amount1Used;\n \n if (shares < minShares) {\n throw new Error('Insufficient shares for minimum requirement');\n }\n } else if (total0 === 0n) {\n // Vault only has token1\n shares = mulDiv(amount1Desired, totalSupply, total1);\n amount1Used = mulDivRoundingUp(shares, total1, totalSupply);\n amount0Used = 0n;\n } else if (total1 === 0n) {\n // Vault only has token0\n shares = mulDiv(amount0Desired, totalSupply, total0);\n amount0Used = mulDivRoundingUp(shares, total0, totalSupply);\n amount1Used = 0n;\n } else {\n // Both tokens present - calculate cross product\n const cross = min(amount0Desired * total1, amount1Desired * total0);\n\n if (cross === 0n) {\n throw new Error('Invalid deposit ratio - cross product is zero');\n }\n\n // Round up amounts\n amount0Used = ((cross - 1n) / total1) + 1n;\n amount1Used = ((cross - 1n) / total0) + 1n;\n\n shares = mulDiv(cross, totalSupply, total0) / total1;\n }\n\n // Validate requirements\n if (shares === 0n) {\n throw new Error('Zero shares calculated');\n }\n if (amount0Used < amount0Min) {\n throw new Error('Amount0 used less than minimum');\n }\n if (amount1Used < amount1Min) {\n throw new Error('Amount1 used less than minimum');\n }\n\n return { shares, amount0Used, amount1Used };\n}\n\n/**\n * Multiplies two BigInt values and divides by a third (a * b / c)\n * Equivalent to Solidity's FullMath.mulDiv\n */\nfunction mulDiv(a: bigint, b: bigint, c: bigint): bigint {\n if (c === 0n) {\n throw new Error('Division by zero');\n }\n return (a * b) / c;\n}\n\n/**\n * Multiplies two BigInt values, divides by a third, and rounds up\n * Equivalent to Solidity's FullMath.mulDivRoundingUp\n */\nfunction mulDivRoundingUp(a: bigint, b: bigint, c: bigint): bigint {\n if (c === 0n) {\n throw new Error('Division by zero');\n }\n const result = (a * b) / c;\n const remainder = (a * b) % c;\n return remainder > 0n ? result + 1n : result;\n}\n\n/**\n * Returns the minimum of two BigInt values\n */\nfunction min(a: bigint, b: bigint): bigint {\n return a < b ? a : b;\n}\n\n/**\n * Gets the current vault reserves for both tokens\n * \n * @param publicClient - Viem public client for blockchain reads\n * @param vaultAddress - Address of the vault\n * @returns Promise resolving to [token0Balance, token1Balance, totalSupply]\n */\nexport async function getVaultReserves(\n publicClient: PublicClient,\n vaultAddress: `0x${string}`\n): Promise<SteerResponse<{ token0Balance: bigint; token1Balance: bigint; totalSupply: bigint }>> {\n try {\n const [totalSupply, token0Address, token1Address] = await Promise.all([\n publicClient.readContract({\n address: vaultAddress,\n abi: VAULT_ABI,\n functionName: 'totalSupply'\n }) as Promise<bigint>,\n \n publicClient.readContract({\n address: vaultAddress,\n abi: VAULT_ABI,\n functionName: 'token0'\n }) as Promise<`0x${string}`>,\n \n publicClient.readContract({\n address: vaultAddress,\n abi: VAULT_ABI,\n functionName: 'token1'\n }) as Promise<`0x${string}`>\n ]);\n\n const [token0Balance, token1Balance] = await Promise.all([\n publicClient.readContract({\n address: token0Address,\n abi: [\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view'\n }\n ],\n functionName: 'balanceOf',\n args: [vaultAddress]\n }) as Promise<bigint>,\n \n publicClient.readContract({\n address: token1Address,\n abi: [\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view'\n }\n ],\n functionName: 'balanceOf',\n args: [vaultAddress]\n }) as Promise<bigint>\n ]);\n\n return {\n data: {\n token0Balance,\n token1Balance,\n totalSupply\n },\n status: 200,\n success: true\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Failed to get vault reserves'\n };\n }\n} \n\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/base/vault/single-asset/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mBAAmB;AACnB,6CAA2B;AAE3B,6DAA6D;AAC7D,mEAA+D;AAAtD,6HAAA,mBAAmB,OAAA;AAC5B,mEAA6E;AAApE,6HAAA,mBAAmB,OAAA;AAAE,sHAAA,YAAY,OAAA;AAC1C,qDAA6F;AAApF,+GAAA,YAAY,OAAA;AAAE,yHAAA,sBAAsB,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AACjE,6DAA2E;AAAlE,uHAAA,gBAAgB,OAAA;AAAE,uHAAA,gBAAgB,OAAA;AAE3C,yBAAyB;AACzB,iEAAmE;AAA1D,iIAAA,wBAAwB,OAAA;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG","sourcesContent":["// Export all types\nexport * from './types.js';\n\n// Export individual functions for separate testing and usage\nexport { calculateSwapAmount } from './calculateSwapAmount.js';\nexport { calculateLimitPrice, getPoolSlot0 } from './calculateLimitPrice.js';\nexport { simulateSwap, determineSwapDirection, validateSwapParams } from './simulateSwap.js';\nexport { estimateLpTokens, getVaultReserves } from './estimateLpTokens.js';\n\n// Export the main client\nexport { SingleAssetDepositClient } from './singleAssetDeposit.js';\n\n/**\n * @fileoverview Single-Asset Deposit Module\n * \n * This module provides comprehensive functionality for single-asset deposits into liquidity vaults.\n * The process allows users to deposit only one token (token0 or token1), while the contract \n * internally performs a swap to balance the token pair before depositing into the vault.\n * \n * ## Architecture\n * \n * The single-asset deposit process is broken down into separate, testable functions:\n * \n * 1. **calculateSwapAmount** - Determines how much of the input token needs to be swapped\n * 2. **calculateLimitPrice** - Calculates slippage protection limits for the internal swap\n * 3. **simulateSwap** - Simulates the swap to preview expected output amounts\n * 4. **estimateLpTokens** - Estimates the final LP tokens that will be received\n * 5. **SingleAssetDepositClient** - Main orchestrator that combines all steps\n * \n * ## Supported AMM Types\n * \n * Currently supports:\n * - UniswapV3 (fully implemented)\n * - Algebra variants (planned for future implementation)\n * \n * ## Example Usage\n * \n * ```typescript\n * import { SingleAssetDepositClient, AMMType } from '@steerprotocol/sdk';\n * import { parseEther } from 'viem';\n * \n * // Initialize the client\n * const client = new SingleAssetDepositClient(publicClient, walletClient);\n * \n * // Preview the deposit\n * const preview = await client.previewDeposit({\n * assets: parseEther('100'),\n * receiver: userAddress,\n * vault: vaultAddress,\n * isToken0: true,\n * depositSlippagePercent: 5n,\n * swapSlippageBP: 500,\n * ammType: AMMType.UniswapV3,\n * singleAssetDepositContract: contractAddress\n * }, poolAddress);\n * \n * if (preview.success) {\n * console.log('Expected LP tokens:', preview.data.lpEstimation.lpTokens);\n * \n * // Execute the deposit\n * const result = await client.deposit(params);\n * if (result.success) {\n * console.log('Transaction hash:', result.data);\n * }\n * }\n * ```\n * \n * ## Testing Individual Functions\n * \n * Each function can be tested separately:\n * \n * ```typescript\n * import { calculateSwapAmount, AMMType } from '@steerprotocol/sdk';\n * \n * // Test swap amount calculation\n * const result = await calculateSwapAmount(publicClient, {\n * depositAmount: parseEther('100'),\n * isToken0: true,\n * vault: vaultAddress,\n * pool: poolAddress,\n * ammType: AMMType.UniswapV3,\n * singleAssetDepositContract: contractAddress\n * });\n * ```\n */ "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulateSwap.js","sourceRoot":"","sources":["../../../../../src/base/vault/single-asset/simulateSwap.ts"],"names":[],"mappings":"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","sourcesContent":["import { Decimal } from 'decimal.js';\nimport type { Address, PublicClient } from 'viem';\nimport { decodeFunctionResult, encodeFunctionData } from 'viem';\nimport { getNetworkByChainId, getProtcolTypeByAmmType, Protocol, isAlgebraIntegralProtocol } from '../../../const/index.js';\nimport { QuoterV2Factory } from '../../../const/quoter.js';\nimport { SteerResponse } from '../../../types.js';\nimport { getPoolPrice } from '../utils.js';\nimport { bigintToDecimal, decimalToBigint, getPoolSlot0, getQuoteFromSqrtRatioX96 } from './calculateLimitPrice.js';\nimport type { PoolSlot0, SimulateSwapParams, SwapSimulationResponse } from './types.js';\nimport { AMMType } from './types.js';\n\n/**\n * Simulates a swap to get the expected output amounts without executing the swap\n * Uses Uniswap V3 Quoter contract for accurate simulation\n * \n * @param publicClient - Viem public client for blockchain reads\n * @param params - Parameters for swap simulation\n * @param chainId - Chain ID to get the appropriate Quoter address\n * @returns Promise resolving to the simulated swap results\n * \n * @example\n * ```typescript\n * const result = await simulateSwap(publicClient, {\n * pool: '0x...',\n * recipient: '0x...',\n * zeroForOne: true,\n * amountSpecified: parseEther('10'),\n * sqrtPriceLimitX96: limitPrice,\n * ammType: AMMType.UniswapV3,\n * tokenIn: '0x...',\n * tokenOut: '0x...',\n * fee: 3000\n * }, 137); // Polygon chain ID\n * \n * if (result.success) {\n * console.log('Amount out:', result.data.amountOut);\n * }\n * ```\n */\nexport async function simulateSwap(\n publicClient: PublicClient,\n params: SimulateSwapParams,\n chainId: number\n): Promise<SteerResponse<SwapSimulationResponse>> {\n try {\n // For now, only handle UniswapV3 - other AMMs can be added later\n\n // Get the appropriate Quoter contract address\n\n const networkConfig = getNetworkByChainId(chainId);\n\n if (!networkConfig) {\n throw Error('Network config not found')\n }\n \n const protocol = params.protocol || getProtcolTypeByAmmType(params.ammType);\n\n const quoterFactory = new QuoterV2Factory(networkConfig);\n\n const quoterABI = quoterFactory.getQuoterAbi(protocol);\n\n const quoteParams = quoterFactory.getQuoteParams(protocol, {\n tokenIn: params.tokenIn,\n tokenOut: params.tokenOut,\n fee: params.fee,\n tickSpacing: params.tickSpacing,\n amountIn: params.amountSpecified,\n sqrtPriceLimitX96: params.sqrtPriceLimitX96,\n limitSqrtPrice: params.sqrtPriceLimitX96,\n })\n\n const quoterAddress = quoterFactory.getQuoterV2Address(\n protocol\n )\n // Use Quoter's quoteExactInputSingle for simulation\n const result = await publicClient.call({\n to: quoterAddress as Address,\n data: encodeFunctionData({\n abi: quoterABI,\n functionName: 'quoteExactInputSingle',\n //@ts-expect-error Parameters are dynamic in nature and very based on abi types\n args: [{\n ...quoteParams\n }]\n })\n });\n\n if (!result.data) {\n throw new Error('No data returned from quoter simulation');\n }\n\n // Decode the result - Different quoters return different tuple structures:\n // - Standard Uniswap/QuickSwap: [amountOut, sqrtPriceX96After, initializedTicksCrossed, gasEstimate]\n // - AlgebraIntegral: [amountOut, amountIn, sqrtPriceX96After, initializedTicksCrossed, gasEstimate, fee]\n const decodedResult = decodeFunctionResult({\n abi: quoterABI,\n functionName: 'quoteExactInputSingle',\n data: result.data\n });\n\n // Extract values based on protocol type\n let amountOut: bigint;\n let sqrtPriceX96After: bigint;\n \n // Check if this is an AlgebraIntegral protocol (which has amountIn as second return value)\n if (protocol && isAlgebraIntegralProtocol(protocol)) {\n // AlgebraIntegral format: [amountOut, amountIn, sqrtPriceX96After, ...]\n const [out, , priceAfter] = decodedResult as readonly [bigint, bigint, bigint, number, bigint, number];\n amountOut = out;\n sqrtPriceX96After = priceAfter;\n } else {\n // Standard format: [amountOut, sqrtPriceX96After, ...]\n const [out, priceAfter] = decodedResult as readonly [bigint, bigint, number, bigint];\n amountOut = out;\n sqrtPriceX96After = priceAfter;\n }\n\n // Convert to the expected SwapSimulationResponse format\n // For exact input swaps, we know the input amount and get the output amount\n let amount0: bigint, amount1: bigint;\n \n if (params.zeroForOne) {\n // Swapping token0 for token1\n amount0 = -params.amountSpecified; // negative because we're giving token0\n amount1 = amountOut; // positive because we're receiving token1\n } else {\n // Swapping token1 for token0\n amount0 = amountOut; // positive because we're receiving token0\n amount1 = -params.amountSpecified; // negative because we're giving token1\n }\n\n return {\n data: {\n amount0,\n amount1,\n sqrtPriceX96After\n },\n status: 200,\n success: true\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Failed to simulate swap'\n };\n }\n}\n\n/**\n * Determines the swap direction based on the token being deposited\n * \n * @param isToken0 - true if depositing token0, false if token1\n * @returns true if swapping token0 → token1, false otherwise\n */\nexport function determineSwapDirection(isToken0: boolean): boolean {\n // If depositing token0, we need to swap some token0 to token1\n // If depositing token1, we need to swap some token1 to token0\n return isToken0;\n}\n\n/**\n * Validates swap simulation parameters\n * \n * @param params - Parameters to validate\n * @throws Error if parameters are invalid\n */\nexport function validateSwapParams(params: SimulateSwapParams): void {\n if (!params.pool || params.pool === '0x0000000000000000000000000000000000000000') {\n throw new Error('Invalid pool address');\n }\n \n if (!params.recipient || params.recipient === '0x0000000000000000000000000000000000000000') {\n throw new Error('Invalid recipient address');\n }\n \n if (params.amountSpecified <= 0n) {\n throw new Error('Amount specified must be greater than 0');\n }\n \n if (params.sqrtPriceLimitX96 <= 0n) {\n throw new Error('Sqrt price limit must be greater than 0');\n }\n\n if (!params.tokenIn || params.tokenIn === '0x0000000000000000000000000000000000000000') {\n throw new Error('Invalid tokenIn address');\n }\n\n if (!params.tokenOut || params.tokenOut === '0x0000000000000000000000000000000000000000') {\n throw new Error('Invalid tokenOut address');\n }\n\n if (params.fee <= 0) {\n throw new Error('Pool fee must be greater than 0');\n }\n} \n\n/**\n * Parameters for swap with slippage analysis\n */\nexport interface SwapWithSlippageParams {\n /** Address of the pool */\n poolAddress: string;\n /** Address that will receive the swap output (or address(this) for simulation) */\n recipient: string;\n /** true if swapping token0 → token1, else false */\n zeroForOne: boolean;\n /** Amount to swap */\n amountSpecified: bigint;\n /** Slippage-adjusted limit price */\n sqrtPriceLimitX96: bigint;\n /** AMM type */\n ammType: AMMType;\n /** Input token address (required for Quoter) */\n tokenIn: string;\n /** Output token address (required for Quoter) */\n tokenOut: string;\n /** Pool fee (required for Quoter) */\n fee: number;\n /** Quoter contract address (optional - will use default if not provided) */\n quoterAddress?: string;\n /** Protocol */\n protocol?: Protocol | null;\n}\n\n/**\n * Response from swap simulation with slippage analysis\n */\nexport interface SwapWithSlippageResponse {\n /** Current pool slot0 data */\n currentSlot0: PoolSlot0;\n /** Swap simulation results */\n swapSimulation: SwapSimulationResponse;\n /** Price slippage percentage (positive means price moved unfavorably) */\n priceSlippagePercent: string;\n /** Current price (derived from sqrtPriceX96) */\n currentPrice: bigint;\n /** Price after swap (derived from sqrtPriceX96After) */\n priceAfter: bigint;\n}\n\n/**\n * Simulates a swap with slippage analysis by first getting current pool state,\n * then simulating the swap and calculating price impact\n * \n * @param publicClient - Viem public client for blockchain reads\n * @param params - Parameters for swap simulation with slippage analysis\n * @param chainId - Chain ID to get the appropriate Quoter address\n * @returns Promise resolving to swap results with slippage analysis\n * \n * @example\n * ```typescript\n * const result = await simulateSwapWithSlippage(publicClient, {\n * poolAddress: '0x...',\n * recipient: '0x...',\n * zeroForOne: true,\n * amountSpecified: parseEther('10'),\n * sqrtPriceLimitX96: limitPrice,\n * ammType: AMMType.UniswapV3,\n * tokenIn: '0x...',\n * tokenOut: '0x...',\n * fee: 3000\n * }, 137); // Polygon chain ID\n * \n * if (result.success) {\n * console.log('Price slippage:', result.data.priceSlippagePercent, '%');\n * console.log('Current price:', result.data.currentPrice);\n * console.log('Price after swap:', result.data.priceAfter);\n * }\n * ```\n */\nexport async function simulateSwapWithSlippage(\n publicClient: PublicClient,\n params: SwapWithSlippageParams,\n chainId: number\n): Promise<SteerResponse<SwapWithSlippageResponse>> {\n try {\n // Validate params\n validateSwapWithSlippageParams(params);\n\n // Step 1: Get current pool state from slot0\n\n const slot0Result = await getPoolSlot0(\n publicClient,\n params.poolAddress as `0x${string}`,\n params.ammType\n )\n\n if (!slot0Result.data) {\n throw new Error('Failed to get pool slot0 data');\n }\n\n // Decode slot0 result\n const currentSlot0: PoolSlot0 = {\n sqrtPriceX96: getPoolPrice(slot0Result.data, {\n isAlgebraPool: params.ammType === AMMType.Algebra,\n isAlgebraIntegralPool: params.ammType === AMMType.AlgebraIntegral,\n isPoolSharkPool: false // PoolShark not defined in AMMType enum\n }) || BigInt(0),\n tick: slot0Result.data.tick,\n observationIndex: slot0Result.data.observationIndex,\n observationCardinality: slot0Result.data.observationCardinality,\n observationCardinalityNext: slot0Result.data.observationCardinalityNext,\n feeProtocol: slot0Result.data.feeProtocol,\n unlocked: slot0Result.data.unlocked\n };\n\n const tickSpacing = await publicClient.readContract({\n abi: [ {\n \"inputs\": [],\n \"name\": \"tickSpacing\",\n \"outputs\": [\n {\n \"internalType\": \"int24\",\n \"name\": \"\",\n \"type\": \"int24\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },],\n functionName: 'tickSpacing',\n address: params.poolAddress as `0x${string}`,\n })\n\n // Step 2: Simulate the swap using existing function\n const swapParams: SimulateSwapParams = {\n pool: params.poolAddress as `0x${string}`,\n recipient: params.recipient as `0x${string}`,\n zeroForOne: params.zeroForOne,\n amountSpecified: params.amountSpecified,\n sqrtPriceLimitX96: params.sqrtPriceLimitX96,\n ammType: params.ammType,\n tokenIn: params.tokenIn as `0x${string}`,\n tokenOut: params.tokenOut as `0x${string}`,\n fee: params.fee,\n tickSpacing: tickSpacing,\n quoterAddress: params.quoterAddress as `0x${string}` | undefined,\n protocol: params.protocol\n };\n\n const swapResult = await simulateSwap(publicClient, swapParams, chainId);\n\n if (!swapResult.success || !swapResult.data) {\n throw new Error(swapResult.error || 'Swap simulation failed');\n }\n\n // Step 3: Calculate price slippage\n const currentPrice = getQuoteFromSqrtRatioX96(\n bigintToDecimal(currentSlot0.sqrtPriceX96),\n bigintToDecimal(10n**18n),\n params.tokenIn as `0x${string}`,\n params.tokenOut as `0x${string}`\n );\n const priceAfter = getQuoteFromSqrtRatioX96(\n bigintToDecimal(swapResult.data.sqrtPriceX96After),\n bigintToDecimal(10n**18n),\n params.tokenIn as `0x${string}`,\n params.tokenOut as `0x${string}`\n );\n \n // Calculate slippage percentage\n // Positive slippage means unfavorable price movement\n const priceSlippagePercent = calculatePriceSlippage(\n currentPrice,\n priceAfter,\n params.zeroForOne\n );\n\n return {\n data: {\n currentSlot0,\n swapSimulation: swapResult.data,\n priceSlippagePercent: priceSlippagePercent.toFixed(5),\n currentPrice: decimalToBigint(currentPrice),\n priceAfter: decimalToBigint(priceAfter)\n },\n status: 200,\n success: true\n };\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Failed to simulate swap with slippage'\n };\n }\n}\n\n/**\n * Calculates price slippage percentage using Decimal.js\n * \n * @param priceBefore - Price before the swap (Decimal)\n * @param priceAfter - Price after the swap (Decimal)\n * @param zeroForOne - Swap direction (true if token0 → token1)\n * @returns Slippage percentage (positive means unfavorable movement)\n */\nfunction calculatePriceSlippage(\n priceBefore: Decimal,\n priceAfter: Decimal,\n zeroForOne: boolean\n): Decimal {\n if (priceBefore.isZero()) {\n throw new Error('Price before cannot be zero');\n }\n\n const priceChange = priceAfter.minus(priceBefore).dividedBy(priceBefore).times(100);\n \n // For zeroForOne swaps (selling token0), favorable movement is price going down\n // For oneForZero swaps (selling token1), favorable movement is price going up\n // We return positive values for unfavorable movement (slippage)\n return zeroForOne ? priceChange : priceChange.negated();\n}\n\n/**\n * Validates swap with slippage parameters\n * \n * @param params - Parameters to validate\n * @throws Error if parameters are invalid\n */\nfunction validateSwapWithSlippageParams(params: SwapWithSlippageParams): void {\n if (!params.poolAddress || params.poolAddress === '0x0000000000000000000000000000000000000000') {\n throw new Error('Invalid pool address');\n }\n \n if (!params.recipient || params.recipient === '0x0000000000000000000000000000000000000000') {\n throw new Error('Invalid recipient address');\n }\n \n if (params.amountSpecified <= 0n) {\n throw new Error('Amount specified must be greater than 0');\n }\n \n if (params.sqrtPriceLimitX96 <= 0n) {\n throw new Error('Sqrt price limit must be greater than 0');\n }\n\n if (!params.tokenIn || params.tokenIn === '0x0000000000000000000000000000000000000000') {\n throw new Error('Invalid tokenIn address');\n }\n\n if (!params.tokenOut || params.tokenOut === '0x0000000000000000000000000000000000000000') {\n throw new Error('Invalid tokenOut address');\n }\n\n if (params.fee <= 0) {\n throw new Error('Pool fee must be greater than 0');\n }\n} "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"singleAssetDeposit.js","sourceRoot":"","sources":["../../../../../src/base/vault/single-asset/singleAssetDeposit.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Address, Hash, PublicClient, WalletClient } from 'viem';\nimport { getContractAddressByChainIdAndContractName, getProtocolTypeByBeacon, Protocol } from '../../../const/index.js';\nimport { singleTokenDepositAbi } from '../../../const/abis/singleTokenDeposit.js';\nimport { UniswapV3PoolABI } from '../../../const/abis/UniswapPool.js';\nimport { AlgebraVaultDetails, SteerResponse, VaultDetails } from '../../../types.js';\nimport { calculateLimitPrice } from './calculateLimitPrice.js';\nimport { calculateSwapAmount } from './calculateSwapAmount.js';\nimport { estimateLpTokens } from './estimateLpTokens.js';\nimport { determineSwapDirection, simulateSwapWithSlippage, SwapWithSlippageParams } from './simulateSwap.js';\nimport type {\n CalculateLimitPriceParams,\n CalculateSwapAmountParams,\n SingleAssetDepositParams,\n SingleAssetDepositPreview\n} from './types.js';\nimport { AMMType } from './types.js';\nimport { abis } from '../../../const/deployments/abis.js';\n\nconst PERIPHERY_ABI = abis.SteerPeriphery;\n\n/**\n * Main single-asset deposit client that orchestrates all the steps\n */\nexport class SingleAssetDepositClient {\n constructor(\n private readonly publicClient: PublicClient,\n private readonly walletClient: WalletClient\n ) {}\n\n /**\n * Previews a single-asset deposit by running all simulation steps\n * This allows users to see the expected outcome before executing the transaction\n * \n * @param params - Single-asset deposit parameters\n * @param poolAddress - Address of the pool (must be provided separately)\n * @returns Promise resolving to the complete deposit preview\n * \n * @example\n * ```typescript\n * const preview = await client.previewDeposit({\n * assets: parseEther('100'),\n * receiver: userAddress,\n * vault: vaultAddress,\n * isToken0: true,\n * depositSlippagePercent: 5n,\n * swapSlippageBP: 500,\n * ammType: AMMType.UniswapV3,\n * singleAssetDepositContract: contractAddress\n * }, poolAddress);\n * \n * if (preview.success) {\n * console.log('Expected LP tokens:', preview.data.lpEstimation.lpTokens);\n * console.log('Swap amount:', preview.data.swapAmount);\n * }\n * ```\n */\n public async previewDeposit(\n params: SingleAssetDepositParams,\n poolAddress: `0x${string}`\n ): Promise<SteerResponse<SingleAssetDepositPreview>> {\n try {\n\n const chainId = await this.publicClient.getChainId();\n const singleAssentDeposit = params.singleAssetDepositContract || getContractAddressByChainIdAndContractName(\n chainId,\n 'SingleAssetDeposit'\n )\n\n // Step 1: Calculate swap amount\n const swapAmountParams: CalculateSwapAmountParams = {\n depositAmount: params.assets,\n isToken0: params.isToken0,\n vault: params.vault,\n pool: poolAddress,\n ammType: params.ammType,\n singleAssetDepositContract: singleAssentDeposit as Address\n };\n\n\n const swapAmountResult = await calculateSwapAmount(this.publicClient, swapAmountParams);\n if (!swapAmountResult.success || !swapAmountResult.data) {\n return {\n data: null,\n status: swapAmountResult.status,\n success: false,\n error: swapAmountResult.error || 'Failed to calculate swap amount'\n };\n }\n\n const { swapAmount, sqrtPrice } = swapAmountResult.data;\n const zeroForOne = determineSwapDirection(params.isToken0);\n\n // Get token addresses from the pool contract\n const [token0, token1] = await Promise.all([\n this.publicClient.readContract({\n address: poolAddress,\n abi: UniswapV3PoolABI,\n functionName: 'token0'\n }) as Promise<`0x${string}`>,\n this.publicClient.readContract({\n address: poolAddress,\n abi: UniswapV3PoolABI,\n functionName: 'token1'\n }) as Promise<`0x${string}`>\n ]);\n\n // Step 2: Calculate limit price\n const limitPriceParams: CalculateLimitPriceParams = {\n pool: poolAddress,\n slippageBP: params.swapSlippageBP,\n zeroForOne,\n ammType: params.ammType,\n token0,\n token1\n };\n\n const limitPriceResult = await calculateLimitPrice(this.publicClient, limitPriceParams);\n if (!limitPriceResult.success || limitPriceResult.data === null) {\n return {\n data: null,\n status: limitPriceResult.status,\n success: false,\n error: limitPriceResult.error || 'Failed to calculate limit price'\n };\n }\n\n const sqrtPriceLimitX96 = limitPriceResult.data;\n\n let fee = 3000;\n if (params.ammType === AMMType.UniswapV3) {\n fee = await this.publicClient.readContract({\n address: poolAddress,\n abi: UniswapV3PoolABI,\n functionName: 'fee'\n }) as number;\n }\n // Get pool fee from the contract\n\n let vaultDetails: VaultDetails | AlgebraVaultDetails;\n const steerPeripheryAddress = getContractAddressByChainIdAndContractName(chainId, 'SteerPeriphery');\n if (!steerPeripheryAddress) throw new Error('SteerPeriphery address not found');\n\n let protocol: Protocol | null;\n\n try {\n // First try regular vault\n vaultDetails = await this.publicClient.readContract({\n address: params.vault,\n abi: PERIPHERY_ABI,\n functionName: 'vaultDetailsByAddress',\n args: [params.vault]\n }) as VaultDetails;\n\n protocol = getProtocolTypeByBeacon(vaultDetails.vaultType);\n } catch (error) {\n // If regular vault fails, try Algebra vault\n vaultDetails = await this.publicClient.readContract({\n address: steerPeripheryAddress as Address,\n abi: PERIPHERY_ABI,\n functionName: 'algebraVaultDetailsByAddress',\n args: [params.vault]\n }) as AlgebraVaultDetails;\n\n protocol = getProtocolTypeByBeacon(vaultDetails.vaultType);\n }\n // Step 3: Simulate swap\n const simulateSwapParams: SwapWithSlippageParams = {\n poolAddress: poolAddress,\n recipient: params.receiver, // For simulation, use receiver address\n zeroForOne,\n amountSpecified: swapAmount,\n sqrtPriceLimitX96,\n ammType: params.ammType,\n tokenIn: zeroForOne ? token0 : token1,\n tokenOut: zeroForOne ? token1 : token0,\n fee,\n protocol\n };\n\n const swapSimulationResult = await simulateSwapWithSlippage(\n this.publicClient, \n simulateSwapParams, \n this.publicClient.chain?.id || 1 // Use chain ID from public client, fallback to mainnet\n );\n if (!swapSimulationResult.success || !swapSimulationResult.data) {\n return {\n data: null,\n status: swapSimulationResult.status,\n success: false,\n error: swapSimulationResult.error || 'Failed to simulate swap'\n };\n }\n\n const swapSimulation = swapSimulationResult.data;\n\n // Step 4: Estimate LP tokens\n const lpEstimationResult = await estimateLpTokens(this.publicClient, {\n vault: params.vault,\n originalAssets: params.assets,\n swapAmount,\n swapResult: swapSimulation.swapSimulation,\n isToken0: params.isToken0\n });\n\n if (!lpEstimationResult.success || !lpEstimationResult.data) {\n return {\n data: null,\n status: lpEstimationResult.status,\n success: false,\n error: lpEstimationResult.error || 'Failed to estimate LP tokens'\n };\n }\n\n const lpEstimation = lpEstimationResult.data;\n\n return {\n data: {\n swapAmount,\n currentSqrtPrice: sqrtPrice,\n sqrtPriceLimitX96,\n swapSimulation,\n lpEstimation,\n zeroForOne\n },\n status: 200,\n success: true\n };\n\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Failed to preview single-asset deposit'\n };\n }\n }\n\n /**\n * Executes a single-asset deposit transaction\n * \n * @param params - Single-asset deposit parameters\n * @returns Promise resolving to the transaction hash\n * \n * @example\n * ```typescript\n * const result = await client.deposit({\n * assets: parseEther('100'),\n * receiver: userAddress,\n * vault: vaultAddress,\n * isToken0: true,\n * depositSlippagePercent: 5n,\n * swapSlippageBP: 500,\n * ammType: AMMType.UniswapV3,\n * singleAssetDepositContract: contractAddress\n * });\n * \n * if (result.success) {\n * console.log('Transaction hash:', result.data);\n * }\n * ```\n */\n public async deposit(params: SingleAssetDepositParams): Promise<SteerResponse<Hash>> {\n try {\n const account = await this.walletClient.getAddresses();\n if (!account[0]) {\n throw new Error('No account found');\n }\n\n const singleAssentDeposit = params.singleAssetDepositContract || getContractAddressByChainIdAndContractName(\n this.publicClient.chain?.id || 1,\n 'SingleAssetDeposit'\n )\n\n // Prepare the transaction\n const { request } = await this.publicClient.simulateContract({\n address: singleAssentDeposit as Address,\n abi: singleTokenDepositAbi,\n functionName: 'deposit',\n args: [\n params.assets,\n params.receiver,\n params.vault,\n params.isToken0,\n params.depositSlippagePercent,\n params.swapSlippageBP,\n params.ammType\n ],\n account: account[0]\n });\n\n // Execute the transaction\n const hash = await this.walletClient.writeContract(request);\n\n return {\n data: hash,\n status: 200,\n success: true\n };\n\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Failed to execute single-asset deposit'\n };\n }\n }\n\n /**\n * Prepares a single-asset deposit transaction without executing it\n * Useful for batching transactions or custom execution logic\n * \n * @param params - Single-asset deposit parameters\n * @returns Promise resolving to the prepared transaction data\n */\n public async prepareDepositTx(params: SingleAssetDepositParams) {\n try {\n const account = await this.walletClient.getAddresses();\n if (!account[0]) {\n throw new Error('No account found');\n }\n\n const chainId = await this.publicClient.getChainId();\n\n const singleAssentDeposit = params.singleAssetDepositContract || getContractAddressByChainIdAndContractName(\n chainId,\n 'SingleAssetDeposit'\n )\n // await this.publicClient.simulateContract({\n // address: singleAssentDeposit as Address,\n // abi: singleTokenDepositAbi,\n // functionName: 'deposit',\n // args: [\n // params.assets,\n // params.receiver,\n // params.vault,\n // params.isToken0,\n // params.depositSlippagePercent,\n // params.swapSlippageBP,\n // params.ammType\n // ],\n // account: account[0]\n // });\n\n return {\n data: {\n address: params.singleAssetDepositContract || singleAssentDeposit,\n abi: singleTokenDepositAbi,\n functionName: 'deposit' as const,\n args: [\n params.assets,\n params.receiver,\n params.vault,\n params.isToken0,\n params.depositSlippagePercent,\n params.swapSlippageBP,\n params.ammType\n ] as const\n },\n status: 200,\n success: true\n };\n\n } catch (error) {\n return {\n data: null,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Failed to prepare single-asset deposit transaction'\n };\n }\n }\n\n /**\n * Validates single-asset deposit parameters\n * \n * @param params - Parameters to validate\n * @throws Error if parameters are invalid\n */\n public validateDepositParams(params: SingleAssetDepositParams): void {\n if (params.assets <= 0n) {\n throw new Error('Assets amount must be greater than 0');\n }\n\n if (!params.vault || params.vault === '0x0000000000000000000000000000000000000000') {\n throw new Error('Invalid vault address');\n }\n\n if (!params.receiver || params.receiver === '0x0000000000000000000000000000000000000000') {\n throw new Error('Invalid receiver address');\n }\n\n if (!params.singleAssetDepositContract || params.singleAssetDepositContract === '0x0000000000000000000000000000000000000000') {\n throw new Error('Invalid single-asset deposit contract address');\n }\n\n if (params.depositSlippagePercent > 100n) {\n throw new Error('Deposit slippage percent cannot exceed 100%');\n }\n\n if (params.swapSlippageBP > 10000) {\n throw new Error('Swap slippage BP cannot exceed 10000 (100%)');\n }\n\n if (!Object.values(AMMType).includes(params.ammType)) {\n throw new Error('Invalid AMM type');\n }\n }\n} "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/base/vault/single-asset/types.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACH,IAAY,OAQX;AARD,WAAY,OAAO;IACjB,+CAAa,CAAA;IACb,2CAAW,CAAA;IACX,iEAAsB,CAAA;IACtB,mDAAe,CAAA;IACf,2DAAmB,CAAA;IACnB,+CAAa,CAAA;AAEf,CAAC,EARW,OAAO,uBAAP,OAAO,QAQlB","sourcesContent":["import type { Address } from 'viem';\nimport { SwapWithSlippageResponse } from './simulateSwap.js';\nimport { Protocol } from '../../../const/index.js';\n\n/**\n * AMM Types supported by single-asset deposits\n */\nexport enum AMMType {\n UniswapV3 = 0,\n Algebra = 1,\n AlgebraDirectional = 2,\n AlgebraVE33 = 3,\n AlgebraIntegral = 4,\n Aerodrome = 5\n \n}\n\n/**\n * Parameters for single-asset deposit\n */\nexport interface SingleAssetDepositParams {\n /** Amount of input token provided by the user */\n assets: bigint;\n /** Address to receive LP tokens */\n receiver: Address;\n /** Address of the vault to deposit into */\n vault: Address;\n /** true if input token is token0, false if token1 */\n isToken0: boolean;\n /** Maximum allowed slippage during deposit (in %) */\n depositSlippagePercent: bigint;\n /** Slippage tolerance for internal swap (in basis points) */\n swapSlippageBP: number;\n /** Type of AMM */\n ammType: AMMType;\n /** Address of the single-asset deposit contract */\n singleAssetDepositContract?: Address;\n}\n\n/**\n * Parameters for calculating swap amount\n */\nexport interface CalculateSwapAmountParams {\n /** Amount of tokens being deposited */\n depositAmount: bigint;\n /** true if depositing token0, false if token1 */\n isToken0: boolean;\n /** Address of the vault */\n vault: Address;\n /** Address of the pool */\n pool: Address;\n /** Type of AMM */\n ammType: AMMType;\n /** Address of the single-asset deposit contract */\n singleAssetDepositContract: Address;\n}\n\n/**\n * Response from calculateSwapAmount\n */\nexport interface SwapAmountResponse {\n /** Amount to be swapped from the input token */\n swapAmount: bigint;\n /** Current sqrt price (used for internal calculation) */\n sqrtPrice: bigint;\n}\n\n/**\n * Parameters for calculating sqrt price limit\n */\nexport interface CalculateLimitPriceParams {\n /** Address of the pool */\n pool: Address;\n /** Slippage tolerance in basis points */\n slippageBP: number;\n /** true if swapping token0 for token1, false otherwise */\n zeroForOne: boolean;\n /** Type of AMM */\n ammType: AMMType;\n /** Address of token0 */\n token0: Address;\n /** Address of token1 */\n token1: Address;\n}\n\n/**\n * Parameters for simulating a swap\n */\nexport interface SimulateSwapParams {\n /** Address of the pool */\n pool: Address;\n /** Address that will receive the swap output (or address(this) for simulation) */\n recipient: Address;\n /** true if swapping token0 → token1, else false */\n zeroForOne: boolean;\n /** Value from calculateSwapAmount */\n amountSpecified: bigint;\n /** Slippage-adjusted limit price */\n sqrtPriceLimitX96: bigint;\n /** AMM type */\n ammType: AMMType;\n /** Input token address (required for Quoter) */\n tokenIn: Address;\n /** Output token address (required for Quoter) */\n tokenOut: Address;\n /** Pool fee (required for Quoter) */\n fee: number;\n /** Quoter contract address (optional - will use default if not provided) */\n quoterAddress?: Address;\n /*** Tick spacing */\n tickSpacing: number;\n\n /** Protocol */\n protocol?: Protocol | null;\n}\n\n/**\n * Response from swap simulation\n */\nexport interface SwapSimulationResponse {\n /** Final token0 amount after swap */\n amount0: bigint;\n /** Final token1 amount after swap */\n amount1: bigint;\n\n sqrtPriceX96After: bigint\n}\n\n/**\n * Parameters for estimating LP tokens\n */\nexport interface EstimateLpTokensParams {\n /** Address of the vault */\n vault: Address;\n /** Original deposit amount */\n originalAssets: bigint;\n /** Amount that was swapped internally */\n swapAmount: bigint;\n /** Tokens received from the swap (amount0 and amount1) */\n swapResult: SwapSimulationResponse;\n /** true if original deposit was token0, false if token1 */\n isToken0: boolean;\n}\n\n/**\n * Response from LP token estimation\n */\nexport interface LpTokenEstimationResponse {\n /** Estimated amount of LP tokens to be received */\n lpTokens: bigint;\n /** Final amount of token0 that will be deposited */\n finalAmount0: bigint;\n /** Final amount of token1 that will be deposited */\n finalAmount1: bigint;\n}\n\n/**\n * Comprehensive single-asset deposit preview\n */\nexport interface SingleAssetDepositPreview {\n /** Amount to be swapped internally */\n swapAmount: bigint;\n /** Current sqrt price */\n currentSqrtPrice: bigint;\n /** Slippage-adjusted limit price for swap */\n sqrtPriceLimitX96: bigint;\n /** Simulated swap result */\n swapSimulation: SwapWithSlippageResponse;\n /** LP token estimation */\n lpEstimation: LpTokenEstimationResponse;\n /** Whether the swap direction is token0 → token1 */\n zeroForOne: boolean;\n}\n\n/**\n * Pool slot0 data structure for UniswapV3\n */\nexport interface PoolSlot0 {\n sqrtPriceX96: bigint;\n tick: number;\n observationIndex: number;\n observationCardinality: number;\n observationCardinalityNext: number;\n feeProtocol: number;\n unlocked: boolean;\n} "]}
|