@pendle/core-v2 2.15.2 → 2.17.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/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 +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.json +1189 -0
- 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 +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.json +10 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.json +322 -0
- 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 +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAPoolHelper.json +24 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAWethHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAWethHelper.json +24 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol/LinearMath.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol/LinearMath.json +10 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol/LinearPreview.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol/LinearPreview.json +234 -0
- 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/MetaStable/MetaStablePreview.sol/MetaStablePreview.json +2 -2
- 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/BotActionCallback.sol/BotActionCallback.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/BotActionCallback.sol/BotActionCallback.json +631 -0
- package/build/artifacts/contracts/core/TradingBot/BotActionHelper.sol/BotActionHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/BotActionHelper.sol/BotActionHelper.json +631 -0
- package/build/artifacts/contracts/core/TradingBot/BotDecisionLib.sol/BotDecisionLib.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/BotDecisionLib.sol/BotDecisionLib.json +10 -0
- package/build/artifacts/contracts/core/TradingBot/BotSimulationLib.sol/BotSimulationLib.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/BotSimulationLib.sol/BotSimulationLib.json +10 -0
- package/build/artifacts/contracts/core/TradingBot/LongYieldTradingBot.sol/LongYieldTradingBot.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/LongYieldTradingBot.sol/LongYieldTradingBot.json +1888 -0
- package/build/artifacts/contracts/core/TradingBot/MarketExtLib.sol/MarketExtLib.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/MarketExtLib.sol/MarketExtLib.json +24 -0
- package/build/artifacts/contracts/core/TradingBot/TradingBotBase.sol/TradingBotBase.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/TradingBotBase.sol/TradingBotBase.json +581 -0
- package/build/artifacts/contracts/core/TradingBot/TradingBotOffchain.sol/TradingBotOffchain.dbg.json +4 -0
- package/build/artifacts/contracts/core/TradingBot/TradingBotOffchain.sol/TradingBotOffchain.json +1071 -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 +4 -0
- package/build/artifacts/contracts/interfaces/Balancer/IERC4626LinearPool.sol/IERC4626LinearPool.json +1172 -0
- 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/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/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/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/ILongYieldTradingBot.sol/ILongYieldTradingBot.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.json +874 -0
- package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.json +408 -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 +4 -0
- package/build/artifacts/contracts/{router/swap-aggregator/kyberswap/arbitrum/KyberHelperArbitrum.sol/KyberHelperArbitrum.json → offchain-helpers/BoringLpSeller.sol/BoringLpSeller.json} +2 -2
- 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 +4 -0
- package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.json +10 -0
- 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 +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/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 +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.json +60 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{arbitrum/IAggregationExecutor.sol → IAggregationExecutor.sol}/IAggregationExecutor.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IExecutorHelper.sol/IExecutorHelper.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{arbitrum/IExecutorHelper1.sol/IExecutorHelper1.json → IExecutorHelper.sol/IExecutorHelper.json} +147 -2
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IHashflow.sol/IHashflow.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{ethereum/IHashflow.sol → IHashflow.sol}/IHashflow.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{arbitrum/IMetaAggregationRouterV2.sol → IMetaAggregationRouterV2.sol}/IMetaAggregationRouterV2.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberInputScalingHelper.sol/KyberInputScalingHelper.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{ethereum/KyberHelperEthereum.sol/KyberHelperEthereum.json → KyberInputScalingHelper.sol/KyberInputScalingHelper.json} +2 -2
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScalingDataLib.sol/ScalingDataLib.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScalingDataLib.sol/ScalingDataLib.json +10 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol +153 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol +289 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol +629 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol +113 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol +381 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol +206 -0
- package/contracts/core/TradingBot/BotActionCallback.sol +112 -0
- package/contracts/core/TradingBot/BotActionHelper.sol +138 -0
- package/contracts/core/TradingBot/BotDecisionLib.sol +272 -0
- package/contracts/core/TradingBot/BotSimulationLib.sol +115 -0
- package/contracts/core/TradingBot/LongYieldTradingBot.sol +148 -0
- package/contracts/core/TradingBot/MarketExtLib.sol +246 -0
- package/contracts/core/TradingBot/README.md +151 -0
- package/contracts/core/TradingBot/TradingBotBase.sol +120 -0
- package/contracts/core/TradingBot/TradingBotOffchain.sol +131 -0
- package/contracts/core/libraries/Errors.sol +12 -0
- package/contracts/core/libraries/TokenAmountLib.sol +47 -0
- package/contracts/interfaces/Balancer/IERC4626LinearPool.sol +181 -0
- package/contracts/interfaces/Balancer/IVault.sol +13 -0
- package/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol +89 -0
- package/contracts/interfaces/TradingBot/ITradingBotBase.sol +40 -0
- package/contracts/offchain-helpers/BoringLpSeller.sol +47 -0
- package/contracts/oracles/samples/PendleLpGlpOracle.sol +49 -0
- package/deployments/1-markets/BALANCER-LP-AURA-BBAWETHSWETH-SEP-26-2024.json +10 -0
- package/deployments/1-markets/STETH-DEC2027.json +10 -0
- package/deployments/merkle-distribution/2023-05-25.json +3749 -0
- package/package.json +1 -1
- package/typechain-types/BbAPoolHelper.ts +89 -0
- package/typechain-types/BbAWethHelper.ts +89 -0
- package/typechain-types/BotActionCallback.ts +723 -0
- package/typechain-types/BotActionHelper.ts +723 -0
- package/typechain-types/CamelotV1LpHelper.ts +203 -0
- package/typechain-types/CamelotV1Preview.ts +431 -0
- package/typechain-types/ComposableStablePreview.ts +501 -0
- package/typechain-types/ICamelotSY.ts +100 -0
- package/typechain-types/IERC4626LinearPool.ts +1649 -0
- package/typechain-types/IExecutorHelper.ts +863 -0
- package/typechain-types/ILongYieldTradingBot.ts +644 -0
- package/typechain-types/IPendlePreviewHelper.ts +147 -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 +483 -0
- package/typechain-types/LinearPreview.ts +402 -0
- package/typechain-types/LongYieldTradingBot.ts +1482 -0
- package/typechain-types/MarketExtLib.ts +81 -0
- package/typechain-types/PendleArbitrumStakedEthSY.ts +1222 -0
- package/typechain-types/PendleAuraBbAWethSwethSY.ts +1532 -0
- package/typechain-types/PendleCamelotV1SY.ts +245 -0
- package/typechain-types/PendleLpGlpOracle.ts +145 -0
- package/typechain-types/PendleSwap.ts +126 -0
- package/typechain-types/PendleThenaSY.ts +1445 -0
- package/typechain-types/{PendleCamelotV1RouterHelper.ts → ThenaLpHelper.ts} +44 -5
- package/typechain-types/{CamelotV1PreviewHelper.ts → ThenaPreview.ts} +23 -63
- package/typechain-types/TradingBotBase.ts +679 -0
- package/typechain-types/TradingBotOffchain.ts +544 -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/BbAPoolHelper__factory.ts +36 -0
- package/typechain-types/factories/BbAWethHelper__factory.ts +36 -0
- package/typechain-types/factories/BotActionCallback__factory.ts +646 -0
- package/typechain-types/factories/BotActionHelper__factory.ts +646 -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/ComposableStablePreview__factory.ts +379 -0
- package/typechain-types/factories/Errors__factory.ts +150 -1
- package/typechain-types/factories/ICamelotSY__factory.ts +49 -0
- package/typechain-types/factories/IERC4626LinearPool__factory.ts +1187 -0
- package/typechain-types/factories/IExecutorHelper__factory.ts +548 -0
- package/typechain-types/factories/ILongYieldTradingBot__factory.ts +893 -0
- package/typechain-types/factories/IPendlePreviewHelper__factory.ts +78 -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 +423 -0
- package/typechain-types/factories/LinearPreview__factory.ts +284 -0
- package/typechain-types/factories/LongYieldTradingBot__factory.ts +1958 -0
- package/typechain-types/factories/MarketExtLib__factory.ts +74 -0
- package/typechain-types/factories/MetaStablePreview__factory.ts +1 -1
- package/typechain-types/factories/OracleLib__factory.ts +1 -1
- package/typechain-types/factories/PendleArbitrumStakedEthSY__factory.ts +1068 -0
- package/typechain-types/factories/PendleAuraBbAWethSwethSY__factory.ts +1266 -0
- 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/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/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/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/PendleMarketFactory__factory.ts +1 -1
- 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/PendleSwap__factory.ts +110 -0
- package/typechain-types/factories/PendleThenaSY__factory.ts +1268 -0
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
- 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/SAPE__factory.ts +1 -1
- package/typechain-types/factories/{PendleCamelotV1RouterHelper__factory.ts → ThenaLpHelper__factory.ts} +45 -13
- package/typechain-types/factories/ThenaPreview__factory.ts +306 -0
- package/typechain-types/factories/TradingBotBase__factory.ts +596 -0
- package/typechain-types/factories/TradingBotOffchain__factory.ts +1124 -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 +143 -71
- package/typechain-types/index.ts +34 -12
- package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.json +0 -160
- package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwapArbitrum.sol/PendleSwapArbitrum.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwapArbitrum.sol/PendleSwapArbitrum.json +0 -76
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwapEthereum.sol/PendleSwapEthereum.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwapEthereum.sol/PendleSwapEthereum.json +0 -76
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IExecutorHelper1.sol/IExecutorHelper1.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IExecutorHelper2.sol/IExecutorHelper2.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IExecutorHelper2.sol/IExecutorHelper2.json +0 -40
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IHashflow.sol/IHashflow.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IHashflow.sol/IHashflow.json +0 -101
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/KyberHelperArbitrum.sol/KyberHelperArbitrum.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/ScaleDataHelperArbitrum.sol/ScaleDataHelperArbitrum.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/ScaleDataHelperArbitrum.sol/ScaleDataHelperArbitrum.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IAggregationExecutor.sol/IAggregationExecutor.json +0 -65
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.json +0 -388
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IHashflow.sol/IHashflow.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.json +0 -215
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/KyberHelperEthereum.sol/KyberHelperEthereum.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/ScaleDataHelperEthereum.sol/ScaleDataHelperEthereum.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/ScaleDataHelperEthereum.sol/ScaleDataHelperEthereum.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,148 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.17;
|
|
3
|
+
|
|
4
|
+
import "./TradingBotBase.sol";
|
|
5
|
+
import "./BotActionHelper.sol";
|
|
6
|
+
import "./BotDecisionLib.sol";
|
|
7
|
+
import "../../interfaces/TradingBot/ILongYieldTradingBot.sol";
|
|
8
|
+
import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
|
|
9
|
+
|
|
10
|
+
contract LongYieldTradingBot is
|
|
11
|
+
TradingBotBase,
|
|
12
|
+
BotActionHelper,
|
|
13
|
+
ILongYieldTradingBot,
|
|
14
|
+
UUPSUpgradeable
|
|
15
|
+
{
|
|
16
|
+
LongTradingSpecs public specs;
|
|
17
|
+
|
|
18
|
+
constructor(
|
|
19
|
+
address _market,
|
|
20
|
+
address _PENDLE,
|
|
21
|
+
LongTradingSpecs memory _specs
|
|
22
|
+
) TradingBotBase(_market, _PENDLE) {
|
|
23
|
+
specs = _specs;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function _authorizeUpgrade(address) internal override onlyOwner {}
|
|
27
|
+
|
|
28
|
+
function initialize() external initializer {
|
|
29
|
+
__BoringOwnable_init();
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function setSpecs(LongTradingSpecs calldata _specs) external onlyOwner {
|
|
33
|
+
specs = _specs;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function swapSyToYt(
|
|
37
|
+
address router,
|
|
38
|
+
StrategyState memory oldState,
|
|
39
|
+
ApproxParams calldata botParams,
|
|
40
|
+
uint256 minYtOut,
|
|
41
|
+
uint256 maxSyIn
|
|
42
|
+
) external onlyOwner returns (uint256 exactYtOut, uint256 netSyIn) {
|
|
43
|
+
exactYtOut = BotDecisionLib.binarySearchUntilSwitchState(
|
|
44
|
+
readBotState(),
|
|
45
|
+
readMarketExtState(router),
|
|
46
|
+
specs,
|
|
47
|
+
ActionType.SwapSyToYt,
|
|
48
|
+
oldState,
|
|
49
|
+
botParams,
|
|
50
|
+
botParams // only placeholder, value doesn't matter
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
if (exactYtOut < minYtOut) revert Errors.BotInsufficientYtOut(exactYtOut, minYtOut);
|
|
54
|
+
netSyIn = _swapSyToYt(router, exactYtOut, maxSyIn);
|
|
55
|
+
|
|
56
|
+
emit SwapSyToYt(oldState, botParams, maxSyIn, exactYtOut, netSyIn);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function addLiqKeepYt(
|
|
60
|
+
address router,
|
|
61
|
+
StrategyState memory oldState,
|
|
62
|
+
ApproxParams calldata botParams,
|
|
63
|
+
uint256 maxSyIn,
|
|
64
|
+
uint256 minLpOut,
|
|
65
|
+
uint256 minYtOut
|
|
66
|
+
) external onlyOwner returns (uint256 netSyIn, uint256 netLpOut, uint256 netYtOut) {
|
|
67
|
+
netSyIn = BotDecisionLib.binarySearchUntilSwitchState(
|
|
68
|
+
readBotState(),
|
|
69
|
+
readMarketExtState(router),
|
|
70
|
+
specs,
|
|
71
|
+
ActionType.AddLiqKeepYt,
|
|
72
|
+
oldState,
|
|
73
|
+
botParams,
|
|
74
|
+
botParams // only placeholder, value doesn't matter
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
if (netSyIn > maxSyIn) revert Errors.BotExceededLimitSyIn(netSyIn, maxSyIn);
|
|
78
|
+
(netLpOut, netYtOut) = _addLiqKeepYt(router, netSyIn, minLpOut, minYtOut);
|
|
79
|
+
|
|
80
|
+
emit AddLiqKeepYt(oldState, botParams, maxSyIn, netSyIn, netLpOut, netYtOut);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function addLiqFromSy(
|
|
84
|
+
StrategyState memory oldState,
|
|
85
|
+
ApproxParams calldata botParams,
|
|
86
|
+
uint256 minLpOut,
|
|
87
|
+
uint256 maxSyIn
|
|
88
|
+
) external onlyOwner returns (uint256 netLpOut, uint256 netSyIn) {
|
|
89
|
+
uint256 netPtFromSwap = BotDecisionLib.binarySearchUntilSwitchState(
|
|
90
|
+
readBotState(),
|
|
91
|
+
readMarketExtState(address(this)),
|
|
92
|
+
specs,
|
|
93
|
+
ActionType.AddLiqFromSy,
|
|
94
|
+
oldState,
|
|
95
|
+
botParams,
|
|
96
|
+
botParams // only placeholder, value doesn't matter
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
(netLpOut, netSyIn) = _addLiqFromSy(netPtFromSwap, minLpOut, maxSyIn);
|
|
100
|
+
|
|
101
|
+
emit AddLiqFromSy(oldState, botParams, maxSyIn, netSyIn, netLpOut);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function addLiqFromYt(
|
|
105
|
+
StrategyState memory oldState,
|
|
106
|
+
ApproxParams calldata botParams,
|
|
107
|
+
uint256 minLpOut,
|
|
108
|
+
uint256 maxYtIn
|
|
109
|
+
) external onlyOwner returns (uint256 netLpOut, uint256 netYtIn) {
|
|
110
|
+
uint256 netPtFromSwap = BotDecisionLib.binarySearchUntilSwitchState(
|
|
111
|
+
readBotState(),
|
|
112
|
+
readMarketExtState(address(this)),
|
|
113
|
+
specs,
|
|
114
|
+
ActionType.AddLiqFromYt,
|
|
115
|
+
oldState,
|
|
116
|
+
botParams,
|
|
117
|
+
botParams // only placeholder, value doesn't matter
|
|
118
|
+
);
|
|
119
|
+
(netLpOut, netYtIn) = _addLiqFromYt(netPtFromSwap, minLpOut, maxYtIn);
|
|
120
|
+
|
|
121
|
+
emit AddLiqFromYt(oldState, botParams, maxYtIn, netYtIn, netLpOut);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function removeLiqToYt(
|
|
125
|
+
StrategyState memory oldState,
|
|
126
|
+
ApproxParams calldata botParams,
|
|
127
|
+
ApproxParams calldata guessTotalPtToSwap,
|
|
128
|
+
uint256 maxLpRemoved,
|
|
129
|
+
uint256 minYtOut
|
|
130
|
+
) external onlyOwner returns (uint256 netLpRemoved, uint256 netYtOut) {
|
|
131
|
+
netLpRemoved = BotDecisionLib.binarySearchUntilSwitchState(
|
|
132
|
+
readBotState(),
|
|
133
|
+
readMarketExtState(address(this)),
|
|
134
|
+
specs,
|
|
135
|
+
ActionType.RemoveLiqToYt,
|
|
136
|
+
oldState,
|
|
137
|
+
botParams,
|
|
138
|
+
guessTotalPtToSwap // value DOES matter
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
if (netLpRemoved > maxLpRemoved)
|
|
142
|
+
revert Errors.BotExceededLimitLpToRemove(netLpRemoved, maxLpRemoved);
|
|
143
|
+
|
|
144
|
+
netYtOut = _removeLiqToYt(netLpRemoved, guessTotalPtToSwap, minYtOut);
|
|
145
|
+
|
|
146
|
+
emit RemoveLiqToYt(oldState, botParams, maxLpRemoved, netLpRemoved, netYtOut);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
import "../../interfaces/IPMarket.sol";
|
|
5
|
+
import "../StandardizedYield/PYIndex.sol";
|
|
6
|
+
import "../../router/base/MarketApproxLib.sol";
|
|
7
|
+
|
|
8
|
+
struct MarketExtState {
|
|
9
|
+
MarketState state;
|
|
10
|
+
PYIndex index;
|
|
11
|
+
uint256 blockTime;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
library MarketExtLib {
|
|
15
|
+
using MarketMathCore for MarketState;
|
|
16
|
+
using MarketApproxPtInLib for MarketState;
|
|
17
|
+
using PYIndexLib for PYIndex;
|
|
18
|
+
using PYIndexLib for IPYieldToken;
|
|
19
|
+
using LogExpMath for uint256;
|
|
20
|
+
using Math for uint256;
|
|
21
|
+
using Math for int256;
|
|
22
|
+
|
|
23
|
+
uint256 public constant ONE_YEAR = 31536000;
|
|
24
|
+
|
|
25
|
+
/// @dev Simulates PendleRouter's swapExactYtForSy
|
|
26
|
+
function swapYtToSy(
|
|
27
|
+
MarketExtState memory marketExt,
|
|
28
|
+
uint256 exactYtIn
|
|
29
|
+
) internal pure returns (uint256 /*netSyOut*/) {
|
|
30
|
+
(uint256 netSyOwedInt, , ) = marketExt.state.swapSyForExactPt(
|
|
31
|
+
marketExt.index,
|
|
32
|
+
exactYtIn,
|
|
33
|
+
marketExt.blockTime
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
uint256 netPYToRepaySyOwedInt = marketExt.index.syToAssetUp(netSyOwedInt);
|
|
37
|
+
uint256 netPYToRedeemSyOutInt = exactYtIn - netPYToRepaySyOwedInt;
|
|
38
|
+
|
|
39
|
+
return marketExt.index.assetToSy(netPYToRedeemSyOutInt);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/// @dev Simulates PendleRouter's swapSyForExactYt
|
|
43
|
+
function swapSyToYt(
|
|
44
|
+
MarketExtState memory marketExt,
|
|
45
|
+
uint256 exactYtOut
|
|
46
|
+
) internal pure returns (uint256 /*netSyIn*/) {
|
|
47
|
+
(uint256 netSyReceivedInt, , ) = marketExt.state.swapExactPtForSy(
|
|
48
|
+
marketExt.index,
|
|
49
|
+
exactYtOut,
|
|
50
|
+
marketExt.blockTime
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
uint256 totalSyNeedInt = marketExt.index.assetToSyUp(exactYtOut);
|
|
54
|
+
return totalSyNeedInt.subMax0(netSyReceivedInt);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/// @dev Simulates PendleRouter's swapExactPtForSy
|
|
58
|
+
function swapPtToSy(
|
|
59
|
+
MarketExtState memory marketExt,
|
|
60
|
+
uint256 exactPtIn
|
|
61
|
+
) internal pure returns (uint256 netSyOut) {
|
|
62
|
+
(netSyOut, , ) = marketExt.state.swapExactPtForSy(
|
|
63
|
+
marketExt.index,
|
|
64
|
+
exactPtIn,
|
|
65
|
+
marketExt.blockTime
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/// @dev Simulates PendleRouter's addLiquiditySingleSyKeepYt
|
|
70
|
+
function addLiqKeepYt(
|
|
71
|
+
MarketExtState memory marketExt,
|
|
72
|
+
uint256 netSyIn
|
|
73
|
+
) internal pure returns (uint256 netLpOut, uint256 netYtOut) {
|
|
74
|
+
uint256 netSyToPt = (netSyIn * marketExt.state.totalPt.Uint()) /
|
|
75
|
+
(marketExt.state.totalPt.Uint() +
|
|
76
|
+
marketExt.index.syToAsset(marketExt.state.totalSy.Uint()));
|
|
77
|
+
|
|
78
|
+
netYtOut = marketExt.index.syToAsset(netSyToPt);
|
|
79
|
+
|
|
80
|
+
(, netLpOut, , ) = marketExt.state.addLiquidity(
|
|
81
|
+
netSyIn - netSyToPt,
|
|
82
|
+
netYtOut,
|
|
83
|
+
marketExt.blockTime
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function addLiqFromSy(
|
|
88
|
+
MarketExtState memory marketExt,
|
|
89
|
+
uint256 netPtFromSwap
|
|
90
|
+
) internal pure returns (uint256 netLpOut, uint256 netSyIn) {
|
|
91
|
+
(uint256 netSyToSwap, , ) = marketExt.state.swapSyForExactPt(
|
|
92
|
+
marketExt.index,
|
|
93
|
+
netPtFromSwap,
|
|
94
|
+
marketExt.blockTime
|
|
95
|
+
);
|
|
96
|
+
uint256 netSyToAdd = (netPtFromSwap * marketExt.state.totalSy.Uint()) /
|
|
97
|
+
marketExt.state.totalPt.Uint();
|
|
98
|
+
|
|
99
|
+
(, netLpOut, , ) = marketExt.state.addLiquidity(
|
|
100
|
+
netSyToAdd,
|
|
101
|
+
netPtFromSwap,
|
|
102
|
+
marketExt.blockTime
|
|
103
|
+
);
|
|
104
|
+
netSyIn = netSyToSwap + netSyToAdd;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function addLiqFromYt(
|
|
108
|
+
MarketExtState memory marketExt,
|
|
109
|
+
uint256 netPtFromSwap
|
|
110
|
+
) internal pure returns (uint256 netLpOut, uint256 netYtIn) {
|
|
111
|
+
(uint256 netSyToSwap, , ) = marketExt.state.swapSyForExactPt(
|
|
112
|
+
marketExt.index,
|
|
113
|
+
netPtFromSwap,
|
|
114
|
+
marketExt.blockTime
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
uint256 pyIndex = PYIndex.unwrap(marketExt.index);
|
|
118
|
+
uint256 netPtToAddNumerator = (netPtFromSwap * Math.ONE - netSyToSwap * pyIndex);
|
|
119
|
+
uint256 netPtToAddDenominator = (Math.ONE +
|
|
120
|
+
(marketExt.state.totalSy.Uint() * pyIndex) /
|
|
121
|
+
marketExt.state.totalPt.Uint());
|
|
122
|
+
uint256 netPtToAdd = netPtToAddNumerator / netPtToAddDenominator;
|
|
123
|
+
|
|
124
|
+
netYtIn = netPtFromSwap - netPtToAdd;
|
|
125
|
+
|
|
126
|
+
uint256 netSyFromPy = marketExt.index.assetToSy(netYtIn);
|
|
127
|
+
uint256 netSyToAdd = netSyFromPy - netSyToSwap;
|
|
128
|
+
|
|
129
|
+
(, netLpOut, , ) = marketExt.state.addLiquidity(
|
|
130
|
+
netSyToAdd,
|
|
131
|
+
netPtToAdd,
|
|
132
|
+
marketExt.blockTime
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/// @dev Simulates PendleRouter's removeLiquidityDualSyAndPt then swapExactPtForYt
|
|
137
|
+
function removeLiqToYt(
|
|
138
|
+
MarketExtState memory marketExt,
|
|
139
|
+
uint256 netLpToRemove,
|
|
140
|
+
ApproxParams memory approxParams
|
|
141
|
+
) internal pure returns (uint256 /*netYtOut*/) {
|
|
142
|
+
(uint256 netSyRemoved, uint256 netPtRemoved) = marketExt.state.removeLiquidity(
|
|
143
|
+
netLpToRemove
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
uint256 netYtFromSy = marketExt.index.syToAsset(netSyRemoved);
|
|
147
|
+
uint256 netPtToSwap = netPtRemoved + netYtFromSy;
|
|
148
|
+
|
|
149
|
+
(uint256 netYtFromSwap, uint256 totalPtToSwap, ) = marketExt.state.approxSwapExactPtForYt(
|
|
150
|
+
marketExt.index,
|
|
151
|
+
netPtToSwap,
|
|
152
|
+
marketExt.blockTime,
|
|
153
|
+
clone(approxParams)
|
|
154
|
+
);
|
|
155
|
+
|
|
156
|
+
marketExt.state.swapExactPtForSy(marketExt.index, totalPtToSwap, marketExt.blockTime);
|
|
157
|
+
|
|
158
|
+
return netYtFromSy + netYtFromSwap;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function previewPyToSy(
|
|
162
|
+
MarketExtState memory marketExt,
|
|
163
|
+
uint256 netPYToRedeem
|
|
164
|
+
) internal pure returns (uint256) {
|
|
165
|
+
return marketExt.index.assetToSy(netPYToRedeem);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function previewAssetsFromLp(
|
|
169
|
+
MarketExtState memory marketExt,
|
|
170
|
+
uint256 lpBalance
|
|
171
|
+
) internal pure returns (uint256 syInLp, uint256 ptInLp) {
|
|
172
|
+
syInLp = (lpBalance * marketExt.state.totalSy.Uint()) / marketExt.state.totalLp.Uint();
|
|
173
|
+
ptInLp = (lpBalance * marketExt.state.totalPt.Uint()) / marketExt.state.totalLp.Uint();
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/// @notice Returns the trade exchange rate, fee excluded
|
|
177
|
+
function exchangeRate(MarketExtState memory marketExt) internal pure returns (uint256) {
|
|
178
|
+
MarketPreCompute memory comp = marketExt.state.getMarketPreCompute(
|
|
179
|
+
marketExt.index,
|
|
180
|
+
marketExt.blockTime
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
int256 preFeeExchangeRate = MarketMathCore._getExchangeRate(
|
|
184
|
+
marketExt.state.totalPt,
|
|
185
|
+
comp.totalAsset,
|
|
186
|
+
comp.rateScalar,
|
|
187
|
+
comp.rateAnchor,
|
|
188
|
+
0
|
|
189
|
+
);
|
|
190
|
+
|
|
191
|
+
return preFeeExchangeRate.Uint();
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
function impliedYield(MarketExtState memory marketExt) internal pure returns (uint256) {
|
|
195
|
+
return
|
|
196
|
+
exchangeRate(marketExt).pow(
|
|
197
|
+
ONE_YEAR.divDown(marketExt.state.expiry - marketExt.blockTime)
|
|
198
|
+
) - Math.ONE;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
function clone(MarketState memory state) internal pure returns (MarketState memory) {
|
|
202
|
+
return
|
|
203
|
+
MarketState(
|
|
204
|
+
state.totalPt,
|
|
205
|
+
state.totalSy,
|
|
206
|
+
state.totalLp,
|
|
207
|
+
state.treasury,
|
|
208
|
+
state.scalarRoot,
|
|
209
|
+
state.expiry,
|
|
210
|
+
state.lnFeeRateRoot,
|
|
211
|
+
state.reserveFeePercent,
|
|
212
|
+
state.lastLnImpliedRate
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
function clone(MarketExtState memory marketExt) internal pure returns (MarketExtState memory) {
|
|
217
|
+
return MarketExtState(clone(marketExt.state), marketExt.index, marketExt.blockTime);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function clone(ApproxParams memory params) internal pure returns (ApproxParams memory) {
|
|
221
|
+
return
|
|
222
|
+
ApproxParams(
|
|
223
|
+
params.guessMin,
|
|
224
|
+
params.guessMax,
|
|
225
|
+
params.guessOffchain,
|
|
226
|
+
params.maxIteration,
|
|
227
|
+
params.eps
|
|
228
|
+
);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
function calcMaxPtIn(MarketExtState memory marketExt) internal pure returns (uint256) {
|
|
232
|
+
return
|
|
233
|
+
MarketApproxPtInLib.calcMaxPtIn(
|
|
234
|
+
marketExt.state,
|
|
235
|
+
marketExt.state.getMarketPreCompute(marketExt.index, marketExt.blockTime)
|
|
236
|
+
) * 9 / 10;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
function calcMaxPtOut(MarketExtState memory marketExt) internal pure returns (uint256) {
|
|
240
|
+
return
|
|
241
|
+
MarketApproxPtOutLib.calcMaxPtOut(
|
|
242
|
+
marketExt.state.getMarketPreCompute(marketExt.index, marketExt.blockTime),
|
|
243
|
+
marketExt.state.totalPt
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Trading Bot
|
|
2
|
+
|
|
3
|
+
## Structs and enums
|
|
4
|
+
|
|
5
|
+
### MarketExtLib
|
|
6
|
+
|
|
7
|
+
Struct for external market state.
|
|
8
|
+
|
|
9
|
+
- `state`: MarketState
|
|
10
|
+
- `index`: YT's index
|
|
11
|
+
- `blockTime`: timestamp
|
|
12
|
+
|
|
13
|
+
### BotState
|
|
14
|
+
|
|
15
|
+
Struct for bot's balances: `lpBalance`, `ytBalance`, `syBalance`.
|
|
16
|
+
|
|
17
|
+
### LongTradingSpecs
|
|
18
|
+
|
|
19
|
+
Struct for bot's trading limits:
|
|
20
|
+
|
|
21
|
+
- `lowerIyLimit`: apeYtApy
|
|
22
|
+
- `upperIyLimit`: sellYtApy
|
|
23
|
+
- `floatingSyRatioLimit`: f/TVL limit, TVL calculated in number of SY.
|
|
24
|
+
- `ytPtRatioLimit`: limit for YT/PT
|
|
25
|
+
|
|
26
|
+
### ActionType
|
|
27
|
+
|
|
28
|
+
Enum for action.
|
|
29
|
+
|
|
30
|
+
- 0: SwapSyToYt - Buy YT with SY
|
|
31
|
+
- 1: AddLiqKeepYt - ZPI Zap
|
|
32
|
+
- 2: AddLiqFromSy - Single sided LP
|
|
33
|
+
- 3: AddLiqFromYt - Sell YT for LP
|
|
34
|
+
- 4: RemoveLiqToYt - Zap out to YT
|
|
35
|
+
- 5: NONE
|
|
36
|
+
|
|
37
|
+
### StrategyFlag
|
|
38
|
+
|
|
39
|
+
Enum for strategy state.
|
|
40
|
+
|
|
41
|
+
- 0: GOOD
|
|
42
|
+
- 1: TOO_LOW
|
|
43
|
+
- 2: TOO_HIGH
|
|
44
|
+
|
|
45
|
+
### StrategyState
|
|
46
|
+
|
|
47
|
+
Struct for strategy state.
|
|
48
|
+
|
|
49
|
+
- `iyFlag`: StrategyFlag for IY compared to ape/sellYtApy
|
|
50
|
+
- `syRatioFlag`: StrategyFlag for f/TVL compared to given limit \(r\)
|
|
51
|
+
|
|
52
|
+
## TradingBotBase.sol
|
|
53
|
+
|
|
54
|
+
### 1. depositSy
|
|
55
|
+
|
|
56
|
+
Deposit SY into the bot.
|
|
57
|
+
- SY approval needed.
|
|
58
|
+
|
|
59
|
+
### 2. depositToken
|
|
60
|
+
|
|
61
|
+
Deposit funds into the bot, which are then compounded into SY.
|
|
62
|
+
- `inp`: Token input data to swap deposited token to SY.
|
|
63
|
+
- If `inp.netTokenIn` is set to `2**256 - 1` then it will be set to `_selfBalance()` internally.`
|
|
64
|
+
- Needs sender's approval to bot & bot's approval to router.
|
|
65
|
+
|
|
66
|
+
### 3. withdrawFunds
|
|
67
|
+
|
|
68
|
+
Withdraw funds back to sender (only owner).
|
|
69
|
+
|
|
70
|
+
### 4. approveInf
|
|
71
|
+
|
|
72
|
+
Infinite approve token to spender.
|
|
73
|
+
|
|
74
|
+
### 5. claimAndCompound
|
|
75
|
+
|
|
76
|
+
Claim rewards from SY, YT, market. Then compound the rewards into SY.
|
|
77
|
+
|
|
78
|
+
- `inps`: Token input data to swap claimed rewards into SY
|
|
79
|
+
- If `inp.netTokenIn` is set to `2**256 - 1` then it will be set to `_selfBalance()` internally.
|
|
80
|
+
- Needs sender's approval to bot & bot's approval to router for tokens.
|
|
81
|
+
|
|
82
|
+
### 6. readMarketExtState
|
|
83
|
+
Return the current `MarketExtState`: state of market, YT's index, current block timestamp.
|
|
84
|
+
|
|
85
|
+
### 7. readBotState
|
|
86
|
+
Return the current `BotState`: The bot's balance in LP, SY, YT.
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
## LongYieldTradingBot.sol
|
|
90
|
+
|
|
91
|
+
There are 5 functions for rebalancing actions.
|
|
92
|
+
- For all of them, `botParams` is ApproxParams to find the optimal internal trade parameter.
|
|
93
|
+
- For functions interacting with the router, approval is needed.
|
|
94
|
+
|
|
95
|
+
### 1. setSpecs
|
|
96
|
+
|
|
97
|
+
Set the bot's specs: apeYtApy, sellYtApy, r (f/TVL limit), x (YT/PT ratio).
|
|
98
|
+
|
|
99
|
+
### 2. swapSyToYt
|
|
100
|
+
|
|
101
|
+
Rebalance by buying YT with SY.
|
|
102
|
+
|
|
103
|
+
### 3. addLiqKeepYt
|
|
104
|
+
|
|
105
|
+
Rebalance by ZPI zap.
|
|
106
|
+
|
|
107
|
+
### 4. addLiqFromSy
|
|
108
|
+
|
|
109
|
+
Rebalance by adding single sided LP from SY.
|
|
110
|
+
|
|
111
|
+
### 5. addLiqFromYt
|
|
112
|
+
|
|
113
|
+
Rebalance by selling YT to LP.
|
|
114
|
+
|
|
115
|
+
### 6. removeLiqToYt
|
|
116
|
+
|
|
117
|
+
Rebalance by zapping out LP to YT.
|
|
118
|
+
|
|
119
|
+
- `intParams`: ApproxParams for internal approx function (approxSwapExactPtForYt).
|
|
120
|
+
- Zapping LP to YT can lose a few percent of trading value. Zapping out too much can cause a significant change in TVL, so the resulting strategy state can differ from expected, which can cause unintended behaviour.
|
|
121
|
+
|
|
122
|
+
## TradingBotOffchain.sol
|
|
123
|
+
|
|
124
|
+
Offchain helper for trading bot.
|
|
125
|
+
|
|
126
|
+
### 1. claimForBot
|
|
127
|
+
Claim rewards for bot, return the list of reward tokens and amounts claimed.
|
|
128
|
+
|
|
129
|
+
### 2. simulateAction
|
|
130
|
+
Simulate rebalancing action (swap/add/remove) from BotState and MarketExtState.
|
|
131
|
+
|
|
132
|
+
### 3. searchForBotParam
|
|
133
|
+
Binary search for the optimal `botParam` for the rebalancing action. Simulate the same process used in the bot's rebalancing functions.
|
|
134
|
+
|
|
135
|
+
- Searches for the minimum `botParam` so that the bot trades just until the bot's new strategy state would differ from `initialState`.
|
|
136
|
+
- `botParam`: The parameter for the rebalancing function (e.g. `netPtFromSwap` for addLiqFromSy).
|
|
137
|
+
|
|
138
|
+
### 4. searchForIntParam
|
|
139
|
+
(Only useful for `removeLiqToYt`).
|
|
140
|
+
Given the `botParam`, binary search for the optimal `intParam` for the internal calculations (for `approxSwapExactPtForYt`).
|
|
141
|
+
|
|
142
|
+
### 5. strategyState
|
|
143
|
+
Calculate the strategy state from BotState, MarketExtState, LongTradingSpecs.
|
|
144
|
+
|
|
145
|
+
### 6. actionToTake
|
|
146
|
+
Return optimal action to take based on the strategy state.
|
|
147
|
+
|
|
148
|
+
### 7. tvlInSy
|
|
149
|
+
|
|
150
|
+
Calculate the TVL in equivalent SY amount.
|
|
151
|
+
|
|
@@ -0,0 +1,120 @@
|
|
|
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/IPAllAction.sol";
|
|
7
|
+
import "../../interfaces/TradingBot/ITradingBotBase.sol";
|
|
8
|
+
|
|
9
|
+
import "./BotSimulationLib.sol";
|
|
10
|
+
|
|
11
|
+
abstract contract TradingBotBase is BoringOwnableUpgradeable, TokenHelper, ITradingBotBase {
|
|
12
|
+
using PYIndexLib for IPYieldToken;
|
|
13
|
+
|
|
14
|
+
address public immutable market;
|
|
15
|
+
address public immutable SY;
|
|
16
|
+
address public immutable PT;
|
|
17
|
+
address public immutable YT;
|
|
18
|
+
address public immutable PENDLE;
|
|
19
|
+
|
|
20
|
+
constructor(address _market, address _PENDLE) initializer {
|
|
21
|
+
(IStandardizedYield _SY, IPPrincipalToken _PT, IPYieldToken _YT) = IPMarket(_market)
|
|
22
|
+
.readTokens();
|
|
23
|
+
|
|
24
|
+
market = _market;
|
|
25
|
+
SY = address(_SY);
|
|
26
|
+
PT = address(_PT);
|
|
27
|
+
YT = address(_YT);
|
|
28
|
+
PENDLE = _PENDLE;
|
|
29
|
+
|
|
30
|
+
__BoringOwnable_init();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function depositSy(uint256 netSyIn) external onlyOwner {
|
|
34
|
+
_transferIn(SY, msg.sender, netSyIn);
|
|
35
|
+
emit DepositSy(netSyIn);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/// @dev Receives token and compound to SY
|
|
39
|
+
function depositToken(
|
|
40
|
+
address router,
|
|
41
|
+
TokenInput calldata inp,
|
|
42
|
+
uint256 minSyOut
|
|
43
|
+
) external payable onlyOwner {
|
|
44
|
+
_transferIn(inp.tokenIn, msg.sender, inp.netTokenIn);
|
|
45
|
+
_compoundSingle(router, inp, minSyOut);
|
|
46
|
+
emit DepositToken(inp.tokenIn, inp.netTokenIn);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function withdrawFunds(address token, uint256 amount) external onlyOwner {
|
|
50
|
+
if (amount == type(uint256).max) amount = _selfBalance(token);
|
|
51
|
+
_transferOut(token, msg.sender, amount);
|
|
52
|
+
emit WithdrawFunds(token, amount);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function approveInf(address token, address spender) external onlyOwner {
|
|
56
|
+
_safeApproveInf(token, spender);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function claimAndCompound(
|
|
60
|
+
address router,
|
|
61
|
+
TokenInput[] calldata inps,
|
|
62
|
+
uint256 minSyOut
|
|
63
|
+
) external onlyOwner returns (uint256 netSyOut, uint256 netPendleOut) {
|
|
64
|
+
_claimRewards();
|
|
65
|
+
|
|
66
|
+
netSyOut = _compound(router, inps, minSyOut);
|
|
67
|
+
|
|
68
|
+
netPendleOut = _selfBalance(PENDLE);
|
|
69
|
+
_transferOut(PENDLE, owner, netPendleOut);
|
|
70
|
+
emit ClaimAndCompound(netSyOut, netPendleOut);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function readMarketExtState(address router) public returns (MarketExtState memory marketExt) {
|
|
74
|
+
marketExt.state = IPMarket(market).readState(router);
|
|
75
|
+
marketExt.index = IPYieldToken(YT).newIndex();
|
|
76
|
+
marketExt.blockTime = block.timestamp;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function readBotState() public view returns (BotState memory botState) {
|
|
80
|
+
botState.lpBalance = _selfBalance(market);
|
|
81
|
+
botState.syBalance = _selfBalance(SY);
|
|
82
|
+
botState.ytBalance = _selfBalance(YT);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
receive() external payable {}
|
|
86
|
+
|
|
87
|
+
function _claimRewards() internal {
|
|
88
|
+
IPYieldToken(YT).redeemDueInterestAndRewards(address(this), true, true);
|
|
89
|
+
IStandardizedYield(SY).claimRewards(address(this));
|
|
90
|
+
IPMarket(market).redeemRewards(address(this));
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function _compound(
|
|
94
|
+
address router,
|
|
95
|
+
TokenInput[] calldata inps,
|
|
96
|
+
uint256 minSyOut
|
|
97
|
+
) internal returns (uint256 netSyOut) {
|
|
98
|
+
netSyOut = 0;
|
|
99
|
+
|
|
100
|
+
for (uint256 i = 0; i < inps.length; ++i) {
|
|
101
|
+
netSyOut += _compoundSingle(router, inps[i], 0);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (netSyOut < minSyOut) revert Errors.BotInsufficientSyOut(netSyOut, minSyOut);
|
|
105
|
+
return netSyOut;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function _compoundSingle(
|
|
109
|
+
address router,
|
|
110
|
+
TokenInput memory inp,
|
|
111
|
+
uint256 minSyOut
|
|
112
|
+
) internal returns (uint256 /*netSyOut*/) {
|
|
113
|
+
if (inp.netTokenIn == type(uint256).max) inp.netTokenIn = _selfBalance(inp.tokenIn);
|
|
114
|
+
|
|
115
|
+
return
|
|
116
|
+
IPAllAction(router).mintSyFromToken{
|
|
117
|
+
value: inp.tokenIn == NATIVE ? inp.netTokenIn : 0
|
|
118
|
+
}(address(this), SY, minSyOut, inp);
|
|
119
|
+
}
|
|
120
|
+
}
|