@pendle/core-v2 2.21.0 → 2.22.0

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 (454) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.dbg.json +1 -1
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  10. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  12. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  13. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
  14. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.dbg.json +1 -1
  15. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  16. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  17. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  19. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  20. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  21. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  22. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  23. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  24. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  25. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  26. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  28. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  29. package/build/artifacts/contracts/LiquidityMining/libraries/WeekMath.sol/WeekMath.dbg.json +1 -1
  30. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
  32. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  33. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  35. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  37. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  41. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  43. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  44. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  46. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.json +2 -2
  47. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/StandardizedYield/SYUtils.sol/SYUtils.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +2 -2
  53. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.json +2 -2
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.json +2 -2
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.json +2 -2
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.json +2 -2
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.json +2 -2
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +1 -1
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAPoolHelper.dbg.json +1 -1
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAWethHelper.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol/LinearMath.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol/LinearPreview.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV2.sol/PendleAuraBalancerStableLPSYV2.dbg.json +1 -1
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +1 -1
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  76. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  78. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotRewardHelper.sol/CamelotRewardHelper.dbg.json +1 -1
  79. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotRewardHelper.sol/CamelotRewardHelper.json +2 -2
  80. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileCommon.sol/CamelotV1VolatileCommon.dbg.json +1 -1
  81. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileCommon.sol/CamelotV1VolatileCommon.json +2 -2
  82. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileLpHelper.sol/CamelotV1VolatileLpHelper.dbg.json +1 -1
  83. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatilePreview.sol/CamelotV1VolatilePreview.dbg.json +1 -1
  84. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatilePreview.sol/CamelotV1VolatilePreview.json +2 -2
  85. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.dbg.json +1 -1
  86. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.json +2 -2
  87. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
  89. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  90. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
  91. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
  92. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.json +2 -2
  93. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
  94. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.json +2 -2
  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/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.json +2 -2
  97. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  98. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol/GLPPreviewHelper.dbg.json +1 -1
  99. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +1 -1
  100. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.json +2 -2
  101. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol/PendleArbitrumStakedEthSY.dbg.json +1 -1
  102. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol/PendleArbitrumStakedEthSY.json +2 -2
  103. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.dbg.json +1 -1
  104. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.json +2 -2
  105. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  106. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
  107. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.dbg.json +1 -1
  108. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.json +2 -2
  109. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.dbg.json +1 -1
  110. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.json +2 -2
  111. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWbEthSY.sol/PendleWbEthSY.dbg.json +1 -1
  112. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWbEthSY.sol/PendleWbEthSY.json +2 -2
  113. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  114. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  115. package/build/artifacts/contracts/core/StandardizedYield/implementations/Thena/PendleThenaSY.sol/PendleThenaSY.dbg.json +4 -0
  116. package/build/artifacts/contracts/core/StandardizedYield/implementations/Thena/PendleThenaSY.sol/PendleThenaSY.json +1266 -0
  117. package/build/artifacts/contracts/core/StandardizedYield/implementations/Thena/ThenaLpHelper.sol/ThenaLpHelper.dbg.json +4 -0
  118. package/build/artifacts/contracts/core/StandardizedYield/implementations/Thena/ThenaLpHelper.sol/ThenaLpHelper.json +128 -0
  119. package/build/artifacts/contracts/core/StandardizedYield/implementations/Thena/ThenaMath.sol/ThenaMath.dbg.json +4 -0
  120. package/build/artifacts/contracts/core/StandardizedYield/implementations/Thena/ThenaMath.sol/ThenaMath.json +24 -0
  121. package/build/artifacts/contracts/core/StandardizedYield/implementations/Thena/ThenaPreview.sol/IThenaSY.dbg.json +4 -0
  122. package/build/artifacts/contracts/core/StandardizedYield/implementations/Thena/ThenaPreview.sol/IThenaSY.json +24 -0
  123. package/build/artifacts/contracts/core/StandardizedYield/implementations/Thena/ThenaPreview.sol/ThenaPreview.dbg.json +4 -0
  124. package/build/artifacts/contracts/core/StandardizedYield/implementations/Thena/ThenaPreview.sol/ThenaPreview.json +267 -0
  125. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  126. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  127. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  128. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  129. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  130. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  131. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +1 -1
  132. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +1 -1
  133. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +1 -1
  134. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.json +2 -2
  135. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +1 -1
  136. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.json +2 -2
  137. package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  138. package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  139. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  140. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.dbg.json +1 -1
  141. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.dbg.json +1 -1
  142. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
  143. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
  144. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  145. package/build/artifacts/contracts/core/libraries/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  146. package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  147. package/build/artifacts/contracts/core/libraries/StringLib.sol/StringLib.dbg.json +1 -1
  148. package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  149. package/build/artifacts/contracts/core/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  150. package/build/artifacts/contracts/core/libraries/math/Math.sol/Math.dbg.json +1 -1
  151. package/build/artifacts/contracts/core/libraries/math/Math.sol/Math.json +2 -2
  152. package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +1 -1
  153. package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +1 -1
  154. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
  155. package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +1 -1
  156. package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +1 -1
  157. package/build/artifacts/contracts/interfaces/Balancer/IERC4626LinearPool.sol/IERC4626LinearPool.dbg.json +1 -1
  158. package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +1 -1
  159. package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +1 -1
  160. package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +1 -1
  161. package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +1 -1
  162. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
  163. package/build/artifacts/contracts/interfaces/BinanceEth/IWBETH.sol/IWBETH.dbg.json +1 -1
  164. package/build/artifacts/contracts/interfaces/Camelot/ICamelotFactory.sol/ICamelotFactory.dbg.json +1 -1
  165. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTFactory.sol/ICamelotNFTFactory.dbg.json +1 -1
  166. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTHandler.sol/ICamelotNFTHandler.dbg.json +1 -1
  167. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTPool.sol/ICamelotNFTPool.dbg.json +1 -1
  168. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTPool.sol/ICamelotNFTPool.json +13 -0
  169. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPool.sol/ICamelotNitroPool.dbg.json +1 -1
  170. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPool.sol/ICamelotNitroPool.json +13 -0
  171. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPoolFactory.sol/ICamelotNitroPoolFactory.dbg.json +1 -1
  172. package/build/artifacts/contracts/interfaces/Camelot/ICamelotPair.sol/ICamelotPair.dbg.json +1 -1
  173. package/build/artifacts/contracts/interfaces/Camelot/ICamelotPair.sol/ICamelotPair.json +26 -0
  174. package/build/artifacts/contracts/interfaces/Camelot/ICamelotRouter.sol/ICamelotRouter.dbg.json +1 -1
  175. package/build/artifacts/contracts/interfaces/Camelot/ICamelotYieldBooster.sol/ICamelotYieldBooster.dbg.json +1 -1
  176. package/build/artifacts/contracts/interfaces/Camelot/IXGrail.sol/IXGrail.dbg.json +1 -1
  177. package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.dbg.json +1 -1
  178. package/build/artifacts/contracts/interfaces/ConvexCurve/ICrvDepositor.sol/ICrvDepositor.dbg.json +1 -1
  179. package/build/artifacts/contracts/interfaces/ConvexCurve/ICvxCrv.sol/ICvxCrv.dbg.json +1 -1
  180. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +1 -1
  181. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
  182. package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +1 -1
  183. package/build/artifacts/contracts/interfaces/Frax/IFrxEthMinter.sol/IFrxEthMinter.dbg.json +1 -1
  184. package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.dbg.json +1 -1
  185. package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.dbg.json +1 -1
  186. package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.dbg.json +1 -1
  187. package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.dbg.json +1 -1
  188. package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.dbg.json +1 -1
  189. package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
  190. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  191. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  192. package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.dbg.json +1 -1
  193. package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.dbg.json +1 -1
  194. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  195. package/build/artifacts/contracts/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.dbg.json +1 -1
  196. package/build/artifacts/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +1 -1
  197. package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.dbg.json +1 -1
  198. package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.dbg.json +1 -1
  199. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  200. package/build/artifacts/contracts/interfaces/IPActionInfoStatic.sol/IPActionInfoStatic.dbg.json +1 -1
  201. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  202. package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.dbg.json +1 -1
  203. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  204. package/build/artifacts/contracts/interfaces/IPActionMintRedeemStatic.sol/IPActionMintRedeemStatic.dbg.json +1 -1
  205. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +1 -1
  206. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  207. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  208. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  209. package/build/artifacts/contracts/interfaces/IPActionVePendleStatic.sol/IPActionVePendleStatic.dbg.json +1 -1
  210. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  211. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  212. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +1 -1
  213. package/build/artifacts/contracts/interfaces/IPBulkSellerSYCallback.sol/IPBulkSellerCallback.dbg.json +1 -1
  214. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
  215. package/build/artifacts/contracts/interfaces/IPFeeDistributorV2.sol/IPFeeDistributorV2.dbg.json +1 -1
  216. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
  217. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  218. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  219. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  220. package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.dbg.json +1 -1
  221. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  222. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  223. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  224. package/build/artifacts/contracts/interfaces/IPMiniDiamond.sol/IPMiniDiamond.dbg.json +1 -1
  225. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
  226. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
  227. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  228. package/build/artifacts/contracts/interfaces/IPPtOracle.sol/IPPtOracle.dbg.json +1 -1
  229. package/build/artifacts/contracts/interfaces/IPRouterHelper.sol/IPRouterHelper.dbg.json +1 -1
  230. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  231. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  232. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  233. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  234. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  235. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  236. package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.dbg.json +1 -1
  237. package/build/artifacts/contracts/interfaces/IPendlePreviewHelper.sol/IPendlePreviewHelper.dbg.json +4 -0
  238. package/build/artifacts/contracts/interfaces/IPendlePreviewHelper.sol/IPendlePreviewHelper.json +59 -0
  239. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  240. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  241. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  242. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  243. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
  244. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
  245. package/build/artifacts/contracts/interfaces/IStargateLP.sol/IStargateLP.dbg.json +1 -1
  246. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
  247. package/build/artifacts/contracts/interfaces/IStargateStaking.sol/IStargateStaking.dbg.json +1 -1
  248. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  249. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  250. package/build/artifacts/contracts/interfaces/Thena/IThenaFactory.sol/IThenaFactory.dbg.json +4 -0
  251. package/build/artifacts/contracts/interfaces/Thena/IThenaFactory.sol/IThenaFactory.json +152 -0
  252. package/build/artifacts/contracts/interfaces/Thena/IThenaGaugeV2.sol/IThenaGaugeV2.dbg.json +4 -0
  253. package/build/artifacts/contracts/interfaces/Thena/IThenaGaugeV2.sol/IThenaGaugeV2.json +71 -0
  254. package/build/artifacts/contracts/interfaces/Thena/IThenaPair.sol/IThenaPair.dbg.json +4 -0
  255. package/build/artifacts/contracts/interfaces/Thena/IThenaPair.sol/IThenaPair.json +409 -0
  256. package/build/artifacts/contracts/interfaces/Thena/IThenaRouter.sol/IThenaRouter.dbg.json +4 -0
  257. package/build/artifacts/contracts/interfaces/Thena/IThenaRouter.sol/IThenaRouter.json +188 -0
  258. package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.dbg.json +1 -1
  259. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
  260. package/build/artifacts/contracts/offchain-helpers/BoringLpSeller.sol/BoringLpSeller.dbg.json +1 -1
  261. package/build/artifacts/contracts/offchain-helpers/BoringPtSeller.sol/BoringPtSeller.dbg.json +1 -1
  262. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.dbg.json +1 -1
  263. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.json +2 -2
  264. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  265. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  266. package/build/artifacts/contracts/offchain-helpers/EmptyUUPS.sol/EmptyUUPS.dbg.json +1 -1
  267. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.dbg.json +1 -1
  268. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.json +2 -2
  269. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +1 -1
  270. package/build/artifacts/contracts/offchain-helpers/PendleMulticallV1.sol/PendleMulticallV1.dbg.json +1 -1
  271. package/build/artifacts/contracts/offchain-helpers/PtAndLpToAsset.sol/PtAndLpToAsset.dbg.json +1 -1
  272. package/build/artifacts/contracts/offchain-helpers/PtAndLpToAsset.sol/PtAndLpToAsset.json +2 -2
  273. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  274. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.json +2 -2
  275. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  276. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.json +2 -2
  277. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  278. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.json +2 -2
  279. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  280. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.json +2 -2
  281. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  282. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.json +2 -2
  283. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  284. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.json +2 -2
  285. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  286. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.json +2 -2
  287. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  288. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +1 -1
  289. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.json +2 -2
  290. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.dbg.json +1 -1
  291. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.json +2 -2
  292. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.dbg.json +1 -1
  293. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.json +2 -2
  294. package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.dbg.json +1 -1
  295. package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.json +2 -2
  296. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.dbg.json +1 -1
  297. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.json +2 -2
  298. package/build/artifacts/contracts/oracles/samples/PendlePtUsdChainlinkOracle.sol/PendlePtUsdChainlinkOracle.dbg.json +1 -1
  299. package/build/artifacts/contracts/oracles/samples/PendlePtUsdChainlinkOracle.sol/PendlePtUsdChainlinkOracle.json +2 -2
  300. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  301. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
  302. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  303. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
  304. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  305. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  306. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
  307. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  308. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
  309. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  310. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
  311. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.dbg.json +1 -1
  312. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.json +2 -2
  313. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +1 -1
  314. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  315. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  316. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  317. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  318. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  319. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  320. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +1 -1
  321. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
  322. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +1 -1
  323. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IExecutorHelper.sol/IExecutorHelper.dbg.json +1 -1
  324. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IHashflow.sol/IHashflow.dbg.json +1 -1
  325. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +1 -1
  326. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberInputScalingHelper.sol/KyberInputScalingHelper.dbg.json +1 -1
  327. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScalingDataLib.sol/ScalingDataLib.dbg.json +1 -1
  328. package/contracts/core/StandardizedYield/implementations/Ankr/PendleAnkrBNBSY.sol +163 -0
  329. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWstethAnkreth.sol +153 -0
  330. package/contracts/core/StandardizedYield/implementations/Swell/PendleSwETH.sol +110 -0
  331. package/contracts/core/StandardizedYield/implementations/Thena/PendleThenaSY.sol +202 -0
  332. package/contracts/core/StandardizedYield/implementations/Thena/ThenaLpHelper.sol +156 -0
  333. package/contracts/core/StandardizedYield/implementations/Thena/ThenaMath.sol +128 -0
  334. package/contracts/core/StandardizedYield/implementations/Thena/ThenaPreview.sol +193 -0
  335. package/contracts/core/libraries/math/Math.sol +4 -0
  336. package/contracts/interfaces/Ankr/IAnkrBNB.sol +11 -0
  337. package/contracts/interfaces/Ankr/IAnkrLiquidStaking.sol +21 -0
  338. package/contracts/interfaces/Camelot/ICamelotNFTPool.sol +2 -0
  339. package/contracts/interfaces/Camelot/ICamelotNitroPool.sol +3 -0
  340. package/contracts/interfaces/Camelot/ICamelotPair.sol +4 -0
  341. package/contracts/interfaces/IPendlePreviewHelper.sol +14 -0
  342. package/contracts/interfaces/ISwETH.sol +10 -0
  343. package/contracts/interfaces/Thena/IThenaFactory.sol +23 -0
  344. package/contracts/interfaces/Thena/IThenaGaugeV2.sol +18 -0
  345. package/contracts/interfaces/Thena/IThenaPair.sol +30 -0
  346. package/contracts/interfaces/Thena/IThenaRouter.sol +38 -0
  347. package/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol +45 -0
  348. package/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol +67 -0
  349. package/contracts/router/swap-aggregator/PendleSwap.sol +3 -2
  350. package/deployments/1-markets/BALANCER-LP-AURA-WSTETH-ANKRETH-JUNE-27-2024.json +10 -0
  351. package/deployments/56-core.json +2 -2
  352. package/deployments/56-markets/ANKRBNB-26JUN2025.json +10 -0
  353. package/deployments/56-offchain-helper.json +1 -1
  354. package/package.json +1 -1
  355. package/typechain-types/{CamelotV1Preview.ts → CamelotV1PreviewHelper.ts} +63 -23
  356. package/typechain-types/ICamelotNFTPool.ts +19 -0
  357. package/typechain-types/ICamelotNitroPool.ts +19 -0
  358. package/typechain-types/ICamelotPair.ts +42 -0
  359. package/typechain-types/IPVotingEscrowSidechain.ts +155 -0
  360. package/typechain-types/PendleCamelotRewardHelper.ts +347 -0
  361. package/typechain-types/{CamelotV1LpHelper.ts → PendleCamelotV1RouterHelper.ts} +5 -75
  362. package/typechain-types/PendleCamelotV1SY.ts +0 -245
  363. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
  364. package/typechain-types/factories/ActionInfoStatic__factory.ts +1 -1
  365. package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +1 -1
  366. package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +1 -1
  367. package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +1 -1
  368. package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
  369. package/typechain-types/factories/ActionStorageStatic__factory.ts +1 -1
  370. package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
  371. package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
  372. package/typechain-types/factories/ActionVePendleStatic__factory.ts +1 -1
  373. package/typechain-types/factories/Broadcaster__factory.ts +1 -1
  374. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  375. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  376. package/typechain-types/factories/CamelotRewardHelper__factory.ts +1 -1
  377. package/typechain-types/factories/CamelotV1PreviewHelper__factory.ts +400 -0
  378. package/typechain-types/factories/CamelotV1VolatilePreview__factory.ts +1 -1
  379. package/typechain-types/factories/ICamelotNFTPool__factory.ts +13 -0
  380. package/typechain-types/factories/ICamelotNitroPool__factory.ts +13 -0
  381. package/typechain-types/factories/ICamelotPair__factory.ts +26 -0
  382. package/typechain-types/factories/IPVotingEscrowSidechain__factory.ts +112 -0
  383. package/typechain-types/factories/PendleArbitrumStakedEthSY__factory.ts +1 -1
  384. package/typechain-types/factories/PendleAuraBbAWethSwethSY__factory.ts +1 -1
  385. package/typechain-types/factories/PendleAuraWethAnkrethSYV2__factory.ts +1 -1
  386. package/typechain-types/factories/PendleAuraWethRocketEthSYV2__factory.ts +1 -1
  387. package/typechain-types/factories/PendleAuraWethStafiEthSY__factory.ts +1 -1
  388. package/typechain-types/factories/PendleAuraWethWstethSYV2__factory.ts +1 -1
  389. package/typechain-types/factories/PendleCamelotRewardHelper__factory.ts +317 -0
  390. package/typechain-types/factories/{CamelotV1LpHelper__factory.ts → PendleCamelotV1RouterHelper__factory.ts} +12 -60
  391. package/typechain-types/factories/PendleCamelotV1SY__factory.ts +9 -156
  392. package/typechain-types/factories/PendleCamelotV1VolatileSY__factory.ts +1 -1
  393. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
  394. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
  395. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  396. package/typechain-types/factories/PendleGDaiSY__factory.ts +1 -1
  397. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  398. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  399. package/typechain-types/factories/PendleGlpSY__factory.ts +1 -1
  400. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
  401. package/typechain-types/factories/PendleLpGlpOracle__factory.ts +1 -1
  402. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  403. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  404. package/typechain-types/factories/PendlePtGlpOracle__factory.ts +1 -1
  405. package/typechain-types/factories/PendlePtOracle__factory.ts +1 -1
  406. package/typechain-types/factories/PendlePtUsdChainlinkOracle__factory.ts +1 -1
  407. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  408. package/typechain-types/factories/PendleRouterHelper__factory.ts +1 -1
  409. package/typechain-types/factories/PendleRouterStatic__factory.ts +1 -1
  410. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  411. package/typechain-types/factories/PendleSfrxEthSY__factory.ts +1 -1
  412. package/typechain-types/factories/PendleStargateLPSY__factory.ts +1 -1
  413. package/typechain-types/factories/PendleThenaSY__factory.ts +1 -1
  414. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  415. package/typechain-types/factories/PendleWbEthSY__factory.ts +1 -1
  416. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  417. package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +1 -1
  418. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  419. package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1 -1
  420. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  421. package/typechain-types/factories/PtAndLpToAsset__factory.ts +1 -1
  422. package/typechain-types/factories/SAPE__factory.ts +1 -1
  423. package/typechain-types/factories/ThenaPreview__factory.ts +1 -1
  424. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  425. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  426. package/typechain-types/hardhat.d.ts +0 -144
  427. package/typechain-types/index.ts +2 -22
  428. package/typechain-types/BotActionCallback.ts +0 -763
  429. package/typechain-types/BotActionHelper.ts +0 -763
  430. package/typechain-types/BotDecisionHelper.ts +0 -527
  431. package/typechain-types/BotDecisionLib.ts +0 -335
  432. package/typechain-types/IBotDecisionHelper.ts +0 -507
  433. package/typechain-types/ICamelotSY.ts +0 -100
  434. package/typechain-types/ILongYieldTradingBot.ts +0 -1008
  435. package/typechain-types/ITradingBotBase.ts +0 -523
  436. package/typechain-types/LongYieldTradingBot.ts +0 -1468
  437. package/typechain-types/MarketExtLib.ts +0 -81
  438. package/typechain-types/PendleBinanceEth.ts +0 -1229
  439. package/typechain-types/TradingBotBase.ts +0 -719
  440. package/typechain-types/TradingBotOffchain.ts +0 -568
  441. package/typechain-types/factories/BotActionCallback__factory.ts +0 -678
  442. package/typechain-types/factories/BotActionHelper__factory.ts +0 -678
  443. package/typechain-types/factories/BotDecisionHelper__factory.ts +0 -1123
  444. package/typechain-types/factories/BotDecisionLib__factory.ts +0 -642
  445. package/typechain-types/factories/CamelotV1Preview__factory.ts +0 -309
  446. package/typechain-types/factories/IBotDecisionHelper__factory.ts +0 -932
  447. package/typechain-types/factories/ICamelotSY__factory.ts +0 -49
  448. package/typechain-types/factories/ILongYieldTradingBot__factory.ts +0 -1172
  449. package/typechain-types/factories/ITradingBotBase__factory.ts +0 -455
  450. package/typechain-types/factories/LongYieldTradingBot__factory.ts +0 -1836
  451. package/typechain-types/factories/MarketExtLib__factory.ts +0 -74
  452. package/typechain-types/factories/PendleBinanceEth__factory.ts +0 -1052
  453. package/typechain-types/factories/TradingBotBase__factory.ts +0 -628
  454. package/typechain-types/factories/TradingBotOffchain__factory.ts +0 -1133
@@ -0,0 +1,110 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+ import "../../SYBase.sol";
4
+ import "../../../../interfaces/ISwETH.sol";
5
+
6
+ contract PendleSwETH is SYBase {
7
+ using Math for uint256;
8
+
9
+ address public immutable swETH;
10
+
11
+ constructor(
12
+ string memory _name,
13
+ string memory _symbol,
14
+ address _swETH
15
+ ) SYBase(_name, _symbol, _swETH) {
16
+ swETH = _swETH;
17
+ }
18
+
19
+ /*///////////////////////////////////////////////////////////////
20
+ DEPOSIT/REDEEM USING BASE TOKENS
21
+ //////////////////////////////////////////////////////////////*/
22
+
23
+ function _deposit(
24
+ address tokenIn,
25
+ uint256 amountDeposited
26
+ ) internal virtual override returns (uint256 /*amountSharesOut*/) {
27
+ if (tokenIn == NATIVE) {
28
+ uint256 preBalance = _selfBalance(swETH);
29
+ ISwETH(swETH).deposit{ value: amountDeposited }();
30
+ return _selfBalance(swETH) - preBalance;
31
+ } else {
32
+ // sweth
33
+ return amountDeposited;
34
+ }
35
+ }
36
+
37
+ /**
38
+ * Withdrawal to sfrxETH and frxETH is done normally as other ERC4626.
39
+ * Withdrawal to ETH is on the other hand not possible
40
+ */
41
+ function _redeem(
42
+ address receiver,
43
+ address /*tokenOut*/,
44
+ uint256 amountSharesToRedeem
45
+ ) internal virtual override returns (uint256 /*amountTokenOut*/) {
46
+ _transferOut(swETH, receiver, amountSharesToRedeem);
47
+ return amountSharesToRedeem;
48
+ }
49
+
50
+ /*///////////////////////////////////////////////////////////////
51
+ EXCHANGE-RATE
52
+ //////////////////////////////////////////////////////////////*/
53
+
54
+ /**
55
+ * @notice Calculates and updates the exchange rate of shares to underlying asset token
56
+ * @dev It is the exchange rate of sfrxETH to frxETH
57
+ */
58
+ function exchangeRate() public view virtual override returns (uint256) {
59
+ return ISwETH(swETH).getRate();
60
+ }
61
+
62
+ /*///////////////////////////////////////////////////////////////
63
+ MISC FUNCTIONS FOR METADATA
64
+ //////////////////////////////////////////////////////////////*/
65
+
66
+ function _previewDeposit(
67
+ address tokenIn,
68
+ uint256 amountTokenToDeposit
69
+ ) internal view override returns (uint256 /*amountSharesOut*/) {
70
+ if (tokenIn == NATIVE) {
71
+ return amountTokenToDeposit.divDown(ISwETH(swETH).getRate());
72
+ } else {
73
+ return amountTokenToDeposit;
74
+ }
75
+ }
76
+
77
+ function _previewRedeem(
78
+ address /*tokenOut*/,
79
+ uint256 amountSharesToRedeem
80
+ ) internal pure override returns (uint256 /*amountTokenOut*/) {
81
+ return amountSharesToRedeem;
82
+ }
83
+
84
+ function getTokensIn() public view virtual override returns (address[] memory res) {
85
+ res = new address[](2);
86
+ res[0] = swETH;
87
+ res[1] = NATIVE;
88
+ }
89
+
90
+ function getTokensOut() public view virtual override returns (address[] memory res) {
91
+ res = new address[](1);
92
+ res[0] = swETH;
93
+ }
94
+
95
+ function isValidTokenIn(address token) public view virtual override returns (bool) {
96
+ return token == NATIVE || token == swETH;
97
+ }
98
+
99
+ function isValidTokenOut(address token) public view virtual override returns (bool) {
100
+ return token == swETH;
101
+ }
102
+
103
+ function assetInfo()
104
+ external
105
+ pure
106
+ returns (AssetType assetType, address assetAddress, uint8 assetDecimals)
107
+ {
108
+ return (AssetType.TOKEN, NATIVE, 18);
109
+ }
110
+ }
@@ -0,0 +1,202 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+
3
+ pragma solidity 0.8.17;
4
+
5
+ import "../../SYBaseWithRewards.sol";
6
+ import "./ThenaLpHelper.sol";
7
+ import "../../../../interfaces/IPendlePreviewHelper.sol";
8
+ import "../../../../interfaces/Thena/IThenaGaugeV2.sol";
9
+ import "../../../libraries/ArrayLib.sol";
10
+
11
+ contract PendleThenaSY is ThenaLpHelper, SYBaseWithRewards {
12
+ event SetNewBinarySearchEps(uint256 newEps);
13
+ event AddExternalRewardToken(address indexed token);
14
+
15
+ using Math for uint256;
16
+ using ArrayLib for address[];
17
+
18
+ address[] public externalRewardTokens;
19
+ address public immutable gauge;
20
+ address public immutable THENA;
21
+ IPendlePreviewHelper public immutable previewHelper;
22
+
23
+ constructor(
24
+ string memory _name,
25
+ string memory _symbol,
26
+ address _pair,
27
+ address _factory,
28
+ address _router,
29
+ address _gauge,
30
+ address _THENA,
31
+ IPendlePreviewHelper _previewHelper
32
+ ) SYBaseWithRewards(_name, _symbol, _pair) ThenaLpHelper(_pair, _factory, _router) {
33
+ THENA = _THENA;
34
+ gauge = _gauge;
35
+ previewHelper = _previewHelper;
36
+ _safeApproveInf(_pair, _gauge);
37
+ }
38
+
39
+ /**
40
+ * @dev See {SYBase-_deposit}
41
+ */
42
+ function _deposit(address tokenIn, uint256 amountDeposited)
43
+ internal
44
+ virtual
45
+ override
46
+ returns (uint256 amountLpDeposited)
47
+ {
48
+ _withdrawAllFromGauge();
49
+ if (tokenIn == pair) {
50
+ amountLpDeposited = amountDeposited;
51
+ } else {
52
+ amountLpDeposited = _zapIn(tokenIn, amountDeposited);
53
+ }
54
+ _depositToGaugeIfNotEmergency();
55
+ }
56
+
57
+ /**
58
+ * @dev See {SYBase-_redeem}
59
+ */
60
+ function _redeem(
61
+ address receiver,
62
+ address tokenOut,
63
+ uint256 amountSharesToRedeem
64
+ ) internal virtual override returns (uint256 amountTokenOut) {
65
+ _withdrawAllFromGauge();
66
+ if (tokenOut == pair) {
67
+ amountTokenOut = amountSharesToRedeem;
68
+ } else {
69
+ amountTokenOut = _zapOut(tokenOut, amountSharesToRedeem);
70
+ }
71
+ _transferOut(tokenOut, receiver, amountTokenOut);
72
+ _depositToGaugeIfNotEmergency();
73
+ }
74
+
75
+ function exchangeRate() public view virtual override returns (uint256) {
76
+ return Math.ONE;
77
+ }
78
+
79
+ /*///////////////////////////////////////////////////////////////
80
+ REWARDS-RELATED
81
+ //////////////////////////////////////////////////////////////*/
82
+
83
+ /**
84
+ * @dev See {IStandardizedYield-getRewardTokens}
85
+ */
86
+ function _getRewardTokens() internal view virtual override returns (address[] memory res) {
87
+ res = new address[](1 + externalRewardTokens.length);
88
+ res[0] = THENA;
89
+ for(uint256 i = 1; i < res.length; ++i) {
90
+ res[i] = externalRewardTokens[i - 1];
91
+ }
92
+ }
93
+
94
+ function _redeemExternalReward() internal override {
95
+ IThenaGaugeV2(gauge).getReward();
96
+ }
97
+
98
+ /*///////////////////////////////////////////////////////////////
99
+ PREVIEW-RELATED
100
+ //////////////////////////////////////////////////////////////*/
101
+
102
+ function _previewDeposit(address tokenIn, uint256 amountTokenToDeposit)
103
+ internal
104
+ view
105
+ override
106
+ returns (uint256)
107
+ {
108
+ if (tokenIn == pair) {
109
+ return amountTokenToDeposit;
110
+ } else {
111
+ return previewHelper.previewDeposit(tokenIn, amountTokenToDeposit);
112
+ }
113
+ }
114
+
115
+ function _previewRedeem(address tokenOut, uint256 amountSharesToRedeem)
116
+ internal
117
+ view
118
+ override
119
+ returns (uint256)
120
+ {
121
+ if (tokenOut == pair) {
122
+ return amountSharesToRedeem;
123
+ } else {
124
+ return previewHelper.previewRedeem(tokenOut, amountSharesToRedeem);
125
+ }
126
+ }
127
+
128
+ /*///////////////////////////////////////////////////////////////
129
+ MISC FUNCTIONS FOR METADATA
130
+ //////////////////////////////////////////////////////////////*/
131
+
132
+ function getTokensIn() public view virtual override returns (address[] memory res) {
133
+ res = new address[](3);
134
+ res[0] = token0;
135
+ res[1] = token1;
136
+ res[2] = pair;
137
+ }
138
+
139
+ function getTokensOut() public view virtual override returns (address[] memory res) {
140
+ res = new address[](3);
141
+ res[0] = token0;
142
+ res[1] = token1;
143
+ res[2] = pair;
144
+ }
145
+
146
+ function isValidTokenIn(address token) public view virtual override returns (bool) {
147
+ return token == token0 || token == token1 || token == pair;
148
+ }
149
+
150
+ function isValidTokenOut(address token) public view virtual override returns (bool) {
151
+ return token == token0 || token == token1 || token == pair;
152
+ }
153
+
154
+ function assetInfo()
155
+ external
156
+ view
157
+ returns (
158
+ AssetType assetType,
159
+ address assetAddress,
160
+ uint8 assetDecimals
161
+ )
162
+ {
163
+ return (AssetType.LIQUIDITY, pair, IERC20Metadata(pair).decimals());
164
+ }
165
+
166
+ /*///////////////////////////////////////////////////////////////
167
+ REWARD RELATED FUNCTIONS
168
+ //////////////////////////////////////////////////////////////*/
169
+
170
+ function _withdrawAllFromGauge() internal {
171
+ if (IThenaGaugeV2(gauge).balanceOf(address(this)) == 0) {
172
+ return;
173
+ }
174
+
175
+ if (IThenaGaugeV2(gauge).emergency()) {
176
+ IThenaGaugeV2(gauge).emergencyWithdraw();
177
+ } else {
178
+ IThenaGaugeV2(gauge).withdrawAll();
179
+ }
180
+ }
181
+
182
+ function _depositToGaugeIfNotEmergency() internal {
183
+ if (!IThenaGaugeV2(gauge).emergency()) {
184
+ IThenaGaugeV2(gauge).depositAll();
185
+ }
186
+ }
187
+
188
+ function setBinarySearchEps(uint256 newEps) external onlyOwner {
189
+ require(newEps > 0 && newEps < 1e18, "invalid newEps");
190
+ binarySearchEps = newEps;
191
+
192
+ emit SetNewBinarySearchEps(newEps);
193
+ }
194
+
195
+ function addExternalRewardToken(address token) external onlyOwner {
196
+ // prevent adding THE as well
197
+ require(!_getRewardTokens().contains(token), "rewardToken existed");
198
+ externalRewardTokens.push(token);
199
+
200
+ emit AddExternalRewardToken(token);
201
+ }
202
+ }
@@ -0,0 +1,156 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+
3
+ pragma solidity >=0.8.0;
4
+
5
+ import "../../../../interfaces/Thena/IThenaPair.sol";
6
+ import "../../../../interfaces/Thena/IThenaRouter.sol";
7
+ import "../../../../interfaces/Thena/IThenaFactory.sol";
8
+ import "../../../libraries/TokenHelper.sol";
9
+ import "../../../libraries/math/Math.sol";
10
+ import "./ThenaMath.sol";
11
+
12
+ abstract contract ThenaLpHelper is TokenHelper, ThenaMath {
13
+ address public immutable factory;
14
+ address public immutable pair;
15
+
16
+ bool public immutable isStable;
17
+ address public immutable token0;
18
+ address public immutable token1;
19
+ uint256 public immutable decimals0;
20
+ uint256 public immutable decimals1;
21
+ address public immutable router;
22
+
23
+ constructor(address _pair, address _factory, address _router) {
24
+ factory = _factory;
25
+ pair = _pair;
26
+ router = _router;
27
+
28
+ isStable = IThenaPair(pair).isStable();
29
+ token0 = IThenaPair(pair).token0();
30
+ token1 = IThenaPair(pair).token1();
31
+ decimals0 = 10 ** IERC20Metadata(token0).decimals();
32
+ decimals1 = 10 ** IERC20Metadata(token1).decimals();
33
+
34
+ _safeApproveInf(token0, router);
35
+ _safeApproveInf(token1, router);
36
+ _safeApproveInf(pair, router);
37
+ }
38
+
39
+ /**
40
+ * ==================================================================
41
+ * ZAP ACTION RELATED
42
+ * ==================================================================
43
+ */
44
+ function _zapIn(address tokenIn, uint256 amountIn) internal returns (uint256) {
45
+ (uint256 amount0ToAddLiq, uint256 amount1ToAddLiq) = _swapZapIn(tokenIn, amountIn);
46
+ return _addLiquidity(amount0ToAddLiq, amount1ToAddLiq);
47
+ }
48
+
49
+ function _zapOut(address tokenOut, uint256 amountLpIn) internal returns (uint256) {
50
+ (uint256 amount0, uint256 amount1) = _removeLiquidity(amountLpIn);
51
+ if (tokenOut == token0) {
52
+ return amount0 + _swap(token1, amount1);
53
+ } else {
54
+ return amount1 + _swap(token0, amount0);
55
+ }
56
+ }
57
+
58
+ function _swapZapIn(
59
+ address tokenIn,
60
+ uint256 amountIn
61
+ ) private returns (uint256 amount0ToAddLiq, uint256 amount1ToAddLiq) {
62
+ ThenaData memory data = _getNormalizedThenaData(tokenIn);
63
+ if (tokenIn == token0) {
64
+ uint256 amount0ToSwap = _getZapInSwapAmount(data, tokenIn, amountIn);
65
+ amount0ToAddLiq = amountIn - amount0ToSwap;
66
+ amount1ToAddLiq = _swap(token0, amount0ToSwap);
67
+ } else {
68
+ uint256 amount1ToSwap = _getZapInSwapAmount(data, tokenIn, amountIn);
69
+ amount0ToAddLiq = _swap(token1, amount1ToSwap);
70
+ amount1ToAddLiq = amountIn - amount1ToSwap;
71
+ }
72
+ }
73
+
74
+ /**
75
+ * ==================================================================
76
+ * CAMELOT ROUTER RELATED
77
+ * ==================================================================
78
+ */
79
+
80
+ function _addLiquidity(
81
+ uint256 amount0ToAddLiq,
82
+ uint256 amount1ToAddLiq
83
+ ) private returns (uint256 amountLpOut) {
84
+ (, , amountLpOut) = IThenaRouter(router).addLiquidity(
85
+ token0,
86
+ token1,
87
+ isStable,
88
+ amount0ToAddLiq,
89
+ amount1ToAddLiq,
90
+ 0,
91
+ 0,
92
+ address(this),
93
+ block.timestamp
94
+ );
95
+ }
96
+
97
+ function _removeLiquidity(
98
+ uint256 amountLpToRemove
99
+ ) private returns (uint256 amountTokenA, uint256 amountTokenB) {
100
+ return
101
+ IThenaRouter(router).removeLiquidity(
102
+ token0,
103
+ token1,
104
+ isStable,
105
+ amountLpToRemove,
106
+ 0,
107
+ 0,
108
+ address(this),
109
+ block.timestamp
110
+ );
111
+ }
112
+
113
+ function _swap(address tokenIn, uint256 amountTokenIn) private returns (uint256) {
114
+ address tokenOut = tokenIn == token0 ? token1 : token0;
115
+ uint256 preBalance = _selfBalance(tokenOut);
116
+
117
+ IThenaRouter(router).swapExactTokensForTokensSimple(
118
+ amountTokenIn,
119
+ 0,
120
+ tokenIn,
121
+ tokenOut,
122
+ isStable,
123
+ address(this),
124
+ block.timestamp
125
+ );
126
+
127
+ return _selfBalance(tokenOut) - preBalance;
128
+ }
129
+
130
+ /**
131
+ * ==================================================================
132
+ * CAMELOT PAIR DATA READ
133
+ * ==================================================================
134
+ */
135
+
136
+ function _getNormalizedThenaData(
137
+ address tokenIn
138
+ ) internal view returns (ThenaData memory data) {
139
+ data.pair = pair;
140
+ data.isStable = isStable;
141
+ data.fee = IThenaFactory(factory).getFee(data.isStable);
142
+ (data.reserve0, data.reserve1, ) = IThenaPair(pair).getReserves();
143
+
144
+ if (data.isStable) {
145
+ // if not stable, skip reading these data
146
+ data.decimals0 = decimals0;
147
+ data.decimals1 = decimals1;
148
+ }
149
+
150
+ // Normalize token order
151
+ if (tokenIn == token1) {
152
+ (data.reserve0, data.reserve1) = (data.reserve1, data.reserve0);
153
+ (data.decimals0, data.decimals1) = (data.decimals1, data.decimals0);
154
+ }
155
+ }
156
+ }
@@ -0,0 +1,128 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+
3
+ pragma solidity 0.8.17;
4
+
5
+ import "../../../libraries/math/Math.sol";
6
+ import "../../../../interfaces/Thena/IThenaPair.sol";
7
+
8
+ abstract contract ThenaMath {
9
+ using Math for uint256;
10
+
11
+ struct ThenaData {
12
+ address pair;
13
+ bool isStable;
14
+ uint256 reserve0;
15
+ uint256 reserve1;
16
+ uint256 fee;
17
+ uint256 decimals0;
18
+ uint256 decimals1;
19
+ }
20
+
21
+ struct StableBinarySearchParams {
22
+ uint256 guessMin;
23
+ uint256 guessMax;
24
+ uint256 amountSwapIn;
25
+ uint256 newReserve0;
26
+ uint256 newReserve1;
27
+ uint256 amount0ToAddLiq;
28
+ uint256 amount1ToAddLiq;
29
+ }
30
+
31
+ uint256 internal constant FEE_DENOMINATOR = 10000;
32
+ uint256 internal constant ONE = 1 * FEE_DENOMINATOR;
33
+ uint256 internal constant TWO = 2 * FEE_DENOMINATOR;
34
+ uint256 internal constant FOUR = 4 * FEE_DENOMINATOR;
35
+ uint256 internal constant DEFAULT_BINARY_SEARCH_EPS = 1e14; // 0.01% accuracy
36
+
37
+ uint256 public binarySearchEps = DEFAULT_BINARY_SEARCH_EPS;
38
+
39
+ function _getZapInSwapAmount(
40
+ ThenaData memory data,
41
+ address tokenIn,
42
+ uint256 amountIn
43
+ ) internal view returns (uint256) {
44
+ return
45
+ data.isStable
46
+ ? _getStableZapAmount(data, tokenIn, amountIn)
47
+ : _getVolatileZapAmount(data, amountIn);
48
+ }
49
+
50
+ function _getVolatileZapAmount(
51
+ ThenaData memory data,
52
+ uint256 amountIn
53
+ ) private pure returns (uint256) {
54
+
55
+ uint256 numer0 = (TWO - FEE_DENOMINATOR) * data.reserve0 / FEE_DENOMINATOR;
56
+ uint256 numer1 = Math.square(numer0);
57
+ uint256 numer2 = 4 * Math.square(ONE - data.fee) * amountIn * data.reserve0;
58
+
59
+ uint256 numer = Math.sqrt(numer1 + numer2) - numer0;
60
+ uint256 denom = 2 * Math.square(ONE - data.fee);
61
+
62
+ return numer * FEE_DENOMINATOR / denom;
63
+ }
64
+
65
+ function _getStableZapAmount(
66
+ ThenaData memory data,
67
+ address tokenIn,
68
+ uint256 amountIn
69
+ ) private view returns (uint256) {
70
+ StableBinarySearchParams memory params = _prepareStableBinarySearchParams(amountIn, data);
71
+
72
+ while (!Math.isAApproxB(params.guessMin, params.guessMax, binarySearchEps)) {
73
+ params.amountSwapIn = (params.guessMax + params.guessMin) / 2;
74
+ params.amount1ToAddLiq = IThenaPair(data.pair).getAmountOut(
75
+ params.amountSwapIn,
76
+ tokenIn
77
+ );
78
+
79
+ params.newReserve0 = _getReserveAfterSwap(
80
+ params.amountSwapIn,
81
+ data.reserve0,
82
+ data.fee
83
+ );
84
+ params.newReserve1 = data.reserve1 - params.amount1ToAddLiq;
85
+ params.amount0ToAddLiq = amountIn - params.amountSwapIn;
86
+
87
+ if (
88
+ params.amount0ToAddLiq * params.newReserve1 <
89
+ params.amount1ToAddLiq * params.newReserve0
90
+ ) {
91
+ params.guessMax = params.amountSwapIn - 1; // need swap less
92
+ } else {
93
+ params.guessMin = params.amountSwapIn + 1; // swap more
94
+ }
95
+ }
96
+ return params.guessMin;
97
+ }
98
+
99
+ function _prepareStableBinarySearchParams(
100
+ uint256 amountIn,
101
+ ThenaData memory data
102
+ ) private pure returns (StableBinarySearchParams memory params) {
103
+ uint256 X = data.reserve0.divDown(data.decimals0);
104
+ uint256 Y = data.reserve1.divDown(data.decimals1);
105
+ amountIn = amountIn.divDown(data.decimals0);
106
+
107
+ uint256 t = Y.divDown(X + amountIn);
108
+ uint256 K = X.mulDown(Y).mulDown(X.mulDown(X) + Y.mulDown(Y));
109
+ uint256 denom = t.mulDown(t).mulDown(t) + t;
110
+
111
+ params.guessMin = (_fourthRoot(K.divDown(denom)) - X).mulDown(data.decimals0);
112
+ params.guessMax = (params.guessMin * FEE_DENOMINATOR) / (FEE_DENOMINATOR - data.fee);
113
+ }
114
+
115
+ function _getReserveAfterSwap(
116
+ uint256 amountIn,
117
+ uint256 reserve,
118
+ uint256 fee
119
+ ) internal pure returns (uint256) {
120
+ return reserve + amountIn - (amountIn * fee) / FEE_DENOMINATOR;
121
+ }
122
+
123
+ // this returns the fourthRoot of y in base 18
124
+ function _fourthRoot(uint256 y) private pure returns (uint256) {
125
+ uint256 root = Math.sqrt(y) * (10 ** 9);
126
+ return Math.sqrt(root) * (10 ** 9);
127
+ }
128
+ }