@pendle/core-v2 2.18.0 → 2.19.0-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/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/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/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/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/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/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/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/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 +1681 -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 +1535 -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 +932 -0
- package/build/artifacts/contracts/core/TradingBot/base/BotActionHelper.sol/BotActionHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/base/BotActionHelper.sol/BotActionHelper.json +932 -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 +882 -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/libraries/ArrayLib.sol/ArrayLib.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/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/math/Math.sol/Math.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IERC4626LinearPool.sol/IERC4626LinearPool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.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/ICamelotPair.sol/ICamelotPair.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/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.dbg.json +1 -1
- 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/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/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.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/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/IStandardizedYield.sol/IStandardizedYield.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 +1094 -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 +1075 -0
- package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.json +632 -0
- package/build/artifacts/contracts/offchain-helpers/BoringLpSeller.sol/BoringLpSeller.dbg.json +4 -0
- package/build/artifacts/contracts/offchain-helpers/BoringLpSeller.sol/BoringLpSeller.json +10 -0
- 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/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/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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +4 -0
- package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.json +166 -0
- 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/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/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/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/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/BotActionHelper.sol +178 -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/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 +67 -0
- package/contracts/offchain-helpers/BoringLpSeller.sol +47 -0
- package/contracts/oracles/samples/PendleLpGlpOracle.sol +49 -0
- package/package.json +1 -1
- package/typechain-types/BotActionCallback.ts +950 -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/I1inchAggregationRouterV5.ts +257 -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/IExecutorHelper1.ts +643 -0
- package/typechain-types/IExecutorHelper2.ts +115 -0
- package/typechain-types/IExecutorHelperEthereum1.ts +643 -0
- package/typechain-types/ILongYieldDecisionHelper.ts +486 -0
- package/typechain-types/ILongYieldTradingBot.ts +928 -0
- package/typechain-types/IPExternalRewardDistributor.ts +192 -0
- package/typechain-types/IPMarketFactoryV2.ts +253 -0
- package/typechain-types/IPendlePreviewHelper.ts +147 -0
- package/typechain-types/IShortYieldDecisionHelper.ts +452 -0
- package/typechain-types/IShortYieldTradingBot.ts +820 -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 +619 -0
- package/typechain-types/IWBETH.ts +128 -0
- package/typechain-types/LongYieldDecisionHelper.ts +601 -0
- package/typechain-types/LongYieldTradingBot.ts +1414 -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 +1961 -0
- package/typechain-types/PendleExternalRewardDistributor.ts +546 -0
- package/typechain-types/PendleGaugeV2.ts +225 -0
- package/typechain-types/PendleLpGlpOracle.ts +145 -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/PendleSwapArbitrum.ts +126 -0
- package/typechain-types/PendleSwapEthereum.ts +126 -0
- package/typechain-types/PendleThenaSY.ts +1598 -0
- package/typechain-types/PendleWbEthSY.ts +1229 -0
- package/typechain-types/PtAndLpToAsset.ts +136 -0
- package/typechain-types/ShortYieldDecisionHelper.ts +601 -0
- package/typechain-types/ShortYieldTradingBot.ts +1306 -0
- package/typechain-types/ThenaLpHelper.ts +191 -0
- package/typechain-types/ThenaMath.ts +87 -0
- package/typechain-types/ThenaPreview.ts +450 -0
- package/typechain-types/TradingBotBase.ts +906 -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 +1 -1
- package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +1 -1
- package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +1 -1
- 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 +947 -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/I1inchAggregationRouterV5__factory.ts +179 -0
- 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/IExecutorHelper1__factory.ts +403 -0
- package/typechain-types/factories/IExecutorHelper2__factory.ts +55 -0
- package/typechain-types/factories/IExecutorHelperEthereum1__factory.ts +407 -0
- package/typechain-types/factories/ILongYieldDecisionHelper__factory.ts +690 -0
- package/typechain-types/factories/ILongYieldTradingBot__factory.ts +1113 -0
- package/typechain-types/factories/IPExternalRewardDistributor__factory.ts +128 -0
- package/typechain-types/factories/IPMarketFactoryV2__factory.ts +181 -0
- 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 +1094 -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 +647 -0
- package/typechain-types/factories/IWBETH__factory.ts +51 -0
- package/typechain-types/factories/LongYieldDecisionHelper__factory.ts +1272 -0
- package/typechain-types/factories/LongYieldTradingBot__factory.ts +1754 -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 +27 -2
- 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 +1595 -0
- 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 +246 -0
- 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/PendleSwapArbitrum__factory.ts +129 -0
- package/typechain-types/factories/PendleSwapEthereum__factory.ts +129 -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 +150 -0
- package/typechain-types/factories/SAPE__factory.ts +1 -1
- package/typechain-types/factories/ShortYieldDecisionHelper__factory.ts +1272 -0
- package/typechain-types/factories/ShortYieldTradingBot__factory.ts +1612 -0
- package/typechain-types/factories/ThenaLpHelper__factory.ts +140 -0
- 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 +897 -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 +144 -9
- package/typechain-types/index.ts +32 -2
- 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 -966
- package/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol +0 -114
- package/deployments/42161-markets/RETH-ARBITRUM-JUNE2024.json +0 -10
- package/deployments/42161-markets/WSTETH-ARBITRUM-JUNE2024.json +0 -10
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.17;
|
|
3
|
+
|
|
4
|
+
import "./TradingBotBase.sol";
|
|
5
|
+
import "./BotActionCallback.sol";
|
|
6
|
+
|
|
7
|
+
abstract contract BotActionHelper is TradingBotBase, BotActionCallback {
|
|
8
|
+
using PYIndexLib for IPYieldToken;
|
|
9
|
+
using PYIndexLib for PYIndex;
|
|
10
|
+
using MarketMathCore for MarketState;
|
|
11
|
+
using MarketApproxPtInLib for MarketState;
|
|
12
|
+
using Math for int256;
|
|
13
|
+
|
|
14
|
+
bytes internal constant EMPTY_BYTES = abi.encode();
|
|
15
|
+
|
|
16
|
+
function _mintPY(
|
|
17
|
+
uint256 netSyIn,
|
|
18
|
+
uint256 minPyOut
|
|
19
|
+
) internal returns (uint256 netPyOut) {
|
|
20
|
+
return IPAllAction(router).mintPyFromSy(
|
|
21
|
+
address(this),
|
|
22
|
+
YT,
|
|
23
|
+
netSyIn,
|
|
24
|
+
minPyOut
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function _swapSyToYt(
|
|
29
|
+
address router,
|
|
30
|
+
uint256 exactYtOut,
|
|
31
|
+
uint256 maxSyIn
|
|
32
|
+
) internal returns (uint256 netSyIn) {
|
|
33
|
+
(netSyIn, ) = IPAllAction(router).swapSyForExactYt(
|
|
34
|
+
address(this),
|
|
35
|
+
market,
|
|
36
|
+
exactYtOut,
|
|
37
|
+
maxSyIn
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function _addLiqKeepYt(
|
|
42
|
+
address router,
|
|
43
|
+
uint256 netSyIn,
|
|
44
|
+
uint256 minLpOut,
|
|
45
|
+
uint256 minYtOut
|
|
46
|
+
) internal returns (uint256 /*netLpOut*/, uint256 /*netYtOut*/) {
|
|
47
|
+
return
|
|
48
|
+
IPAllAction(router).addLiquiditySingleSyKeepYt(
|
|
49
|
+
address(this),
|
|
50
|
+
market,
|
|
51
|
+
netSyIn,
|
|
52
|
+
minLpOut,
|
|
53
|
+
minYtOut
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/// @dev Mimics PendleRouter's addLiquiditySingleSy
|
|
58
|
+
function _addLiqFromSy(
|
|
59
|
+
uint256 netPtFromSwap,
|
|
60
|
+
uint256 minLpOut,
|
|
61
|
+
uint256 maxSyIn
|
|
62
|
+
) internal returns (uint256 netLpOut, uint256 netSyIn) {
|
|
63
|
+
MarketState memory state = IPMarket(market).readState(address(this));
|
|
64
|
+
PYIndex index = IPYieldToken(YT).newIndex();
|
|
65
|
+
|
|
66
|
+
(uint256 netSyToSwap, , ) = state.swapSyForExactPt(index, netPtFromSwap, block.timestamp);
|
|
67
|
+
(, , uint256 netSyToAdd, ) = state.addLiquidity(
|
|
68
|
+
maxSyIn - netSyToSwap,
|
|
69
|
+
netPtFromSwap,
|
|
70
|
+
block.timestamp
|
|
71
|
+
); // ensures netSyToAdd <= maxSyIn - netSyToSwap
|
|
72
|
+
netSyIn = netSyToSwap + netSyToAdd;
|
|
73
|
+
|
|
74
|
+
_transferOut(SY, market, netSyIn);
|
|
75
|
+
IPMarket(market).swapSyForExactPt(market, netPtFromSwap, EMPTY_BYTES); // PT goes to market for LP
|
|
76
|
+
(netLpOut, , ) = IPMarket(market).mint(address(this), netSyToAdd, netPtFromSwap);
|
|
77
|
+
|
|
78
|
+
if (netLpOut < minLpOut) revert Errors.BotInsufficientLpOut(netLpOut, minLpOut);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function _addLiqFromYt(
|
|
82
|
+
uint256 netPtFromSwap,
|
|
83
|
+
uint256 minLpOut
|
|
84
|
+
) internal returns (uint256 netLpOut, uint256 netYtIn) {
|
|
85
|
+
MarketState memory state = IPMarket(market).readState(address(this));
|
|
86
|
+
PYIndex index = IPYieldToken(YT).newIndex();
|
|
87
|
+
|
|
88
|
+
(uint256 netSyToSwap, , ) = state.swapSyForExactPt(index, netPtFromSwap, block.timestamp);
|
|
89
|
+
|
|
90
|
+
// (1) --> netPtRedeemSy = netPtFromSwap - netPtToAdd
|
|
91
|
+
// (2) --> (netPtRedeemSy * ONE / pyIndex) = (netPtToAdd * totalSy / totalPt) + netSyToSwap
|
|
92
|
+
// (2) * pyIndex / ONE --> netPtRedeemSy = (netPtToAdd * totalSy / totalPt * pyIndex / ONE) + netSyToSwap * pyIndex / ONE
|
|
93
|
+
// ==> netPtFromSwap - netPtToAdd = (netPtToAdd * totalSy / totalPt * pyIndex / ONE) + netSyToSwap * pyIndex / ONE
|
|
94
|
+
// ==> netPtToAdd * (ONE + totalSy * pyIndex / totalPt) = netPtFromSwap * ONE - netSyToSwap * pyIndex
|
|
95
|
+
|
|
96
|
+
uint256 pyIndex = PYIndex.unwrap(index);
|
|
97
|
+
uint256 netPtToAddNumerator = (netPtFromSwap * Math.ONE - netSyToSwap * pyIndex);
|
|
98
|
+
uint256 netPtToAddDenominator = (Math.ONE +
|
|
99
|
+
(state.totalSy.Uint() * pyIndex) /
|
|
100
|
+
state.totalPt.Uint());
|
|
101
|
+
uint256 netPtToAdd = netPtToAddNumerator / netPtToAddDenominator;
|
|
102
|
+
|
|
103
|
+
netYtIn = netPtFromSwap - netPtToAdd; // = netPtRedeemSy
|
|
104
|
+
|
|
105
|
+
IPMarket(market).swapSyForExactPt(
|
|
106
|
+
address(this),
|
|
107
|
+
netPtFromSwap,
|
|
108
|
+
_encodeAddLiqFromYt(netYtIn)
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
uint256 netSyFromPy = index.assetToSy(netYtIn);
|
|
112
|
+
uint256 netSyToAdd = netSyFromPy - netSyToSwap;
|
|
113
|
+
|
|
114
|
+
(netLpOut, , ) = IPMarket(market).mint(address(this), netSyToAdd, netPtToAdd);
|
|
115
|
+
if (netLpOut < minLpOut) revert Errors.BotInsufficientLpOut(netLpOut, minLpOut);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/// @dev Behaves like PendleRouter's removeLiquidityDualSyAndPt then swapExactPtForYt
|
|
119
|
+
/// @param guessTotalPtToSwap Same like for PendleRouter's swapExactPtForYt
|
|
120
|
+
function _removeLiqToYt(
|
|
121
|
+
uint256 netLpToRemove,
|
|
122
|
+
ApproxParams memory guessTotalPtToSwap,
|
|
123
|
+
uint256 minYtOut
|
|
124
|
+
) internal returns (uint256 netYtOut, uint256 totalPtToSwap) {
|
|
125
|
+
_transferOut(market, market, netLpToRemove);
|
|
126
|
+
(uint256 netSyFromLp, uint256 netPtFromLp) = IPMarket(market).burn(
|
|
127
|
+
YT,
|
|
128
|
+
market,
|
|
129
|
+
netLpToRemove
|
|
130
|
+
); // SY goes to YT to mint PY, PT goes to market to swap
|
|
131
|
+
|
|
132
|
+
MarketState memory state = IPMarket(market).readState(address(this));
|
|
133
|
+
PYIndex index = IPYieldToken(YT).newIndex();
|
|
134
|
+
|
|
135
|
+
uint256 netPtFromSy = index.syToAsset(netSyFromLp);
|
|
136
|
+
|
|
137
|
+
uint256 netYtFromSwap;
|
|
138
|
+
(netYtFromSwap, totalPtToSwap, ) = state.approxSwapExactPtForYt(
|
|
139
|
+
index,
|
|
140
|
+
netPtFromLp + netPtFromSy,
|
|
141
|
+
block.timestamp,
|
|
142
|
+
guessTotalPtToSwap
|
|
143
|
+
);
|
|
144
|
+
|
|
145
|
+
netYtOut = netYtFromSwap + netPtFromSy;
|
|
146
|
+
if (netYtOut < minYtOut) revert Errors.BotInsufficientYtOut(netYtOut, minYtOut);
|
|
147
|
+
|
|
148
|
+
IPMarket(market).swapExactPtForSy(YT, totalPtToSwap, _encodeRemoveLiqToYt(minYtOut)); // SY goes to YT to mint PY
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function _swapPtForYt(
|
|
152
|
+
uint256 netPtToSwap,
|
|
153
|
+
ApproxParams memory guessTotalPtToSwap,
|
|
154
|
+
uint256 minYtOut
|
|
155
|
+
) internal returns (uint256 netYtOut) {
|
|
156
|
+
(netYtOut, ) = IPAllAction(router).swapExactPtForYt(
|
|
157
|
+
address(this),
|
|
158
|
+
market,
|
|
159
|
+
netPtToSwap,
|
|
160
|
+
minYtOut,
|
|
161
|
+
guessTotalPtToSwap
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
function _swapYtForPt(
|
|
166
|
+
uint256 netYtToSwap,
|
|
167
|
+
ApproxParams memory guessTotalYtToSwap,
|
|
168
|
+
uint256 minPtOut
|
|
169
|
+
) internal returns (uint256 netPtOut) {
|
|
170
|
+
(netPtOut, ) = IPAllAction(router).swapExactYtForPt(
|
|
171
|
+
address(this),
|
|
172
|
+
market,
|
|
173
|
+
netYtToSwap,
|
|
174
|
+
minPtOut,
|
|
175
|
+
guessTotalYtToSwap
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
@@ -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 "../libraries/BotSimulationLib.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() public 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() public 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
|
+
}
|