@steerprotocol/sdk 1.27.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 +9 -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 +1 -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 +1 -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 +9 -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 +1 -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 +1 -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 +7 -1
- package/dist/types/base/FeeManagerClient.d.ts.map +1 -1
- 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,1642 @@
|
|
|
1
|
+
import { createClient } from '@steerprotocol/api-sdk';
|
|
2
|
+
import { Pool as PoolV3 } from "@uniswap/v3-sdk";
|
|
3
|
+
import type { Address, Hash, PublicClient, WalletClient } from 'viem';
|
|
4
|
+
import { chainIdToName, getBeaconNameByProtocol } from '../const';
|
|
5
|
+
import { getProtocolsForChainId } from '../const/amm/utils/protocol';
|
|
6
|
+
import { ChainId, MultiPositionManagers, Protocol } from '../const/chain';
|
|
7
|
+
import { steerSubgraphConfig } from '../const/subgraph';
|
|
8
|
+
import { SubgraphVaultClient } from '../utils/SubgraphVaultClient';
|
|
9
|
+
import { getApiUrl } from '../const/api.js';
|
|
10
|
+
import { abis } from '../const/deployments/abis.js';
|
|
11
|
+
import { SteerResponse, VaultDetailsResponse } from '../types.js';
|
|
12
|
+
import { SubgraphClient } from './SubgraphClient.js';
|
|
13
|
+
import { VaultDepositClient } from './vault/deposit/index.js';
|
|
14
|
+
import { PoolInstanceParams, VaultDepositParams } from './vault/deposit/types.js';
|
|
15
|
+
import { SingleAssetDepositClient } from './vault/single-asset/index.js';
|
|
16
|
+
import type {
|
|
17
|
+
SingleAssetDepositParams,
|
|
18
|
+
SingleAssetDepositPreview
|
|
19
|
+
} from './vault/single-asset/types.js';
|
|
20
|
+
import { VaultWithdrawClient } from './vault/withdraw/index.js';
|
|
21
|
+
import { TokensFromLpResponse, VaultWithdrawParams } from './vault/withdraw/types.js';
|
|
22
|
+
export * from "./vault/single-asset/index.js";
|
|
23
|
+
|
|
24
|
+
const VAULT_ABI = abis.QuickSwapUniv3MultiPositionLiquidityManager;
|
|
25
|
+
|
|
26
|
+
// Custom ABI for reward functions
|
|
27
|
+
const REWARD_FUNCTIONS_ABI = [
|
|
28
|
+
{
|
|
29
|
+
"type": "function",
|
|
30
|
+
"name": "calculatePendingRewards",
|
|
31
|
+
"inputs": [
|
|
32
|
+
{
|
|
33
|
+
"name": "user",
|
|
34
|
+
"type": "address",
|
|
35
|
+
"internalType": "address"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"outputs": [
|
|
39
|
+
{
|
|
40
|
+
"name": "rewards",
|
|
41
|
+
"type": "uint256",
|
|
42
|
+
"internalType": "uint256"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "extraRewards",
|
|
46
|
+
"type": "uint256",
|
|
47
|
+
"internalType": "uint256"
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"stateMutability": "view"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"inputs": [],
|
|
54
|
+
"name": "claimUserRewards",
|
|
55
|
+
"outputs": [
|
|
56
|
+
{
|
|
57
|
+
"internalType": "uint256",
|
|
58
|
+
"name": "",
|
|
59
|
+
"type": "uint256"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"internalType": "uint256",
|
|
63
|
+
"name": "",
|
|
64
|
+
"type": "uint256"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"stateMutability": "nonpayable",
|
|
68
|
+
"type": "function"
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
] as const;
|
|
72
|
+
|
|
73
|
+
export interface VaultApproveParams {
|
|
74
|
+
vaultAddress: Address;
|
|
75
|
+
spender: Address;
|
|
76
|
+
amount: bigint;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface VaultAllowanceParams {
|
|
80
|
+
vaultAddress: Address;
|
|
81
|
+
owner: Address;
|
|
82
|
+
spender: Address;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export interface VaultBalanceParams {
|
|
86
|
+
vaultAddress: Address;
|
|
87
|
+
account: Address;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Pagination interfaces matching API SDK types
|
|
91
|
+
export interface ApiPageInfo {
|
|
92
|
+
hasNextPage: boolean;
|
|
93
|
+
endCursor: string | null;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface VaultNode {
|
|
97
|
+
id: string;
|
|
98
|
+
chainId: number;
|
|
99
|
+
vaultAddress: string;
|
|
100
|
+
protocol: string;
|
|
101
|
+
beaconName: string;
|
|
102
|
+
protocolBaseType: string;
|
|
103
|
+
name: string;
|
|
104
|
+
feeApr?: number;
|
|
105
|
+
stakingApr?: number;
|
|
106
|
+
merklApr?: number;
|
|
107
|
+
pool: {
|
|
108
|
+
poolAddress: string;
|
|
109
|
+
id: string;
|
|
110
|
+
feeTier: string;
|
|
111
|
+
tick?: string;
|
|
112
|
+
liquidity?: string;
|
|
113
|
+
volumeUSD?: string;
|
|
114
|
+
totalValueLockedUSD?: string;
|
|
115
|
+
};
|
|
116
|
+
token0: {
|
|
117
|
+
id: string;
|
|
118
|
+
symbol: string;
|
|
119
|
+
name: string;
|
|
120
|
+
decimals: number;
|
|
121
|
+
address: string;
|
|
122
|
+
chainId: number;
|
|
123
|
+
};
|
|
124
|
+
token1: {
|
|
125
|
+
id: string;
|
|
126
|
+
symbol: string;
|
|
127
|
+
name: string;
|
|
128
|
+
decimals: number;
|
|
129
|
+
address: string;
|
|
130
|
+
chainId: number;
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export interface VaultEdge {
|
|
135
|
+
cursor: string;
|
|
136
|
+
node: VaultNode;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export interface VaultsConnection {
|
|
140
|
+
edges: readonly VaultEdge[];
|
|
141
|
+
pageInfo: ApiPageInfo;
|
|
142
|
+
totalCount: number;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export interface TokenNode {
|
|
146
|
+
id: string;
|
|
147
|
+
symbol: string;
|
|
148
|
+
name: string;
|
|
149
|
+
decimals: number;
|
|
150
|
+
chainId: number;
|
|
151
|
+
address: string;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export interface TokenEdge {
|
|
155
|
+
cursor: string;
|
|
156
|
+
node: TokenNode;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export interface TokensConnection {
|
|
160
|
+
edges: readonly TokenEdge[];
|
|
161
|
+
pageInfo: ApiPageInfo;
|
|
162
|
+
totalCount: number;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export interface PoolNode {
|
|
166
|
+
id: string;
|
|
167
|
+
chainId: number;
|
|
168
|
+
feeTier: string;
|
|
169
|
+
token0: {
|
|
170
|
+
id: string;
|
|
171
|
+
symbol: string;
|
|
172
|
+
name: string;
|
|
173
|
+
decimals: number;
|
|
174
|
+
address: string;
|
|
175
|
+
chainId: number;
|
|
176
|
+
};
|
|
177
|
+
token1: {
|
|
178
|
+
id: string;
|
|
179
|
+
symbol: string;
|
|
180
|
+
name: string;
|
|
181
|
+
decimals: number;
|
|
182
|
+
address: string;
|
|
183
|
+
chainId: number;
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export interface PoolEdge {
|
|
188
|
+
cursor: string;
|
|
189
|
+
node: PoolNode;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export interface PoolsConnection {
|
|
193
|
+
edges: readonly PoolEdge[];
|
|
194
|
+
pageInfo: ApiPageInfo;
|
|
195
|
+
totalCount: number;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export interface VaultFilter {
|
|
199
|
+
chainId?: number;
|
|
200
|
+
protocol?: string;
|
|
201
|
+
isActive?: boolean;
|
|
202
|
+
beaconName?: string;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export interface TokenFilter {
|
|
206
|
+
chainId?: number;
|
|
207
|
+
symbol?: string;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
export interface PoolFilter {
|
|
211
|
+
chainId?: number;
|
|
212
|
+
protocol?: string;
|
|
213
|
+
minLiquidity?: string;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export interface VaultApr {
|
|
217
|
+
apr: {
|
|
218
|
+
apr: number;
|
|
219
|
+
message: string;
|
|
220
|
+
};
|
|
221
|
+
beaconName: string;
|
|
222
|
+
vaultAddress: string;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
export interface AprResponse {
|
|
226
|
+
vaults: VaultApr[];
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
export interface AprFilter {
|
|
230
|
+
chainId: number;
|
|
231
|
+
protocol: string;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
export interface PendingRewardsParams {
|
|
235
|
+
vaultAddress: Address;
|
|
236
|
+
user: Address;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
export interface PendingRewardsResponse {
|
|
240
|
+
rewards: bigint;
|
|
241
|
+
extraRewards: bigint;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
export interface ClaimRewardsParams {
|
|
245
|
+
vaultAddress: Address;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export interface BlackholeAprDetailedParams {
|
|
249
|
+
vaultAddress: Address;
|
|
250
|
+
chainId: number;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export interface BlackholeSnapshotAnalysis {
|
|
254
|
+
period: number;
|
|
255
|
+
fromTimestamp: number;
|
|
256
|
+
toTimestamp: number;
|
|
257
|
+
fromDate: string;
|
|
258
|
+
toDate: string;
|
|
259
|
+
durationSeconds: number;
|
|
260
|
+
durationHours: number;
|
|
261
|
+
tvlUSD: number;
|
|
262
|
+
feesUSD: number;
|
|
263
|
+
apr: number;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export interface BlackholeAprDetailedResponse {
|
|
267
|
+
vaultAddress: string;
|
|
268
|
+
beaconName: string;
|
|
269
|
+
apr: {
|
|
270
|
+
apr: number;
|
|
271
|
+
message: string;
|
|
272
|
+
};
|
|
273
|
+
snapshotAnalysis: BlackholeSnapshotAnalysis[];
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Client for interacting with Steer Protocol's Vault system.
|
|
278
|
+
* This client provides functionality for vault operations, deposit/withdraw, and comprehensive data fetching.
|
|
279
|
+
*
|
|
280
|
+
* **Features:**
|
|
281
|
+
* - Vault data includes associated pool information (pool address, fee tier) along with token details
|
|
282
|
+
* - Full pagination support for all data fetching methods
|
|
283
|
+
* - API client integration for efficient data retrieval
|
|
284
|
+
* - Backward compatibility with subgraph queries
|
|
285
|
+
*
|
|
286
|
+
* **Available API Client Methods:**
|
|
287
|
+
* - `getVaults()` - Get vaults with pagination and filtering
|
|
288
|
+
* - `getTokens()` - Get tokens with pagination and filtering
|
|
289
|
+
* - `getPools()` - Get pools with pagination and filtering
|
|
290
|
+
* - `getAllVaults()` - Get all vaults (auto-pagination)
|
|
291
|
+
* - `getAllTokens()` - Get all tokens (auto-pagination)
|
|
292
|
+
* - `getAllPools()` - Get all pools (auto-pagination)
|
|
293
|
+
*
|
|
294
|
+
* @example
|
|
295
|
+
* ```typescript
|
|
296
|
+
* import { createPublicClient, createWalletClient, http } from 'viem';
|
|
297
|
+
* import { mainnet } from 'viem/chains';
|
|
298
|
+
* import { VaultClient } from '@steerprotocol/sdk';
|
|
299
|
+
*
|
|
300
|
+
* // Create viem clients
|
|
301
|
+
* const publicClient = createPublicClient({
|
|
302
|
+
* chain: mainnet,
|
|
303
|
+
* transport: http()
|
|
304
|
+
* });
|
|
305
|
+
*
|
|
306
|
+
* const walletClient = createWalletClient({
|
|
307
|
+
* chain: mainnet,
|
|
308
|
+
* transport: http()
|
|
309
|
+
* });
|
|
310
|
+
*
|
|
311
|
+
* // Initialize the Vault client
|
|
312
|
+
* const vaultClient = new VaultClient(publicClient, walletClient, 'production');
|
|
313
|
+
*
|
|
314
|
+
* // Get vaults with pagination - includes pool information
|
|
315
|
+
* const vaults = await vaultClient.getVaults({ chainId: 1 }, 10, null);
|
|
316
|
+
*
|
|
317
|
+
* if (vaults.success && vaults.data) {
|
|
318
|
+
* vaults.data.edges.forEach((edge) => {
|
|
319
|
+
* const vault = edge.node;
|
|
320
|
+
* console.log(`${vault.token0.symbol}/${vault.token1.symbol} vault`);
|
|
321
|
+
* console.log(`Pool: ${vault.pool.id} (${vault.pool.feeTier} fee tier)`);
|
|
322
|
+
* console.log(`Protocol: ${vault.protocol} (${vault.beaconName})`);
|
|
323
|
+
* });
|
|
324
|
+
* }
|
|
325
|
+
*
|
|
326
|
+
* // Get all tokens for a chain
|
|
327
|
+
* const allTokens = await vaultClient.getAllTokens({ chainId: 1 });
|
|
328
|
+
*
|
|
329
|
+
* // Get pools with specific filters
|
|
330
|
+
* const pools = await vaultClient.getPools({
|
|
331
|
+
* chainId: 1,
|
|
332
|
+
* protocol: 'uniswap-v3'
|
|
333
|
+
* });
|
|
334
|
+
*
|
|
335
|
+
* // Traditional vault operations
|
|
336
|
+
* const depositTx = await vaultClient.deposit(depositParams);
|
|
337
|
+
* const withdrawTx = await vaultClient.withdraw(withdrawParams);
|
|
338
|
+
* ```
|
|
339
|
+
*
|
|
340
|
+
* @group Client
|
|
341
|
+
*/
|
|
342
|
+
export class VaultClient extends SubgraphClient {
|
|
343
|
+
protected readonly apiClient: ReturnType<typeof createClient>;
|
|
344
|
+
protected readonly publicClient: PublicClient;
|
|
345
|
+
protected readonly walletClient: WalletClient;
|
|
346
|
+
private readonly depositClient: VaultDepositClient;
|
|
347
|
+
private readonly withdrawClient: VaultWithdrawClient;
|
|
348
|
+
public readonly singleAssetDepositClient: SingleAssetDepositClient;
|
|
349
|
+
private readonly subgraphVaultClient: SubgraphVaultClient;
|
|
350
|
+
private readonly subgraphStudioKey: string;
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Creates a new instance of VaultClient
|
|
354
|
+
* @param publicClient - The public client for reading from the blockchain
|
|
355
|
+
* @param walletClient - The wallet client for writing to the blockchain
|
|
356
|
+
* @param environment - The environment to use ('production' or 'development')
|
|
357
|
+
* @param version - Optional API version to use (defaults to 'v1')
|
|
358
|
+
* @param subgraphStudioKey - Optional subgraph studio key for protocol data fetching
|
|
359
|
+
*/
|
|
360
|
+
constructor(
|
|
361
|
+
publicClient: PublicClient,
|
|
362
|
+
walletClient: WalletClient,
|
|
363
|
+
environment: 'production' | 'development',
|
|
364
|
+
version: 'v1' = 'v1',
|
|
365
|
+
subgraphStudioKey?: string
|
|
366
|
+
) {
|
|
367
|
+
const combinedClient = publicClient as PublicClient & WalletClient;
|
|
368
|
+
super(combinedClient);
|
|
369
|
+
|
|
370
|
+
const apiUrl = getApiUrl(environment, version);
|
|
371
|
+
this.apiClient = createClient(apiUrl);
|
|
372
|
+
this.publicClient = publicClient;
|
|
373
|
+
this.walletClient = walletClient;
|
|
374
|
+
this.depositClient = new VaultDepositClient(publicClient, walletClient);
|
|
375
|
+
this.withdrawClient = new VaultWithdrawClient(publicClient, walletClient);
|
|
376
|
+
this.singleAssetDepositClient = new SingleAssetDepositClient(publicClient, walletClient);
|
|
377
|
+
this.subgraphVaultClient = new SubgraphVaultClient();
|
|
378
|
+
this.subgraphStudioKey = subgraphStudioKey || '';
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* Gets vaults with pagination support
|
|
383
|
+
* @param filter - Optional filter criteria
|
|
384
|
+
* @param first - Number of items to fetch (default: 50)
|
|
385
|
+
* @param after - Cursor for pagination (null for first page)
|
|
386
|
+
* @returns Promise resolving to paginated vaults data
|
|
387
|
+
*
|
|
388
|
+
* @example
|
|
389
|
+
* ```typescript
|
|
390
|
+
* // Get first 20 vaults for Ethereum
|
|
391
|
+
* const vaults = await vaultClient.getVaults({ chainId: 1 }, 20);
|
|
392
|
+
*
|
|
393
|
+
* if (vaults.success && vaults.data) {
|
|
394
|
+
* vaults.data.edges.forEach((edge) => {
|
|
395
|
+
* const vault = edge.node;
|
|
396
|
+
* console.log(`Vault: ${vault.name}`);
|
|
397
|
+
* console.log(`Pool: ${vault.pool.id}`);
|
|
398
|
+
* console.log(`Pool Fee Tier: ${vault.pool.feeTier}`);
|
|
399
|
+
* console.log(`Tokens: ${vault.token0.symbol}/${vault.token1.symbol}`);
|
|
400
|
+
* });
|
|
401
|
+
* }
|
|
402
|
+
*
|
|
403
|
+
* // Get next page using cursor
|
|
404
|
+
* if (vaults.data?.pageInfo.hasNextPage) {
|
|
405
|
+
* const nextPage = await vaultClient.getVaults(
|
|
406
|
+
* { chainId: 1 },
|
|
407
|
+
* 20,
|
|
408
|
+
* vaults.data.pageInfo.endCursor
|
|
409
|
+
* );
|
|
410
|
+
* }
|
|
411
|
+
*
|
|
412
|
+
* // For additional pool details (liquidity, volume, etc.), use the PoolClient:
|
|
413
|
+
* // const poolDetails = await poolClient.getPoolById(vault.pool.id, protocol, chainId);
|
|
414
|
+
* ```
|
|
415
|
+
*/
|
|
416
|
+
public async getVaults(
|
|
417
|
+
filter?: VaultFilter,
|
|
418
|
+
first: number = 50,
|
|
419
|
+
after?: string | null
|
|
420
|
+
): Promise<SteerResponse<VaultsConnection>> {
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
if (filter?.chainId !== ChainId.Avalanche) {
|
|
425
|
+
try {
|
|
426
|
+
// First try the API client
|
|
427
|
+
const response = await this.apiClient.vaults({
|
|
428
|
+
filter,
|
|
429
|
+
first,
|
|
430
|
+
after
|
|
431
|
+
});
|
|
432
|
+
|
|
433
|
+
if (response.data?.vaults) {
|
|
434
|
+
// Transform the response to match our interface
|
|
435
|
+
const transformedData: VaultsConnection = {
|
|
436
|
+
edges: response.data.vaults.edges.map(edge => ({
|
|
437
|
+
cursor: edge.cursor,
|
|
438
|
+
node: {
|
|
439
|
+
id: edge.node.id,
|
|
440
|
+
chainId: edge.node.chainId,
|
|
441
|
+
vaultAddress: edge.node.vaultAddress,
|
|
442
|
+
protocol: edge.node.protocol,
|
|
443
|
+
beaconName: edge.node.beaconName,
|
|
444
|
+
protocolBaseType: edge.node.protocolBaseType,
|
|
445
|
+
name: edge.node.name || '',
|
|
446
|
+
feeApr: edge.node.feeApr || undefined,
|
|
447
|
+
stakingApr: edge.node.stakingApr || undefined,
|
|
448
|
+
merklApr: edge.node.merklApr || undefined,
|
|
449
|
+
pool: {
|
|
450
|
+
id: edge.node.pool?.id || '',
|
|
451
|
+
poolAddress: edge.node.pool?.poolAddress || '',
|
|
452
|
+
feeTier: edge.node.pool?.feeTier || '',
|
|
453
|
+
tick: undefined, // Not available in API response
|
|
454
|
+
liquidity: undefined, // Not available in API response
|
|
455
|
+
volumeUSD: undefined, // Not available in API response
|
|
456
|
+
totalValueLockedUSD: undefined // Not available in API response
|
|
457
|
+
},
|
|
458
|
+
token0: {
|
|
459
|
+
id: edge.node.token0?.id || '',
|
|
460
|
+
symbol: edge.node.token0?.symbol || '',
|
|
461
|
+
name: edge.node.token0?.name || '',
|
|
462
|
+
decimals: edge.node.token0?.decimals || 0,
|
|
463
|
+
address: edge.node.token0?.address || '',
|
|
464
|
+
chainId: edge.node.token0?.chainId || 0
|
|
465
|
+
},
|
|
466
|
+
token1: {
|
|
467
|
+
id: edge.node.token1?.id || '',
|
|
468
|
+
symbol: edge.node.token1?.symbol || '',
|
|
469
|
+
name: edge.node.token1?.name || '',
|
|
470
|
+
decimals: edge.node.token1?.decimals || 0,
|
|
471
|
+
address: edge.node.token1?.address || '',
|
|
472
|
+
chainId: edge.node.token1?.chainId || 0
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
})),
|
|
476
|
+
pageInfo: {
|
|
477
|
+
hasNextPage: response.data.vaults.pageInfo.hasNextPage,
|
|
478
|
+
endCursor: response.data.vaults.pageInfo.endCursor ?? null
|
|
479
|
+
},
|
|
480
|
+
totalCount: response.data.vaults.totalCount
|
|
481
|
+
};
|
|
482
|
+
|
|
483
|
+
return {
|
|
484
|
+
data: transformedData,
|
|
485
|
+
status: response.status,
|
|
486
|
+
success: true
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
} catch (apiError) {
|
|
490
|
+
console.warn('API client failed, falling back to subgraph:', apiError);
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
// Fallback to subgraph if API fails or returns no data
|
|
495
|
+
try {
|
|
496
|
+
return await this.getVaultsFromSubgraph(filter, first, after);
|
|
497
|
+
} catch (subgraphError) {
|
|
498
|
+
console.error('Both API and subgraph failed:', subgraphError);
|
|
499
|
+
return {
|
|
500
|
+
data: null,
|
|
501
|
+
status: 500,
|
|
502
|
+
success: false,
|
|
503
|
+
error: subgraphError instanceof Error ? subgraphError.message : 'Both API and subgraph requests failed'
|
|
504
|
+
};
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
/**
|
|
509
|
+
* Fallback method to fetch vaults from subgraph
|
|
510
|
+
* @param filter - Optional filter criteria
|
|
511
|
+
* @param first - Number of items to fetch (default: 50)
|
|
512
|
+
* @param after - Cursor for pagination (null for first page)
|
|
513
|
+
* @returns Promise resolving to paginated vaults data from subgraph
|
|
514
|
+
* @private
|
|
515
|
+
*/
|
|
516
|
+
private async getVaultsFromSubgraph(
|
|
517
|
+
filter?: VaultFilter,
|
|
518
|
+
first: number = 50,
|
|
519
|
+
after?: string | null
|
|
520
|
+
): Promise<SteerResponse<VaultsConnection>> {
|
|
521
|
+
try {
|
|
522
|
+
// Extract chainId from filter
|
|
523
|
+
const chainId = filter?.chainId;
|
|
524
|
+
if (!chainId) {
|
|
525
|
+
throw new Error('ChainId is required for subgraph fallback');
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
// Get chain enum from chainId
|
|
529
|
+
|
|
530
|
+
const chain = chainIdToName(chainId);
|
|
531
|
+
|
|
532
|
+
if (!chain) {
|
|
533
|
+
throw new Error(`Unsupported chainId: ${chainId}`);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
// Get subgraph URL for this chain
|
|
537
|
+
const subgraphUrl = steerSubgraphConfig[chain];
|
|
538
|
+
if (!subgraphUrl) {
|
|
539
|
+
throw new Error(`No subgraph configured for chain: ${chain}`);
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
const beaconNames = [];
|
|
543
|
+
|
|
544
|
+
if (filter?.protocol) {
|
|
545
|
+
const beacon = getBeaconNameByProtocol(filter.protocol as Protocol);
|
|
546
|
+
beaconNames.push(beacon);
|
|
547
|
+
|
|
548
|
+
if (filter?.protocol === Protocol.Blackhole) {
|
|
549
|
+
beaconNames.push(MultiPositionManagers.MultiPositionBlackholeOld);
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
if (filter?.beaconName) {
|
|
554
|
+
beaconNames.push(filter.beaconName);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
// Fetch all vaults from subgraph
|
|
558
|
+
const subgraphVaults = await this.subgraphVaultClient.getAllVaultsFromSubgraph({
|
|
559
|
+
subgraphUrl,
|
|
560
|
+
chainId,
|
|
561
|
+
showDeprecated: false,
|
|
562
|
+
showCurrentProtocol: false,
|
|
563
|
+
beaconNames: beaconNames
|
|
564
|
+
});
|
|
565
|
+
|
|
566
|
+
// Get all supported protocols for this chain
|
|
567
|
+
const supportedProtocols = getProtocolsForChainId(chainId, this.subgraphStudioKey);
|
|
568
|
+
|
|
569
|
+
// Fetch APR data for all protocols in parallel
|
|
570
|
+
const aprPromises = supportedProtocols.map(protocol =>
|
|
571
|
+
this.getAprs({ chainId, protocol }).catch(error => {
|
|
572
|
+
console.warn(`Failed to fetch APR for protocol ${protocol}:`, error);
|
|
573
|
+
return { success: false, data: null };
|
|
574
|
+
})
|
|
575
|
+
);
|
|
576
|
+
|
|
577
|
+
const aprResults = await Promise.all(aprPromises);
|
|
578
|
+
|
|
579
|
+
// Create a map of vault address to APR for quick lookup
|
|
580
|
+
const aprMap = new Map<string, number>();
|
|
581
|
+
aprResults && aprResults.forEach(aprResult => {
|
|
582
|
+
if (aprResult.success && aprResult.data) {
|
|
583
|
+
aprResult?.data?.vaults && aprResult.data.vaults.forEach(vaultApr => {
|
|
584
|
+
aprMap.set(vaultApr.vaultAddress.toLowerCase(), vaultApr.apr.apr);
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
});
|
|
588
|
+
|
|
589
|
+
// Transform to VaultsConnection format with pagination and populate APR data
|
|
590
|
+
const vaultsConnection = this.subgraphVaultClient.transformToVaultsConnection(
|
|
591
|
+
subgraphVaults,
|
|
592
|
+
chainId,
|
|
593
|
+
first,
|
|
594
|
+
aprMap,
|
|
595
|
+
after
|
|
596
|
+
);
|
|
597
|
+
|
|
598
|
+
// Enhance vault data with APR information
|
|
599
|
+
if (vaultsConnection.edges) {
|
|
600
|
+
vaultsConnection.edges = vaultsConnection.edges.map(edge => ({
|
|
601
|
+
...edge,
|
|
602
|
+
node: {
|
|
603
|
+
...edge.node,
|
|
604
|
+
feeApr: aprMap.get(edge.node.vaultAddress.toLowerCase()) || edge.node.feeApr
|
|
605
|
+
}
|
|
606
|
+
}));
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
return {
|
|
610
|
+
data: vaultsConnection,
|
|
611
|
+
status: 200,
|
|
612
|
+
success: true
|
|
613
|
+
};
|
|
614
|
+
|
|
615
|
+
} catch (error) {
|
|
616
|
+
console.error('Subgraph vault fetch failed:', error);
|
|
617
|
+
throw error;
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
/**
|
|
622
|
+
* Gets tokens with pagination support
|
|
623
|
+
* @param filter - Optional filter criteria
|
|
624
|
+
* @param first - Number of items to fetch (default: 50)
|
|
625
|
+
* @param after - Cursor for pagination (null for first page)
|
|
626
|
+
* @returns Promise resolving to paginated tokens data
|
|
627
|
+
*
|
|
628
|
+
* @example
|
|
629
|
+
* ```typescript
|
|
630
|
+
* // Get first 100 tokens
|
|
631
|
+
* const tokens = await vaultClient.getTokens({ chainId: 1 }, 100);
|
|
632
|
+
*
|
|
633
|
+
* // Filter by symbol
|
|
634
|
+
* const usdcTokens = await vaultClient.getTokens({ symbol: 'USDC' });
|
|
635
|
+
* ```
|
|
636
|
+
*/
|
|
637
|
+
public async getTokens(
|
|
638
|
+
filter?: TokenFilter,
|
|
639
|
+
first: number = 50,
|
|
640
|
+
after?: string | null
|
|
641
|
+
): Promise<SteerResponse<TokensConnection>> {
|
|
642
|
+
try {
|
|
643
|
+
const response = await this.apiClient.tokens({
|
|
644
|
+
filter,
|
|
645
|
+
first,
|
|
646
|
+
after
|
|
647
|
+
});
|
|
648
|
+
|
|
649
|
+
if (!response.data?.tokens) {
|
|
650
|
+
return {
|
|
651
|
+
data: null,
|
|
652
|
+
status: response.status,
|
|
653
|
+
success: true
|
|
654
|
+
};
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
// Transform the response to match our interface
|
|
658
|
+
const transformedData: TokensConnection = {
|
|
659
|
+
edges: response.data.tokens.edges.map(edge => ({
|
|
660
|
+
cursor: edge.cursor,
|
|
661
|
+
node: {
|
|
662
|
+
id: edge.node.id,
|
|
663
|
+
symbol: edge.node.symbol,
|
|
664
|
+
name: edge.node.name,
|
|
665
|
+
decimals: edge.node.decimals,
|
|
666
|
+
chainId: edge.node.chainId,
|
|
667
|
+
address: edge.node.address
|
|
668
|
+
}
|
|
669
|
+
})),
|
|
670
|
+
pageInfo: {
|
|
671
|
+
hasNextPage: response.data.tokens.pageInfo.hasNextPage,
|
|
672
|
+
endCursor: response.data.tokens.pageInfo.endCursor ?? null
|
|
673
|
+
},
|
|
674
|
+
totalCount: response.data.tokens.totalCount
|
|
675
|
+
};
|
|
676
|
+
|
|
677
|
+
return {
|
|
678
|
+
data: transformedData,
|
|
679
|
+
status: response.status,
|
|
680
|
+
success: true
|
|
681
|
+
};
|
|
682
|
+
} catch (error) {
|
|
683
|
+
return {
|
|
684
|
+
data: null,
|
|
685
|
+
status: 501,
|
|
686
|
+
success: false,
|
|
687
|
+
error: 'getTokens is not supported for this configuration'
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
/**
|
|
693
|
+
* Gets pools with pagination support
|
|
694
|
+
* @param filter - Optional filter criteria
|
|
695
|
+
* @param first - Number of items to fetch (default: 50)
|
|
696
|
+
* @param after - Cursor for pagination (null for first page)
|
|
697
|
+
* @returns Promise resolving to paginated pools data
|
|
698
|
+
*
|
|
699
|
+
* @example
|
|
700
|
+
* ```typescript
|
|
701
|
+
* // Get first 50 pools for Ethereum
|
|
702
|
+
* const pools = await vaultClient.getPools({ chainId: 1 }, 50);
|
|
703
|
+
*
|
|
704
|
+
* // Filter by minimum liquidity
|
|
705
|
+
* const liquidPools = await vaultClient.getPools({
|
|
706
|
+
* chainId: 1,
|
|
707
|
+
* minLiquidity: '1000000'
|
|
708
|
+
* });
|
|
709
|
+
* ```
|
|
710
|
+
*/
|
|
711
|
+
public async getPools(
|
|
712
|
+
filter?: PoolFilter,
|
|
713
|
+
first: number = 50,
|
|
714
|
+
after?: string | null
|
|
715
|
+
): Promise<SteerResponse<PoolsConnection>> {
|
|
716
|
+
try {
|
|
717
|
+
const response = await this.apiClient.pools({
|
|
718
|
+
filter,
|
|
719
|
+
first,
|
|
720
|
+
after
|
|
721
|
+
});
|
|
722
|
+
|
|
723
|
+
if (!response.data?.pools) {
|
|
724
|
+
return {
|
|
725
|
+
data: null,
|
|
726
|
+
status: response.status,
|
|
727
|
+
success: true
|
|
728
|
+
};
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
// Transform the response to match our interface
|
|
732
|
+
const transformedData: PoolsConnection = {
|
|
733
|
+
edges: response.data.pools.edges.map(edge => ({
|
|
734
|
+
cursor: edge.cursor,
|
|
735
|
+
node: {
|
|
736
|
+
id: edge.node.id,
|
|
737
|
+
chainId: edge.node.chainId,
|
|
738
|
+
feeTier: edge.node.feeTier,
|
|
739
|
+
token0: {
|
|
740
|
+
id: edge.node.token0?.id || '',
|
|
741
|
+
symbol: edge.node.token0?.symbol || '',
|
|
742
|
+
name: edge.node.token0?.name || '',
|
|
743
|
+
decimals: edge.node.token0?.decimals || 0,
|
|
744
|
+
address: edge.node.token0?.address || '',
|
|
745
|
+
chainId: edge.node.token0?.chainId || 0
|
|
746
|
+
},
|
|
747
|
+
token1: {
|
|
748
|
+
id: edge.node.token1?.id || '',
|
|
749
|
+
symbol: edge.node.token1?.symbol || '',
|
|
750
|
+
name: edge.node.token1?.name || '',
|
|
751
|
+
decimals: edge.node.token1?.decimals || 0,
|
|
752
|
+
address: edge.node.token1?.address || '',
|
|
753
|
+
chainId: edge.node.token1?.chainId || 0
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
})),
|
|
757
|
+
pageInfo: {
|
|
758
|
+
hasNextPage: response.data.pools.pageInfo.hasNextPage,
|
|
759
|
+
endCursor: response.data.pools.pageInfo.endCursor ?? null
|
|
760
|
+
},
|
|
761
|
+
totalCount: response.data.pools.totalCount
|
|
762
|
+
};
|
|
763
|
+
|
|
764
|
+
return {
|
|
765
|
+
data: transformedData,
|
|
766
|
+
status: response.status,
|
|
767
|
+
success: true
|
|
768
|
+
};
|
|
769
|
+
} catch (error) {
|
|
770
|
+
return {
|
|
771
|
+
data: null,
|
|
772
|
+
status: 501,
|
|
773
|
+
success: false,
|
|
774
|
+
error: 'getPools is not supported for this configuration'
|
|
775
|
+
};
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
/**
|
|
780
|
+
* Gets all vaults by fetching all pages automatically
|
|
781
|
+
* @param filter - Optional filter criteria
|
|
782
|
+
* @param batchSize - Number of items to fetch per batch (default: 100)
|
|
783
|
+
* @returns Promise resolving to all vaults data (includes pool information)
|
|
784
|
+
*
|
|
785
|
+
* @example
|
|
786
|
+
* ```typescript
|
|
787
|
+
* // Get all vaults for a specific chain
|
|
788
|
+
* const allVaults = await vaultClient.getAllVaults({ chainId: 1 });
|
|
789
|
+
* console.log(`Found ${allVaults.data?.length} vaults`);
|
|
790
|
+
*
|
|
791
|
+
* // Access pool information for each vault
|
|
792
|
+
* allVaults.data?.forEach(vault => {
|
|
793
|
+
* console.log(`Vault ${vault.name}: Pool ${vault.pool.id} (${vault.pool.feeTier} fee)`);
|
|
794
|
+
* });
|
|
795
|
+
* ```
|
|
796
|
+
*/
|
|
797
|
+
public async getAllVaults(
|
|
798
|
+
filter?: VaultFilter,
|
|
799
|
+
batchSize: number = 100
|
|
800
|
+
): Promise<SteerResponse<VaultNode[]>> {
|
|
801
|
+
try {
|
|
802
|
+
const allVaults: VaultNode[] = [];
|
|
803
|
+
let hasNextPage = true;
|
|
804
|
+
let cursor: string | null = null;
|
|
805
|
+
|
|
806
|
+
while (hasNextPage) {
|
|
807
|
+
const response = await this.getVaults(filter, batchSize, cursor);
|
|
808
|
+
|
|
809
|
+
if (!response.success || !response.data) {
|
|
810
|
+
return {
|
|
811
|
+
data: null,
|
|
812
|
+
status: response.status,
|
|
813
|
+
success: false,
|
|
814
|
+
error: response.error || 'Failed to fetch vaults'
|
|
815
|
+
};
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
allVaults.push(...response.data.edges.map(edge => edge.node));
|
|
819
|
+
hasNextPage = response.data.pageInfo.hasNextPage;
|
|
820
|
+
cursor = response.data.pageInfo.endCursor;
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
return {
|
|
824
|
+
data: allVaults,
|
|
825
|
+
status: 200,
|
|
826
|
+
success: true
|
|
827
|
+
};
|
|
828
|
+
} catch (error) {
|
|
829
|
+
return {
|
|
830
|
+
data: null,
|
|
831
|
+
status: 500,
|
|
832
|
+
success: false,
|
|
833
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred'
|
|
834
|
+
};
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
/**
|
|
839
|
+
* Gets all tokens by fetching all pages automatically
|
|
840
|
+
* @param filter - Optional filter criteria
|
|
841
|
+
* @param batchSize - Number of items to fetch per batch (default: 100)
|
|
842
|
+
* @returns Promise resolving to all tokens data
|
|
843
|
+
*/
|
|
844
|
+
public async getAllTokens(
|
|
845
|
+
filter?: TokenFilter,
|
|
846
|
+
batchSize: number = 100
|
|
847
|
+
): Promise<SteerResponse<TokenNode[]>> {
|
|
848
|
+
try {
|
|
849
|
+
const allTokens: TokenNode[] = [];
|
|
850
|
+
let hasNextPage = true;
|
|
851
|
+
let cursor: string | null = null;
|
|
852
|
+
|
|
853
|
+
while (hasNextPage) {
|
|
854
|
+
const response = await this.getTokens(filter, batchSize, cursor);
|
|
855
|
+
|
|
856
|
+
if (!response.success || !response.data) {
|
|
857
|
+
return {
|
|
858
|
+
data: null,
|
|
859
|
+
status: response.status,
|
|
860
|
+
success: false,
|
|
861
|
+
error: response.error || 'Failed to fetch tokens'
|
|
862
|
+
};
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
allTokens.push(...response.data.edges.map(edge => edge.node));
|
|
866
|
+
hasNextPage = response.data.pageInfo.hasNextPage;
|
|
867
|
+
cursor = response.data.pageInfo.endCursor;
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
return {
|
|
871
|
+
data: allTokens,
|
|
872
|
+
status: 200,
|
|
873
|
+
success: true
|
|
874
|
+
};
|
|
875
|
+
} catch (error) {
|
|
876
|
+
return {
|
|
877
|
+
data: null,
|
|
878
|
+
status: 500,
|
|
879
|
+
success: false,
|
|
880
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred'
|
|
881
|
+
};
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
/**
|
|
886
|
+
* Gets all pools by fetching all pages automatically
|
|
887
|
+
* @param filter - Optional filter criteria
|
|
888
|
+
* @param batchSize - Number of items to fetch per batch (default: 100)
|
|
889
|
+
* @returns Promise resolving to all pools data
|
|
890
|
+
*/
|
|
891
|
+
public async getAllPools(
|
|
892
|
+
filter?: PoolFilter,
|
|
893
|
+
batchSize: number = 100
|
|
894
|
+
): Promise<SteerResponse<PoolNode[]>> {
|
|
895
|
+
try {
|
|
896
|
+
const allPools: PoolNode[] = [];
|
|
897
|
+
let hasNextPage = true;
|
|
898
|
+
let cursor: string | null = null;
|
|
899
|
+
|
|
900
|
+
while (hasNextPage) {
|
|
901
|
+
const response = await this.getPools(filter, batchSize, cursor);
|
|
902
|
+
|
|
903
|
+
if (!response.success || !response.data) {
|
|
904
|
+
return {
|
|
905
|
+
data: null,
|
|
906
|
+
status: response.status,
|
|
907
|
+
success: false,
|
|
908
|
+
error: response.error || 'Failed to fetch pools'
|
|
909
|
+
};
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
allPools.push(...response.data.edges.map(edge => edge.node));
|
|
913
|
+
hasNextPage = response.data.pageInfo.hasNextPage;
|
|
914
|
+
cursor = response.data.pageInfo.endCursor;
|
|
915
|
+
}
|
|
916
|
+
|
|
917
|
+
return {
|
|
918
|
+
data: allPools,
|
|
919
|
+
status: 200,
|
|
920
|
+
success: true
|
|
921
|
+
};
|
|
922
|
+
} catch (error) {
|
|
923
|
+
return {
|
|
924
|
+
data: null,
|
|
925
|
+
status: 501,
|
|
926
|
+
success: false,
|
|
927
|
+
error: 'getAllPools is not supported for this configuration'
|
|
928
|
+
};
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
/**
|
|
933
|
+
* Gets APR data for vaults from the Steer Finance API
|
|
934
|
+
* @param filter - Filter containing chainId and protocol
|
|
935
|
+
* @returns Promise resolving to APR data for vaults
|
|
936
|
+
*
|
|
937
|
+
* @example
|
|
938
|
+
* ```typescript
|
|
939
|
+
* // Get APRs for Uniswap vaults on Nibiru (chainId: 6900)
|
|
940
|
+
* const aprs = await vaultClient.getAprs({ chainId: 6900, protocol: 'Uniswap' });
|
|
941
|
+
*
|
|
942
|
+
* if (aprs.success && aprs.data) {
|
|
943
|
+
* aprs.data.vaults.forEach(vault => {
|
|
944
|
+
* console.log(`Vault: ${vault.vaultAddress}`);
|
|
945
|
+
* console.log(`APR: ${vault.apr.apr}% (${vault.apr.message})`);
|
|
946
|
+
* console.log(`Beacon: ${vault.beaconName}`);
|
|
947
|
+
* });
|
|
948
|
+
* }
|
|
949
|
+
* ```
|
|
950
|
+
*/
|
|
951
|
+
public async getAprs(filter: AprFilter): Promise<SteerResponse<AprResponse>> {
|
|
952
|
+
try {
|
|
953
|
+
const { chainId, protocol } = filter;
|
|
954
|
+
|
|
955
|
+
// Build the API URL
|
|
956
|
+
const apiUrl = `https://api.steer.finance/getAprs?chainId=${chainId}&dexName=${protocol}`;
|
|
957
|
+
|
|
958
|
+
const response = await fetch(apiUrl, {
|
|
959
|
+
method: 'GET',
|
|
960
|
+
headers: {
|
|
961
|
+
'Content-Type': 'application/json',
|
|
962
|
+
},
|
|
963
|
+
});
|
|
964
|
+
|
|
965
|
+
if (!response.ok) {
|
|
966
|
+
return {
|
|
967
|
+
data: null,
|
|
968
|
+
status: response.status,
|
|
969
|
+
success: false,
|
|
970
|
+
error: `API request failed: ${response.statusText}`
|
|
971
|
+
};
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
const data: AprResponse = await response.json();
|
|
975
|
+
|
|
976
|
+
return {
|
|
977
|
+
data,
|
|
978
|
+
status: response.status,
|
|
979
|
+
success: true
|
|
980
|
+
};
|
|
981
|
+
|
|
982
|
+
} catch (error) {
|
|
983
|
+
return {
|
|
984
|
+
data: null,
|
|
985
|
+
status: 501,
|
|
986
|
+
success: false,
|
|
987
|
+
error: 'getAprs is not supported for this configuration'
|
|
988
|
+
};
|
|
989
|
+
}
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
/**
|
|
993
|
+
* Gets detailed APR data for a specific Blackhole vault from the Steer Finance API
|
|
994
|
+
* This includes snapshot analysis with historical APR data over different time periods
|
|
995
|
+
*
|
|
996
|
+
* @param params - Parameters containing vault address and chain ID
|
|
997
|
+
* @returns Promise resolving to detailed APR data including snapshot analysis
|
|
998
|
+
*
|
|
999
|
+
* @example
|
|
1000
|
+
* ```typescript
|
|
1001
|
+
* // Get detailed APR for a Blackhole vault on Avalanche
|
|
1002
|
+
* const aprDetails = await vaultClient.getBlackholeAprDetailed({
|
|
1003
|
+
* vaultAddress: '0x5c1d454f08975c554f6b70a84fd8859fbdfcc069',
|
|
1004
|
+
* chainId: 43114
|
|
1005
|
+
* });
|
|
1006
|
+
*
|
|
1007
|
+
* if (aprDetails.success && aprDetails.data) {
|
|
1008
|
+
* console.log(`Vault: ${aprDetails.data.vaultAddress}`);
|
|
1009
|
+
* console.log(`Beacon: ${aprDetails.data.beaconName}`);
|
|
1010
|
+
* console.log(`Current APR: ${aprDetails.data.apr.apr}% (${aprDetails.data.apr.message})`);
|
|
1011
|
+
*
|
|
1012
|
+
* // Access snapshot analysis
|
|
1013
|
+
* aprDetails.data.snapshotAnalysis.forEach(snapshot => {
|
|
1014
|
+
* console.log(`Period ${snapshot.period}:`);
|
|
1015
|
+
* console.log(` Duration: ${snapshot.durationHours} hours`);
|
|
1016
|
+
* console.log(` TVL: $${snapshot.tvlUSD}`);
|
|
1017
|
+
* console.log(` Fees: $${snapshot.feesUSD}`);
|
|
1018
|
+
* console.log(` APR: ${snapshot.apr}%`);
|
|
1019
|
+
* });
|
|
1020
|
+
* }
|
|
1021
|
+
* ```
|
|
1022
|
+
*/
|
|
1023
|
+
public async getBlackholeVaultApr(params: BlackholeAprDetailedParams): Promise<SteerResponse<BlackholeAprDetailedResponse>> {
|
|
1024
|
+
try {
|
|
1025
|
+
const { vaultAddress, chainId } = params;
|
|
1026
|
+
|
|
1027
|
+
// Build the API URL
|
|
1028
|
+
const apiUrl = `https://api.steer.finance/blackhole/apr-detailed?vaultAddress=${vaultAddress}&chainId=${chainId}`;
|
|
1029
|
+
|
|
1030
|
+
const response = await fetch(apiUrl, {
|
|
1031
|
+
method: 'GET',
|
|
1032
|
+
headers: {
|
|
1033
|
+
'Content-Type': 'application/json',
|
|
1034
|
+
},
|
|
1035
|
+
});
|
|
1036
|
+
|
|
1037
|
+
if (!response.ok) {
|
|
1038
|
+
return {
|
|
1039
|
+
data: null,
|
|
1040
|
+
status: response.status,
|
|
1041
|
+
success: false,
|
|
1042
|
+
error: `API request failed: ${response.statusText}`
|
|
1043
|
+
};
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1046
|
+
const data: BlackholeAprDetailedResponse = await response.json();
|
|
1047
|
+
|
|
1048
|
+
return {
|
|
1049
|
+
data,
|
|
1050
|
+
status: response.status,
|
|
1051
|
+
success: true
|
|
1052
|
+
};
|
|
1053
|
+
|
|
1054
|
+
} catch (error) {
|
|
1055
|
+
return {
|
|
1056
|
+
data: null,
|
|
1057
|
+
status: 500,
|
|
1058
|
+
success: false,
|
|
1059
|
+
error: error instanceof Error ? error.message : 'Failed to fetch Blackhole APR details'
|
|
1060
|
+
};
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
/**
|
|
1065
|
+
* Gets the latest vaults from the subgraph
|
|
1066
|
+
*/
|
|
1067
|
+
public async getLatestVaults<T>(): Promise<SteerResponse<T>> {
|
|
1068
|
+
const query = `
|
|
1069
|
+
query latestVaults{
|
|
1070
|
+
vaults(first: 250, skip: 0, orderBy: createdAt, orderDirection: desc, where: {
|
|
1071
|
+
gasUsed_gt: 0
|
|
1072
|
+
} ) {
|
|
1073
|
+
id
|
|
1074
|
+
beaconName
|
|
1075
|
+
createdAt
|
|
1076
|
+
gasUsed
|
|
1077
|
+
token1Symbol
|
|
1078
|
+
token0Symbol
|
|
1079
|
+
token0
|
|
1080
|
+
token1
|
|
1081
|
+
token0Name
|
|
1082
|
+
token1Name
|
|
1083
|
+
strategyToken {
|
|
1084
|
+
id
|
|
1085
|
+
name
|
|
1086
|
+
creator {
|
|
1087
|
+
id
|
|
1088
|
+
}
|
|
1089
|
+
}
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
1092
|
+
`;
|
|
1093
|
+
|
|
1094
|
+
return this.executeSubgraphQuery<T>(query);
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
/**
|
|
1098
|
+
* Deposits tokens into a vault
|
|
1099
|
+
* @param params The deposit parameters
|
|
1100
|
+
*/
|
|
1101
|
+
public async deposit(params: VaultDepositParams): Promise<SteerResponse<Hash>> {
|
|
1102
|
+
return this.depositClient.deposit(params);
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
/**
|
|
1106
|
+
* Prepares the transaction data for depositing tokens into a vault without executing it
|
|
1107
|
+
* @param params The deposit parameters
|
|
1108
|
+
*/
|
|
1109
|
+
public async prepareDepositTx(params: VaultDepositParams): Promise<SteerResponse<{
|
|
1110
|
+
address: Address;
|
|
1111
|
+
abi: {
|
|
1112
|
+
type: string;
|
|
1113
|
+
inputs: {
|
|
1114
|
+
name: string;
|
|
1115
|
+
internalType: string;
|
|
1116
|
+
type: string;
|
|
1117
|
+
}[];
|
|
1118
|
+
name: string;
|
|
1119
|
+
outputs: {
|
|
1120
|
+
internalType: string;
|
|
1121
|
+
name: string;
|
|
1122
|
+
type: string;
|
|
1123
|
+
}[];
|
|
1124
|
+
stateMutability: string;
|
|
1125
|
+
}[];
|
|
1126
|
+
functionName: string;
|
|
1127
|
+
args: readonly [Address, bigint, bigint, bigint, bigint, Address] | readonly [bigint, bigint, bigint, bigint, Address];
|
|
1128
|
+
}>> {
|
|
1129
|
+
return this.depositClient.prepareDepositTx(params);
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
/**
|
|
1133
|
+
* Gets the deposit ratio for a vault
|
|
1134
|
+
* @param vaultAddress The vault address
|
|
1135
|
+
*/
|
|
1136
|
+
public async getDepositRatio(vaultAddress: Address, zeroForOne: boolean): Promise<SteerResponse<VaultDetailsResponse>> {
|
|
1137
|
+
try {
|
|
1138
|
+
const ratioResponse = await this.depositClient.getDepositRatio(vaultAddress, zeroForOne);
|
|
1139
|
+
if (!ratioResponse.success || !ratioResponse.data) {
|
|
1140
|
+
throw new Error(ratioResponse.error || 'Failed to get deposit ratio');
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
return {
|
|
1144
|
+
data: {
|
|
1145
|
+
details: ratioResponse.data.vaultDetails,
|
|
1146
|
+
ratio: ratioResponse.data.ratio,
|
|
1147
|
+
},
|
|
1148
|
+
status: 200,
|
|
1149
|
+
success: true
|
|
1150
|
+
};
|
|
1151
|
+
} catch (error) {
|
|
1152
|
+
return {
|
|
1153
|
+
data: null,
|
|
1154
|
+
status: 500,
|
|
1155
|
+
success: false,
|
|
1156
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred'
|
|
1157
|
+
};
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
/**
|
|
1162
|
+
* Withdraws tokens from a vault
|
|
1163
|
+
* @param params The withdrawal parameters
|
|
1164
|
+
*/
|
|
1165
|
+
public async withdraw(params: VaultWithdrawParams): Promise<SteerResponse<Hash>> {
|
|
1166
|
+
return this.withdrawClient.withdraw(params);
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
/**
|
|
1170
|
+
* Prepares the transaction data for withdrawing tokens from a vault without executing it
|
|
1171
|
+
* @param params The withdrawal parameters
|
|
1172
|
+
*/
|
|
1173
|
+
public async prepareWithdrawTx(params: VaultWithdrawParams): Promise<SteerResponse<{
|
|
1174
|
+
address: Address;
|
|
1175
|
+
abi: {
|
|
1176
|
+
type: string;
|
|
1177
|
+
inputs: {
|
|
1178
|
+
name: string;
|
|
1179
|
+
internalType: string;
|
|
1180
|
+
type: string;
|
|
1181
|
+
}[];
|
|
1182
|
+
name: string;
|
|
1183
|
+
outputs: never[];
|
|
1184
|
+
stateMutability: string;
|
|
1185
|
+
}[];
|
|
1186
|
+
functionName: string;
|
|
1187
|
+
args: readonly [
|
|
1188
|
+
bigint,
|
|
1189
|
+
bigint,
|
|
1190
|
+
bigint,
|
|
1191
|
+
Address
|
|
1192
|
+
];
|
|
1193
|
+
}>> {
|
|
1194
|
+
return this.withdrawClient.prepareWithdrawTx(params);
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
/**
|
|
1198
|
+
* Calculates the amount of tokens that would be received for a given amount of LP tokens
|
|
1199
|
+
* @param vaultAddress The vault address
|
|
1200
|
+
* @param lpToken The amount of LP tokens to calculate for
|
|
1201
|
+
*/
|
|
1202
|
+
public async getTokensFromLp(
|
|
1203
|
+
vaultAddress: Address,
|
|
1204
|
+
lpToken: bigint
|
|
1205
|
+
): Promise<SteerResponse<TokensFromLpResponse>> {
|
|
1206
|
+
return this.withdrawClient.getTokensFromLp(vaultAddress, lpToken);
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
/**
|
|
1210
|
+
* Approves spending of tokens for a vault
|
|
1211
|
+
* @param params The approval parameters
|
|
1212
|
+
*/
|
|
1213
|
+
public async approve(params: VaultApproveParams): Promise<SteerResponse<Hash>> {
|
|
1214
|
+
try {
|
|
1215
|
+
const account = await this.walletClient.getAddresses();
|
|
1216
|
+
if (!account[0]) throw new Error('No account found');
|
|
1217
|
+
|
|
1218
|
+
const { request } = await this.publicClient.simulateContract({
|
|
1219
|
+
address: params.vaultAddress,
|
|
1220
|
+
abi: VAULT_ABI,
|
|
1221
|
+
functionName: 'approve',
|
|
1222
|
+
args: [params.spender, params.amount],
|
|
1223
|
+
account: account[0],
|
|
1224
|
+
});
|
|
1225
|
+
|
|
1226
|
+
const hash = await this.walletClient.writeContract(request);
|
|
1227
|
+
|
|
1228
|
+
return {
|
|
1229
|
+
data: hash,
|
|
1230
|
+
status: 200,
|
|
1231
|
+
success: true,
|
|
1232
|
+
};
|
|
1233
|
+
} catch (error) {
|
|
1234
|
+
return {
|
|
1235
|
+
data: null,
|
|
1236
|
+
status: 500,
|
|
1237
|
+
success: false,
|
|
1238
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
1239
|
+
};
|
|
1240
|
+
}
|
|
1241
|
+
}
|
|
1242
|
+
|
|
1243
|
+
/**
|
|
1244
|
+
* Gets the allowance for a vault token
|
|
1245
|
+
* @param params The allowance parameters
|
|
1246
|
+
*/
|
|
1247
|
+
public async allowance(params: VaultAllowanceParams): Promise<SteerResponse<bigint>> {
|
|
1248
|
+
try {
|
|
1249
|
+
const allowance = await this.publicClient.readContract({
|
|
1250
|
+
address: params.vaultAddress,
|
|
1251
|
+
abi: VAULT_ABI,
|
|
1252
|
+
functionName: 'allowance',
|
|
1253
|
+
args: [params.owner, params.spender],
|
|
1254
|
+
});
|
|
1255
|
+
|
|
1256
|
+
return {
|
|
1257
|
+
data: allowance,
|
|
1258
|
+
status: 200,
|
|
1259
|
+
success: true,
|
|
1260
|
+
};
|
|
1261
|
+
} catch (error) {
|
|
1262
|
+
return {
|
|
1263
|
+
data: null,
|
|
1264
|
+
status: 500,
|
|
1265
|
+
success: false,
|
|
1266
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
1267
|
+
};
|
|
1268
|
+
}
|
|
1269
|
+
}
|
|
1270
|
+
|
|
1271
|
+
/**
|
|
1272
|
+
* Gets the balance of a vault token for an account
|
|
1273
|
+
* @param params The balance parameters
|
|
1274
|
+
*/
|
|
1275
|
+
public async balanceOf(params: VaultBalanceParams): Promise<SteerResponse<bigint>> {
|
|
1276
|
+
try {
|
|
1277
|
+
const balance = await this.publicClient.readContract({
|
|
1278
|
+
address: params.vaultAddress,
|
|
1279
|
+
abi: VAULT_ABI,
|
|
1280
|
+
functionName: 'balanceOf',
|
|
1281
|
+
args: [params.account],
|
|
1282
|
+
});
|
|
1283
|
+
|
|
1284
|
+
return {
|
|
1285
|
+
data: balance,
|
|
1286
|
+
status: 200,
|
|
1287
|
+
success: true,
|
|
1288
|
+
};
|
|
1289
|
+
} catch (error) {
|
|
1290
|
+
return {
|
|
1291
|
+
data: null,
|
|
1292
|
+
status: 500,
|
|
1293
|
+
success: false,
|
|
1294
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
1295
|
+
};
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
|
|
1299
|
+
/**
|
|
1300
|
+
* Gets the total supply of a vault token
|
|
1301
|
+
* @param vaultAddress The vault address
|
|
1302
|
+
*/
|
|
1303
|
+
public async totalSupply(vaultAddress: Address): Promise<SteerResponse<bigint>> {
|
|
1304
|
+
try {
|
|
1305
|
+
const totalSupply = await this.publicClient.readContract({
|
|
1306
|
+
address: vaultAddress,
|
|
1307
|
+
abi: VAULT_ABI,
|
|
1308
|
+
functionName: 'totalSupply',
|
|
1309
|
+
});
|
|
1310
|
+
|
|
1311
|
+
return {
|
|
1312
|
+
data: totalSupply,
|
|
1313
|
+
status: 200,
|
|
1314
|
+
success: true,
|
|
1315
|
+
};
|
|
1316
|
+
} catch (error) {
|
|
1317
|
+
return {
|
|
1318
|
+
data: null,
|
|
1319
|
+
status: 500,
|
|
1320
|
+
success: false,
|
|
1321
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
1322
|
+
};
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
|
|
1326
|
+
/**
|
|
1327
|
+
* Gets the decimals of a vault token
|
|
1328
|
+
* @param vaultAddress The vault address
|
|
1329
|
+
*/
|
|
1330
|
+
public async decimals(vaultAddress: Address): Promise<SteerResponse<number>> {
|
|
1331
|
+
try {
|
|
1332
|
+
const decimals = await this.publicClient.readContract({
|
|
1333
|
+
address: vaultAddress,
|
|
1334
|
+
abi: VAULT_ABI,
|
|
1335
|
+
functionName: 'decimals',
|
|
1336
|
+
});
|
|
1337
|
+
|
|
1338
|
+
return {
|
|
1339
|
+
data: decimals,
|
|
1340
|
+
status: 200,
|
|
1341
|
+
success: true,
|
|
1342
|
+
};
|
|
1343
|
+
} catch (error) {
|
|
1344
|
+
return {
|
|
1345
|
+
data: null,
|
|
1346
|
+
status: 500,
|
|
1347
|
+
success: false,
|
|
1348
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
1349
|
+
};
|
|
1350
|
+
}
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
/**
|
|
1354
|
+
* Gets the symbol of a vault token
|
|
1355
|
+
* @param vaultAddress The vault address
|
|
1356
|
+
*/
|
|
1357
|
+
public async symbol(vaultAddress: Address): Promise<SteerResponse<string>> {
|
|
1358
|
+
try {
|
|
1359
|
+
const result = await this.publicClient.readContract({
|
|
1360
|
+
address: vaultAddress,
|
|
1361
|
+
abi: VAULT_ABI,
|
|
1362
|
+
functionName: 'symbol',
|
|
1363
|
+
});
|
|
1364
|
+
|
|
1365
|
+
return {
|
|
1366
|
+
data: result,
|
|
1367
|
+
status: 200,
|
|
1368
|
+
success: true,
|
|
1369
|
+
};
|
|
1370
|
+
} catch (error) {
|
|
1371
|
+
return {
|
|
1372
|
+
data: null,
|
|
1373
|
+
status: 500,
|
|
1374
|
+
success: false,
|
|
1375
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
1376
|
+
};
|
|
1377
|
+
}
|
|
1378
|
+
}
|
|
1379
|
+
|
|
1380
|
+
/**
|
|
1381
|
+
* Gets the name of a vault token
|
|
1382
|
+
* @param vaultAddress The vault address
|
|
1383
|
+
*/
|
|
1384
|
+
public async name(vaultAddress: Address): Promise<SteerResponse<string>> {
|
|
1385
|
+
try {
|
|
1386
|
+
const result = await this.publicClient.readContract({
|
|
1387
|
+
address: vaultAddress,
|
|
1388
|
+
abi: VAULT_ABI,
|
|
1389
|
+
functionName: 'name',
|
|
1390
|
+
});
|
|
1391
|
+
|
|
1392
|
+
return {
|
|
1393
|
+
data: result,
|
|
1394
|
+
status: 200,
|
|
1395
|
+
success: true,
|
|
1396
|
+
};
|
|
1397
|
+
} catch (error) {
|
|
1398
|
+
return {
|
|
1399
|
+
data: null,
|
|
1400
|
+
status: 500,
|
|
1401
|
+
success: false,
|
|
1402
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
1403
|
+
};
|
|
1404
|
+
}
|
|
1405
|
+
}
|
|
1406
|
+
|
|
1407
|
+
public async pool(vaultAddress: Address): Promise<SteerResponse<Address>> {
|
|
1408
|
+
try {
|
|
1409
|
+
const pool = await this.publicClient.readContract({
|
|
1410
|
+
address: vaultAddress,
|
|
1411
|
+
abi: VAULT_ABI,
|
|
1412
|
+
functionName: 'pool',
|
|
1413
|
+
});
|
|
1414
|
+
|
|
1415
|
+
return {
|
|
1416
|
+
data: pool,
|
|
1417
|
+
status: 200,
|
|
1418
|
+
success: true,
|
|
1419
|
+
};
|
|
1420
|
+
} catch (error) {
|
|
1421
|
+
return {
|
|
1422
|
+
data: null,
|
|
1423
|
+
status: 500,
|
|
1424
|
+
success: false,
|
|
1425
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
1426
|
+
};
|
|
1427
|
+
}
|
|
1428
|
+
}
|
|
1429
|
+
|
|
1430
|
+
/**
|
|
1431
|
+
* Gets a pool instance for a vault
|
|
1432
|
+
* @param params The pool instance parameters
|
|
1433
|
+
*/
|
|
1434
|
+
public async getPoolInstance(params: PoolInstanceParams): Promise<SteerResponse<PoolV3>> {
|
|
1435
|
+
return this.depositClient.getPoolInstance(params);
|
|
1436
|
+
}
|
|
1437
|
+
|
|
1438
|
+
/**
|
|
1439
|
+
* Gets the corresponding token amount based on the provided token amount and ratio
|
|
1440
|
+
* @param vaultAddress The vault address
|
|
1441
|
+
* @param amount The amount of token to calculate the corresponding amount for
|
|
1442
|
+
* @param zeroForOne If true, calculates token1 amount for given token0, if false calculates token0 amount for given token1
|
|
1443
|
+
*/
|
|
1444
|
+
public async getCorrespondingTokenAmount(
|
|
1445
|
+
vaultAddress: Address,
|
|
1446
|
+
amount: bigint,
|
|
1447
|
+
zeroForOne: boolean
|
|
1448
|
+
): Promise<SteerResponse<bigint>> {
|
|
1449
|
+
return this.depositClient.getCorrespondingTokenAmount(vaultAddress, amount, zeroForOne);
|
|
1450
|
+
}
|
|
1451
|
+
|
|
1452
|
+
// Single-Asset Deposit Methods
|
|
1453
|
+
|
|
1454
|
+
/**
|
|
1455
|
+
* Previews a single-asset deposit by running all simulation steps
|
|
1456
|
+
* This allows users to see the expected outcome before executing the transaction
|
|
1457
|
+
*
|
|
1458
|
+
* @param params - Single-asset deposit parameters
|
|
1459
|
+
* @param poolAddress - Address of the pool (must be provided separately)
|
|
1460
|
+
* @returns Promise resolving to the complete deposit preview
|
|
1461
|
+
*
|
|
1462
|
+
* @example
|
|
1463
|
+
* ```typescript
|
|
1464
|
+
* const preview = await vaultClient.previewSingleAssetDeposit({
|
|
1465
|
+
* assets: parseEther('100'),
|
|
1466
|
+
* receiver: userAddress,
|
|
1467
|
+
* vault: vaultAddress,
|
|
1468
|
+
* isToken0: true,
|
|
1469
|
+
* depositSlippagePercent: 5n,
|
|
1470
|
+
* swapSlippageBP: 500,
|
|
1471
|
+
* ammType: AMMType.UniswapV3,
|
|
1472
|
+
* singleAssetDepositContract: contractAddress
|
|
1473
|
+
* }, poolAddress);
|
|
1474
|
+
*
|
|
1475
|
+
* if (preview.success) {
|
|
1476
|
+
* console.log('Expected LP tokens:', preview.data.lpEstimation.lpTokens);
|
|
1477
|
+
* console.log('Swap amount:', preview.data.swapAmount);
|
|
1478
|
+
* }
|
|
1479
|
+
* ```
|
|
1480
|
+
*/
|
|
1481
|
+
public async previewSingleAssetDeposit(
|
|
1482
|
+
params: SingleAssetDepositParams,
|
|
1483
|
+
poolAddress: Address
|
|
1484
|
+
): Promise<SteerResponse<SingleAssetDepositPreview>> {
|
|
1485
|
+
return this.singleAssetDepositClient.previewDeposit(params, poolAddress);
|
|
1486
|
+
}
|
|
1487
|
+
|
|
1488
|
+
/**
|
|
1489
|
+
* Executes a single-asset deposit transaction
|
|
1490
|
+
*
|
|
1491
|
+
* @param params - Single-asset deposit parameters
|
|
1492
|
+
* @returns Promise resolving to the transaction hash
|
|
1493
|
+
*
|
|
1494
|
+
* @example
|
|
1495
|
+
* ```typescript
|
|
1496
|
+
* const result = await vaultClient.singleAssetDeposit({
|
|
1497
|
+
* assets: parseEther('100'),
|
|
1498
|
+
* receiver: userAddress,
|
|
1499
|
+
* vault: vaultAddress,
|
|
1500
|
+
* isToken0: true,
|
|
1501
|
+
* depositSlippagePercent: 5n,
|
|
1502
|
+
* swapSlippageBP: 500,
|
|
1503
|
+
* ammType: AMMType.UniswapV3,
|
|
1504
|
+
* singleAssetDepositContract: contractAddress
|
|
1505
|
+
* });
|
|
1506
|
+
*
|
|
1507
|
+
* if (result.success) {
|
|
1508
|
+
* console.log('Transaction hash:', result.data);
|
|
1509
|
+
* }
|
|
1510
|
+
* ```
|
|
1511
|
+
*/
|
|
1512
|
+
public async singleAssetDeposit(params: SingleAssetDepositParams): Promise<SteerResponse<Hash>> {
|
|
1513
|
+
return this.singleAssetDepositClient.deposit(params);
|
|
1514
|
+
}
|
|
1515
|
+
|
|
1516
|
+
/**
|
|
1517
|
+
* Prepares a single-asset deposit transaction without executing it
|
|
1518
|
+
* Useful for batching transactions or custom execution logic
|
|
1519
|
+
*
|
|
1520
|
+
* @param params - Single-asset deposit parameters
|
|
1521
|
+
* @returns Promise resolving to the prepared transaction data
|
|
1522
|
+
*/
|
|
1523
|
+
public async prepareSingleAssetDepositTx(params: SingleAssetDepositParams) {
|
|
1524
|
+
return this.singleAssetDepositClient.prepareDepositTx(params);
|
|
1525
|
+
}
|
|
1526
|
+
|
|
1527
|
+
/**
|
|
1528
|
+
* Validates single-asset deposit parameters
|
|
1529
|
+
*
|
|
1530
|
+
* @param params - Parameters to validate
|
|
1531
|
+
* @throws Error if parameters are invalid
|
|
1532
|
+
*/
|
|
1533
|
+
public validateSingleAssetDepositParams(params: SingleAssetDepositParams): void {
|
|
1534
|
+
return this.singleAssetDepositClient.validateDepositParams(params);
|
|
1535
|
+
}
|
|
1536
|
+
|
|
1537
|
+
// Reward Management Methods
|
|
1538
|
+
|
|
1539
|
+
/**
|
|
1540
|
+
* Calculates pending rewards for a user from a vault
|
|
1541
|
+
* This is a view function that doesn't modify state
|
|
1542
|
+
*
|
|
1543
|
+
* @param params - Parameters containing vault address and user address
|
|
1544
|
+
* @returns Promise resolving to pending rewards data or zero values if function reverts
|
|
1545
|
+
*
|
|
1546
|
+
* @example
|
|
1547
|
+
* ```typescript
|
|
1548
|
+
* const pendingRewards = await vaultClient.calculatePendingRewards({
|
|
1549
|
+
* vaultAddress: '0x123...',
|
|
1550
|
+
* user: '0xabc...'
|
|
1551
|
+
* });
|
|
1552
|
+
*
|
|
1553
|
+
* if (pendingRewards.success && pendingRewards.data) {
|
|
1554
|
+
* console.log('Rewards:', pendingRewards.data.rewards);
|
|
1555
|
+
* console.log('Extra Rewards:', pendingRewards.data.extraRewards);
|
|
1556
|
+
* }
|
|
1557
|
+
* ```
|
|
1558
|
+
*/
|
|
1559
|
+
public async calculatePendingRewards(params: PendingRewardsParams): Promise<SteerResponse<PendingRewardsResponse>> {
|
|
1560
|
+
try {
|
|
1561
|
+
const result = await this.publicClient.readContract({
|
|
1562
|
+
address: params.vaultAddress,
|
|
1563
|
+
abi: REWARD_FUNCTIONS_ABI,
|
|
1564
|
+
functionName: 'calculatePendingRewards',
|
|
1565
|
+
args: [params.user],
|
|
1566
|
+
}) as [bigint, bigint];
|
|
1567
|
+
|
|
1568
|
+
return {
|
|
1569
|
+
data: {
|
|
1570
|
+
rewards: result[0],
|
|
1571
|
+
extraRewards: result[1]
|
|
1572
|
+
},
|
|
1573
|
+
status: 200,
|
|
1574
|
+
success: true,
|
|
1575
|
+
};
|
|
1576
|
+
} catch (error) {
|
|
1577
|
+
// If the function reverts or doesn't exist, return zero values
|
|
1578
|
+
console.warn('calculatePendingRewards failed, returning zero values:', error);
|
|
1579
|
+
return {
|
|
1580
|
+
data: {
|
|
1581
|
+
rewards: 0n,
|
|
1582
|
+
extraRewards: 0n
|
|
1583
|
+
},
|
|
1584
|
+
status: 200,
|
|
1585
|
+
success: true,
|
|
1586
|
+
};
|
|
1587
|
+
}
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1590
|
+
/**
|
|
1591
|
+
* Claims pending rewards from a vault using the claimBlackHolePendingRewards function
|
|
1592
|
+
*
|
|
1593
|
+
* @param params - Parameters containing vault address
|
|
1594
|
+
* @returns Promise resolving to transaction hash or zero values if function reverts
|
|
1595
|
+
*
|
|
1596
|
+
* @example
|
|
1597
|
+
* ```typescript
|
|
1598
|
+
* const claimResult = await vaultClient.claimPendingRewards({
|
|
1599
|
+
* vaultAddress: '0x123...'
|
|
1600
|
+
* });
|
|
1601
|
+
*
|
|
1602
|
+
* if (claimResult.success && claimResult.data) {
|
|
1603
|
+
* console.log('Claim transaction hash:', claimResult.data);
|
|
1604
|
+
* }
|
|
1605
|
+
* ```
|
|
1606
|
+
*/
|
|
1607
|
+
public async claimBlackholePendingRewards(params: ClaimRewardsParams): Promise<SteerResponse<Hash | PendingRewardsResponse>> {
|
|
1608
|
+
try {
|
|
1609
|
+
const account = await this.walletClient.getAddresses();
|
|
1610
|
+
if (!account[0]) throw new Error('No account found');
|
|
1611
|
+
|
|
1612
|
+
const { request } = await this.publicClient.simulateContract({
|
|
1613
|
+
address: params.vaultAddress,
|
|
1614
|
+
abi: REWARD_FUNCTIONS_ABI,
|
|
1615
|
+
functionName: 'claimUserRewards',
|
|
1616
|
+
args: [],
|
|
1617
|
+
account: account[0],
|
|
1618
|
+
});
|
|
1619
|
+
|
|
1620
|
+
const hash = await this.walletClient.writeContract(request);
|
|
1621
|
+
|
|
1622
|
+
return {
|
|
1623
|
+
data: hash,
|
|
1624
|
+
status: 200,
|
|
1625
|
+
success: true,
|
|
1626
|
+
};
|
|
1627
|
+
} catch (error) {
|
|
1628
|
+
console.error('claimBlackHolePendingRewards failed, error:', error);
|
|
1629
|
+
// If the function reverts or doesn't exist, return zero values instead of transaction hash
|
|
1630
|
+
console.warn('claimBlackHolePendingRewards failed, returning zero values:', error);
|
|
1631
|
+
return {
|
|
1632
|
+
data: {
|
|
1633
|
+
rewards: 0n,
|
|
1634
|
+
extraRewards: 0n
|
|
1635
|
+
},
|
|
1636
|
+
status: 200,
|
|
1637
|
+
success: true,
|
|
1638
|
+
};
|
|
1639
|
+
}
|
|
1640
|
+
}
|
|
1641
|
+
|
|
1642
|
+
}
|