@pendle/core-v2 2.19.0 → 2.19.1-tradingbot
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/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/WeekMath.sol/WeekMath.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
- package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
- package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
- package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
- package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYUtils.sol/SYUtils.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAPoolHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAWethHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol/LinearMath.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol/LinearPreview.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV2.sol/PendleAuraBalancerStableLPSYV2.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotRewardHelper.sol/CamelotRewardHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileCommon.sol/CamelotV1VolatileCommon.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileLpHelper.sol/CamelotV1VolatileLpHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatilePreview.sol/CamelotV1VolatilePreview.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol/GLPPreviewHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
- package/build/artifacts/contracts/core/TradingBot/LongYield/LongYieldActionHelper.sol/LongYieldActionHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/LongYield/LongYieldActionHelper.sol/LongYieldActionHelper.json +815 -0
- package/build/artifacts/contracts/core/TradingBot/LongYield/LongYieldDecisionHelper.sol/LongYieldDecisionHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/LongYield/LongYieldDecisionHelper.sol/LongYieldDecisionHelper.json +1215 -0
- package/build/artifacts/contracts/core/TradingBot/LongYield/LongYieldTradingBot.sol/LongYieldTradingBot.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/LongYield/LongYieldTradingBot.sol/LongYieldTradingBot.json +1564 -0
- package/build/artifacts/contracts/core/TradingBot/ShortYield/ShortYieldActionHelper.sol/ShortYieldActionHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/ShortYield/ShortYieldActionHelper.sol/ShortYieldActionHelper.json +765 -0
- package/build/artifacts/contracts/core/TradingBot/ShortYield/ShortYieldDecisionHelper.sol/ShortYieldDecisionHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/ShortYield/ShortYieldDecisionHelper.sol/ShortYieldDecisionHelper.json +1215 -0
- package/build/artifacts/contracts/core/TradingBot/ShortYield/ShortYieldTradingBot.sol/ShortYieldTradingBot.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/ShortYield/ShortYieldTradingBot.sol/ShortYieldTradingBot.json +1368 -0
- package/build/artifacts/contracts/core/TradingBot/base/BotActionCallback.sol/BotActionCallback.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/base/BotActionCallback.sol/BotActionCallback.json +815 -0
- package/build/artifacts/contracts/core/TradingBot/base/BotDecisionHelperBase.sol/BotDecisionHelperBase.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/base/BotDecisionHelperBase.sol/BotDecisionHelperBase.json +789 -0
- package/build/artifacts/contracts/core/TradingBot/base/TradingBotBase.sol/TradingBotBase.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/base/TradingBotBase.sol/TradingBotBase.json +765 -0
- package/build/artifacts/contracts/core/TradingBot/libraries/BotSimulationLib.sol/BotSimulationLib.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/libraries/BotSimulationLib.sol/BotSimulationLib.json +10 -0
- package/build/artifacts/contracts/core/TradingBot/libraries/MarketExtLib.sol/MarketExtLib.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/libraries/MarketExtLib.sol/MarketExtLib.json +24 -0
- package/build/artifacts/contracts/core/TradingBot/libraries/SpecSegmentLib.sol/SpecSegmentLib.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/libraries/SpecSegmentLib.sol/SpecSegmentLib.json +10 -0
- package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
- package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.json +2 -2
- package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.json +2 -2
- package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.json +2 -2
- package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
- package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +151 -2
- package/build/artifacts/contracts/core/libraries/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/StringLib.sol/StringLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/TokenAmountLib.sol/TokenAmountLib.dbg.json +4 -0
- package/build/artifacts/contracts/core/libraries/TokenAmountLib.sol/TokenAmountLib.json +10 -0
- package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/math/Math.sol/Math.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IERC4626LinearPool.sol/IERC4626LinearPool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Camelot/ICamelotFactory.sol/ICamelotFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTFactory.sol/ICamelotNFTFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTHandler.sol/ICamelotNFTHandler.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTPool.sol/ICamelotNFTPool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPool.sol/ICamelotNitroPool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPoolFactory.sol/ICamelotNitroPoolFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Camelot/ICamelotPair.sol/ICamelotPair.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Camelot/ICamelotRouter.sol/ICamelotRouter.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Camelot/ICamelotYieldBooster.sol/ICamelotYieldBooster.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Camelot/IXGrail.sol/IXGrail.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ConvexCurve/ICrvDepositor.sol/ICrvDepositor.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ConvexCurve/ICvxCrv.sol/ICvxCrv.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Frax/IFrxEthMinter.sol/IFrxEthMinter.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionInfoStatic.sol/IPActionInfoStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.json +6 -82
- package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.json +22 -22
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMintRedeemStatic.sol/IPActionMintRedeemStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMintRedeemStatic.sol/IPActionMintRedeemStatic.json +4 -42
- package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionVePendleStatic.sol/IPActionVePendleStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPBulkSellerSYCallback.sol/IPBulkSellerCallback.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPFeeDistributorV2.sol/IPFeeDistributorV2.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMiniDiamond.sol/IPMiniDiamond.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPtOracle.sol/IPPtOracle.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPRouterHelper.sol/IPRouterHelper.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +32 -146
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargateLP.sol/IStargateLP.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargateStaking.sol/IStargateStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/TradingBot/IBotDecisionHelper.sol/IBotDecisionHelper.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/TradingBot/IBotDecisionHelper.sol/IBotDecisionHelper.json +652 -0
- package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldDecisionHelper.sol/ILongYieldDecisionHelper.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldDecisionHelper.sol/ILongYieldDecisionHelper.json +671 -0
- package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.json +977 -0
- package/build/artifacts/contracts/interfaces/TradingBot/IShortYieldDecisionHelper.sol/IShortYieldDecisionHelper.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/TradingBot/IShortYieldDecisionHelper.sol/IShortYieldDecisionHelper.json +652 -0
- package/build/artifacts/contracts/interfaces/TradingBot/IShortYieldTradingBot.sol/IShortYieldTradingBot.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/TradingBot/IShortYieldTradingBot.sol/IShortYieldTradingBot.json +958 -0
- package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.json +515 -0
- package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BoringLpSeller.sol/BoringLpSeller.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BoringPtSeller.sol/BoringPtSeller.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/EmptyUUPS.sol/EmptyUUPS.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/PendleMulticallV1.sol/PendleMulticallV1.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.json +8 -84
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.json +24 -24
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.json +6 -44
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.json +2 -2
- package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.json +2 -2
- package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.json +2 -2
- package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.json +2 -2
- package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.json +2 -2
- package/build/artifacts/contracts/oracles/samples/PendlePtUsdChainlinkOracle.sol/PendlePtUsdChainlinkOracle.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
- package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
- package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
- package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
- package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
- package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.json +2 -2
- package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
- package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IExecutorHelper.sol/IExecutorHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IHashflow.sol/IHashflow.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberInputScalingHelper.sol/KyberInputScalingHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScalingDataLib.sol/ScalingDataLib.dbg.json +1 -1
- package/contracts/core/TradingBot/LongYield/LongYieldActionHelper.sol +101 -0
- package/contracts/core/TradingBot/LongYield/LongYieldDecisionHelper.sol +216 -0
- package/contracts/core/TradingBot/LongYield/LongYieldTradingBot.sol +97 -0
- package/contracts/core/TradingBot/README.md +153 -0
- package/contracts/core/TradingBot/ShortYield/ShortYieldActionHelper.sol +54 -0
- package/contracts/core/TradingBot/ShortYield/ShortYieldDecisionHelper.sol +198 -0
- package/contracts/core/TradingBot/ShortYield/ShortYieldTradingBot.sol +101 -0
- package/contracts/core/TradingBot/base/BotActionCallback.sol +112 -0
- package/contracts/core/TradingBot/base/BotDecisionHelperBase.sol +235 -0
- package/contracts/core/TradingBot/base/TradingBotBase.sol +184 -0
- package/contracts/core/TradingBot/libraries/BotSimulationLib.sol +155 -0
- package/contracts/core/TradingBot/libraries/MarketExtLib.sol +310 -0
- package/contracts/core/TradingBot/libraries/SpecSegmentLib.sol +62 -0
- package/contracts/core/libraries/Errors.sol +12 -0
- package/contracts/core/libraries/TokenAmountLib.sol +47 -0
- package/contracts/interfaces/IPActionInfoStatic.sol +7 -8
- package/contracts/interfaces/IPActionMarketAuxStatic.sol +14 -21
- package/contracts/interfaces/IPActionMarketCoreStatic.sol +67 -70
- package/contracts/interfaces/IPActionMintRedeemStatic.sol +11 -23
- package/contracts/interfaces/IPRouterStatic.sol +1 -5
- package/contracts/interfaces/IStandardizedYield.sol +10 -15
- package/contracts/interfaces/TradingBot/IBotDecisionHelper.sol +57 -0
- package/contracts/interfaces/TradingBot/ILongYieldDecisionHelper.sol +8 -0
- package/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol +51 -0
- package/contracts/interfaces/TradingBot/IShortYieldDecisionHelper.sol +7 -0
- package/contracts/interfaces/TradingBot/IShortYieldTradingBot.sol +27 -0
- package/contracts/interfaces/TradingBot/ITradingBotBase.sol +63 -0
- package/contracts/offchain-helpers/BulkSellerOffchain.sol +8 -11
- package/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol +11 -14
- package/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol +37 -96
- package/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol +80 -88
- package/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol +14 -43
- package/package.json +1 -1
- package/typechain-types/ActionMarketAuxStatic.ts +38 -191
- package/typechain-types/ActionMarketCoreStatic.ts +134 -600
- package/typechain-types/ActionMintRedeemStatic.ts +26 -92
- package/typechain-types/BotActionCallback.ts +900 -0
- package/typechain-types/BotActionHelper.ts +950 -0
- package/typechain-types/BotDecisionHelper.ts +561 -0
- package/typechain-types/BotDecisionHelperBase.ts +484 -0
- package/typechain-types/BotDecisionLib.ts +335 -0
- package/typechain-types/CamelotV1LpHelper.ts +203 -0
- package/typechain-types/CamelotV1Preview.ts +431 -0
- package/typechain-types/IAnkrBNB.ts +150 -0
- package/typechain-types/IAnkrLiquidStaking.ts +253 -0
- package/typechain-types/IBotDecisionHelper.ts +452 -0
- package/typechain-types/ICamelotSY.ts +100 -0
- package/typechain-types/ILongYieldDecisionHelper.ts +486 -0
- package/typechain-types/ILongYieldTradingBot.ts +878 -0
- package/typechain-types/IPActionMarketAuxStatic.ts +38 -191
- package/typechain-types/IPActionMarketCoreStatic.ts +134 -600
- package/typechain-types/IPActionMintRedeemStatic.ts +26 -92
- package/typechain-types/IPExternalRewardDistributor.ts +192 -0
- package/typechain-types/IPMarketFactoryV2.ts +253 -0
- package/typechain-types/IPRouterStatic.ts +197 -888
- package/typechain-types/IPendlePreviewHelper.ts +147 -0
- package/typechain-types/IShortYieldDecisionHelper.ts +452 -0
- package/typechain-types/IShortYieldTradingBot.ts +770 -0
- package/typechain-types/ISwETH.ts +123 -0
- package/typechain-types/IThenaFactory.ts +245 -0
- package/typechain-types/IThenaGaugeV2.ts +206 -0
- package/typechain-types/IThenaPair.ts +579 -0
- package/typechain-types/IThenaRouter.ts +313 -0
- package/typechain-types/IThenaSY.ts +81 -0
- package/typechain-types/ITradingBotBase.ts +569 -0
- package/typechain-types/IWBETH.ts +128 -0
- package/typechain-types/LongYieldActionHelper.ts +900 -0
- package/typechain-types/LongYieldDecisionHelper.ts +601 -0
- package/typechain-types/LongYieldTradingBot.ts +1364 -0
- package/typechain-types/MarketExtLib.ts +81 -0
- package/typechain-types/PendleAnkrBNBSY.ts +1235 -0
- package/typechain-types/PendleAuraWstethAnkreth.ts +1511 -0
- package/typechain-types/PendleBinanceEth.ts +1229 -0
- package/typechain-types/PendleCamelotV1SY.ts +245 -0
- package/typechain-types/PendleExternalRewardDistributor.ts +546 -0
- package/typechain-types/PendleGaugeV2.ts +225 -0
- package/typechain-types/PendleMarketFactoryV2.ts +930 -0
- package/typechain-types/PendleMarketV2.ts +1311 -0
- package/typechain-types/PendleSwETH.ts +1216 -0
- package/typechain-types/PendleThenaSY.ts +1598 -0
- package/typechain-types/PendleWbEthSY.ts +1229 -0
- package/typechain-types/ShortYieldActionHelper.ts +856 -0
- package/typechain-types/ShortYieldDecisionHelper.ts +601 -0
- package/typechain-types/ShortYieldTradingBot.ts +1212 -0
- package/typechain-types/{PendleCamelotV1RouterHelper.ts → ThenaLpHelper.ts} +63 -5
- package/typechain-types/ThenaMath.ts +87 -0
- package/typechain-types/{CamelotV1PreviewHelper.ts → ThenaPreview.ts} +42 -63
- package/typechain-types/TradingBotBase.ts +856 -0
- package/typechain-types/TradingBotOffchain.ts +568 -0
- package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
- package/typechain-types/factories/ActionInfoStatic__factory.ts +1 -1
- package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +7 -83
- package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +23 -23
- package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +5 -43
- package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
- package/typechain-types/factories/ActionStorageStatic__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
- package/typechain-types/factories/ActionVePendleStatic__factory.ts +1 -1
- package/typechain-types/factories/BotActionCallback__factory.ts +830 -0
- package/typechain-types/factories/BotActionHelper__factory.ts +947 -0
- package/typechain-types/factories/BotDecisionHelperBase__factory.ts +808 -0
- package/typechain-types/factories/BotDecisionHelper__factory.ts +1192 -0
- package/typechain-types/factories/BotDecisionLib__factory.ts +642 -0
- package/typechain-types/factories/Broadcaster__factory.ts +1 -1
- package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
- package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
- package/typechain-types/factories/BulkSeller__factory.ts +1 -1
- package/typechain-types/factories/CamelotV1LpHelper__factory.ts +143 -0
- package/typechain-types/factories/CamelotV1Preview__factory.ts +309 -0
- package/typechain-types/factories/Errors__factory.ts +150 -1
- package/typechain-types/factories/IAnkrBNB__factory.ts +74 -0
- package/typechain-types/factories/IAnkrLiquidStaking__factory.ts +123 -0
- package/typechain-types/factories/IBotDecisionHelper__factory.ts +667 -0
- package/typechain-types/factories/ICamelotSY__factory.ts +49 -0
- package/typechain-types/factories/ILongYieldDecisionHelper__factory.ts +690 -0
- package/typechain-types/factories/ILongYieldTradingBot__factory.ts +996 -0
- package/typechain-types/factories/IPActionMarketAuxStatic__factory.ts +6 -82
- package/typechain-types/factories/IPActionMarketCoreStatic__factory.ts +22 -22
- package/typechain-types/factories/IPActionMintRedeemStatic__factory.ts +4 -42
- package/typechain-types/factories/IPExternalRewardDistributor__factory.ts +128 -0
- package/typechain-types/factories/IPMarketFactoryV2__factory.ts +181 -0
- package/typechain-types/factories/IPRouterStatic__factory.ts +32 -146
- package/typechain-types/factories/IPendlePreviewHelper__factory.ts +78 -0
- package/typechain-types/factories/IShortYieldDecisionHelper__factory.ts +671 -0
- package/typechain-types/factories/IShortYieldTradingBot__factory.ts +977 -0
- package/typechain-types/factories/ISwETH__factory.ts +53 -0
- package/typechain-types/factories/IThenaFactory__factory.ts +164 -0
- package/typechain-types/factories/IThenaGaugeV2__factory.ts +83 -0
- package/typechain-types/factories/IThenaPair__factory.ts +421 -0
- package/typechain-types/factories/IThenaRouter__factory.ts +200 -0
- package/typechain-types/factories/IThenaSY__factory.ts +36 -0
- package/typechain-types/factories/ITradingBotBase__factory.ts +530 -0
- package/typechain-types/factories/IWBETH__factory.ts +51 -0
- package/typechain-types/factories/LongYieldActionHelper__factory.ts +834 -0
- package/typechain-types/factories/LongYieldDecisionHelper__factory.ts +1272 -0
- package/typechain-types/factories/LongYieldTradingBot__factory.ts +1637 -0
- package/typechain-types/factories/MarketExtLib__factory.ts +74 -0
- package/typechain-types/factories/OracleLib__factory.ts +1 -1
- package/typechain-types/factories/PendleAnkrBNBSY__factory.ts +1100 -0
- package/typechain-types/factories/PendleArbitrumStakedEthSY__factory.ts +1 -1
- package/typechain-types/factories/PendleAuraBbAWethSwethSY__factory.ts +1 -1
- package/typechain-types/factories/PendleAuraWethAnkrethSYV2__factory.ts +1 -1
- package/typechain-types/factories/PendleAuraWethRocketEthSYV2__factory.ts +1 -1
- package/typechain-types/factories/PendleAuraWethStafiEthSY__factory.ts +1 -1
- package/typechain-types/factories/PendleAuraWethWstethSYV2__factory.ts +1 -1
- package/typechain-types/factories/PendleAuraWstethAnkreth__factory.ts +1244 -0
- package/typechain-types/factories/PendleBinanceEth__factory.ts +1052 -0
- package/typechain-types/factories/PendleCamelotV1SY__factory.ts +156 -9
- package/typechain-types/factories/PendleCamelotV1VolatileSY__factory.ts +1 -1
- package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
- package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
- package/typechain-types/factories/PendleExternalRewardDistributor__factory.ts +414 -0
- package/typechain-types/factories/PendleFeeDistributorV2__factory.ts +1 -1
- package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
- package/typechain-types/factories/PendleGDaiSY__factory.ts +1 -1
- package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleGaugeV2__factory.ts +140 -0
- package/typechain-types/factories/PendleGlpSY__factory.ts +1 -1
- package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
- package/typechain-types/factories/PendleLpGlpOracle__factory.ts +1 -1
- package/typechain-types/factories/PendleMarketFactoryV2__factory.ts +770 -0
- package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleMarketV2__factory.ts +1290 -0
- package/typechain-types/factories/PendleMarket__factory.ts +1 -1
- package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
- package/typechain-types/factories/PendlePrincipalTokenV2__factory.ts +1 -1
- package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
- package/typechain-types/factories/PendlePtGlpOracle__factory.ts +1 -1
- package/typechain-types/factories/PendlePtOracle__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
- package/typechain-types/factories/PendleRouterHelper__factory.ts +1 -1
- package/typechain-types/factories/PendleRouterStatic__factory.ts +1 -1
- package/typechain-types/factories/PendleRouter__factory.ts +1 -1
- package/typechain-types/factories/PendleSfrxEthSY__factory.ts +1 -1
- package/typechain-types/factories/PendleStargateLPSY__factory.ts +1 -1
- package/typechain-types/factories/PendleSwETH__factory.ts +1022 -0
- package/typechain-types/factories/PendleThenaSY__factory.ts +1352 -0
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleWbEthSY__factory.ts +1049 -0
- package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
- package/typechain-types/factories/PtAndLpToAsset__factory.ts +1 -1
- package/typechain-types/factories/SAPE__factory.ts +1 -1
- package/typechain-types/factories/ShortYieldActionHelper__factory.ts +784 -0
- package/typechain-types/factories/ShortYieldDecisionHelper__factory.ts +1272 -0
- package/typechain-types/factories/ShortYieldTradingBot__factory.ts +1445 -0
- package/typechain-types/factories/{PendleCamelotV1RouterHelper__factory.ts → ThenaLpHelper__factory.ts} +58 -13
- package/typechain-types/factories/ThenaMath__factory.ts +36 -0
- package/typechain-types/factories/ThenaPreview__factory.ts +319 -0
- package/typechain-types/factories/TradingBotBase__factory.ts +780 -0
- package/typechain-types/factories/TradingBotOffchain__factory.ts +1133 -0
- package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
- package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
- package/typechain-types/hardhat.d.ts +153 -126
- package/typechain-types/index.ts +36 -18
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol/PendleArbitrumStakedEthSY.dbg.json +0 -4
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol/PendleArbitrumStakedEthSY.json +0 -976
- package/build/artifacts/contracts/offchain-helpers/PtAndLpToAsset.sol/PtAndLpToAsset.dbg.json +0 -4
- package/build/artifacts/contracts/offchain-helpers/PtAndLpToAsset.sol/PtAndLpToAsset.json +0 -97
- package/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol +0 -120
- package/contracts/offchain-helpers/PtAndLpToAsset.sol +0 -62
- package/deployments/42161-markets/RETH-ARBITRUM-JUNE2024.json +0 -10
- package/deployments/42161-markets/WSTETH-ARBITRUM-JUNE2024.json +0 -10
- package/typechain-types/IPVotingEscrowSidechain.ts +0 -155
- package/typechain-types/PendleCamelotRewardHelper.ts +0 -347
- package/typechain-types/factories/CamelotV1PreviewHelper__factory.ts +0 -400
- package/typechain-types/factories/IPVotingEscrowSidechain__factory.ts +0 -112
- package/typechain-types/factories/PendleCamelotRewardHelper__factory.ts +0 -317
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.17;
|
|
3
|
+
|
|
4
|
+
import "../../../interfaces/IPMarketSwapCallback.sol";
|
|
5
|
+
import "../../../interfaces/TradingBot/IBotDecisionHelper.sol";
|
|
6
|
+
import "./TradingBotBase.sol";
|
|
7
|
+
|
|
8
|
+
abstract contract BotActionCallback is TradingBotBase, IPMarketSwapCallback {
|
|
9
|
+
using Math for int256;
|
|
10
|
+
|
|
11
|
+
modifier onlyMarket(address caller) {
|
|
12
|
+
if (caller != market) revert Errors.BotCallbackNotMarket(caller);
|
|
13
|
+
_;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function swapCallback(
|
|
17
|
+
int256 ptToAccount,
|
|
18
|
+
int256 syToAccount,
|
|
19
|
+
bytes calldata data
|
|
20
|
+
) external override onlyMarket(msg.sender) {
|
|
21
|
+
ActionType swapType = _getActionType(data);
|
|
22
|
+
if (swapType == ActionType.AddLiqFromYt) {
|
|
23
|
+
_callbackAddLiqFromYt(ptToAccount, syToAccount, data);
|
|
24
|
+
} else if (swapType == ActionType.RemoveLiqToYt) {
|
|
25
|
+
_callbackRemoveLiqToYt(ptToAccount, syToAccount, data);
|
|
26
|
+
} else {
|
|
27
|
+
assert(false);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/// ------------------------------------------------------------
|
|
32
|
+
/// AddLiqFromYt
|
|
33
|
+
/// ------------------------------------------------------------
|
|
34
|
+
|
|
35
|
+
function _callbackAddLiqFromYt(
|
|
36
|
+
int256 ptToAccount,
|
|
37
|
+
int256 /*syToAccount*/,
|
|
38
|
+
bytes calldata data
|
|
39
|
+
) internal {
|
|
40
|
+
uint256 netPyRedeemSy = _decodeAddLiqFromYt(data);
|
|
41
|
+
|
|
42
|
+
_transferOut(PT, YT, netPyRedeemSy);
|
|
43
|
+
|
|
44
|
+
bool needToBurnYt = (!IPYieldToken(YT).isExpired());
|
|
45
|
+
if (needToBurnYt) _transferOut(YT, YT, netPyRedeemSy);
|
|
46
|
+
|
|
47
|
+
IPYieldToken(YT).redeemPY(market); // all SY goes to market to repay and mint LP
|
|
48
|
+
|
|
49
|
+
_transferOut(PT, market, ptToAccount.Uint() - netPyRedeemSy); // remaining PT goes to market to mint LP
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function _encodeAddLiqFromYt(uint256 netPyRedeemSy) internal pure returns (bytes memory res) {
|
|
53
|
+
res = new bytes(64);
|
|
54
|
+
uint256 actionType = uint256(ActionType.AddLiqFromYt);
|
|
55
|
+
|
|
56
|
+
assembly {
|
|
57
|
+
mstore(add(res, 32), actionType)
|
|
58
|
+
mstore(add(res, 64), netPyRedeemSy)
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function _decodeAddLiqFromYt(
|
|
63
|
+
bytes calldata data
|
|
64
|
+
) internal pure returns (uint256 netPyRedeemSy) {
|
|
65
|
+
assembly {
|
|
66
|
+
// first 32 bytes is ActionType
|
|
67
|
+
netPyRedeemSy := calldataload(add(data.offset, 32))
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/// ------------------------------------------------------------
|
|
72
|
+
/// RemoveLiqToYt
|
|
73
|
+
/// ------------------------------------------------------------
|
|
74
|
+
|
|
75
|
+
function _callbackRemoveLiqToYt(
|
|
76
|
+
int256 /*ptToAccount*/,
|
|
77
|
+
int256 /*syToAccount*/,
|
|
78
|
+
bytes calldata data
|
|
79
|
+
) internal {
|
|
80
|
+
uint256 minYtOut = _decodeRemoveLiqToYt(data);
|
|
81
|
+
|
|
82
|
+
uint256 netYtOut = IPYieldToken(YT).mintPY(market, address(this)); // PT goes to market to repay
|
|
83
|
+
if (netYtOut < minYtOut) revert Errors.BotInsufficientYtOut(netYtOut, minYtOut); // 2nd check
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function _encodeRemoveLiqToYt(uint256 minYtOut) internal pure returns (bytes memory res) {
|
|
87
|
+
res = new bytes(64);
|
|
88
|
+
uint256 actionType = uint256(ActionType.RemoveLiqToYt);
|
|
89
|
+
|
|
90
|
+
assembly {
|
|
91
|
+
mstore(add(res, 32), actionType)
|
|
92
|
+
mstore(add(res, 64), minYtOut)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function _decodeRemoveLiqToYt(bytes calldata data) internal pure returns (uint256 minYtOut) {
|
|
97
|
+
assembly {
|
|
98
|
+
// first 32 bytes is ActionType
|
|
99
|
+
minYtOut := calldataload(add(data.offset, 32))
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/// ------------------------------------------------------------
|
|
104
|
+
/// Misc functions
|
|
105
|
+
/// ------------------------------------------------------------
|
|
106
|
+
|
|
107
|
+
function _getActionType(bytes calldata data) internal pure returns (ActionType actionType) {
|
|
108
|
+
assembly {
|
|
109
|
+
actionType := calldataload(data.offset)
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
import "../libraries/BotSimulationLib.sol";
|
|
5
|
+
import "../../libraries/Errors.sol";
|
|
6
|
+
import "../libraries/SpecSegmentLib.sol";
|
|
7
|
+
import "../../../interfaces/TradingBot/IBotDecisionHelper.sol";
|
|
8
|
+
import "../../../interfaces/TradingBot/ITradingBotBase.sol";
|
|
9
|
+
|
|
10
|
+
abstract contract BotDecisionHelperBase is IBotDecisionHelper {
|
|
11
|
+
using MarketExtLib for MarketExtState;
|
|
12
|
+
using MarketExtLib for ApproxParams;
|
|
13
|
+
using MarketMathCore for MarketState;
|
|
14
|
+
using MarketApproxPtInLib for MarketState;
|
|
15
|
+
using BotSimulationLib for BotState;
|
|
16
|
+
using PYIndexLib for PYIndex;
|
|
17
|
+
using Math for uint256;
|
|
18
|
+
using Math for int256;
|
|
19
|
+
using LogExpMath for uint256;
|
|
20
|
+
using SpecSegmentLib for TradingSpecs;
|
|
21
|
+
|
|
22
|
+
uint256 public constant MINIMAL_EPS = 100000000000000;
|
|
23
|
+
uint256 public constant INF = type(uint256).max;
|
|
24
|
+
|
|
25
|
+
function getFloatingSyAmount(address botAddress) public returns (uint256 floatingSyAmount) {
|
|
26
|
+
StrategyData memory strategyData = ITradingBotBase(botAddress).readStrategyData();
|
|
27
|
+
(uint256 tvlInSy, , uint256 syRatio, ) = _calcBotExtStats(
|
|
28
|
+
strategyData.botState,
|
|
29
|
+
strategyData.marketExt
|
|
30
|
+
);
|
|
31
|
+
if (syRatio < strategyData.specs.maxSyRatio) return 0;
|
|
32
|
+
|
|
33
|
+
return strategyData.botState.syBalance - tvlInSy.mulDown(strategyData.specs.targetSyRatio);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function botExtStats(
|
|
37
|
+
StrategyData memory strategyData
|
|
38
|
+
)
|
|
39
|
+
external
|
|
40
|
+
pure
|
|
41
|
+
returns (uint256 tvlInSy, uint256 iy, uint256 currentSyRatio, uint256 currentYtPtRatio)
|
|
42
|
+
{
|
|
43
|
+
return _calcBotExtStats(strategyData.botState, strategyData.marketExt);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Return the current bin corresponds to market state
|
|
48
|
+
*
|
|
49
|
+
* Negative value -> buy bin, b_abs(currentBin)
|
|
50
|
+
* Positive value -> sell bin, s_abs(currentBin)
|
|
51
|
+
* Zero -> Do nothing
|
|
52
|
+
*/
|
|
53
|
+
function getCurrentBin(StrategyData memory strategyData) public pure returns (int256) {
|
|
54
|
+
return
|
|
55
|
+
_getCurrentBin(
|
|
56
|
+
strategyData.botState,
|
|
57
|
+
strategyData.specs,
|
|
58
|
+
strategyData.marketExt.impliedYield()
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Binary search for the smallest parameter `botParam` for the corresponding rebalancing action
|
|
64
|
+
* such that the bot reaches desired target, otherwise give the largest `botParam` possible
|
|
65
|
+
* that action doesn't revert.
|
|
66
|
+
*
|
|
67
|
+
* @param action Action to take, from which target is derived
|
|
68
|
+
* @param botParams ApproxParams for `botParam`
|
|
69
|
+
* @param intParams ApproxParams for internal action's approximation (e.g. for router's swap)
|
|
70
|
+
*
|
|
71
|
+
* For `botParams`, eps = the precision such that slightly lower
|
|
72
|
+
* (param = (return value) * (1 - eps)) does not reach target
|
|
73
|
+
*
|
|
74
|
+
* - Returns `botParams.guessOffchain` if it reaches target, and slightly lower does not
|
|
75
|
+
* - Reverts if `botParams.guessMin` is invalid, or returns `botParams.guessMin` if reaches
|
|
76
|
+
* target
|
|
77
|
+
* - Returns `botParams.guessMax` if it is valid & does not reach target
|
|
78
|
+
* - Otherwise, binary search for `guess` such that it reaches target, and slightly lower does
|
|
79
|
+
* not
|
|
80
|
+
*
|
|
81
|
+
*/
|
|
82
|
+
function searchForBotParam(
|
|
83
|
+
StrategyData memory strategyData,
|
|
84
|
+
ActionType action,
|
|
85
|
+
uint256 targetIy,
|
|
86
|
+
uint256 rebalanceAdditionalCheck,
|
|
87
|
+
ApproxParams memory botParams,
|
|
88
|
+
ApproxParams memory intParams
|
|
89
|
+
) public pure returns (uint256) {
|
|
90
|
+
RebalanceDetails memory rebalance = RebalanceDetails(strategyData, action, targetIy);
|
|
91
|
+
if (botParams.guessOffchain != 0) {
|
|
92
|
+
// guessoffchain is good
|
|
93
|
+
if (
|
|
94
|
+
_rebalanceResult(
|
|
95
|
+
rebalance,
|
|
96
|
+
botParams.guessOffchain,
|
|
97
|
+
rebalanceAdditionalCheck,
|
|
98
|
+
botParams.eps,
|
|
99
|
+
intParams
|
|
100
|
+
) == RebalanceResult.SUCCESS
|
|
101
|
+
) return botParams.guessOffchain;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
{
|
|
105
|
+
// invalid range
|
|
106
|
+
uint256 guessUpperBound = _weakUpperBound(
|
|
107
|
+
strategyData.botState,
|
|
108
|
+
strategyData.marketExt,
|
|
109
|
+
action
|
|
110
|
+
);
|
|
111
|
+
if (botParams.guessMax > guessUpperBound) botParams.guessMax = guessUpperBound;
|
|
112
|
+
if (botParams.guessMin > botParams.guessMax)
|
|
113
|
+
revert Errors.BotBinarySearchInvalidRange(
|
|
114
|
+
uint256(action),
|
|
115
|
+
botParams.guessMin,
|
|
116
|
+
botParams.guessMax
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
{
|
|
121
|
+
// if botParams.guessMax is either success or unsatisfied (target_not_reached), then we'll just go with it
|
|
122
|
+
if (
|
|
123
|
+
_rebalanceResult(
|
|
124
|
+
rebalance,
|
|
125
|
+
botParams.guessMax,
|
|
126
|
+
rebalanceAdditionalCheck,
|
|
127
|
+
botParams.eps,
|
|
128
|
+
intParams
|
|
129
|
+
) != RebalanceResult.FAIL_OR_TARGET_EXCEED
|
|
130
|
+
) {
|
|
131
|
+
return botParams.guessMax;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
for (uint256 iter = 0; iter < botParams.maxIteration; ++iter) {
|
|
136
|
+
uint256 guess = botParams.guessMin + (botParams.guessMax - botParams.guessMin) / 2;
|
|
137
|
+
|
|
138
|
+
RebalanceResult res = _rebalanceResult(
|
|
139
|
+
rebalance,
|
|
140
|
+
guess,
|
|
141
|
+
rebalanceAdditionalCheck,
|
|
142
|
+
botParams.eps,
|
|
143
|
+
intParams
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
if (res == RebalanceResult.SUCCESS) {
|
|
147
|
+
return guess;
|
|
148
|
+
} else if (res == RebalanceResult.TARGET_NOT_REACHED) {
|
|
149
|
+
botParams.guessMin = guess;
|
|
150
|
+
} else {
|
|
151
|
+
botParams.guessMax = guess;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
revert Errors.BotBinarySearchFail();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function _calcBotExtStats(
|
|
159
|
+
BotState memory botState,
|
|
160
|
+
MarketExtState memory marketExt
|
|
161
|
+
)
|
|
162
|
+
internal
|
|
163
|
+
pure
|
|
164
|
+
returns (uint256 tvlInSy, uint256 iy, uint256 currentSyRatio, uint256 currentYtPtRatio)
|
|
165
|
+
{
|
|
166
|
+
tvlInSy = botState.tvlInSy(marketExt);
|
|
167
|
+
iy = marketExt.impliedYield();
|
|
168
|
+
currentSyRatio = botState.syBalance.divDown(tvlInSy);
|
|
169
|
+
(, uint256 ptInLp) = marketExt.clone().removeLiqDual(botState.lpBalance);
|
|
170
|
+
|
|
171
|
+
uint256 totalPt = ptInLp + botState.ptBalance;
|
|
172
|
+
currentYtPtRatio = (totalPt == 0 ? type(uint256).max : botState.ytBalance.divDown(totalPt));
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function _getMockApproxParamsWithGuessMax(
|
|
176
|
+
uint256 guessMax
|
|
177
|
+
) internal pure returns (ApproxParams memory) {
|
|
178
|
+
return ApproxParams(1, guessMax, 0, 256, MINIMAL_EPS);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
function _getMockApproxParams() internal pure returns (ApproxParams memory) {
|
|
182
|
+
return ApproxParams(1, INF, 0, 256, MINIMAL_EPS);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
function _getCurrentBin(
|
|
186
|
+
BotState memory botState,
|
|
187
|
+
TradingSpecs memory specs,
|
|
188
|
+
uint256 iy
|
|
189
|
+
) internal pure returns (int256) {
|
|
190
|
+
return specs.getBinIdForIy(botState, iy);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function _getTargetImpliedYieldForBin(
|
|
194
|
+
BotState memory botState,
|
|
195
|
+
TradingSpecs memory specs,
|
|
196
|
+
int256 binId
|
|
197
|
+
) internal pure returns (uint256) {
|
|
198
|
+
assert(binId != 0); // No action should be taken
|
|
199
|
+
|
|
200
|
+
uint256 segId = SpecSegmentLib.convertBinIdToSegId(botState, binId);
|
|
201
|
+
|
|
202
|
+
if (binId < 0) {
|
|
203
|
+
return specs.getMidIyOfSeg(segId + 1);
|
|
204
|
+
} else {
|
|
205
|
+
return specs.getMidIyOfSeg(segId - 1);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
function _weakUpperBound(
|
|
210
|
+
BotState memory bot,
|
|
211
|
+
MarketExtState memory marketExt,
|
|
212
|
+
ActionType action
|
|
213
|
+
) internal pure virtual returns (uint256);
|
|
214
|
+
|
|
215
|
+
function _rebalanceResult(
|
|
216
|
+
RebalanceDetails memory rebalance,
|
|
217
|
+
uint256 botParam,
|
|
218
|
+
uint256 rebalanceAdditionalCheck,
|
|
219
|
+
uint256 eps,
|
|
220
|
+
ApproxParams memory intParams
|
|
221
|
+
) internal pure virtual returns (RebalanceResult);
|
|
222
|
+
|
|
223
|
+
function _calcMaxAmountForAction(
|
|
224
|
+
uint256 amount,
|
|
225
|
+
int256 currentBin,
|
|
226
|
+
uint256 buyBins,
|
|
227
|
+
uint256 numOfBins
|
|
228
|
+
) internal pure returns (uint256) {
|
|
229
|
+
assert(currentBin != 0);
|
|
230
|
+
uint256 pressureDenom = currentBin < 0 ? buyBins : numOfBins * 2 - buyBins;
|
|
231
|
+
uint256 actionPressure = (currentBin.abs() * Math.ONE) / pressureDenom;
|
|
232
|
+
uint256 proportion = (Math.ONE + actionPressure).pow(actionPressure) - Math.ONE;
|
|
233
|
+
return amount.mulDown(proportion);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.17;
|
|
3
|
+
|
|
4
|
+
import "../../libraries/BoringOwnableUpgradeable.sol";
|
|
5
|
+
import "../../libraries/TokenHelper.sol";
|
|
6
|
+
import "../../../interfaces/TradingBot/ITradingBotBase.sol";
|
|
7
|
+
import "../../../interfaces/TradingBot/IBotDecisionHelper.sol";
|
|
8
|
+
|
|
9
|
+
abstract contract TradingBotBase is BoringOwnableUpgradeable, TokenHelper, ITradingBotBase {
|
|
10
|
+
using TokenAmountLib for TokenAmount[];
|
|
11
|
+
using PYIndexLib for IPYieldToken;
|
|
12
|
+
using MarketExtLib for MarketExtState;
|
|
13
|
+
using Math for uint256;
|
|
14
|
+
using Math for int256;
|
|
15
|
+
|
|
16
|
+
IBotDecisionHelper public immutable decisionHelper;
|
|
17
|
+
address public immutable market;
|
|
18
|
+
address public immutable router;
|
|
19
|
+
address public immutable SY;
|
|
20
|
+
address public immutable PT;
|
|
21
|
+
address public immutable YT;
|
|
22
|
+
address public immutable PENDLE;
|
|
23
|
+
|
|
24
|
+
TradingSpecs public specs;
|
|
25
|
+
uint256 public buyBins;
|
|
26
|
+
|
|
27
|
+
constructor(
|
|
28
|
+
address _market,
|
|
29
|
+
address _router,
|
|
30
|
+
address _PENDLE,
|
|
31
|
+
address _decisionHelper
|
|
32
|
+
) initializer {
|
|
33
|
+
(IStandardizedYield _SY, IPPrincipalToken _PT, IPYieldToken _YT) = IPMarket(_market)
|
|
34
|
+
.readTokens();
|
|
35
|
+
|
|
36
|
+
market = _market;
|
|
37
|
+
router = _router;
|
|
38
|
+
SY = address(_SY);
|
|
39
|
+
PT = address(_PT);
|
|
40
|
+
YT = address(_YT);
|
|
41
|
+
PENDLE = _PENDLE;
|
|
42
|
+
decisionHelper = IBotDecisionHelper(_decisionHelper);
|
|
43
|
+
|
|
44
|
+
__BoringOwnable_init();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function approveInf(MultiApproval[] calldata arr) external onlyOwner {
|
|
48
|
+
for (uint256 i = 0; i < arr.length; ) {
|
|
49
|
+
MultiApproval calldata ele = arr[i];
|
|
50
|
+
for (uint256 j = 0; j < ele.tokens.length; ) {
|
|
51
|
+
_safeApproveInf(ele.tokens[j], ele.spender);
|
|
52
|
+
unchecked {
|
|
53
|
+
j++;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
unchecked {
|
|
57
|
+
i++;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function depositSy(uint256 netSyIn) external onlyOwner {
|
|
63
|
+
_transferIn(SY, msg.sender, netSyIn);
|
|
64
|
+
emit DepositSy(netSyIn);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/// @dev Receives token and compound to SY
|
|
68
|
+
function depositToken(TokenInput calldata inp, uint256 minSyOut) external payable onlyOwner {
|
|
69
|
+
_transferIn(inp.tokenIn, msg.sender, inp.netTokenIn);
|
|
70
|
+
_compoundSingle(inp, minSyOut);
|
|
71
|
+
emit DepositToken(inp.tokenIn, inp.netTokenIn);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function withdrawFunds(address token, uint256 amount) external onlyOwner {
|
|
75
|
+
if (amount == type(uint256).max) amount = _selfBalance(token);
|
|
76
|
+
_transferOut(token, msg.sender, amount);
|
|
77
|
+
emit WithdrawFunds(token, amount);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function claimAndCompound(
|
|
81
|
+
TokenInput[] calldata inps,
|
|
82
|
+
uint256 minSyOut
|
|
83
|
+
) external onlyOwner returns (uint256 netSyOut, uint256 netPendleOut) {
|
|
84
|
+
_claimRewards();
|
|
85
|
+
|
|
86
|
+
netSyOut = _compound(inps, minSyOut);
|
|
87
|
+
|
|
88
|
+
netPendleOut = _selfBalance(PENDLE);
|
|
89
|
+
_transferOut(PENDLE, owner, netPendleOut);
|
|
90
|
+
emit ClaimAndCompound(netSyOut, netPendleOut);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/// Claim without compound, intended for offchain usage
|
|
94
|
+
/// @dev SY interest from YT is excluded
|
|
95
|
+
function claimWithoutCompound() external onlyOwner returns (TokenAmount[] memory rewards) {
|
|
96
|
+
address[] memory ytRewardTokens = IPYieldToken(YT).getRewardTokens();
|
|
97
|
+
(, uint256[] memory ytRewardAmounts) = IPYieldToken(YT).redeemDueInterestAndRewards(
|
|
98
|
+
address(this),
|
|
99
|
+
true,
|
|
100
|
+
true
|
|
101
|
+
);
|
|
102
|
+
rewards = rewards.add(ytRewardTokens, ytRewardAmounts);
|
|
103
|
+
|
|
104
|
+
address[] memory syRewardTokens = IStandardizedYield(SY).getRewardTokens();
|
|
105
|
+
uint256[] memory syRewardAmounts = IStandardizedYield(SY).claimRewards(address(this));
|
|
106
|
+
rewards = rewards.add(syRewardTokens, syRewardAmounts);
|
|
107
|
+
|
|
108
|
+
address[] memory lpRewardTokens = IPMarket(market).getRewardTokens();
|
|
109
|
+
uint256[] memory lpRewardAmounts = IPMarket(market).redeemRewards(address(this));
|
|
110
|
+
rewards = rewards.add(lpRewardTokens, lpRewardAmounts);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function _readMarketExtState() internal returns (MarketExtState memory marketExt) {
|
|
114
|
+
marketExt.state = IPMarket(market).readState(router);
|
|
115
|
+
marketExt.index = IPYieldToken(YT).newIndex();
|
|
116
|
+
marketExt.blockTime = block.timestamp;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function _readBotState() internal view returns (BotState memory botState) {
|
|
120
|
+
botState.lpBalance = _selfBalance(market);
|
|
121
|
+
botState.syBalance = _selfBalance(SY);
|
|
122
|
+
botState.ytBalance = _selfBalance(YT);
|
|
123
|
+
botState.ptBalance = _selfBalance(PT);
|
|
124
|
+
botState.buyBins = buyBins;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
receive() external payable {}
|
|
128
|
+
|
|
129
|
+
function _setBuyBins(uint256 _buyBins) internal {
|
|
130
|
+
buyBins = _buyBins;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function _claimRewards() internal {
|
|
134
|
+
IPYieldToken(YT).redeemDueInterestAndRewards(address(this), true, true);
|
|
135
|
+
IStandardizedYield(SY).claimRewards(address(this));
|
|
136
|
+
IPMarket(market).redeemRewards(address(this));
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function _compound(
|
|
140
|
+
TokenInput[] calldata inps,
|
|
141
|
+
uint256 minSyOut
|
|
142
|
+
) internal returns (uint256 netSyOut) {
|
|
143
|
+
netSyOut = 0;
|
|
144
|
+
|
|
145
|
+
for (uint256 i = 0; i < inps.length; ++i) {
|
|
146
|
+
netSyOut += _compoundSingle(inps[i], 0);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (netSyOut < minSyOut) revert Errors.BotInsufficientSyOut(netSyOut, minSyOut);
|
|
150
|
+
return netSyOut;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function _compoundSingle(
|
|
154
|
+
TokenInput memory inp,
|
|
155
|
+
uint256 minSyOut
|
|
156
|
+
) internal returns (uint256 /*netSyOut*/) {
|
|
157
|
+
if (inp.netTokenIn == type(uint256).max) inp.netTokenIn = _selfBalance(inp.tokenIn);
|
|
158
|
+
|
|
159
|
+
return
|
|
160
|
+
IPAllAction(router).mintSyFromToken{
|
|
161
|
+
value: inp.tokenIn == NATIVE ? inp.netTokenIn : 0
|
|
162
|
+
}(address(this), SY, minSyOut, inp);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
function setSpecs(TradingSpecs calldata _specs) external onlyOwner {
|
|
166
|
+
_setSpecs(_specs);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
function _setSpecs(TradingSpecs memory _specs) internal {
|
|
170
|
+
specs = _specs;
|
|
171
|
+
_setBuyBins(specs.numOfBins);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function readStrategyData() public returns (StrategyData memory strategyData) {
|
|
175
|
+
strategyData.botState = _readBotState();
|
|
176
|
+
strategyData.marketExt = _readMarketExtState();
|
|
177
|
+
strategyData.specs = specs;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
function _updateSellBinAfterTrade() internal {
|
|
181
|
+
int256 binShift = IBotDecisionHelper(decisionHelper).getCurrentBin(readStrategyData());
|
|
182
|
+
_setBuyBins((buyBins.Int() + binShift).Uint());
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
import "./MarketExtLib.sol";
|
|
5
|
+
import "../../../interfaces/TradingBot/IBotDecisionHelper.sol";
|
|
6
|
+
|
|
7
|
+
library BotSimulationLib {
|
|
8
|
+
using MarketMathCore for MarketState;
|
|
9
|
+
using MarketExtLib for MarketExtState;
|
|
10
|
+
using Math for uint256;
|
|
11
|
+
using Math for int256;
|
|
12
|
+
|
|
13
|
+
function swapSyToYt(
|
|
14
|
+
BotState memory bot,
|
|
15
|
+
MarketExtState memory marketExt,
|
|
16
|
+
uint256 exactYtOut
|
|
17
|
+
) internal pure returns (bool /*success*/) {
|
|
18
|
+
uint256 netSyIn = marketExt.swapSyToYt(exactYtOut);
|
|
19
|
+
|
|
20
|
+
if (netSyIn > bot.syBalance) return false;
|
|
21
|
+
|
|
22
|
+
bot.syBalance -= netSyIn;
|
|
23
|
+
bot.ytBalance += exactYtOut;
|
|
24
|
+
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function addLiqKeepYt(
|
|
29
|
+
BotState memory bot,
|
|
30
|
+
MarketExtState memory marketExt,
|
|
31
|
+
uint256 netSyIn
|
|
32
|
+
) internal pure returns (bool /*success*/) {
|
|
33
|
+
if (netSyIn > bot.syBalance) return false;
|
|
34
|
+
|
|
35
|
+
(uint256 netLpOut, uint256 netYtOut) = marketExt.addLiqKeepYt(netSyIn);
|
|
36
|
+
|
|
37
|
+
bot.syBalance -= netSyIn;
|
|
38
|
+
bot.lpBalance += netLpOut;
|
|
39
|
+
bot.ytBalance += netYtOut;
|
|
40
|
+
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function addLiqFromSy(
|
|
45
|
+
BotState memory bot,
|
|
46
|
+
MarketExtState memory marketExt,
|
|
47
|
+
uint256 netPtFromSwap
|
|
48
|
+
) internal pure returns (bool /*success*/) {
|
|
49
|
+
(uint256 netLpOut, uint256 netSyIn) = marketExt.addLiqFromSy(netPtFromSwap);
|
|
50
|
+
|
|
51
|
+
if (netSyIn > bot.syBalance) return false;
|
|
52
|
+
|
|
53
|
+
bot.syBalance -= netSyIn;
|
|
54
|
+
bot.lpBalance += netLpOut;
|
|
55
|
+
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function addLiqFromYt(
|
|
60
|
+
BotState memory bot,
|
|
61
|
+
MarketExtState memory marketExt,
|
|
62
|
+
uint256 netPtFromSwap
|
|
63
|
+
) internal pure returns (bool /*success*/) {
|
|
64
|
+
(uint256 netLpOut, uint256 netYtIn) = marketExt.addLiqFromYt(netPtFromSwap);
|
|
65
|
+
|
|
66
|
+
if (netYtIn > bot.ytBalance) return false;
|
|
67
|
+
|
|
68
|
+
bot.ytBalance -= netYtIn;
|
|
69
|
+
bot.lpBalance += netLpOut;
|
|
70
|
+
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function removeLiqToYt(
|
|
75
|
+
BotState memory bot,
|
|
76
|
+
MarketExtState memory marketExt,
|
|
77
|
+
uint256 netLpToRemove,
|
|
78
|
+
ApproxParams memory approxParams
|
|
79
|
+
) internal pure returns (bool /*success*/) {
|
|
80
|
+
if (netLpToRemove > bot.lpBalance) return false;
|
|
81
|
+
|
|
82
|
+
(uint256 netYtOut, ) = marketExt.removeLiqToYt(
|
|
83
|
+
netLpToRemove,
|
|
84
|
+
cloneApproxParams(approxParams)
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
bot.lpBalance -= netLpToRemove;
|
|
88
|
+
bot.ytBalance += netYtOut;
|
|
89
|
+
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function swapPtToYt(
|
|
94
|
+
BotState memory bot,
|
|
95
|
+
MarketExtState memory marketExt,
|
|
96
|
+
uint256 netPtToSwap,
|
|
97
|
+
ApproxParams memory approxParams
|
|
98
|
+
) internal pure returns (bool /*success*/) {
|
|
99
|
+
if (netPtToSwap > bot.ptBalance) return false;
|
|
100
|
+
(uint256 netYtOut, ) = marketExt.swapPtToYt(netPtToSwap, cloneApproxParams(approxParams));
|
|
101
|
+
bot.ptBalance -= netPtToSwap;
|
|
102
|
+
bot.ytBalance += netYtOut;
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function swapYtToPt(
|
|
107
|
+
BotState memory bot,
|
|
108
|
+
MarketExtState memory marketExt,
|
|
109
|
+
uint256 netYtToSwap,
|
|
110
|
+
ApproxParams memory approxParams
|
|
111
|
+
) internal pure returns (bool /*success*/) {
|
|
112
|
+
if (netYtToSwap > bot.ytBalance) return false;
|
|
113
|
+
(uint256 netPtOut, ) = marketExt.swapYtToPt(netYtToSwap, cloneApproxParams(approxParams));
|
|
114
|
+
bot.ptBalance += netPtOut;
|
|
115
|
+
bot.ytBalance -= netYtToSwap;
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function tvlInSy(
|
|
120
|
+
BotState memory bot,
|
|
121
|
+
MarketExtState memory marketExt
|
|
122
|
+
) internal pure returns (uint256) {
|
|
123
|
+
MarketExtState memory marketExtClone = marketExt.clone();
|
|
124
|
+
|
|
125
|
+
(uint256 syInLp, uint256 ptInLp) = marketExtClone.removeLiqDual(bot.lpBalance);
|
|
126
|
+
uint256 totalValue = bot.syBalance + syInLp;
|
|
127
|
+
|
|
128
|
+
uint256 totalPt = ptInLp + bot.ptBalance;
|
|
129
|
+
if (totalPt <= bot.ytBalance) {
|
|
130
|
+
totalValue += marketExtClone.previewPyToSy(totalPt);
|
|
131
|
+
totalValue += marketExtClone.swapYtToSy(bot.ytBalance - totalPt);
|
|
132
|
+
} else {
|
|
133
|
+
totalValue += marketExtClone.previewPyToSy(bot.ytBalance);
|
|
134
|
+
totalValue += marketExtClone.swapPtToSy(totalPt - bot.ytBalance);
|
|
135
|
+
}
|
|
136
|
+
return totalValue;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function clone(BotState memory bot) internal pure returns (BotState memory) {
|
|
140
|
+
return BotState(bot.lpBalance, bot.ytBalance, bot.ptBalance, bot.syBalance, bot.buyBins);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function cloneApproxParams(
|
|
144
|
+
ApproxParams memory params
|
|
145
|
+
) internal pure returns (ApproxParams memory) {
|
|
146
|
+
return
|
|
147
|
+
ApproxParams(
|
|
148
|
+
params.guessMin,
|
|
149
|
+
params.guessMax,
|
|
150
|
+
params.guessOffchain,
|
|
151
|
+
params.maxIteration,
|
|
152
|
+
params.eps
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
}
|