@pendle/core-v2 2.15.2 → 2.17.0-tradingbot

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (514) 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 +4 -0
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.json +1189 -0
  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 +4 -0
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.json +10 -0
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +4 -0
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.json +322 -0
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +1 -1
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAPoolHelper.dbg.json +4 -0
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAPoolHelper.json +24 -0
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAWethHelper.dbg.json +4 -0
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAWethHelper.json +24 -0
  76. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol/LinearMath.dbg.json +4 -0
  77. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol/LinearMath.json +10 -0
  78. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol/LinearPreview.dbg.json +4 -0
  79. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol/LinearPreview.json +234 -0
  80. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +1 -1
  81. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
  82. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.json +2 -2
  83. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV2.sol/PendleAuraBalancerStableLPSYV2.dbg.json +1 -1
  84. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +1 -1
  85. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
  86. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  87. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  88. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  89. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  90. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotRewardHelper.sol/CamelotRewardHelper.dbg.json +1 -1
  91. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileCommon.sol/CamelotV1VolatileCommon.dbg.json +1 -1
  92. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileLpHelper.sol/CamelotV1VolatileLpHelper.dbg.json +1 -1
  93. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatilePreview.sol/CamelotV1VolatilePreview.dbg.json +1 -1
  94. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.dbg.json +1 -1
  95. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.json +2 -2
  96. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  97. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
  98. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  99. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
  100. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
  101. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
  102. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
  103. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  104. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol/GLPPreviewHelper.dbg.json +1 -1
  105. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +1 -1
  106. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.json +2 -2
  107. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.dbg.json +1 -1
  108. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.json +2 -2
  109. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  110. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
  111. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.dbg.json +1 -1
  112. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.json +2 -2
  113. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.dbg.json +1 -1
  114. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.json +2 -2
  115. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  116. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  117. package/build/artifacts/contracts/core/TradingBot/BotActionCallback.sol/BotActionCallback.dbg.json +4 -0
  118. package/build/artifacts/contracts/core/TradingBot/BotActionCallback.sol/BotActionCallback.json +631 -0
  119. package/build/artifacts/contracts/core/TradingBot/BotActionHelper.sol/BotActionHelper.dbg.json +4 -0
  120. package/build/artifacts/contracts/core/TradingBot/BotActionHelper.sol/BotActionHelper.json +631 -0
  121. package/build/artifacts/contracts/core/TradingBot/BotDecisionLib.sol/BotDecisionLib.dbg.json +4 -0
  122. package/build/artifacts/contracts/core/TradingBot/BotDecisionLib.sol/BotDecisionLib.json +10 -0
  123. package/build/artifacts/contracts/core/TradingBot/BotSimulationLib.sol/BotSimulationLib.dbg.json +4 -0
  124. package/build/artifacts/contracts/core/TradingBot/BotSimulationLib.sol/BotSimulationLib.json +10 -0
  125. package/build/artifacts/contracts/core/TradingBot/LongYieldTradingBot.sol/LongYieldTradingBot.dbg.json +4 -0
  126. package/build/artifacts/contracts/core/TradingBot/LongYieldTradingBot.sol/LongYieldTradingBot.json +1888 -0
  127. package/build/artifacts/contracts/core/TradingBot/MarketExtLib.sol/MarketExtLib.dbg.json +4 -0
  128. package/build/artifacts/contracts/core/TradingBot/MarketExtLib.sol/MarketExtLib.json +24 -0
  129. package/build/artifacts/contracts/core/TradingBot/TradingBotBase.sol/TradingBotBase.dbg.json +4 -0
  130. package/build/artifacts/contracts/core/TradingBot/TradingBotBase.sol/TradingBotBase.json +581 -0
  131. package/build/artifacts/contracts/core/TradingBot/TradingBotOffchain.sol/TradingBotOffchain.dbg.json +4 -0
  132. package/build/artifacts/contracts/core/TradingBot/TradingBotOffchain.sol/TradingBotOffchain.json +1071 -0
  133. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  134. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  135. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  136. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  137. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  138. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  139. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  140. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +1 -1
  141. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +1 -1
  142. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.json +2 -2
  143. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +1 -1
  144. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.json +2 -2
  145. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +1 -1
  146. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.json +2 -2
  147. package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  148. package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  149. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  150. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.dbg.json +1 -1
  151. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.dbg.json +1 -1
  152. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
  153. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
  154. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  155. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +151 -2
  156. package/build/artifacts/contracts/core/libraries/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  157. package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  158. package/build/artifacts/contracts/core/libraries/StringLib.sol/StringLib.dbg.json +1 -1
  159. package/build/artifacts/contracts/core/libraries/TokenAmountLib.sol/TokenAmountLib.dbg.json +4 -0
  160. package/build/artifacts/contracts/core/libraries/TokenAmountLib.sol/TokenAmountLib.json +10 -0
  161. package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  162. package/build/artifacts/contracts/core/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  163. package/build/artifacts/contracts/core/libraries/math/Math.sol/Math.dbg.json +1 -1
  164. package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +1 -1
  165. package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +1 -1
  166. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
  167. package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +1 -1
  168. package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +1 -1
  169. package/build/artifacts/contracts/interfaces/Balancer/IERC4626LinearPool.sol/IERC4626LinearPool.dbg.json +4 -0
  170. package/build/artifacts/contracts/interfaces/Balancer/IERC4626LinearPool.sol/IERC4626LinearPool.json +1172 -0
  171. package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +1 -1
  172. package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +1 -1
  173. package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +1 -1
  174. package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +1 -1
  175. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
  176. package/build/artifacts/contracts/interfaces/Camelot/ICamelotFactory.sol/ICamelotFactory.dbg.json +1 -1
  177. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTFactory.sol/ICamelotNFTFactory.dbg.json +1 -1
  178. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTHandler.sol/ICamelotNFTHandler.dbg.json +1 -1
  179. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTPool.sol/ICamelotNFTPool.dbg.json +1 -1
  180. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPool.sol/ICamelotNitroPool.dbg.json +1 -1
  181. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPoolFactory.sol/ICamelotNitroPoolFactory.dbg.json +1 -1
  182. package/build/artifacts/contracts/interfaces/Camelot/ICamelotPair.sol/ICamelotPair.dbg.json +1 -1
  183. package/build/artifacts/contracts/interfaces/Camelot/ICamelotRouter.sol/ICamelotRouter.dbg.json +1 -1
  184. package/build/artifacts/contracts/interfaces/Camelot/ICamelotYieldBooster.sol/ICamelotYieldBooster.dbg.json +1 -1
  185. package/build/artifacts/contracts/interfaces/Camelot/IXGrail.sol/IXGrail.dbg.json +1 -1
  186. package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.dbg.json +1 -1
  187. package/build/artifacts/contracts/interfaces/ConvexCurve/ICrvDepositor.sol/ICrvDepositor.dbg.json +1 -1
  188. package/build/artifacts/contracts/interfaces/ConvexCurve/ICvxCrv.sol/ICvxCrv.dbg.json +1 -1
  189. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +1 -1
  190. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
  191. package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +1 -1
  192. package/build/artifacts/contracts/interfaces/Frax/IFrxEthMinter.sol/IFrxEthMinter.dbg.json +1 -1
  193. package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.dbg.json +1 -1
  194. package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.dbg.json +1 -1
  195. package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.dbg.json +1 -1
  196. package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.dbg.json +1 -1
  197. package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.dbg.json +1 -1
  198. package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
  199. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  200. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  201. package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.dbg.json +1 -1
  202. package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.dbg.json +1 -1
  203. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  204. package/build/artifacts/contracts/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.dbg.json +1 -1
  205. package/build/artifacts/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +1 -1
  206. package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.dbg.json +1 -1
  207. package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.dbg.json +1 -1
  208. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  209. package/build/artifacts/contracts/interfaces/IPActionInfoStatic.sol/IPActionInfoStatic.dbg.json +1 -1
  210. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  211. package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.dbg.json +1 -1
  212. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  213. package/build/artifacts/contracts/interfaces/IPActionMintRedeemStatic.sol/IPActionMintRedeemStatic.dbg.json +1 -1
  214. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +1 -1
  215. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  216. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  217. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  218. package/build/artifacts/contracts/interfaces/IPActionVePendleStatic.sol/IPActionVePendleStatic.dbg.json +1 -1
  219. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  220. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  221. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +1 -1
  222. package/build/artifacts/contracts/interfaces/IPBulkSellerSYCallback.sol/IPBulkSellerCallback.dbg.json +1 -1
  223. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
  224. package/build/artifacts/contracts/interfaces/IPFeeDistributorV2.sol/IPFeeDistributorV2.dbg.json +1 -1
  225. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
  226. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  227. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  228. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  229. package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.dbg.json +1 -1
  230. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  231. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  232. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  233. package/build/artifacts/contracts/interfaces/IPMiniDiamond.sol/IPMiniDiamond.dbg.json +1 -1
  234. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
  235. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
  236. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  237. package/build/artifacts/contracts/interfaces/IPPtOracle.sol/IPPtOracle.dbg.json +1 -1
  238. package/build/artifacts/contracts/interfaces/IPRouterHelper.sol/IPRouterHelper.dbg.json +1 -1
  239. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  240. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  241. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  242. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  243. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  244. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  245. package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.dbg.json +1 -1
  246. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  247. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  248. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  249. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  250. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
  251. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
  252. package/build/artifacts/contracts/interfaces/IStargateLP.sol/IStargateLP.dbg.json +1 -1
  253. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
  254. package/build/artifacts/contracts/interfaces/IStargateStaking.sol/IStargateStaking.dbg.json +1 -1
  255. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  256. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  257. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.dbg.json +4 -0
  258. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.json +874 -0
  259. package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.dbg.json +4 -0
  260. package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.json +408 -0
  261. package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.dbg.json +1 -1
  262. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
  263. package/build/artifacts/contracts/offchain-helpers/BoringLpSeller.sol/BoringLpSeller.dbg.json +4 -0
  264. package/build/artifacts/contracts/{router/swap-aggregator/kyberswap/arbitrum/KyberHelperArbitrum.sol/KyberHelperArbitrum.json → offchain-helpers/BoringLpSeller.sol/BoringLpSeller.json} +2 -2
  265. package/build/artifacts/contracts/offchain-helpers/BoringPtSeller.sol/BoringPtSeller.dbg.json +1 -1
  266. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.dbg.json +1 -1
  267. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.json +2 -2
  268. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  269. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  270. package/build/artifacts/contracts/offchain-helpers/EmptyUUPS.sol/EmptyUUPS.dbg.json +1 -1
  271. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.dbg.json +4 -0
  272. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.json +10 -0
  273. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +1 -1
  274. package/build/artifacts/contracts/offchain-helpers/PendleMulticallV1.sol/PendleMulticallV1.dbg.json +1 -1
  275. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  276. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.json +2 -2
  277. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  278. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.json +2 -2
  279. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  280. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.json +2 -2
  281. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  282. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.json +2 -2
  283. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  284. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.json +2 -2
  285. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  286. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.json +2 -2
  287. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  288. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.json +2 -2
  289. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  290. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +1 -1
  291. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.json +2 -2
  292. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.dbg.json +1 -1
  293. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.json +2 -2
  294. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.dbg.json +1 -1
  295. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.json +2 -2
  296. package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.dbg.json +4 -0
  297. package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.json +166 -0
  298. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.dbg.json +1 -1
  299. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.json +2 -2
  300. package/build/artifacts/contracts/oracles/samples/PendlePtUsdChainlinkOracle.sol/PendlePtUsdChainlinkOracle.dbg.json +1 -1
  301. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  302. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
  303. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  304. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
  305. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  306. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  307. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
  308. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  309. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
  310. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  311. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
  312. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.dbg.json +1 -1
  313. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.json +2 -2
  314. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +1 -1
  315. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  316. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  317. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  318. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  319. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  320. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  321. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +1 -1
  322. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +4 -0
  323. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.json +60 -0
  324. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +4 -0
  325. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{arbitrum/IAggregationExecutor.sol → IAggregationExecutor.sol}/IAggregationExecutor.json +1 -1
  326. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IExecutorHelper.sol/IExecutorHelper.dbg.json +4 -0
  327. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{arbitrum/IExecutorHelper1.sol/IExecutorHelper1.json → IExecutorHelper.sol/IExecutorHelper.json} +147 -2
  328. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IHashflow.sol/IHashflow.dbg.json +4 -0
  329. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{ethereum/IHashflow.sol → IHashflow.sol}/IHashflow.json +1 -1
  330. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +4 -0
  331. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{arbitrum/IMetaAggregationRouterV2.sol → IMetaAggregationRouterV2.sol}/IMetaAggregationRouterV2.json +1 -1
  332. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberInputScalingHelper.sol/KyberInputScalingHelper.dbg.json +4 -0
  333. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/{ethereum/KyberHelperEthereum.sol/KyberHelperEthereum.json → KyberInputScalingHelper.sol/KyberInputScalingHelper.json} +2 -2
  334. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScalingDataLib.sol/ScalingDataLib.dbg.json +4 -0
  335. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScalingDataLib.sol/ScalingDataLib.json +10 -0
  336. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol +153 -0
  337. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol +289 -0
  338. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol +629 -0
  339. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol +113 -0
  340. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol +381 -0
  341. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol +206 -0
  342. package/contracts/core/TradingBot/BotActionCallback.sol +112 -0
  343. package/contracts/core/TradingBot/BotActionHelper.sol +138 -0
  344. package/contracts/core/TradingBot/BotDecisionLib.sol +272 -0
  345. package/contracts/core/TradingBot/BotSimulationLib.sol +115 -0
  346. package/contracts/core/TradingBot/LongYieldTradingBot.sol +148 -0
  347. package/contracts/core/TradingBot/MarketExtLib.sol +246 -0
  348. package/contracts/core/TradingBot/README.md +151 -0
  349. package/contracts/core/TradingBot/TradingBotBase.sol +120 -0
  350. package/contracts/core/TradingBot/TradingBotOffchain.sol +131 -0
  351. package/contracts/core/libraries/Errors.sol +12 -0
  352. package/contracts/core/libraries/TokenAmountLib.sol +47 -0
  353. package/contracts/interfaces/Balancer/IERC4626LinearPool.sol +181 -0
  354. package/contracts/interfaces/Balancer/IVault.sol +13 -0
  355. package/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol +89 -0
  356. package/contracts/interfaces/TradingBot/ITradingBotBase.sol +40 -0
  357. package/contracts/offchain-helpers/BoringLpSeller.sol +47 -0
  358. package/contracts/oracles/samples/PendleLpGlpOracle.sol +49 -0
  359. package/deployments/1-markets/BALANCER-LP-AURA-BBAWETHSWETH-SEP-26-2024.json +10 -0
  360. package/deployments/1-markets/STETH-DEC2027.json +10 -0
  361. package/deployments/merkle-distribution/2023-05-25.json +3749 -0
  362. package/package.json +1 -1
  363. package/typechain-types/BbAPoolHelper.ts +89 -0
  364. package/typechain-types/BbAWethHelper.ts +89 -0
  365. package/typechain-types/BotActionCallback.ts +723 -0
  366. package/typechain-types/BotActionHelper.ts +723 -0
  367. package/typechain-types/CamelotV1LpHelper.ts +203 -0
  368. package/typechain-types/CamelotV1Preview.ts +431 -0
  369. package/typechain-types/ComposableStablePreview.ts +501 -0
  370. package/typechain-types/ICamelotSY.ts +100 -0
  371. package/typechain-types/IERC4626LinearPool.ts +1649 -0
  372. package/typechain-types/IExecutorHelper.ts +863 -0
  373. package/typechain-types/ILongYieldTradingBot.ts +644 -0
  374. package/typechain-types/IPendlePreviewHelper.ts +147 -0
  375. package/typechain-types/IThenaFactory.ts +245 -0
  376. package/typechain-types/IThenaGaugeV2.ts +206 -0
  377. package/typechain-types/IThenaPair.ts +579 -0
  378. package/typechain-types/IThenaRouter.ts +313 -0
  379. package/typechain-types/IThenaSY.ts +81 -0
  380. package/typechain-types/ITradingBotBase.ts +483 -0
  381. package/typechain-types/LinearPreview.ts +402 -0
  382. package/typechain-types/LongYieldTradingBot.ts +1482 -0
  383. package/typechain-types/MarketExtLib.ts +81 -0
  384. package/typechain-types/PendleArbitrumStakedEthSY.ts +1222 -0
  385. package/typechain-types/PendleAuraBbAWethSwethSY.ts +1532 -0
  386. package/typechain-types/PendleCamelotV1SY.ts +245 -0
  387. package/typechain-types/PendleLpGlpOracle.ts +145 -0
  388. package/typechain-types/PendleSwap.ts +126 -0
  389. package/typechain-types/PendleThenaSY.ts +1445 -0
  390. package/typechain-types/{PendleCamelotV1RouterHelper.ts → ThenaLpHelper.ts} +44 -5
  391. package/typechain-types/{CamelotV1PreviewHelper.ts → ThenaPreview.ts} +23 -63
  392. package/typechain-types/TradingBotBase.ts +679 -0
  393. package/typechain-types/TradingBotOffchain.ts +544 -0
  394. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
  395. package/typechain-types/factories/ActionInfoStatic__factory.ts +1 -1
  396. package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +1 -1
  397. package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +1 -1
  398. package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +1 -1
  399. package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
  400. package/typechain-types/factories/ActionStorageStatic__factory.ts +1 -1
  401. package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
  402. package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
  403. package/typechain-types/factories/ActionVePendleStatic__factory.ts +1 -1
  404. package/typechain-types/factories/BbAPoolHelper__factory.ts +36 -0
  405. package/typechain-types/factories/BbAWethHelper__factory.ts +36 -0
  406. package/typechain-types/factories/BotActionCallback__factory.ts +646 -0
  407. package/typechain-types/factories/BotActionHelper__factory.ts +646 -0
  408. package/typechain-types/factories/Broadcaster__factory.ts +1 -1
  409. package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
  410. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  411. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  412. package/typechain-types/factories/CamelotV1LpHelper__factory.ts +143 -0
  413. package/typechain-types/factories/CamelotV1Preview__factory.ts +309 -0
  414. package/typechain-types/factories/ComposableStablePreview__factory.ts +379 -0
  415. package/typechain-types/factories/Errors__factory.ts +150 -1
  416. package/typechain-types/factories/ICamelotSY__factory.ts +49 -0
  417. package/typechain-types/factories/IERC4626LinearPool__factory.ts +1187 -0
  418. package/typechain-types/factories/IExecutorHelper__factory.ts +548 -0
  419. package/typechain-types/factories/ILongYieldTradingBot__factory.ts +893 -0
  420. package/typechain-types/factories/IPendlePreviewHelper__factory.ts +78 -0
  421. package/typechain-types/factories/IThenaFactory__factory.ts +164 -0
  422. package/typechain-types/factories/IThenaGaugeV2__factory.ts +83 -0
  423. package/typechain-types/factories/IThenaPair__factory.ts +421 -0
  424. package/typechain-types/factories/IThenaRouter__factory.ts +200 -0
  425. package/typechain-types/factories/IThenaSY__factory.ts +36 -0
  426. package/typechain-types/factories/ITradingBotBase__factory.ts +423 -0
  427. package/typechain-types/factories/LinearPreview__factory.ts +284 -0
  428. package/typechain-types/factories/LongYieldTradingBot__factory.ts +1958 -0
  429. package/typechain-types/factories/MarketExtLib__factory.ts +74 -0
  430. package/typechain-types/factories/MetaStablePreview__factory.ts +1 -1
  431. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  432. package/typechain-types/factories/PendleArbitrumStakedEthSY__factory.ts +1068 -0
  433. package/typechain-types/factories/PendleAuraBbAWethSwethSY__factory.ts +1266 -0
  434. package/typechain-types/factories/PendleAuraWethAnkrethSYV2__factory.ts +1 -1
  435. package/typechain-types/factories/PendleAuraWethRocketEthSYV2__factory.ts +1 -1
  436. package/typechain-types/factories/PendleAuraWethStafiEthSY__factory.ts +1 -1
  437. package/typechain-types/factories/PendleAuraWethWstethSYV2__factory.ts +1 -1
  438. package/typechain-types/factories/PendleCamelotV1SY__factory.ts +156 -9
  439. package/typechain-types/factories/PendleCamelotV1VolatileSY__factory.ts +1 -1
  440. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
  441. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
  442. package/typechain-types/factories/PendleFeeDistributorV2__factory.ts +1 -1
  443. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  444. package/typechain-types/factories/PendleGDaiSY__factory.ts +1 -1
  445. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  446. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  447. package/typechain-types/factories/PendleGlpSY__factory.ts +1 -1
  448. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
  449. package/typechain-types/factories/PendleLpGlpOracle__factory.ts +246 -0
  450. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  451. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  452. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  453. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  454. package/typechain-types/factories/PendlePrincipalTokenV2__factory.ts +1 -1
  455. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  456. package/typechain-types/factories/PendlePtGlpOracle__factory.ts +1 -1
  457. package/typechain-types/factories/PendlePtOracle__factory.ts +1 -1
  458. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  459. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  460. package/typechain-types/factories/PendleRouterHelper__factory.ts +1 -1
  461. package/typechain-types/factories/PendleRouterStatic__factory.ts +1 -1
  462. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  463. package/typechain-types/factories/PendleSfrxEthSY__factory.ts +1 -1
  464. package/typechain-types/factories/PendleStargateLPSY__factory.ts +1 -1
  465. package/typechain-types/factories/PendleSwap__factory.ts +110 -0
  466. package/typechain-types/factories/PendleThenaSY__factory.ts +1268 -0
  467. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  468. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  469. package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +1 -1
  470. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  471. package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1 -1
  472. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  473. package/typechain-types/factories/SAPE__factory.ts +1 -1
  474. package/typechain-types/factories/{PendleCamelotV1RouterHelper__factory.ts → ThenaLpHelper__factory.ts} +45 -13
  475. package/typechain-types/factories/ThenaPreview__factory.ts +306 -0
  476. package/typechain-types/factories/TradingBotBase__factory.ts +596 -0
  477. package/typechain-types/factories/TradingBotOffchain__factory.ts +1124 -0
  478. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  479. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  480. package/typechain-types/hardhat.d.ts +143 -71
  481. package/typechain-types/index.ts +34 -12
  482. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.dbg.json +0 -4
  483. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.json +0 -160
  484. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.dbg.json +0 -4
  485. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.json +0 -10
  486. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapArbitrum.sol/PendleSwapArbitrum.dbg.json +0 -4
  487. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapArbitrum.sol/PendleSwapArbitrum.json +0 -76
  488. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapEthereum.sol/PendleSwapEthereum.dbg.json +0 -4
  489. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapEthereum.sol/PendleSwapEthereum.json +0 -76
  490. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +0 -4
  491. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IExecutorHelper1.sol/IExecutorHelper1.dbg.json +0 -4
  492. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IExecutorHelper2.sol/IExecutorHelper2.dbg.json +0 -4
  493. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IExecutorHelper2.sol/IExecutorHelper2.json +0 -40
  494. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IHashflow.sol/IHashflow.dbg.json +0 -4
  495. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IHashflow.sol/IHashflow.json +0 -101
  496. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +0 -4
  497. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/KyberHelperArbitrum.sol/KyberHelperArbitrum.dbg.json +0 -4
  498. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/ScaleDataHelperArbitrum.sol/ScaleDataHelperArbitrum.dbg.json +0 -4
  499. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/arbitrum/ScaleDataHelperArbitrum.sol/ScaleDataHelperArbitrum.json +0 -10
  500. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +0 -4
  501. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IAggregationExecutor.sol/IAggregationExecutor.json +0 -65
  502. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.dbg.json +0 -4
  503. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.json +0 -388
  504. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IHashflow.sol/IHashflow.dbg.json +0 -4
  505. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +0 -4
  506. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.json +0 -215
  507. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/KyberHelperEthereum.sol/KyberHelperEthereum.dbg.json +0 -4
  508. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/ScaleDataHelperEthereum.sol/ScaleDataHelperEthereum.dbg.json +0 -4
  509. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ethereum/ScaleDataHelperEthereum.sol/ScaleDataHelperEthereum.json +0 -10
  510. package/typechain-types/IPVotingEscrowSidechain.ts +0 -155
  511. package/typechain-types/PendleCamelotRewardHelper.ts +0 -347
  512. package/typechain-types/factories/CamelotV1PreviewHelper__factory.ts +0 -400
  513. package/typechain-types/factories/IPVotingEscrowSidechain__factory.ts +0 -112
  514. package/typechain-types/factories/PendleCamelotRewardHelper__factory.ts +0 -317
@@ -0,0 +1,112 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ import "../../interfaces/IPMarketSwapCallback.sol";
5
+ import "./BotDecisionLib.sol";
6
+ import "./TradingBotBase.sol";
7
+
8
+ abstract contract BotActionCallback is TradingBotBase, IPMarketSwapCallback {
9
+ using Math for int256;
10
+
11
+ modifier onlyMarket(address caller) {
12
+ if (caller != market) revert Errors.BotCallbackNotMarket(caller);
13
+ _;
14
+ }
15
+
16
+ function swapCallback(
17
+ int256 ptToAccount,
18
+ int256 syToAccount,
19
+ bytes calldata data
20
+ ) external override onlyMarket(msg.sender) {
21
+ ActionType swapType = _getActionType(data);
22
+ if (swapType == ActionType.AddLiqFromYt) {
23
+ _callbackAddLiqFromYt(ptToAccount, syToAccount, data);
24
+ } else if (swapType == ActionType.RemoveLiqToYt) {
25
+ _callbackRemoveLiqToYt(ptToAccount, syToAccount, data);
26
+ } else {
27
+ assert(false);
28
+ }
29
+ }
30
+
31
+ /// ------------------------------------------------------------
32
+ /// AddLiqFromYt
33
+ /// ------------------------------------------------------------
34
+
35
+ function _callbackAddLiqFromYt(
36
+ int256 ptToAccount,
37
+ int256 /*syToAccount*/,
38
+ bytes calldata data
39
+ ) internal {
40
+ uint256 netPyRedeemSy = _decodeAddLiqFromYt(data);
41
+
42
+ _transferOut(PT, YT, netPyRedeemSy);
43
+
44
+ bool needToBurnYt = (!IPYieldToken(YT).isExpired());
45
+ if (needToBurnYt) _transferOut(YT, YT, netPyRedeemSy);
46
+
47
+ IPYieldToken(YT).redeemPY(market); // all SY goes to market to repay and mint LP
48
+
49
+ _transferOut(PT, market, ptToAccount.Uint() - netPyRedeemSy); // remaining PT goes to market to mint LP
50
+ }
51
+
52
+ function _encodeAddLiqFromYt(uint256 netPyRedeemSy) internal pure returns (bytes memory res) {
53
+ res = new bytes(64);
54
+ uint256 actionType = uint256(ActionType.AddLiqFromYt);
55
+
56
+ assembly {
57
+ mstore(add(res, 32), actionType)
58
+ mstore(add(res, 64), netPyRedeemSy)
59
+ }
60
+ }
61
+
62
+ function _decodeAddLiqFromYt(
63
+ bytes calldata data
64
+ ) internal pure returns (uint256 netPyRedeemSy) {
65
+ assembly {
66
+ // first 32 bytes is ActionType
67
+ netPyRedeemSy := calldataload(add(data.offset, 32))
68
+ }
69
+ }
70
+
71
+ /// ------------------------------------------------------------
72
+ /// RemoveLiqToYt
73
+ /// ------------------------------------------------------------
74
+
75
+ function _callbackRemoveLiqToYt(
76
+ int256 /*ptToAccount*/,
77
+ int256 /*syToAccount*/,
78
+ bytes calldata data
79
+ ) internal {
80
+ uint256 minYtOut = _decodeRemoveLiqToYt(data);
81
+
82
+ uint256 netYtOut = IPYieldToken(YT).mintPY(market, address(this)); // PT goes to market to repay
83
+ if (netYtOut < minYtOut) revert Errors.BotInsufficientYtOut(netYtOut, minYtOut); // 2nd check
84
+ }
85
+
86
+ function _encodeRemoveLiqToYt(uint256 minYtOut) internal pure returns (bytes memory res) {
87
+ res = new bytes(64);
88
+ uint256 actionType = uint256(ActionType.RemoveLiqToYt);
89
+
90
+ assembly {
91
+ mstore(add(res, 32), actionType)
92
+ mstore(add(res, 64), minYtOut)
93
+ }
94
+ }
95
+
96
+ function _decodeRemoveLiqToYt(bytes calldata data) internal pure returns (uint256 minYtOut) {
97
+ assembly {
98
+ // first 32 bytes is ActionType
99
+ minYtOut := calldataload(add(data.offset, 32))
100
+ }
101
+ }
102
+
103
+ /// ------------------------------------------------------------
104
+ /// Misc functions
105
+ /// ------------------------------------------------------------
106
+
107
+ function _getActionType(bytes calldata data) internal pure returns (ActionType actionType) {
108
+ assembly {
109
+ actionType := calldataload(data.offset)
110
+ }
111
+ }
112
+ }
@@ -0,0 +1,138 @@
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 _swapSyToYt(
17
+ address router,
18
+ uint256 exactYtOut,
19
+ uint256 maxSyIn
20
+ ) internal returns (uint256 netSyIn) {
21
+ (netSyIn, ) = IPAllAction(router).swapSyForExactYt(
22
+ address(this),
23
+ market,
24
+ exactYtOut,
25
+ maxSyIn
26
+ );
27
+ }
28
+
29
+ function _addLiqKeepYt(
30
+ address router,
31
+ uint256 netSyIn,
32
+ uint256 minLpOut,
33
+ uint256 minYtOut
34
+ ) internal returns (uint256 /*netLpOut*/, uint256 /*netYtOut*/) {
35
+ return
36
+ IPAllAction(router).addLiquiditySingleSyKeepYt(
37
+ address(this),
38
+ market,
39
+ netSyIn,
40
+ minLpOut,
41
+ minYtOut
42
+ );
43
+ }
44
+
45
+ /// @dev Mimics PendleRouter's addLiquiditySingleSy
46
+ function _addLiqFromSy(
47
+ uint256 netPtFromSwap,
48
+ uint256 minLpOut,
49
+ uint256 maxSyIn
50
+ ) internal returns (uint256 netLpOut, uint256 netSyIn) {
51
+ MarketState memory state = IPMarket(market).readState(address(this));
52
+ PYIndex index = IPYieldToken(YT).newIndex();
53
+
54
+ (uint256 netSyToSwap, , ) = state.swapSyForExactPt(index, netPtFromSwap, block.timestamp);
55
+ (, , uint256 netSyToAdd, ) = state.addLiquidity(
56
+ maxSyIn - netSyToSwap,
57
+ netPtFromSwap,
58
+ block.timestamp
59
+ ); // ensures netSyToAdd <= maxSyIn - netSyToSwap
60
+ netSyIn = netSyToSwap + netSyToAdd;
61
+
62
+ _transferOut(SY, market, netSyIn);
63
+ IPMarket(market).swapSyForExactPt(market, netPtFromSwap, EMPTY_BYTES); // PT goes to market for LP
64
+ (netLpOut, , ) = IPMarket(market).mint(address(this), netSyToAdd, netPtFromSwap);
65
+
66
+ if (netLpOut < minLpOut) revert Errors.BotInsufficientLpOut(netLpOut, minLpOut);
67
+ }
68
+
69
+ function _addLiqFromYt(
70
+ uint256 netPtFromSwap,
71
+ uint256 minLpOut,
72
+ uint256 maxYtIn
73
+ ) internal returns (uint256 netLpOut, uint256 netYtIn) {
74
+ MarketState memory state = IPMarket(market).readState(address(this));
75
+ PYIndex index = IPYieldToken(YT).newIndex();
76
+
77
+ (uint256 netSyToSwap, , ) = state.swapSyForExactPt(index, netPtFromSwap, block.timestamp);
78
+
79
+ // (1) --> netPtRedeemSy = netPtFromSwap - netPtToAdd
80
+ // (2) --> (netPtRedeemSy * ONE / pyIndex) = (netPtToAdd * totalSy / totalPt) + netSyToSwap
81
+ // (2) * pyIndex / ONE --> netPtRedeemSy = (netPtToAdd * totalSy / totalPt * pyIndex / ONE) + netSyToSwap * pyIndex / ONE
82
+ // ==> netPtFromSwap - netPtToAdd = (netPtToAdd * totalSy / totalPt * pyIndex / ONE) + netSyToSwap * pyIndex / ONE
83
+ // ==> netPtToAdd * (ONE + totalSy * pyIndex / totalPt) = netPtFromSwap * ONE - netSyToSwap * pyIndex
84
+
85
+ uint256 pyIndex = PYIndex.unwrap(index);
86
+ uint256 netPtToAddNumerator = (netPtFromSwap * Math.ONE - netSyToSwap * pyIndex);
87
+ uint256 netPtToAddDenominator = (Math.ONE +
88
+ (state.totalSy.Uint() * pyIndex) /
89
+ state.totalPt.Uint());
90
+ uint256 netPtToAdd = netPtToAddNumerator / netPtToAddDenominator;
91
+
92
+ netYtIn = netPtFromSwap - netPtToAdd; // = netPtRedeemSy
93
+ if (netYtIn > maxYtIn) revert Errors.BotExceededLimitYtIn(netYtIn, maxYtIn);
94
+
95
+ IPMarket(market).swapSyForExactPt(
96
+ address(this),
97
+ netPtFromSwap,
98
+ _encodeAddLiqFromYt(netYtIn)
99
+ );
100
+
101
+ uint256 netSyFromPy = index.assetToSy(netYtIn);
102
+ uint256 netSyToAdd = netSyFromPy - netSyToSwap;
103
+
104
+ (netLpOut, , ) = IPMarket(market).mint(address(this), netSyToAdd, netPtToAdd);
105
+ if (netLpOut < minLpOut) revert Errors.BotInsufficientLpOut(netLpOut, minLpOut);
106
+ }
107
+
108
+ /// @dev Behaves like PendleRouter's removeLiquidityDualSyAndPt then swapExactPtForYt
109
+ /// @param guessTotalPtToSwap Same like for PendleRouter's swapExactPtForYt
110
+ function _removeLiqToYt(
111
+ uint256 netLpToRemove,
112
+ ApproxParams memory guessTotalPtToSwap,
113
+ uint256 minYtOut
114
+ ) internal returns (uint256 netYtOut) {
115
+ _transferOut(market, market, netLpToRemove);
116
+ (uint256 netSyFromLp, uint256 netPtFromLp) = IPMarket(market).burn(
117
+ YT,
118
+ market,
119
+ netLpToRemove
120
+ ); // SY goes to YT to mint PY, PT goes to market to swap
121
+
122
+ MarketState memory state = IPMarket(market).readState(address(this));
123
+ PYIndex index = IPYieldToken(YT).newIndex();
124
+
125
+ uint256 netPtFromSy = index.syToAsset(netSyFromLp);
126
+ (uint256 netYtFromSwap, uint256 totalPtToSwap, ) = state.approxSwapExactPtForYt(
127
+ index,
128
+ netPtFromLp + netPtFromSy,
129
+ block.timestamp,
130
+ guessTotalPtToSwap
131
+ );
132
+
133
+ netYtOut = netYtFromSwap + netPtFromSy;
134
+ if (netYtOut < minYtOut) revert Errors.BotInsufficientYtOut(netYtOut, minYtOut);
135
+
136
+ IPMarket(market).swapExactPtForSy(YT, totalPtToSwap, _encodeRemoveLiqToYt(minYtOut)); // SY goes to YT to mint PY
137
+ }
138
+ }
@@ -0,0 +1,272 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity ^0.8.0;
3
+
4
+ import "./BotSimulationLib.sol";
5
+ import "../libraries/Errors.sol";
6
+
7
+ struct LongTradingSpecs {
8
+ uint256 lowerIyLimit; // apeYtApy
9
+ uint256 upperIyLimit; // sellYtApy
10
+ uint256 floatingSyRatioLimit; // r
11
+ uint256 ytPtRatioLimit; // ytPtRatio (x)
12
+ }
13
+
14
+ enum ActionType {
15
+ SwapSyToYt, // Buy YT with SY
16
+ AddLiqKeepYt, // ZPI Zap
17
+ AddLiqFromSy, // Single sided LP
18
+ AddLiqFromYt, // Sell YT for LP
19
+ RemoveLiqToYt, // Zap out to YT,
20
+ NONE
21
+ }
22
+
23
+ enum StrategyFlag {
24
+ GOOD,
25
+ TOO_LOW,
26
+ TOO_HIGH
27
+ }
28
+
29
+ struct StrategyState {
30
+ StrategyFlag iyFlag;
31
+ StrategyFlag syRatioFlag;
32
+ }
33
+
34
+ library BotDecisionLib {
35
+ using MarketExtLib for MarketExtState;
36
+ using MarketExtLib for ApproxParams;
37
+ using BotSimulationLib for BotState;
38
+ using Math for uint256;
39
+
40
+ enum RebalanceResult {
41
+ FAIL,
42
+ OLD_STATE,
43
+ NEW_STATE
44
+ }
45
+
46
+ struct RebalanceDetails {
47
+ BotState bot;
48
+ MarketExtState marketExt;
49
+ LongTradingSpecs specs;
50
+ ActionType action;
51
+ StrategyState oldState;
52
+ }
53
+
54
+ /**
55
+ * Finds the smallest paramater such that the bot reaches a new state, otherwise finds the
56
+ * largest parameter possible that doesn't fail.
57
+ *
58
+ * @param botParams ApproxParams for this binary search function
59
+ * @param oldState The initial StrategyState, to be moved away from
60
+ * @param intParams ApproxParams for internal action's approximation (e.g. for router's swap)
61
+ * @dev For `botParams`, eps = the precision such that slightly lower
62
+ * ((return value) * (1 - eps)) does not reach a new state
63
+ *
64
+ * - Returns `botParams.guessOffchain` if verifies that it reaches a new state,
65
+ * and slightly lower does not reach a new state.
66
+ * - Reverts if `botParams.guessMin` is invalid, or returns `botParams.guessMin` if reaches a
67
+ * new state
68
+ * - Returns `botParams.guessMax` if it is valid & does not reach a new state
69
+ * - Otherwise, binary search for `guess` such that it reaches a new state, and slightly lower
70
+ * does not reach a new state
71
+ *
72
+ */
73
+ function binarySearchUntilSwitchState(
74
+ BotState memory bot,
75
+ MarketExtState memory marketExt,
76
+ LongTradingSpecs memory specs,
77
+ ActionType action,
78
+ StrategyState memory oldState,
79
+ ApproxParams memory botParams,
80
+ ApproxParams memory intParams
81
+ ) internal pure returns (uint256) {
82
+ RebalanceDetails memory rebalance = RebalanceDetails(
83
+ bot,
84
+ marketExt,
85
+ specs,
86
+ action,
87
+ oldState
88
+ );
89
+
90
+ if (botParams.guessOffchain != 0) {
91
+ uint256 guessOffchainMinusDelta = botParams.guessOffchain.mulDown(
92
+ Math.ONE - botParams.eps
93
+ );
94
+ if (
95
+ _rebalanceResult(rebalance, botParams.guessOffchain, intParams) ==
96
+ RebalanceResult.NEW_STATE &&
97
+ _rebalanceResult(rebalance, guessOffchainMinusDelta, intParams) ==
98
+ RebalanceResult.OLD_STATE
99
+ ) return botParams.guessOffchain;
100
+ }
101
+
102
+ {
103
+ uint256 guessUpperBound = _weakUpperBound(bot, marketExt, action);
104
+ if (botParams.guessMax > guessUpperBound) botParams.guessMax = guessUpperBound;
105
+ if (botParams.guessMin > botParams.guessMax)
106
+ revert Errors.BotBinarySearchInvalidRange(
107
+ uint256(action),
108
+ botParams.guessMin,
109
+ botParams.guessMax
110
+ );
111
+
112
+ if (
113
+ _rebalanceResult(rebalance, botParams.guessMax, intParams) ==
114
+ RebalanceResult.OLD_STATE
115
+ ) return botParams.guessMax;
116
+ }
117
+
118
+ {
119
+ RebalanceResult guessMinResult = _rebalanceResult(
120
+ rebalance,
121
+ botParams.guessMin,
122
+ intParams
123
+ );
124
+ if (guessMinResult == RebalanceResult.FAIL)
125
+ revert Errors.BotBinarySearchGuessMinInvalid(uint256(action), botParams.guessMin);
126
+ if (guessMinResult == RebalanceResult.NEW_STATE) return botParams.guessMin;
127
+ }
128
+
129
+ for (uint256 iter = 0; iter < botParams.maxIteration; ++iter) {
130
+ uint256 guess = botParams.guessMin + (botParams.guessMax - botParams.guessMin) / 2;
131
+
132
+ if (_rebalanceResult(rebalance, guess, intParams) == RebalanceResult.OLD_STATE) {
133
+ botParams.guessMin = guess;
134
+ } else {
135
+ botParams.guessMax = guess;
136
+ }
137
+
138
+ if (Math.isASmallerApproxB(botParams.guessMin, botParams.guessMax, botParams.eps)) {
139
+ if (
140
+ _rebalanceResult(rebalance, botParams.guessMax, intParams) ==
141
+ RebalanceResult.FAIL
142
+ ) return botParams.guessMin;
143
+
144
+ return botParams.guessMax;
145
+ }
146
+ }
147
+
148
+ revert Errors.BotBinarySearchFail();
149
+ }
150
+
151
+ function _rebalanceResult(
152
+ RebalanceDetails memory rebalance,
153
+ uint256 botParam,
154
+ ApproxParams memory intParams
155
+ ) private pure returns (RebalanceResult) {
156
+ (bool success, StrategyState memory newState) = _stateAfterRebalance(
157
+ rebalance,
158
+ botParam,
159
+ intParams
160
+ );
161
+
162
+ if (!success) return RebalanceResult.FAIL;
163
+ if (_sameStrategyState(rebalance.oldState, newState)) return RebalanceResult.OLD_STATE;
164
+ return RebalanceResult.NEW_STATE;
165
+ }
166
+
167
+ function _sameStrategyState(
168
+ StrategyState memory initialState,
169
+ StrategyState memory otherState
170
+ ) private pure returns (bool) {
171
+ return
172
+ (initialState.iyFlag == otherState.iyFlag) &&
173
+ (initialState.syRatioFlag == otherState.syRatioFlag);
174
+ }
175
+
176
+ function _stateAfterRebalance(
177
+ RebalanceDetails memory rebalance,
178
+ uint256 botParam,
179
+ ApproxParams memory intParams
180
+ ) private pure returns (bool success, StrategyState memory currentState) {
181
+ BotState memory botClone = rebalance.bot.clone();
182
+ MarketExtState memory marketExtClone = rebalance.marketExt.clone();
183
+
184
+ if (rebalance.action == ActionType.SwapSyToYt) {
185
+ success = botClone.swapSyToYt(marketExtClone, botParam);
186
+ } else if (rebalance.action == ActionType.AddLiqKeepYt) {
187
+ success = botClone.addLiqKeepYt(marketExtClone, botParam);
188
+ } else if (rebalance.action == ActionType.AddLiqFromSy) {
189
+ success = botClone.addLiqFromSy(marketExtClone, botParam);
190
+ } else if (rebalance.action == ActionType.AddLiqFromYt) {
191
+ success = botClone.addLiqFromYt(marketExtClone, botParam);
192
+ } else if (rebalance.action == ActionType.RemoveLiqToYt) {
193
+ success = botClone.removeLiqToYt(marketExtClone, botParam, intParams.clone());
194
+ } else {
195
+ success = false;
196
+ }
197
+
198
+ if (success) {
199
+ currentState = strategyState(botClone, marketExtClone, rebalance.specs);
200
+ }
201
+ }
202
+
203
+ /// @dev Gives a weak upper bound so that MarketExtLib's simulation doesn't revert
204
+ function _weakUpperBound(
205
+ BotState memory bot,
206
+ MarketExtState memory marketExt,
207
+ ActionType action
208
+ ) private pure returns (uint256) {
209
+ if (action == ActionType.SwapSyToYt) {
210
+ return marketExt.calcMaxPtIn();
211
+ } else if (action == ActionType.AddLiqKeepYt) {
212
+ return bot.syBalance;
213
+ } else if (action == ActionType.AddLiqFromSy) {
214
+ return marketExt.calcMaxPtOut();
215
+ } else if (action == ActionType.AddLiqFromYt) {
216
+ return marketExt.calcMaxPtOut();
217
+ } else if (action == ActionType.RemoveLiqToYt) {
218
+ return bot.lpBalance;
219
+ } else {
220
+ return 0;
221
+ }
222
+ }
223
+
224
+ function strategyState(
225
+ BotState memory bot,
226
+ MarketExtState memory marketExt,
227
+ LongTradingSpecs memory specs
228
+ ) internal pure returns (StrategyState memory currentState) {
229
+ uint256 iy = marketExt.impliedYield();
230
+ (, uint256 ptInLp) = marketExt.previewAssetsFromLp(bot.lpBalance);
231
+ uint256 currentYtPtRatio = (
232
+ ptInLp == 0 ? type(uint256).max : bot.ytBalance.divDown(ptInLp)
233
+ );
234
+
235
+ if (iy < specs.lowerIyLimit) {
236
+ currentState.iyFlag = StrategyFlag.TOO_LOW;
237
+ } else if (specs.upperIyLimit < iy && currentYtPtRatio > specs.ytPtRatioLimit) {
238
+ currentState.iyFlag = StrategyFlag.TOO_HIGH;
239
+ } else {
240
+ currentState.iyFlag = StrategyFlag.GOOD;
241
+ }
242
+
243
+ uint256 currentSyRatio = bot.syBalance.divDown(bot.tvlInSy(marketExt));
244
+ if (currentSyRatio > specs.floatingSyRatioLimit) {
245
+ currentState.syRatioFlag = StrategyFlag.TOO_HIGH;
246
+ } else {
247
+ currentState.syRatioFlag = StrategyFlag.GOOD;
248
+ }
249
+ }
250
+
251
+ function actionToTake(StrategyState memory currentState) internal pure returns (ActionType) {
252
+ if (currentState.iyFlag == StrategyFlag.TOO_LOW) {
253
+ if (currentState.syRatioFlag == StrategyFlag.TOO_HIGH) {
254
+ return ActionType.SwapSyToYt;
255
+ } else {
256
+ return ActionType.RemoveLiqToYt;
257
+ }
258
+ } else if (currentState.iyFlag == StrategyFlag.GOOD) {
259
+ if (currentState.syRatioFlag == StrategyFlag.TOO_HIGH) {
260
+ return ActionType.AddLiqKeepYt;
261
+ } else {
262
+ return ActionType.NONE;
263
+ }
264
+ } else {
265
+ if (currentState.syRatioFlag == StrategyFlag.TOO_HIGH) {
266
+ return ActionType.AddLiqFromSy;
267
+ } else {
268
+ return ActionType.AddLiqFromYt;
269
+ }
270
+ }
271
+ }
272
+ }
@@ -0,0 +1,115 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity ^0.8.0;
3
+
4
+ import "./MarketExtLib.sol";
5
+
6
+ struct BotState {
7
+ uint256 lpBalance;
8
+ uint256 ytBalance;
9
+ uint256 syBalance;
10
+ }
11
+
12
+ library BotSimulationLib {
13
+ using MarketMathCore for MarketState;
14
+ using MarketExtLib for MarketExtState;
15
+ using Math for uint256;
16
+ using Math for int256;
17
+
18
+ function swapSyToYt(
19
+ BotState memory bot,
20
+ MarketExtState memory marketExt,
21
+ uint256 exactYtOut
22
+ ) internal pure returns (bool /*success*/) {
23
+ uint256 netSyIn = marketExt.swapSyToYt(exactYtOut);
24
+
25
+ if (netSyIn > bot.syBalance) return false;
26
+
27
+ bot.syBalance -= netSyIn;
28
+ bot.ytBalance += exactYtOut;
29
+
30
+ return true;
31
+ }
32
+
33
+ function addLiqKeepYt(
34
+ BotState memory bot,
35
+ MarketExtState memory marketExt,
36
+ uint256 netSyIn
37
+ ) internal pure returns (bool /*success*/) {
38
+ if (netSyIn > bot.syBalance) return false;
39
+
40
+ (uint256 netLpOut, uint256 netYtOut) = marketExt.addLiqKeepYt(netSyIn);
41
+
42
+ bot.syBalance -= netSyIn;
43
+ bot.lpBalance += netLpOut;
44
+ bot.ytBalance += netYtOut;
45
+
46
+ return true;
47
+ }
48
+
49
+ function addLiqFromSy(
50
+ BotState memory bot,
51
+ MarketExtState memory marketExt,
52
+ uint256 netPtFromSwap
53
+ ) internal pure returns (bool /*success*/) {
54
+ (uint256 netLpOut, uint256 netSyIn) = marketExt.addLiqFromSy(netPtFromSwap);
55
+
56
+ if (netSyIn > bot.syBalance) return false;
57
+
58
+ bot.syBalance -= netSyIn;
59
+ bot.lpBalance += netLpOut;
60
+
61
+ return true;
62
+ }
63
+
64
+ function addLiqFromYt(
65
+ BotState memory bot,
66
+ MarketExtState memory marketExt,
67
+ uint256 netPtFromSwap
68
+ ) internal pure returns (bool /*success*/) {
69
+ (uint256 netLpOut, uint256 netYtIn) = marketExt.addLiqFromYt(netPtFromSwap);
70
+
71
+ if (netYtIn > bot.ytBalance) return false;
72
+
73
+ bot.ytBalance -= netYtIn;
74
+ bot.lpBalance += netLpOut;
75
+
76
+ return true;
77
+ }
78
+
79
+ function removeLiqToYt(
80
+ BotState memory bot,
81
+ MarketExtState memory marketExt,
82
+ uint256 netLpToRemove,
83
+ ApproxParams memory approxParams
84
+ ) internal pure returns (bool /*success*/) {
85
+ if (netLpToRemove > bot.lpBalance) return false;
86
+
87
+ uint256 netYtOut = marketExt.removeLiqToYt(netLpToRemove, approxParams);
88
+
89
+ bot.lpBalance -= netLpToRemove;
90
+ bot.ytBalance += netYtOut;
91
+
92
+ return true;
93
+ }
94
+
95
+ /// @dev Only for estimation, does not reflect exact SY amount that would be redeemed
96
+ function tvlInSy(
97
+ BotState memory bot,
98
+ MarketExtState memory marketExt
99
+ ) internal pure returns (uint256) {
100
+ (uint256 syInLp, uint256 ptInLp) = marketExt.previewAssetsFromLp(bot.lpBalance);
101
+ uint256 totalValue = bot.syBalance + syInLp;
102
+ if (ptInLp <= bot.ytBalance) {
103
+ totalValue += marketExt.previewPyToSy(ptInLp);
104
+ totalValue += marketExt.clone().swapYtToSy(bot.ytBalance - ptInLp);
105
+ } else {
106
+ totalValue += marketExt.previewPyToSy(bot.ytBalance);
107
+ totalValue += marketExt.clone().swapPtToSy(ptInLp - bot.ytBalance);
108
+ }
109
+ return totalValue;
110
+ }
111
+
112
+ function clone(BotState memory bot) internal pure returns (BotState memory) {
113
+ return BotState(bot.lpBalance, bot.ytBalance, bot.syBalance);
114
+ }
115
+ }