@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.
Files changed (437) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  10. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  11. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  12. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  13. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  14. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
  15. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.dbg.json +1 -1
  16. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.json +2 -2
  17. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  19. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  20. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  21. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  22. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  23. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  24. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  25. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  26. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  28. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  29. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  30. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  31. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
  33. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
  35. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  37. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  39. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  41. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  44. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  46. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +2 -2
  53. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.json +2 -2
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.json +2 -2
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.json +2 -2
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.json +2 -2
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.json +2 -2
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +1 -1
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAPoolHelper.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAWethHelper.dbg.json +1 -1
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol/LinearMath.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol/LinearPreview.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV2.sol/PendleAuraBalancerStableLPSYV2.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  76. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotRewardHelper.sol/CamelotRewardHelper.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileCommon.sol/CamelotV1VolatileCommon.dbg.json +1 -1
  78. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileLpHelper.sol/CamelotV1VolatileLpHelper.dbg.json +1 -1
  79. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatilePreview.sol/CamelotV1VolatilePreview.dbg.json +1 -1
  80. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.dbg.json +1 -1
  81. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.json +2 -2
  82. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  83. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
  84. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  85. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
  86. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
  87. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
  89. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  90. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +1 -1
  91. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.json +2 -2
  92. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.dbg.json +1 -1
  93. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.json +2 -2
  94. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  95. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
  96. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.dbg.json +1 -1
  97. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.json +2 -2
  98. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.dbg.json +1 -1
  99. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.json +2 -2
  100. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  101. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  102. package/build/artifacts/contracts/core/TradingBot/LongYield/LongYieldDecisionHelper.sol/LongYieldDecisionHelper.dbg.json +4 -0
  103. package/build/artifacts/contracts/core/TradingBot/LongYield/LongYieldDecisionHelper.sol/LongYieldDecisionHelper.json +1215 -0
  104. package/build/artifacts/contracts/core/TradingBot/LongYield/LongYieldTradingBot.sol/LongYieldTradingBot.dbg.json +4 -0
  105. package/build/artifacts/contracts/core/TradingBot/LongYield/LongYieldTradingBot.sol/LongYieldTradingBot.json +1681 -0
  106. package/build/artifacts/contracts/core/TradingBot/ShortYield/ShortYieldDecisionHelper.sol/ShortYieldDecisionHelper.dbg.json +4 -0
  107. package/build/artifacts/contracts/core/TradingBot/ShortYield/ShortYieldDecisionHelper.sol/ShortYieldDecisionHelper.json +1215 -0
  108. package/build/artifacts/contracts/core/TradingBot/ShortYield/ShortYieldTradingBot.sol/ShortYieldTradingBot.dbg.json +4 -0
  109. package/build/artifacts/contracts/core/TradingBot/ShortYield/ShortYieldTradingBot.sol/ShortYieldTradingBot.json +1535 -0
  110. package/build/artifacts/contracts/core/TradingBot/base/BotActionCallback.sol/BotActionCallback.dbg.json +4 -0
  111. package/build/artifacts/contracts/core/TradingBot/base/BotActionCallback.sol/BotActionCallback.json +932 -0
  112. package/build/artifacts/contracts/core/TradingBot/base/BotActionHelper.sol/BotActionHelper.dbg.json +4 -0
  113. package/build/artifacts/contracts/core/TradingBot/base/BotActionHelper.sol/BotActionHelper.json +932 -0
  114. package/build/artifacts/contracts/core/TradingBot/base/BotDecisionHelperBase.sol/BotDecisionHelperBase.dbg.json +4 -0
  115. package/build/artifacts/contracts/core/TradingBot/base/BotDecisionHelperBase.sol/BotDecisionHelperBase.json +789 -0
  116. package/build/artifacts/contracts/core/TradingBot/base/TradingBotBase.sol/TradingBotBase.dbg.json +4 -0
  117. package/build/artifacts/contracts/core/TradingBot/base/TradingBotBase.sol/TradingBotBase.json +882 -0
  118. package/build/artifacts/contracts/core/TradingBot/libraries/BotSimulationLib.sol/BotSimulationLib.dbg.json +4 -0
  119. package/build/artifacts/contracts/core/TradingBot/libraries/BotSimulationLib.sol/BotSimulationLib.json +10 -0
  120. package/build/artifacts/contracts/core/TradingBot/libraries/MarketExtLib.sol/MarketExtLib.dbg.json +4 -0
  121. package/build/artifacts/contracts/core/TradingBot/libraries/MarketExtLib.sol/MarketExtLib.json +24 -0
  122. package/build/artifacts/contracts/core/TradingBot/libraries/SpecSegmentLib.sol/SpecSegmentLib.dbg.json +4 -0
  123. package/build/artifacts/contracts/core/TradingBot/libraries/SpecSegmentLib.sol/SpecSegmentLib.json +10 -0
  124. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  125. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  126. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  127. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  128. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  129. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  130. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  131. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +1 -1
  132. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +1 -1
  133. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.json +2 -2
  134. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +1 -1
  135. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.json +2 -2
  136. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +1 -1
  137. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.json +2 -2
  138. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  139. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  140. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +151 -2
  141. package/build/artifacts/contracts/core/libraries/TokenAmountLib.sol/TokenAmountLib.dbg.json +4 -0
  142. package/build/artifacts/contracts/core/libraries/TokenAmountLib.sol/TokenAmountLib.json +10 -0
  143. package/build/artifacts/contracts/core/libraries/math/Math.sol/Math.dbg.json +1 -1
  144. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
  145. package/build/artifacts/contracts/interfaces/Balancer/IERC4626LinearPool.sol/IERC4626LinearPool.dbg.json +1 -1
  146. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
  147. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTPool.sol/ICamelotNFTPool.dbg.json +1 -1
  148. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPool.sol/ICamelotNitroPool.dbg.json +1 -1
  149. package/build/artifacts/contracts/interfaces/Camelot/ICamelotPair.sol/ICamelotPair.dbg.json +1 -1
  150. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  151. package/build/artifacts/contracts/interfaces/IPActionInfoStatic.sol/IPActionInfoStatic.dbg.json +1 -1
  152. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  153. package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.dbg.json +1 -1
  154. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  155. package/build/artifacts/contracts/interfaces/IPActionMintRedeemStatic.sol/IPActionMintRedeemStatic.dbg.json +1 -1
  156. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  157. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  158. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  159. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  160. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  161. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
  162. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  163. package/build/artifacts/contracts/interfaces/IPRouterHelper.sol/IPRouterHelper.dbg.json +1 -1
  164. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  165. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  166. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  167. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  168. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
  169. package/build/artifacts/contracts/interfaces/TradingBot/IBotDecisionHelper.sol/IBotDecisionHelper.dbg.json +4 -0
  170. package/build/artifacts/contracts/interfaces/TradingBot/IBotDecisionHelper.sol/IBotDecisionHelper.json +652 -0
  171. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldDecisionHelper.sol/ILongYieldDecisionHelper.dbg.json +4 -0
  172. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldDecisionHelper.sol/ILongYieldDecisionHelper.json +671 -0
  173. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.dbg.json +4 -0
  174. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.json +1094 -0
  175. package/build/artifacts/contracts/interfaces/TradingBot/IShortYieldDecisionHelper.sol/IShortYieldDecisionHelper.dbg.json +4 -0
  176. package/build/artifacts/contracts/interfaces/TradingBot/IShortYieldDecisionHelper.sol/IShortYieldDecisionHelper.json +652 -0
  177. package/build/artifacts/contracts/interfaces/TradingBot/IShortYieldTradingBot.sol/IShortYieldTradingBot.dbg.json +4 -0
  178. package/build/artifacts/contracts/interfaces/TradingBot/IShortYieldTradingBot.sol/IShortYieldTradingBot.json +1075 -0
  179. package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.dbg.json +4 -0
  180. package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.json +632 -0
  181. package/build/artifacts/contracts/offchain-helpers/BoringLpSeller.sol/BoringLpSeller.dbg.json +4 -0
  182. package/build/artifacts/contracts/offchain-helpers/BoringLpSeller.sol/BoringLpSeller.json +10 -0
  183. package/build/artifacts/contracts/offchain-helpers/BoringPtSeller.sol/BoringPtSeller.dbg.json +1 -1
  184. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.dbg.json +1 -1
  185. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.json +2 -2
  186. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  187. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  188. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.dbg.json +1 -1
  189. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.json +2 -2
  190. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  191. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.json +2 -2
  192. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  193. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.json +2 -2
  194. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  195. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.json +2 -2
  196. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  197. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.json +2 -2
  198. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  199. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.json +2 -2
  200. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  201. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.json +2 -2
  202. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  203. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.json +2 -2
  204. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  205. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +1 -1
  206. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.json +2 -2
  207. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.dbg.json +1 -1
  208. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.json +2 -2
  209. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.dbg.json +1 -1
  210. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.json +2 -2
  211. package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.dbg.json +4 -0
  212. package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.json +166 -0
  213. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.dbg.json +1 -1
  214. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.json +2 -2
  215. package/build/artifacts/contracts/oracles/samples/PendlePtUsdChainlinkOracle.sol/PendlePtUsdChainlinkOracle.dbg.json +1 -1
  216. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  217. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
  218. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  219. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
  220. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  221. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
  222. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  223. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
  224. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  225. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
  226. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.dbg.json +1 -1
  227. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.json +2 -2
  228. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +1 -1
  229. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  230. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  231. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  232. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  233. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  234. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  235. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
  236. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +1 -1
  237. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IExecutorHelper.sol/IExecutorHelper.dbg.json +1 -1
  238. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IHashflow.sol/IHashflow.dbg.json +1 -1
  239. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +1 -1
  240. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberInputScalingHelper.sol/KyberInputScalingHelper.dbg.json +1 -1
  241. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScalingDataLib.sol/ScalingDataLib.dbg.json +1 -1
  242. package/contracts/core/TradingBot/LongYield/LongYieldDecisionHelper.sol +216 -0
  243. package/contracts/core/TradingBot/LongYield/LongYieldTradingBot.sol +97 -0
  244. package/contracts/core/TradingBot/README.md +153 -0
  245. package/contracts/core/TradingBot/ShortYield/ShortYieldDecisionHelper.sol +198 -0
  246. package/contracts/core/TradingBot/ShortYield/ShortYieldTradingBot.sol +101 -0
  247. package/contracts/core/TradingBot/base/BotActionCallback.sol +112 -0
  248. package/contracts/core/TradingBot/base/BotActionHelper.sol +178 -0
  249. package/contracts/core/TradingBot/base/BotDecisionHelperBase.sol +235 -0
  250. package/contracts/core/TradingBot/base/TradingBotBase.sol +184 -0
  251. package/contracts/core/TradingBot/libraries/BotSimulationLib.sol +155 -0
  252. package/contracts/core/TradingBot/libraries/MarketExtLib.sol +310 -0
  253. package/contracts/core/TradingBot/libraries/SpecSegmentLib.sol +62 -0
  254. package/contracts/core/libraries/Errors.sol +12 -0
  255. package/contracts/core/libraries/TokenAmountLib.sol +47 -0
  256. package/contracts/interfaces/TradingBot/IBotDecisionHelper.sol +57 -0
  257. package/contracts/interfaces/TradingBot/ILongYieldDecisionHelper.sol +8 -0
  258. package/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol +51 -0
  259. package/contracts/interfaces/TradingBot/IShortYieldDecisionHelper.sol +7 -0
  260. package/contracts/interfaces/TradingBot/IShortYieldTradingBot.sol +27 -0
  261. package/contracts/interfaces/TradingBot/ITradingBotBase.sol +67 -0
  262. package/contracts/offchain-helpers/BoringLpSeller.sol +47 -0
  263. package/contracts/oracles/samples/PendleLpGlpOracle.sol +49 -0
  264. package/package.json +1 -1
  265. package/typechain-types/BotActionCallback.ts +950 -0
  266. package/typechain-types/BotActionHelper.ts +950 -0
  267. package/typechain-types/BotDecisionHelper.ts +561 -0
  268. package/typechain-types/BotDecisionHelperBase.ts +484 -0
  269. package/typechain-types/BotDecisionLib.ts +335 -0
  270. package/typechain-types/CamelotV1LpHelper.ts +203 -0
  271. package/typechain-types/CamelotV1Preview.ts +431 -0
  272. package/typechain-types/I1inchAggregationRouterV5.ts +257 -0
  273. package/typechain-types/IAnkrBNB.ts +150 -0
  274. package/typechain-types/IAnkrLiquidStaking.ts +253 -0
  275. package/typechain-types/IBotDecisionHelper.ts +452 -0
  276. package/typechain-types/ICamelotSY.ts +100 -0
  277. package/typechain-types/IExecutorHelper1.ts +643 -0
  278. package/typechain-types/IExecutorHelper2.ts +115 -0
  279. package/typechain-types/IExecutorHelperEthereum1.ts +643 -0
  280. package/typechain-types/ILongYieldDecisionHelper.ts +486 -0
  281. package/typechain-types/ILongYieldTradingBot.ts +928 -0
  282. package/typechain-types/IPExternalRewardDistributor.ts +192 -0
  283. package/typechain-types/IPMarketFactoryV2.ts +253 -0
  284. package/typechain-types/IPendlePreviewHelper.ts +147 -0
  285. package/typechain-types/IShortYieldDecisionHelper.ts +452 -0
  286. package/typechain-types/IShortYieldTradingBot.ts +820 -0
  287. package/typechain-types/ISwETH.ts +123 -0
  288. package/typechain-types/IThenaFactory.ts +245 -0
  289. package/typechain-types/IThenaGaugeV2.ts +206 -0
  290. package/typechain-types/IThenaPair.ts +579 -0
  291. package/typechain-types/IThenaRouter.ts +313 -0
  292. package/typechain-types/IThenaSY.ts +81 -0
  293. package/typechain-types/ITradingBotBase.ts +619 -0
  294. package/typechain-types/IWBETH.ts +128 -0
  295. package/typechain-types/LongYieldDecisionHelper.ts +601 -0
  296. package/typechain-types/LongYieldTradingBot.ts +1414 -0
  297. package/typechain-types/MarketExtLib.ts +81 -0
  298. package/typechain-types/PendleAnkrBNBSY.ts +1235 -0
  299. package/typechain-types/PendleAuraWstethAnkreth.ts +1511 -0
  300. package/typechain-types/PendleBinanceEth.ts +1229 -0
  301. package/typechain-types/PendleCamelotV1SY.ts +1961 -0
  302. package/typechain-types/PendleExternalRewardDistributor.ts +546 -0
  303. package/typechain-types/PendleGaugeV2.ts +225 -0
  304. package/typechain-types/PendleLpGlpOracle.ts +145 -0
  305. package/typechain-types/PendleMarketFactoryV2.ts +930 -0
  306. package/typechain-types/PendleMarketV2.ts +1311 -0
  307. package/typechain-types/PendleSwETH.ts +1216 -0
  308. package/typechain-types/PendleSwapArbitrum.ts +126 -0
  309. package/typechain-types/PendleSwapEthereum.ts +126 -0
  310. package/typechain-types/PendleThenaSY.ts +1598 -0
  311. package/typechain-types/PendleWbEthSY.ts +1229 -0
  312. package/typechain-types/PtAndLpToAsset.ts +136 -0
  313. package/typechain-types/ShortYieldDecisionHelper.ts +601 -0
  314. package/typechain-types/ShortYieldTradingBot.ts +1306 -0
  315. package/typechain-types/ThenaLpHelper.ts +191 -0
  316. package/typechain-types/ThenaMath.ts +87 -0
  317. package/typechain-types/ThenaPreview.ts +450 -0
  318. package/typechain-types/TradingBotBase.ts +906 -0
  319. package/typechain-types/TradingBotOffchain.ts +568 -0
  320. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
  321. package/typechain-types/factories/ActionInfoStatic__factory.ts +1 -1
  322. package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +1 -1
  323. package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +1 -1
  324. package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +1 -1
  325. package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
  326. package/typechain-types/factories/ActionStorageStatic__factory.ts +1 -1
  327. package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
  328. package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
  329. package/typechain-types/factories/ActionVePendleStatic__factory.ts +1 -1
  330. package/typechain-types/factories/BotActionCallback__factory.ts +947 -0
  331. package/typechain-types/factories/BotActionHelper__factory.ts +947 -0
  332. package/typechain-types/factories/BotDecisionHelperBase__factory.ts +808 -0
  333. package/typechain-types/factories/BotDecisionHelper__factory.ts +1192 -0
  334. package/typechain-types/factories/BotDecisionLib__factory.ts +642 -0
  335. package/typechain-types/factories/Broadcaster__factory.ts +1 -1
  336. package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
  337. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  338. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  339. package/typechain-types/factories/CamelotV1LpHelper__factory.ts +143 -0
  340. package/typechain-types/factories/CamelotV1Preview__factory.ts +309 -0
  341. package/typechain-types/factories/Errors__factory.ts +150 -1
  342. package/typechain-types/factories/I1inchAggregationRouterV5__factory.ts +179 -0
  343. package/typechain-types/factories/IAnkrBNB__factory.ts +74 -0
  344. package/typechain-types/factories/IAnkrLiquidStaking__factory.ts +123 -0
  345. package/typechain-types/factories/IBotDecisionHelper__factory.ts +667 -0
  346. package/typechain-types/factories/ICamelotSY__factory.ts +49 -0
  347. package/typechain-types/factories/IExecutorHelper1__factory.ts +403 -0
  348. package/typechain-types/factories/IExecutorHelper2__factory.ts +55 -0
  349. package/typechain-types/factories/IExecutorHelperEthereum1__factory.ts +407 -0
  350. package/typechain-types/factories/ILongYieldDecisionHelper__factory.ts +690 -0
  351. package/typechain-types/factories/ILongYieldTradingBot__factory.ts +1113 -0
  352. package/typechain-types/factories/IPExternalRewardDistributor__factory.ts +128 -0
  353. package/typechain-types/factories/IPMarketFactoryV2__factory.ts +181 -0
  354. package/typechain-types/factories/IPendlePreviewHelper__factory.ts +78 -0
  355. package/typechain-types/factories/IShortYieldDecisionHelper__factory.ts +671 -0
  356. package/typechain-types/factories/IShortYieldTradingBot__factory.ts +1094 -0
  357. package/typechain-types/factories/ISwETH__factory.ts +53 -0
  358. package/typechain-types/factories/IThenaFactory__factory.ts +164 -0
  359. package/typechain-types/factories/IThenaGaugeV2__factory.ts +83 -0
  360. package/typechain-types/factories/IThenaPair__factory.ts +421 -0
  361. package/typechain-types/factories/IThenaRouter__factory.ts +200 -0
  362. package/typechain-types/factories/IThenaSY__factory.ts +36 -0
  363. package/typechain-types/factories/ITradingBotBase__factory.ts +647 -0
  364. package/typechain-types/factories/IWBETH__factory.ts +51 -0
  365. package/typechain-types/factories/LongYieldDecisionHelper__factory.ts +1272 -0
  366. package/typechain-types/factories/LongYieldTradingBot__factory.ts +1754 -0
  367. package/typechain-types/factories/MarketExtLib__factory.ts +74 -0
  368. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  369. package/typechain-types/factories/PendleAnkrBNBSY__factory.ts +1100 -0
  370. package/typechain-types/factories/PendleArbitrumStakedEthSY__factory.ts +27 -2
  371. package/typechain-types/factories/PendleAuraBbAWethSwethSY__factory.ts +1 -1
  372. package/typechain-types/factories/PendleAuraWethAnkrethSYV2__factory.ts +1 -1
  373. package/typechain-types/factories/PendleAuraWethRocketEthSYV2__factory.ts +1 -1
  374. package/typechain-types/factories/PendleAuraWethStafiEthSY__factory.ts +1 -1
  375. package/typechain-types/factories/PendleAuraWethWstethSYV2__factory.ts +1 -1
  376. package/typechain-types/factories/PendleAuraWstethAnkreth__factory.ts +1244 -0
  377. package/typechain-types/factories/PendleBinanceEth__factory.ts +1052 -0
  378. package/typechain-types/factories/PendleCamelotV1SY__factory.ts +1595 -0
  379. package/typechain-types/factories/PendleCamelotV1VolatileSY__factory.ts +1 -1
  380. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
  381. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
  382. package/typechain-types/factories/PendleExternalRewardDistributor__factory.ts +414 -0
  383. package/typechain-types/factories/PendleFeeDistributorV2__factory.ts +1 -1
  384. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  385. package/typechain-types/factories/PendleGDaiSY__factory.ts +1 -1
  386. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  387. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  388. package/typechain-types/factories/PendleGaugeV2__factory.ts +140 -0
  389. package/typechain-types/factories/PendleGlpSY__factory.ts +1 -1
  390. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
  391. package/typechain-types/factories/PendleLpGlpOracle__factory.ts +246 -0
  392. package/typechain-types/factories/PendleMarketFactoryV2__factory.ts +770 -0
  393. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  394. package/typechain-types/factories/PendleMarketV2__factory.ts +1290 -0
  395. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  396. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  397. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  398. package/typechain-types/factories/PendlePrincipalTokenV2__factory.ts +1 -1
  399. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  400. package/typechain-types/factories/PendlePtGlpOracle__factory.ts +1 -1
  401. package/typechain-types/factories/PendlePtOracle__factory.ts +1 -1
  402. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  403. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  404. package/typechain-types/factories/PendleRouterHelper__factory.ts +1 -1
  405. package/typechain-types/factories/PendleRouterStatic__factory.ts +1 -1
  406. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  407. package/typechain-types/factories/PendleSfrxEthSY__factory.ts +1 -1
  408. package/typechain-types/factories/PendleStargateLPSY__factory.ts +1 -1
  409. package/typechain-types/factories/PendleSwETH__factory.ts +1022 -0
  410. package/typechain-types/factories/PendleSwapArbitrum__factory.ts +129 -0
  411. package/typechain-types/factories/PendleSwapEthereum__factory.ts +129 -0
  412. package/typechain-types/factories/PendleThenaSY__factory.ts +1352 -0
  413. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  414. package/typechain-types/factories/PendleWbEthSY__factory.ts +1049 -0
  415. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  416. package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +1 -1
  417. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  418. package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1 -1
  419. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  420. package/typechain-types/factories/PtAndLpToAsset__factory.ts +150 -0
  421. package/typechain-types/factories/SAPE__factory.ts +1 -1
  422. package/typechain-types/factories/ShortYieldDecisionHelper__factory.ts +1272 -0
  423. package/typechain-types/factories/ShortYieldTradingBot__factory.ts +1612 -0
  424. package/typechain-types/factories/ThenaLpHelper__factory.ts +140 -0
  425. package/typechain-types/factories/ThenaMath__factory.ts +36 -0
  426. package/typechain-types/factories/ThenaPreview__factory.ts +319 -0
  427. package/typechain-types/factories/TradingBotBase__factory.ts +897 -0
  428. package/typechain-types/factories/TradingBotOffchain__factory.ts +1133 -0
  429. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  430. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  431. package/typechain-types/hardhat.d.ts +144 -9
  432. package/typechain-types/index.ts +32 -2
  433. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol/PendleArbitrumStakedEthSY.dbg.json +0 -4
  434. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol/PendleArbitrumStakedEthSY.json +0 -966
  435. package/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol +0 -114
  436. package/deployments/42161-markets/RETH-ARBITRUM-JUNE2024.json +0 -10
  437. 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
+ }