@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":"StakingClient.js","sourceRoot":"","sources":["../../../src/base/StakingClient.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Address, Hash, PublicClient, WalletClient } from 'viem';\nimport { SteerResponse } from '../types.js';\nimport { SubgraphClient } from './SubgraphClient.js';\nimport { VaultWithdrawClient } from './vault/withdraw/index.js';\nimport { StakingProtocol, isValidStakingProtocol, normalizeProtocol } from '../const/protocol.js';\nimport { Decimal } from 'decimal.js';\n\n// Interfaces for staking pool data from API\nexport interface StakingPool {\n allSymbols?: string\n rewardToken: Address\n rewardTokenDetail?: Reward\n rewardTokenA: Address\n rewardTokenADetail: Reward\n rewardTokenB?: Address\n rewardTokenBDetail?: Reward\n dailyEmissionRewardA: number\n dailyEmissionRewardB?: number\n chainId: number\n stakingPool: string\n stakingToken: string\n protocol: string\n staking: Staking\n reward: Reward\n isSteerVault: boolean\n beaconName?: string\n vaultTokens?: VaultTokens\n periodFinish: string\n isDualFactory?: boolean\n feeTier?: string\n rewardsDuration: string\n strategyId?:string\n isActive?:boolean\n postGeneratedTotalStaked?:number\n postGeneratedApr?: number\n stakedAmount?:bigint,\n locked?:boolean\n}\n\n\nexport interface VaultTokens {\n token0: Token0\n token1: Token1\n}\n\nexport interface Token0 {\n name: string\n address: Address\n symbol: string\n}\n\nexport interface Token1 {\n name: string\n address: Address\n symbol: string\n}\n\nexport interface Reward {\n symbol: string\n name: string\n address: Address,\n decimals: number\n}\n\nexport interface Staking {\n symbol: string\n name: string\n address: Address\n decimals: number\n}\n\nexport interface StakingPoolFilter {\n chainId?: number;\n protocol?: StakingProtocol;\n isLive?: boolean;\n includeExpired?: boolean;\n minDailyEmissionA?: number;\n minDailyEmissionB?: number;\n isDualRewards?: boolean;\n}\n\n// Interfaces for contract parameters\nexport interface StakeParams {\n stakingPool: Address;\n amount: bigint;\n}\n\nexport interface WithdrawParams {\n stakingPool: Address;\n amount: bigint;\n}\n\nexport interface GetRewardParams {\n stakingPool: Address;\n}\n\nexport interface TokenValueParams {\n stakingPool: StakingPool;\n amount: bigint;\n token0UsdPrice: number;\n token1UsdPrice: number;\n}\n\nexport interface TokenValueResponse {\n totalValueUsd: number;\n token0Value?: number;\n token1Value?: number;\n tokenValue?: number;\n}\n\n// Add type definition for raw pool data\ninterface RawStakingPool {\n allSymbols?: string\n rewardToken: Address\n rewardTokenDetail?: Reward\n rewardTokenA: Address\n rewardTokenADetail: Reward\n rewardTokenB?: Address\n rewardTokenBDetail?: Reward\n dailyEmissionRewardA: number\n dailyEmissionRewardB?: number\n chainId: number\n stakingPool: string\n stakingToken: string\n protocol: StakingProtocol\n staking: Staking\n reward: Reward\n isSteerVault: boolean\n beaconName?: string\n vaultTokens?: VaultTokens\n periodFinish: string\n isDualFactory?: boolean\n feeTier?: string\n rewardsDuration: string\n strategyId?:string\n isActive?:boolean\n postGeneratedTotalStaked?:number\n postGeneratedApr?: number\n stakedAmount?:bigint,\n locked?:boolean\n}\n\n// ABIs for staking contracts\nconst SINGLE_REWARD_ABI = [\n {\n \"inputs\": [],\n \"name\": \"lastTimeRewardApplicable\",\n \"outputs\": [{\"type\": \"uint256\"}],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{\"type\": \"address\"}],\n \"name\": \"earned\",\n \"outputs\": [{\"type\": \"uint256\"}],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [{\"type\": \"uint256\"}],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{\"type\": \"address\"}],\n \"name\": \"balanceOf\",\n \"outputs\": [{\"type\": \"uint256\"}],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{\"type\": \"uint256\"}],\n \"name\": \"stake\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{\"type\": \"uint256\"}],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getReward\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"exit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n] as const;\n\nconst DUAL_REWARD_ABI = [\n ...SINGLE_REWARD_ABI,\n {\n \"inputs\": [{\"type\": \"address\"}],\n \"name\": \"earnedA\",\n \"outputs\": [{\"type\": \"uint256\"}],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{\"type\": \"address\"}],\n \"name\": \"earnedB\",\n \"outputs\": [{\"type\": \"uint256\"}],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n] as const;\n\nconst ERC20_ABI = [\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [{\"type\": \"uint8\"}],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n] as const;\n\nexport class StakingClient extends SubgraphClient {\n protected readonly publicClient: PublicClient;\n protected readonly walletClient: WalletClient;\n private readonly stakingPoolsEndpoint = 'https://9i52h964s3.execute-api.us-east-1.amazonaws.com/dev/staking-pools';\n private readonly withdrawClient: VaultWithdrawClient;\n\n constructor(client: PublicClient & WalletClient) {\n super(client);\n this.publicClient = client;\n this.walletClient = client;\n this.withdrawClient = new VaultWithdrawClient(client, client);\n }\n\n /**\n * Fetches and filters staking pools based on provided criteria\n * @param filter Optional filter object to filter the pools\n */\n public async getStakingPools(\n filter?: StakingPoolFilter\n ): Promise<SteerResponse<StakingPool[]>> {\n try {\n const response = await fetch(this.stakingPoolsEndpoint);\n if (!response.ok) {\n throw new Error('Failed to fetch staking pools');\n }\n\n const rawPools: RawStakingPool[] = (await response.json()).pools;\n\n // Convert and validate protocols in the response\n let pools: StakingPool[] = rawPools\n .filter((pool) => isValidStakingProtocol(pool.protocol))\n .map((pool) => ({\n ...pool,\n protocol: normalizeProtocol(pool.protocol)\n }));\n\n // Apply filters if provided\n if (filter) {\n pools = this.filterPools(pools, filter);\n }\n\n return {\n data: pools,\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 only currently active staking pools\n * @param chainId Optional chain ID to filter pools\n * @param protocol Optional protocol name to filter pools\n */\n public async getLiveStakingPools(chainId?: number, protocol?: StakingProtocol): Promise<SteerResponse<StakingPool[]>> {\n return this.getStakingPools({\n chainId,\n protocol,\n isLive: true,\n includeExpired: false\n });\n }\n\n /**\n * Gets all dual rewards staking pools\n * @param chainId Optional chain ID to filter pools\n * @param protocol Optional protocol name to filter pools\n * @param isLive Optional flag to only get live pools\n */\n public async getDualRewardsStakingPools(\n chainId?: number,\n protocol?: StakingProtocol,\n isLive?: boolean\n ): Promise<SteerResponse<StakingPool[]>> {\n return this.getStakingPools({\n chainId,\n protocol,\n isLive,\n isDualRewards: true\n });\n }\n\n /**\n * Gets high yield staking pools based on minimum daily emissions\n * @param minDailyEmissionA Minimum daily emission for reward A\n * @param minDailyEmissionB Optional minimum daily emission for reward B\n * @param chainId Optional chain ID to filter pools\n */\n public async getHighYieldStakingPools(\n minDailyEmissionA: number,\n minDailyEmissionB?: number,\n chainId?: number\n ): Promise<SteerResponse<StakingPool[]>> {\n return this.getStakingPools({\n chainId,\n minDailyEmissionA,\n minDailyEmissionB,\n isLive: true\n });\n }\n\n /**\n * Internal helper to filter pools based on criteria\n */\n private filterPools(pools: StakingPool[], filter: StakingPoolFilter): StakingPool[] {\n return pools.filter(pool => {\n // Chain ID filter\n if (filter.chainId !== undefined && pool.chainId !== filter.chainId) {\n return false;\n }\n\n // Protocol filter\n if (filter.protocol !== undefined && pool.protocol !== filter.protocol) {\n return false;\n }\n\n // Dual rewards filter\n if (filter.isDualRewards !== undefined && pool.isDualFactory !== filter.isDualRewards) {\n return false;\n }\n\n // Daily emission filters\n if (filter.minDailyEmissionA !== undefined && pool.dailyEmissionRewardA < filter.minDailyEmissionA) {\n return false;\n }\n if (filter.minDailyEmissionB !== undefined && pool.dailyEmissionRewardB !== undefined && pool.dailyEmissionRewardB < filter.minDailyEmissionB) {\n return false;\n }\n\n // Live/Expired filter\n if (filter.isLive !== undefined) {\n const now = Math.floor(Date.now() / 1000);\n const periodFinish = parseInt(pool.periodFinish);\n const isPoolLive = periodFinish > now;\n\n if (filter.isLive && !isPoolLive) {\n return false;\n }\n\n if (!filter.includeExpired && !isPoolLive) {\n return false;\n }\n }\n\n return true;\n });\n }\n\n /**\n * Stakes tokens in a staking pool\n * @param params The staking parameters\n */\n public async stake(params: StakeParams): 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.stakingPool,\n abi: SINGLE_REWARD_ABI,\n functionName: 'stake',\n args: [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 * Withdraws tokens from a staking pool\n * @param params The withdrawal parameters\n */\n public async withdraw(params: WithdrawParams): 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.stakingPool,\n abi: SINGLE_REWARD_ABI,\n functionName: 'withdraw',\n args: [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 * Claims rewards from a staking pool\n * @param params The reward claim parameters\n */\n public async getReward(params: GetRewardParams): 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.stakingPool,\n abi: SINGLE_REWARD_ABI,\n functionName: 'getReward',\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 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 earned rewards for an account in a staking pool\n * @param stakingPool The staking pool address\n * @param account The account to check rewards for\n */\n public async earned(stakingPool: Address, account: Address): Promise<SteerResponse<{ rewardA: bigint; rewardB?: bigint }>> {\n try {\n // First try to read as single reward\n try {\n const reward = await this.publicClient.readContract({\n address: stakingPool,\n abi: SINGLE_REWARD_ABI,\n functionName: 'earned',\n args: [account],\n });\n\n return {\n data: { rewardA: reward },\n status: 200,\n success: true,\n };\n } catch {\n // If single reward fails, try dual rewards\n const [rewardA, rewardB] = await Promise.all([\n this.publicClient.readContract({\n address: stakingPool,\n abi: DUAL_REWARD_ABI,\n functionName: 'earnedA',\n args: [account],\n }),\n this.publicClient.readContract({\n address: stakingPool,\n abi: DUAL_REWARD_ABI,\n functionName: 'earnedB',\n args: [account],\n }),\n ]);\n\n return {\n data: { rewardA, rewardB },\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 : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Gets the total supply of staked tokens in a pool\n * @param stakingPool The staking pool address\n */\n public async totalSupply(stakingPool: Address): Promise<SteerResponse<bigint>> {\n try {\n const totalSupply = await this.publicClient.readContract({\n address: stakingPool,\n abi: SINGLE_REWARD_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 staked balance of an account in a pool\n * @param stakingPool The staking pool address\n * @param account The account to check balance for\n */\n public async balanceOf(stakingPool: Address, account: Address): Promise<SteerResponse<bigint>> {\n try {\n const balance = await this.publicClient.readContract({\n address: stakingPool,\n abi: SINGLE_REWARD_ABI,\n functionName: 'balanceOf',\n args: [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 * Calculates the APR for a staking pool\n * @param pool The staking pool data\n * @param rewardTokenPriceUSD The price of the reward token in USD\n * @param totalStakedUSD The total value staked in USD\n */\n public calculateAPR(\n pool: StakingPool,\n rewardTokenPriceUSD: number,\n totalStakedUSD: number\n ): number {\n if (totalStakedUSD === 0) {\n return 0;\n }\n\n const dailyRewardUSD = pool.dailyEmissionRewardA * rewardTokenPriceUSD;\n let apr = (dailyRewardUSD * 365 * 100) / totalStakedUSD;\n\n if (pool.isDualFactory && pool.dailyEmissionRewardB) {\n const dailyRewardBUSD = pool.dailyEmissionRewardB * rewardTokenPriceUSD;\n apr += (dailyRewardBUSD * 365 * 100) / totalStakedUSD;\n }\n\n return apr;\n }\n\n /**\n * Calculates the USD value of tokens in a staking pool\n * Handles both regular staking pools and Steer vaults\n * @param params Parameters for token value calculation\n */\n public async getSteerLpTokenValue(params: TokenValueParams): Promise<SteerResponse<TokenValueResponse>> {\n try {\n // First, get the staking pool details\n const pool = params.stakingPool;\n \n const chainId = await this.publicClient.getChainId();\n if (chainId !== pool.chainId) {\n throw new Error(`Chain ID mismatch| expected ${pool.chainId} but got ${chainId}`);\n }\n\n // Handle Steer vault staking pools\n if (pool.isSteerVault && pool.staking) {\n if (!pool.vaultTokens) {\n throw new Error('Vault tokens information not found');\n }\n\n // Get underlying token amounts from LP token\n const tokensResponse = await this.withdrawClient.getTokensFromLp(\n pool.staking.address,\n params.amount\n );\n\n if (!tokensResponse.success || !tokensResponse.data) {\n throw new Error('Failed to get token amounts from LP');\n }\n\n // Get decimals for both tokens\n const [token0Decimals, token1Decimals] = await Promise.all([\n this.publicClient.readContract({\n address: pool.vaultTokens.token0.address,\n abi: ERC20_ABI,\n functionName: 'decimals'\n }),\n this.publicClient.readContract({\n address: pool.vaultTokens.token1.address,\n abi: ERC20_ABI,\n functionName: 'decimals'\n })\n ]);\n\n // Use Decimal.js for precise calculations\n const token0Amount = new Decimal(tokensResponse.data.token0Val.toString())\n .div(new Decimal(10).pow(token0Decimals))\n .mul(params.token0UsdPrice);\n\n const token1Amount = new Decimal(tokensResponse.data.token1Val.toString())\n .div(new Decimal(10).pow(token1Decimals))\n .mul(params.token1UsdPrice);\n\n const totalValueUsd = token0Amount.plus(token1Amount).toNumber();\n const token0ValueUsd = token0Amount.toNumber();\n const token1ValueUsd = token1Amount.toNumber();\n\n return {\n data: {\n totalValueUsd,\n token0Value: token0ValueUsd,\n token1Value: token1ValueUsd\n },\n status: 200,\n success: true\n };\n }\n\n // Handle regular staking pools (non-Steer vault)\n const stakingDecimals = await this.publicClient.readContract({\n address: pool.staking.address,\n abi: ERC20_ABI,\n functionName: 'decimals'\n });\n\n const tokenValueUsd = new Decimal(params.amount.toString())\n .div(new Decimal(10).pow(stakingDecimals))\n .mul(params.token0UsdPrice)\n .toNumber();\n\n return {\n data: {\n totalValueUsd: tokenValueUsd,\n tokenValue: tokenValueUsd\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 : 'Unknown error occurred'\n };\n }\n }\n\n /**\n * Gets the total staking amount in USD for a pool\n * @param stakingPool The staking pool\n * @param token0UsdPrice Price of token0 in USD\n * @param token1UsdPrice Price of token1 in USD (required for Steer vaults)\n */\n public async getTotalStakingAmountInUsd(\n stakingPool: StakingPool,\n token0UsdPrice: number,\n token1UsdPrice?: number\n ): Promise<SteerResponse<number>> {\n try {\n // Get total supply\n const totalSupplyResponse = await this.totalSupply(stakingPool.stakingPool as `0x${string}`);\n if (!totalSupplyResponse.success || !totalSupplyResponse.data) {\n throw new Error('Failed to get total supply');\n }\n\n // Get value using getSteerLpTokenValue\n const valueResponse = await this.getSteerLpTokenValue({\n stakingPool,\n amount: totalSupplyResponse.data,\n token0UsdPrice,\n token1UsdPrice: token1UsdPrice || token0UsdPrice\n });\n\n if (!valueResponse.success || !valueResponse.data) {\n throw new Error('Failed to calculate token value');\n }\n\n return {\n data: valueResponse.data.totalValueUsd,\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 : 'Unknown error occurred'\n };\n }\n }\n\n /**\n * Prepares the transaction data for staking tokens without executing it\n * @param params The staking parameters\n */\n public async prepareStakeTx(params: StakeParams): 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 [bigint];\n }>> {\n try {\n\n return {\n data: {\n address: params.stakingPool,\n abi: [{\n type: 'function',\n inputs: [\n { name: 'amount', internalType: 'uint256', type: 'uint256' }\n ],\n name: 'stake',\n outputs: [],\n stateMutability: 'nonpayable'\n }],\n functionName: 'stake',\n args: [params.amount] 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 * Prepares the transaction data for withdrawing tokens without executing it\n * @param params The withdrawal parameters\n */\n public async prepareWithdrawTx(params: WithdrawParams): 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 [bigint];\n }>> {\n try {\n\n return {\n data: {\n address: params.stakingPool,\n abi: [{\n type: 'function',\n inputs: [\n { name: 'amount', internalType: 'uint256', type: 'uint256' }\n ],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable'\n }],\n functionName: 'withdraw',\n args: [params.amount] 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 * Prepares the transaction data for claiming rewards without executing it\n * @param params The reward claim parameters\n */\n public async prepareGetRewardTx(params: GetRewardParams): 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 }>> {\n try {\n\n return {\n data: {\n address: params.stakingPool,\n abi: [{\n type: 'function',\n inputs: [],\n name: 'getReward',\n outputs: [],\n stateMutability: 'nonpayable'\n }],\n functionName: 'getReward',\n args: [] 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} "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubgraphClient.js","sourceRoot":"","sources":["../../../src/base/SubgraphClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,OAAgB,cAAc;IAGlC,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,oBAAoB,CAClC,KAAa,EACb,SAAmC;QAEnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QAE5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;gBACxC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK;oBACL,SAAS;iBACV,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAErC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAS;gBACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,IAAI,EAAE,IAAS;gBACf,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;aACzE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACO,cAAc,CAAC,OAAe;QAEtC,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,OAAe;QAClC,OAAO,uBAAuB,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;IACxD,CAAC;CACF","sourcesContent":["import type { Client } from 'viem';\nimport { SteerResponse } from '../types.js';\nimport { getSubgraphUrlByChainId } from '../const/index.js';\n\nexport abstract class SubgraphClient {\n protected readonly client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * Executes a GraphQL query against the subgraph\n * @param query The GraphQL query string\n * @param variables Optional variables for the query\n * @returns Promise with the query result\n */\n protected async executeSubgraphQuery<T>(\n query: string,\n variables?: Record<string, unknown>\n ): Promise<SteerResponse<T>> {\n const chainId = await this.client.chain?.id;\n \n if (!chainId) {\n throw new Error('No active chain found');\n }\n\n const subgraphUrl = this.getSubgraphUrl(chainId);\n if (!subgraphUrl) {\n throw new Error(`No subgraph URL found for chain ID ${chainId}`);\n }\n\n try {\n const response = await fetch(subgraphUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n query,\n variables,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const result = await response.json();\n\n if (result.errors) {\n throw new Error(result.errors[0].message);\n }\n\n return {\n data: result.data as T,\n status: response.status,\n success: true,\n };\n } catch (error) {\n return {\n data: null as T,\n status: 500,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n }\n\n /**\n * Gets the subgraph URL for a given chain ID\n * @param chainId The chain ID to get the subgraph URL for\n * @returns The subgraph URL or undefined if not found\n */\n protected getSubgraphUrl(chainId: number): string | undefined {\n\n const subgraphUrl = getSubgraphUrlByChainId(chainId);\n if (!subgraphUrl) {\n throw new Error(`No subgraph URL found for chain ID ${chainId}`);\n }\n\n return subgraphUrl;\n }\n\n /**\n * Checks if a chain is supported by checking if it has a subgraph URL\n * @param chainId The chain ID to check\n * @returns boolean indicating if the chain is supported\n */\n public supportsChain(chainId: number): boolean {\n return getSubgraphUrlByChainId(chainId) !== undefined;\n }\n} "]}
|
|
@@ -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":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAGlF,OAAO,EAAE,0CAA0C,EAAE,MAAM,yBAAyB,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,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,0CAA0C,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAA;QAE1I,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;YAC7C,OAAO,EAAE,mBAAmB;YAC5B,GAAG,EAAE,qBAAqB;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,cAAc,YAAY,CAAC;AAE3B,6DAA6D;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE3E,yBAAyB;AACzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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 */ "]}
|