@pendle/core-v2 2.16.0 → 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.
Files changed (440) 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/ExcessivelySafeCall.sol/ExcessivelySafeCall.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  10. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  12. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  13. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  14. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  15. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
  16. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.dbg.json +1 -1
  17. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.json +2 -2
  18. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  19. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  20. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  21. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  22. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  23. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  24. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  25. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  26. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  28. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  29. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  30. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  31. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  32. package/build/artifacts/contracts/LiquidityMining/libraries/WeekMath.sol/WeekMath.dbg.json +1 -1
  33. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
  35. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
  37. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  39. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  41. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  43. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  44. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  46. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  48. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  53. package/build/artifacts/contracts/core/StandardizedYield/SYUtils.sol/SYUtils.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +2 -2
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.json +2 -2
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.json +2 -2
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.json +2 -2
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.json +2 -2
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.json +2 -2
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAPoolHelper.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAWethHelper.dbg.json +1 -1
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol/LinearMath.dbg.json +1 -1
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol/LinearPreview.dbg.json +1 -1
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +1 -1
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
  76. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV2.sol/PendleAuraBalancerStableLPSYV2.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +1 -1
  78. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
  79. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  80. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  81. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  82. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  83. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotRewardHelper.sol/CamelotRewardHelper.dbg.json +1 -1
  84. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileCommon.sol/CamelotV1VolatileCommon.dbg.json +1 -1
  85. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileLpHelper.sol/CamelotV1VolatileLpHelper.dbg.json +1 -1
  86. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatilePreview.sol/CamelotV1VolatilePreview.dbg.json +1 -1
  87. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.json +2 -2
  89. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  90. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
  91. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  92. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
  93. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
  94. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
  95. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
  96. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  97. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol/GLPPreviewHelper.dbg.json +1 -1
  98. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +1 -1
  99. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.json +2 -2
  100. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.dbg.json +1 -1
  101. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.json +2 -2
  102. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  103. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
  104. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.dbg.json +1 -1
  105. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.json +2 -2
  106. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.dbg.json +1 -1
  107. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.json +2 -2
  108. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  109. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  110. package/build/artifacts/contracts/core/TradingBot/BotActionCallback.sol/BotActionCallback.dbg.json +4 -0
  111. package/build/artifacts/contracts/core/TradingBot/BotActionCallback.sol/BotActionCallback.json +631 -0
  112. package/build/artifacts/contracts/core/TradingBot/BotActionHelper.sol/BotActionHelper.dbg.json +4 -0
  113. package/build/artifacts/contracts/core/TradingBot/BotActionHelper.sol/BotActionHelper.json +631 -0
  114. package/build/artifacts/contracts/core/TradingBot/BotDecisionLib.sol/BotDecisionLib.dbg.json +4 -0
  115. package/build/artifacts/contracts/core/TradingBot/BotDecisionLib.sol/BotDecisionLib.json +10 -0
  116. package/build/artifacts/contracts/core/TradingBot/BotSimulationLib.sol/BotSimulationLib.dbg.json +4 -0
  117. package/build/artifacts/contracts/core/TradingBot/BotSimulationLib.sol/BotSimulationLib.json +10 -0
  118. package/build/artifacts/contracts/core/TradingBot/LongYieldTradingBot.sol/LongYieldTradingBot.dbg.json +4 -0
  119. package/build/artifacts/contracts/core/TradingBot/LongYieldTradingBot.sol/LongYieldTradingBot.json +1888 -0
  120. package/build/artifacts/contracts/core/TradingBot/MarketExtLib.sol/MarketExtLib.dbg.json +4 -0
  121. package/build/artifacts/contracts/core/TradingBot/MarketExtLib.sol/MarketExtLib.json +24 -0
  122. package/build/artifacts/contracts/core/TradingBot/TradingBotBase.sol/TradingBotBase.dbg.json +4 -0
  123. package/build/artifacts/contracts/core/TradingBot/TradingBotBase.sol/TradingBotBase.json +581 -0
  124. package/build/artifacts/contracts/core/TradingBot/TradingBotOffchain.sol/TradingBotOffchain.dbg.json +4 -0
  125. package/build/artifacts/contracts/core/TradingBot/TradingBotOffchain.sol/TradingBotOffchain.json +1071 -0
  126. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  127. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  128. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  129. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  130. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  131. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  132. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  133. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +1 -1
  134. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +1 -1
  135. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.json +2 -2
  136. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +1 -1
  137. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.json +2 -2
  138. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +1 -1
  139. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.json +2 -2
  140. package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  141. package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  142. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  143. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.dbg.json +1 -1
  144. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.dbg.json +1 -1
  145. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
  146. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
  147. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  148. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +151 -2
  149. package/build/artifacts/contracts/core/libraries/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  150. package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  151. package/build/artifacts/contracts/core/libraries/StringLib.sol/StringLib.dbg.json +1 -1
  152. package/build/artifacts/contracts/core/libraries/TokenAmountLib.sol/TokenAmountLib.dbg.json +4 -0
  153. package/build/artifacts/contracts/core/libraries/TokenAmountLib.sol/TokenAmountLib.json +10 -0
  154. package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  155. package/build/artifacts/contracts/core/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  156. package/build/artifacts/contracts/core/libraries/math/Math.sol/Math.dbg.json +1 -1
  157. package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +1 -1
  158. package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +1 -1
  159. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
  160. package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +1 -1
  161. package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +1 -1
  162. package/build/artifacts/contracts/interfaces/Balancer/IERC4626LinearPool.sol/IERC4626LinearPool.dbg.json +1 -1
  163. package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +1 -1
  164. package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +1 -1
  165. package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +1 -1
  166. package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +1 -1
  167. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
  168. package/build/artifacts/contracts/interfaces/Camelot/ICamelotFactory.sol/ICamelotFactory.dbg.json +1 -1
  169. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTFactory.sol/ICamelotNFTFactory.dbg.json +1 -1
  170. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTHandler.sol/ICamelotNFTHandler.dbg.json +1 -1
  171. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTPool.sol/ICamelotNFTPool.dbg.json +1 -1
  172. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPool.sol/ICamelotNitroPool.dbg.json +1 -1
  173. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPoolFactory.sol/ICamelotNitroPoolFactory.dbg.json +1 -1
  174. package/build/artifacts/contracts/interfaces/Camelot/ICamelotPair.sol/ICamelotPair.dbg.json +1 -1
  175. package/build/artifacts/contracts/interfaces/Camelot/ICamelotRouter.sol/ICamelotRouter.dbg.json +1 -1
  176. package/build/artifacts/contracts/interfaces/Camelot/ICamelotYieldBooster.sol/ICamelotYieldBooster.dbg.json +1 -1
  177. package/build/artifacts/contracts/interfaces/Camelot/IXGrail.sol/IXGrail.dbg.json +1 -1
  178. package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.dbg.json +1 -1
  179. package/build/artifacts/contracts/interfaces/ConvexCurve/ICrvDepositor.sol/ICrvDepositor.dbg.json +1 -1
  180. package/build/artifacts/contracts/interfaces/ConvexCurve/ICvxCrv.sol/ICvxCrv.dbg.json +1 -1
  181. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +1 -1
  182. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
  183. package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +1 -1
  184. package/build/artifacts/contracts/interfaces/Frax/IFrxEthMinter.sol/IFrxEthMinter.dbg.json +1 -1
  185. package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.dbg.json +1 -1
  186. package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.dbg.json +1 -1
  187. package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.dbg.json +1 -1
  188. package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.dbg.json +1 -1
  189. package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.dbg.json +1 -1
  190. package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
  191. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  192. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  193. package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.dbg.json +1 -1
  194. package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.dbg.json +1 -1
  195. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  196. package/build/artifacts/contracts/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.dbg.json +1 -1
  197. package/build/artifacts/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +1 -1
  198. package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.dbg.json +1 -1
  199. package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.dbg.json +1 -1
  200. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  201. package/build/artifacts/contracts/interfaces/IPActionInfoStatic.sol/IPActionInfoStatic.dbg.json +1 -1
  202. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  203. package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.dbg.json +1 -1
  204. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  205. package/build/artifacts/contracts/interfaces/IPActionMintRedeemStatic.sol/IPActionMintRedeemStatic.dbg.json +1 -1
  206. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +1 -1
  207. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  208. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  209. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  210. package/build/artifacts/contracts/interfaces/IPActionVePendleStatic.sol/IPActionVePendleStatic.dbg.json +1 -1
  211. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  212. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  213. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +1 -1
  214. package/build/artifacts/contracts/interfaces/IPBulkSellerSYCallback.sol/IPBulkSellerCallback.dbg.json +1 -1
  215. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
  216. package/build/artifacts/contracts/interfaces/IPFeeDistributorV2.sol/IPFeeDistributorV2.dbg.json +1 -1
  217. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
  218. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  219. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  220. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  221. package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.dbg.json +1 -1
  222. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  223. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  224. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  225. package/build/artifacts/contracts/interfaces/IPMiniDiamond.sol/IPMiniDiamond.dbg.json +1 -1
  226. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
  227. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
  228. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  229. package/build/artifacts/contracts/interfaces/IPPtOracle.sol/IPPtOracle.dbg.json +1 -1
  230. package/build/artifacts/contracts/interfaces/IPRouterHelper.sol/IPRouterHelper.dbg.json +1 -1
  231. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  232. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  233. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  234. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  235. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  236. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  237. package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.dbg.json +1 -1
  238. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  239. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  240. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  241. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  242. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
  243. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
  244. package/build/artifacts/contracts/interfaces/IStargateLP.sol/IStargateLP.dbg.json +1 -1
  245. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
  246. package/build/artifacts/contracts/interfaces/IStargateStaking.sol/IStargateStaking.dbg.json +1 -1
  247. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  248. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  249. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.dbg.json +4 -0
  250. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.json +874 -0
  251. package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.dbg.json +4 -0
  252. package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.json +408 -0
  253. package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.dbg.json +1 -1
  254. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
  255. package/build/artifacts/contracts/offchain-helpers/BoringLpSeller.sol/BoringLpSeller.dbg.json +4 -0
  256. package/build/artifacts/contracts/offchain-helpers/BoringLpSeller.sol/BoringLpSeller.json +10 -0
  257. package/build/artifacts/contracts/offchain-helpers/BoringPtSeller.sol/BoringPtSeller.dbg.json +1 -1
  258. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.dbg.json +1 -1
  259. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.json +2 -2
  260. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  261. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  262. package/build/artifacts/contracts/offchain-helpers/EmptyUUPS.sol/EmptyUUPS.dbg.json +1 -1
  263. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.dbg.json +1 -1
  264. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.json +2 -2
  265. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +1 -1
  266. package/build/artifacts/contracts/offchain-helpers/PendleMulticallV1.sol/PendleMulticallV1.dbg.json +1 -1
  267. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  268. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.json +2 -2
  269. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  270. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.json +2 -2
  271. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  272. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.json +2 -2
  273. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  274. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.json +2 -2
  275. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  276. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.json +2 -2
  277. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  278. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.json +2 -2
  279. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  280. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.json +2 -2
  281. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  282. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +1 -1
  283. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.json +2 -2
  284. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.dbg.json +1 -1
  285. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.json +2 -2
  286. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.dbg.json +1 -1
  287. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.json +2 -2
  288. package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.dbg.json +4 -0
  289. package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.json +166 -0
  290. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.dbg.json +1 -1
  291. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.json +2 -2
  292. package/build/artifacts/contracts/oracles/samples/PendlePtUsdChainlinkOracle.sol/PendlePtUsdChainlinkOracle.dbg.json +1 -1
  293. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  294. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
  295. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  296. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
  297. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  298. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  299. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
  300. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  301. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
  302. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  303. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
  304. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.dbg.json +1 -1
  305. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.json +2 -2
  306. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +1 -1
  307. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  308. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  309. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  310. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  311. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  312. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  313. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +1 -1
  314. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
  315. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +1 -1
  316. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IExecutorHelper.sol/IExecutorHelper.dbg.json +1 -1
  317. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IHashflow.sol/IHashflow.dbg.json +1 -1
  318. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +1 -1
  319. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberInputScalingHelper.sol/KyberInputScalingHelper.dbg.json +1 -1
  320. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScalingDataLib.sol/ScalingDataLib.dbg.json +1 -1
  321. package/contracts/core/TradingBot/BotActionCallback.sol +112 -0
  322. package/contracts/core/TradingBot/BotActionHelper.sol +138 -0
  323. package/contracts/core/TradingBot/BotDecisionLib.sol +272 -0
  324. package/contracts/core/TradingBot/BotSimulationLib.sol +115 -0
  325. package/contracts/core/TradingBot/LongYieldTradingBot.sol +148 -0
  326. package/contracts/core/TradingBot/MarketExtLib.sol +246 -0
  327. package/contracts/core/TradingBot/README.md +151 -0
  328. package/contracts/core/TradingBot/TradingBotBase.sol +120 -0
  329. package/contracts/core/TradingBot/TradingBotOffchain.sol +131 -0
  330. package/contracts/core/libraries/Errors.sol +12 -0
  331. package/contracts/core/libraries/TokenAmountLib.sol +47 -0
  332. package/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol +89 -0
  333. package/contracts/interfaces/TradingBot/ITradingBotBase.sol +40 -0
  334. package/contracts/offchain-helpers/BoringLpSeller.sol +47 -0
  335. package/contracts/oracles/samples/PendleLpGlpOracle.sol +49 -0
  336. package/deployments/merkle-distribution/2023-05-25.json +3749 -0
  337. package/package.json +1 -1
  338. package/typechain-types/BotActionCallback.ts +723 -0
  339. package/typechain-types/BotActionHelper.ts +723 -0
  340. package/typechain-types/CamelotV1LpHelper.ts +203 -0
  341. package/typechain-types/CamelotV1Preview.ts +431 -0
  342. package/typechain-types/ICamelotSY.ts +100 -0
  343. package/typechain-types/ILongYieldTradingBot.ts +644 -0
  344. package/typechain-types/IPendlePreviewHelper.ts +147 -0
  345. package/typechain-types/IThenaFactory.ts +245 -0
  346. package/typechain-types/IThenaGaugeV2.ts +206 -0
  347. package/typechain-types/IThenaPair.ts +579 -0
  348. package/typechain-types/IThenaRouter.ts +313 -0
  349. package/typechain-types/IThenaSY.ts +81 -0
  350. package/typechain-types/ITradingBotBase.ts +483 -0
  351. package/typechain-types/LongYieldTradingBot.ts +1482 -0
  352. package/typechain-types/MarketExtLib.ts +81 -0
  353. package/typechain-types/PendleArbitrumStakedEthSY.ts +1222 -0
  354. package/typechain-types/PendleCamelotV1SY.ts +1961 -0
  355. package/typechain-types/PendleLpGlpOracle.ts +145 -0
  356. package/typechain-types/PendleThenaSY.ts +1445 -0
  357. package/typechain-types/ThenaLpHelper.ts +172 -0
  358. package/typechain-types/ThenaPreview.ts +431 -0
  359. package/typechain-types/TradingBotBase.ts +679 -0
  360. package/typechain-types/TradingBotOffchain.ts +544 -0
  361. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
  362. package/typechain-types/factories/ActionInfoStatic__factory.ts +1 -1
  363. package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +1 -1
  364. package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +1 -1
  365. package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +1 -1
  366. package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
  367. package/typechain-types/factories/ActionStorageStatic__factory.ts +1 -1
  368. package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
  369. package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
  370. package/typechain-types/factories/ActionVePendleStatic__factory.ts +1 -1
  371. package/typechain-types/factories/BotActionCallback__factory.ts +646 -0
  372. package/typechain-types/factories/BotActionHelper__factory.ts +646 -0
  373. package/typechain-types/factories/Broadcaster__factory.ts +1 -1
  374. package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
  375. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  376. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  377. package/typechain-types/factories/CamelotV1LpHelper__factory.ts +143 -0
  378. package/typechain-types/factories/CamelotV1Preview__factory.ts +309 -0
  379. package/typechain-types/factories/Errors__factory.ts +150 -1
  380. package/typechain-types/factories/ICamelotSY__factory.ts +49 -0
  381. package/typechain-types/factories/ILongYieldTradingBot__factory.ts +893 -0
  382. package/typechain-types/factories/IPendlePreviewHelper__factory.ts +78 -0
  383. package/typechain-types/factories/IThenaFactory__factory.ts +164 -0
  384. package/typechain-types/factories/IThenaGaugeV2__factory.ts +83 -0
  385. package/typechain-types/factories/IThenaPair__factory.ts +421 -0
  386. package/typechain-types/factories/IThenaRouter__factory.ts +200 -0
  387. package/typechain-types/factories/IThenaSY__factory.ts +36 -0
  388. package/typechain-types/factories/ITradingBotBase__factory.ts +423 -0
  389. package/typechain-types/factories/LongYieldTradingBot__factory.ts +1958 -0
  390. package/typechain-types/factories/MarketExtLib__factory.ts +74 -0
  391. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  392. package/typechain-types/factories/PendleArbitrumStakedEthSY__factory.ts +1068 -0
  393. package/typechain-types/factories/PendleAuraBbAWethSwethSY__factory.ts +1 -1
  394. package/typechain-types/factories/PendleAuraWethAnkrethSYV2__factory.ts +1 -1
  395. package/typechain-types/factories/PendleAuraWethRocketEthSYV2__factory.ts +1 -1
  396. package/typechain-types/factories/PendleAuraWethStafiEthSY__factory.ts +1 -1
  397. package/typechain-types/factories/PendleAuraWethWstethSYV2__factory.ts +1 -1
  398. package/typechain-types/factories/PendleCamelotV1SY__factory.ts +1595 -0
  399. package/typechain-types/factories/PendleCamelotV1VolatileSY__factory.ts +1 -1
  400. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
  401. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
  402. package/typechain-types/factories/PendleFeeDistributorV2__factory.ts +1 -1
  403. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  404. package/typechain-types/factories/PendleGDaiSY__factory.ts +1 -1
  405. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  406. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  407. package/typechain-types/factories/PendleGlpSY__factory.ts +1 -1
  408. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
  409. package/typechain-types/factories/PendleLpGlpOracle__factory.ts +246 -0
  410. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  411. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  412. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  413. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  414. package/typechain-types/factories/PendlePrincipalTokenV2__factory.ts +1 -1
  415. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  416. package/typechain-types/factories/PendlePtGlpOracle__factory.ts +1 -1
  417. package/typechain-types/factories/PendlePtOracle__factory.ts +1 -1
  418. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  419. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  420. package/typechain-types/factories/PendleRouterHelper__factory.ts +1 -1
  421. package/typechain-types/factories/PendleRouterStatic__factory.ts +1 -1
  422. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  423. package/typechain-types/factories/PendleSfrxEthSY__factory.ts +1 -1
  424. package/typechain-types/factories/PendleStargateLPSY__factory.ts +1 -1
  425. package/typechain-types/factories/PendleThenaSY__factory.ts +1268 -0
  426. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  427. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  428. package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +1 -1
  429. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  430. package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1 -1
  431. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  432. package/typechain-types/factories/SAPE__factory.ts +1 -1
  433. package/typechain-types/factories/ThenaLpHelper__factory.ts +127 -0
  434. package/typechain-types/factories/ThenaPreview__factory.ts +306 -0
  435. package/typechain-types/factories/TradingBotBase__factory.ts +596 -0
  436. package/typechain-types/factories/TradingBotOffchain__factory.ts +1124 -0
  437. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  438. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  439. package/typechain-types/hardhat.d.ts +81 -108
  440. package/typechain-types/index.ts +20 -14
@@ -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
+ }
@@ -0,0 +1,131 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ import "./BotDecisionLib.sol";
5
+ import "../libraries/TokenAmountLib.sol";
6
+
7
+ contract TradingBotOffchain {
8
+ using TokenAmountLib for TokenAmount[];
9
+ using BotSimulationLib for BotState;
10
+ using MarketMathCore for MarketState;
11
+ using MarketApproxPtInLib for MarketState;
12
+ using PYIndexLib for PYIndex;
13
+
14
+ /// SY interest from YT is excluded
15
+ function claimForBot(
16
+ address bot,
17
+ address market
18
+ ) external returns (TokenAmount[] memory rewards) {
19
+ (IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
20
+
21
+ address[] memory ytRewardTokens = YT.getRewardTokens();
22
+ (, uint256[] memory ytRewardAmounts) = YT.redeemDueInterestAndRewards(bot, true, true);
23
+ rewards = rewards.add(ytRewardTokens, ytRewardAmounts);
24
+
25
+ address[] memory syRewardTokens = SY.getRewardTokens();
26
+ uint256[] memory syRewardAmounts = SY.claimRewards(bot);
27
+ rewards = rewards.add(syRewardTokens, syRewardAmounts);
28
+
29
+ address[] memory lpRewardTokens = IPMarket(market).getRewardTokens();
30
+ uint256[] memory lpRewardAmounts = IPMarket(market).redeemRewards(bot);
31
+ rewards = rewards.add(lpRewardTokens, lpRewardAmounts);
32
+ }
33
+
34
+ function simulateAction(
35
+ BotState calldata botCalldata,
36
+ MarketExtState calldata marketExtCalldata,
37
+ ActionType action,
38
+ uint256 botParam,
39
+ ApproxParams memory swapApproxParams
40
+ ) external pure returns (bool success, BotState memory bot, MarketExtState memory marketExt) {
41
+ bot = botCalldata;
42
+ marketExt = marketExtCalldata;
43
+
44
+ if (action == ActionType.SwapSyToYt) {
45
+ success = bot.swapSyToYt(marketExt, botParam);
46
+ } else if (action == ActionType.AddLiqKeepYt) {
47
+ success = bot.addLiqKeepYt(marketExt, botParam);
48
+ } else if (action == ActionType.AddLiqFromSy) {
49
+ success = bot.addLiqFromSy(marketExt, botParam);
50
+ } else if (action == ActionType.AddLiqFromYt) {
51
+ success = bot.addLiqFromYt(marketExt, botParam);
52
+ } else if (action == ActionType.RemoveLiqToYt) {
53
+ success = bot.removeLiqToYt(marketExt, botParam, swapApproxParams);
54
+ } else {
55
+ success = false;
56
+ }
57
+ }
58
+
59
+ function searchForBotParam(
60
+ BotState calldata bot,
61
+ MarketExtState calldata marketExt,
62
+ LongTradingSpecs calldata specs,
63
+ ActionType action,
64
+ StrategyState calldata initialState,
65
+ ApproxParams calldata botParams,
66
+ ApproxParams calldata intParams
67
+ ) external pure returns (uint256) {
68
+ return
69
+ BotDecisionLib.binarySearchUntilSwitchState(
70
+ bot,
71
+ marketExt,
72
+ specs,
73
+ action,
74
+ initialState,
75
+ botParams,
76
+ intParams
77
+ );
78
+ }
79
+
80
+ function searchForIntParam(
81
+ MarketExtState calldata marketExt,
82
+ ActionType action,
83
+ uint256 botParam,
84
+ ApproxParams calldata intParams
85
+ ) external pure returns (uint256) {
86
+ if (action == ActionType.RemoveLiqToYt) {
87
+ return _searchForIntParamRemoveLiqToYt(marketExt, botParam, intParams);
88
+ } else {
89
+ return 0;
90
+ }
91
+ }
92
+
93
+ function strategyState(
94
+ BotState calldata bot,
95
+ MarketExtState calldata marketExt,
96
+ LongTradingSpecs calldata specs
97
+ ) external pure returns (StrategyState memory) {
98
+ return BotDecisionLib.strategyState(bot, marketExt, specs);
99
+ }
100
+
101
+ function actionToTake(StrategyState memory currentState) external pure returns (ActionType) {
102
+ return BotDecisionLib.actionToTake(currentState);
103
+ }
104
+
105
+ function tvlInSy(
106
+ BotState calldata bot,
107
+ MarketExtState calldata marketExt
108
+ ) external pure returns (uint256) {
109
+ return BotSimulationLib.tvlInSy(bot, marketExt);
110
+ }
111
+
112
+ function _searchForIntParamRemoveLiqToYt(
113
+ MarketExtState memory marketExt,
114
+ uint256 netLpToRemove,
115
+ ApproxParams memory intParams
116
+ ) private pure returns (uint256 totalPtToSwap) {
117
+ (uint256 netSyRemoved, uint256 netPtRemoved) = marketExt.state.removeLiquidity(
118
+ netLpToRemove
119
+ );
120
+
121
+ uint256 netYtFromSy = marketExt.index.syToAsset(netSyRemoved);
122
+ uint256 netPtToSwap = netPtRemoved + netYtFromSy;
123
+
124
+ (, totalPtToSwap, ) = marketExt.state.approxSwapExactPtForYt(
125
+ marketExt.index,
126
+ netPtToSwap,
127
+ marketExt.blockTime,
128
+ intParams
129
+ );
130
+ }
131
+ }
@@ -177,4 +177,16 @@ library Errors {
177
177
  // Swap Aggregator
178
178
  error SAInsufficientTokenIn(address tokenIn, uint256 amountExpected, uint256 amountActual);
179
179
  error UnsupportedSelector(uint256 aggregatorType, bytes4 selector);
180
+
181
+ // Trading Bot
182
+ error BotBinarySearchInvalidRange(uint256 action, uint256 guessMin, uint256 guessMax);
183
+ error BotBinarySearchGuessMinInvalid(uint256 action, uint256 guessMin);
184
+ error BotBinarySearchFail();
185
+ error BotExceededLimitSyIn(uint256 actualSyIn, uint256 limitSyIn);
186
+ error BotExceededLimitYtIn(uint256 actualYtIn, uint256 limitYtIn);
187
+ error BotExceededLimitLpToRemove(uint256 actualLpToRemove, uint256 limitLpToRemove);
188
+ error BotInsufficientSyOut(uint256 actualSyOut, uint256 requiredSyOut);
189
+ error BotInsufficientYtOut(uint256 actualYtOut, uint256 requiredYtOut);
190
+ error BotInsufficientLpOut(uint256 actualLpOut, uint256 requiredLpOut);
191
+ error BotCallbackNotMarket(address caller);
180
192
  }