@pendle/core-v2 0.8.0-beta-12 → 0.8.1-gamma

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 (330) hide show
  1. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +1 -1
  2. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +39 -7
  3. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +1 -1
  4. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.dbg.json +4 -0
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.json +833 -0
  6. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  7. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +1 -1
  8. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +39 -7
  9. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.dbg.json +4 -0
  10. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.json +723 -0
  11. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.dbg.json +4 -0
  12. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.json +723 -0
  13. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +1 -1
  14. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +38 -6
  15. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.dbg.json +4 -0
  16. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.json +864 -0
  17. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
  18. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +56 -6
  19. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +1 -1
  20. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.json +38 -6
  21. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.dbg.json +4 -0
  22. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.json +784 -0
  23. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
  24. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.json +36 -4
  25. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
  26. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +36 -4
  27. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +1 -1
  28. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +1 -1
  29. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.json +2 -2
  30. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +4 -0
  32. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +242 -0
  33. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +4 -0
  34. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/{PendleGaugeControllerSidechain.sol → PendleGaugeControllerSidechainUpg.sol}/PendleGaugeControllerSidechainUpg.json +3 -3
  35. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +46 -40
  38. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.json +0 -13
  40. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +66 -4
  42. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +26 -2
  44. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.json +24 -0
  46. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  48. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  50. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.json +2 -2
  52. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  53. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +2 -2
  54. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -77
  57. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  59. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +21 -96
  61. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
  63. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +2 -2
  65. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +2 -2
  67. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  71. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  72. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  73. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  74. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  75. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  76. package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
  77. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IEulerEToken.sol/IEulerEToken.dbg.json +4 -0
  80. package/build/artifacts/contracts/interfaces/IEulerEToken.sol/IEulerEToken.json +162 -0
  81. package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.dbg.json +4 -0
  82. package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.json +87 -0
  83. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +1 -1
  84. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +1 -1
  85. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +1 -1
  86. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
  87. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
  88. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  89. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  90. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  91. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  92. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  93. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.json +1 -1
  94. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  95. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  96. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  99. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +38 -23
  101. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.json +24 -0
  103. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +27 -27
  108. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  109. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.dbg.json +4 -0
  113. package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.json +199 -0
  114. package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.dbg.json +4 -0
  115. package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.json +168 -0
  116. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +4 -0
  117. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.json +92 -0
  118. package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.dbg.json +4 -0
  119. package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.json +137 -0
  120. package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +4 -0
  121. package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.json +135 -0
  122. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +4 -0
  123. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.json +63 -0
  124. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
  125. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.json +36 -4
  126. package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.dbg.json +4 -0
  127. package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.json +252 -0
  128. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  129. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  130. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  131. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
  132. package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  133. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
  134. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  135. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  136. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  137. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  138. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  139. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.json +2 -2
  140. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  141. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  142. package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.dbg.json +4 -0
  143. package/build/artifacts/contracts/libraries/{SCY/SCYIndex.sol/SCYIndexLib.json → helpers/PYIndex.sol/PYIndexLib.json} +4 -4
  144. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +1 -1
  145. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  146. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  147. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.json +2 -2
  148. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
  149. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
  150. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  151. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
  152. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  153. package/build/artifacts/contracts/libraries/math/Math.sol/Math.json +2 -2
  154. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
  155. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
  156. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +1 -1
  157. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +1 -1
  158. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  159. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +209 -41
  160. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
  161. package/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol +13 -3
  162. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol +242 -0
  163. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +14 -10
  164. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol +146 -0
  165. package/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol +170 -0
  166. package/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol +12 -2
  167. package/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol +194 -0
  168. package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +41 -10
  169. package/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol +12 -8
  170. package/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol +184 -0
  171. package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +10 -12
  172. package/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol +1 -2
  173. package/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol +20 -10
  174. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +3 -1
  175. package/contracts/core/LiquidityMining/GaugeController/{PendleGaugeControllerMainchain.sol → PendleGaugeControllerMainchainUpg.sol} +0 -0
  176. package/contracts/core/LiquidityMining/GaugeController/{PendleGaugeControllerSidechain.sol → PendleGaugeControllerSidechainUpg.sol} +0 -0
  177. package/contracts/core/LiquidityMining/PendleGauge.sol +3 -2
  178. package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +41 -29
  179. package/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +4 -10
  180. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +33 -16
  181. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +2 -4
  182. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +5 -1
  183. package/contracts/core/Market/PendleMarket.sol +4 -5
  184. package/contracts/core/Market/PendleMarketFactory.sol +2 -1
  185. package/contracts/core/PendleERC20.sol +1 -1
  186. package/contracts/core/YieldContracts/InterestManagerYT.sol +0 -2
  187. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +3 -3
  188. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +2 -2
  189. package/contracts/core/YieldContracts/PendleYieldToken.sol +24 -32
  190. package/contracts/core/actions/ActionCallback.sol +10 -8
  191. package/contracts/core/actions/base/ActionSCYAndPTBase.sol +10 -9
  192. package/contracts/core/actions/base/ActionSCYAndYTBase.sol +5 -4
  193. package/contracts/core/actions/base/CallbackHelper.sol +1 -1
  194. package/contracts/interfaces/IEulerEToken.sol +60 -0
  195. package/contracts/interfaces/IEulerMarkets.sol +46 -0
  196. package/contracts/interfaces/IPGaugeController.sol +1 -1
  197. package/contracts/interfaces/IPInterestManagerYT.sol +1 -1
  198. package/contracts/interfaces/IPMarket.sol +1 -0
  199. package/contracts/interfaces/IPRouterStatic.sol +17 -10
  200. package/contracts/interfaces/IPVeToken.sol +2 -0
  201. package/contracts/interfaces/IPYieldToken.sol +2 -2
  202. package/contracts/interfaces/ISAvax.sol +61 -0
  203. package/contracts/interfaces/ISJoe.sol +60 -0
  204. package/contracts/interfaces/IStETH.sol +14 -0
  205. package/contracts/interfaces/IStargateLPStaking.sol +47 -0
  206. package/contracts/interfaces/IStargatePool.sol +49 -0
  207. package/contracts/interfaces/IStargateRouter.sol +37 -0
  208. package/contracts/interfaces/ISuperComposableYield.sol +6 -9
  209. package/contracts/interfaces/IWAvax.sol +34 -0
  210. package/contracts/libraries/RewardManager.sol +2 -3
  211. package/contracts/libraries/RewardManagerAbstract.sol +1 -0
  212. package/contracts/libraries/VeBalanceLib.sol +13 -0
  213. package/contracts/libraries/helpers/ArrayLib.sol +0 -17
  214. package/contracts/libraries/helpers/PYIndex.sol +69 -0
  215. package/contracts/libraries/helpers/TokenHelper.sol +4 -2
  216. package/contracts/libraries/math/LogExpMath.sol +46 -44
  217. package/contracts/libraries/math/MarketApproxLib.sol +10 -12
  218. package/contracts/libraries/math/MarketMathCore.sol +24 -15
  219. package/contracts/libraries/math/Math.sol +14 -0
  220. package/contracts/offchain-helpers/RouterStatic.sol +177 -66
  221. package/deployments/43113-benqi.json +2 -2
  222. package/deployments/43113-core.json +7 -7
  223. package/deployments/43113-markets/benqi-market-599408.json +7 -0
  224. package/deployments/43113-markets/benqi-market-93bbf0.json +7 -0
  225. package/deployments/80001-benqi.json +2 -2
  226. package/deployments/80001-core.json +6 -6
  227. package/deployments/80001-markets/benqi-market-007811.json +7 -0
  228. package/deployments/80001-markets/benqi-market-3fe528.json +7 -0
  229. package/package.json +3 -3
  230. package/typechain-types/CelerSenderUpg.ts +16 -16
  231. package/typechain-types/IERC20Upgradeable.ts +300 -0
  232. package/typechain-types/IEulerEToken.ts +320 -0
  233. package/typechain-types/IEulerMarkets.ts +204 -0
  234. package/typechain-types/IPInterestManagerYT.ts +3 -3
  235. package/typechain-types/IPRouterStatic.ts +75 -97
  236. package/typechain-types/IPVeToken.ts +34 -0
  237. package/typechain-types/IPYieldToken.ts +47 -47
  238. package/typechain-types/ISAvax.ts +430 -0
  239. package/typechain-types/ISJoe.ts +340 -0
  240. package/typechain-types/IStETH.ts +201 -0
  241. package/typechain-types/IStargateLPStaking.ts +108 -0
  242. package/typechain-types/IStargatePool.ts +94 -0
  243. package/typechain-types/ISuperComposableYield.ts +72 -26
  244. package/typechain-types/IWAvax.ts +380 -0
  245. package/typechain-types/PendleAaveV3SCY.ts +74 -28
  246. package/typechain-types/PendleERC4626SCY.ts +73 -27
  247. package/typechain-types/PendleEulerSCY.ts +965 -0
  248. package/typechain-types/PendlePrincipalToken.ts +0 -104
  249. package/typechain-types/PendleQiSAvaxSCY.ts +1098 -0
  250. package/typechain-types/PendleQiTokenSCY.ts +74 -28
  251. package/typechain-types/PendleSAvaxSCY.ts +962 -0
  252. package/typechain-types/PendleSJoeSCY.ts +1053 -0
  253. package/typechain-types/PendleStargatePool.ts +73 -27
  254. package/typechain-types/PendleStargateSCY.ts +1135 -0
  255. package/typechain-types/PendleVotingControllerUpg.ts +88 -75
  256. package/typechain-types/PendleWstEthSCY.ts +86 -27
  257. package/typechain-types/PendleYearnVaultScy.ts +73 -27
  258. package/typechain-types/PendleYieldToken.ts +44 -148
  259. package/typechain-types/RouterStatic.ts +327 -253
  260. package/typechain-types/SCYBase.ts +73 -27
  261. package/typechain-types/SCYBaseWithRewards.ts +73 -27
  262. package/typechain-types/VotingControllerStorageUpg.ts +0 -21
  263. package/typechain-types/VotingEscrowPendleMainchain.ts +118 -16
  264. package/typechain-types/VotingEscrowPendleSidechain.ts +34 -0
  265. package/typechain-types/VotingEscrowTokenBase.ts +34 -0
  266. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  267. package/typechain-types/factories/ActionCore__factory.ts +1 -1
  268. package/typechain-types/factories/ActionYT__factory.ts +1 -1
  269. package/typechain-types/factories/CelerSenderUpg__factory.ts +2 -2
  270. package/typechain-types/factories/IERC20Upgradeable__factory.ts +209 -0
  271. package/typechain-types/factories/IEulerEToken__factory.ts +174 -0
  272. package/typechain-types/factories/IEulerMarkets__factory.ts +99 -0
  273. package/typechain-types/factories/IPInterestManagerYT__factory.ts +1 -1
  274. package/typechain-types/factories/IPRouterStatic__factory.ts +38 -23
  275. package/typechain-types/factories/IPVeToken__factory.ts +24 -0
  276. package/typechain-types/factories/IPYieldToken__factory.ts +27 -27
  277. package/typechain-types/factories/ISAvax__factory.ts +208 -0
  278. package/typechain-types/factories/ISJoe__factory.ts +177 -0
  279. package/typechain-types/factories/IStETH__factory.ts +101 -0
  280. package/typechain-types/factories/IStargateLPStaking__factory.ts +90 -0
  281. package/typechain-types/factories/IStargatePool__factory.ts +79 -0
  282. package/typechain-types/factories/ISuperComposableYield__factory.ts +36 -4
  283. package/typechain-types/factories/IWAvax__factory.ts +261 -0
  284. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +38 -6
  285. package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
  286. package/typechain-types/factories/PendleERC20__factory.ts +1 -1
  287. package/typechain-types/factories/PendleERC4626SCY__factory.ts +37 -5
  288. package/typechain-types/factories/PendleEulerSCY__factory.ts +796 -0
  289. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  290. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  291. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  292. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  293. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -76
  294. package/typechain-types/factories/PendleQiSAvaxSCY__factory.ts +917 -0
  295. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +38 -6
  296. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  297. package/typechain-types/factories/PendleSAvaxSCY__factory.ts +796 -0
  298. package/typechain-types/factories/PendleSJoeSCY__factory.ts +845 -0
  299. package/typechain-types/factories/PendleStargatePool__factory.ts +37 -5
  300. package/typechain-types/factories/PendleStargateSCY__factory.ts +952 -0
  301. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +44 -38
  302. package/typechain-types/factories/PendleWstEthSCY__factory.ts +65 -6
  303. package/typechain-types/factories/PendleYearnVaultScy__factory.ts +37 -5
  304. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  305. package/typechain-types/factories/PendleYieldToken__factory.ts +19 -94
  306. package/typechain-types/factories/RouterStatic__factory.ts +208 -40
  307. package/typechain-types/factories/SCYBaseWithRewards__factory.ts +36 -4
  308. package/typechain-types/factories/SCYBase__factory.ts +36 -4
  309. package/typechain-types/factories/VotingControllerStorageUpg__factory.ts +0 -13
  310. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +65 -3
  311. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +25 -1
  312. package/typechain-types/factories/VotingEscrowTokenBase__factory.ts +24 -0
  313. package/typechain-types/hardhat.d.ts +103 -13
  314. package/typechain-types/index.ts +24 -4
  315. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.dbg.json +0 -4
  316. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.json +0 -242
  317. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechainUpg.dbg.json +0 -4
  318. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +0 -4
  319. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +0 -329
  320. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +0 -4
  321. package/contracts/core/PendleERC20Permit.sol +0 -84
  322. package/contracts/libraries/SCY/SCYIndex.sol +0 -72
  323. package/deployments/43113-markets/benqi-market-5C60ba.json +0 -7
  324. package/deployments/43113-markets/benqi-market-611eA3.json +0 -7
  325. package/deployments/43113-markets/benqi-market-A386eA.json +0 -7
  326. package/deployments/43113-markets/benqi-market-bf8841.json +0 -7
  327. package/deployments/80001-markets/benqi-market-5E1104.json +0 -7
  328. package/deployments/80001-markets/benqi-market-899134.json +0 -7
  329. package/deployments/80001-markets/benqi-market-94C86f.json +0 -7
  330. package/deployments/80001-markets/benqi-market-c68429.json +0 -7
@@ -3,7 +3,7 @@ pragma solidity 0.8.15;
3
3
 
4
4
  import "./Math.sol";
5
5
  import "./LogExpMath.sol";
6
- import "../SCY/SCYIndex.sol";
6
+ import "../helpers/PYIndex.sol";
7
7
  import "../helpers/MiniHelpers.sol";
8
8
 
9
9
  struct MarketState {
@@ -36,7 +36,7 @@ library MarketMathCore {
36
36
  using Math for uint256;
37
37
  using Math for int256;
38
38
  using LogExpMath for int256;
39
- using SCYIndexLib for SCYIndex;
39
+ using PYIndexLib for PYIndex;
40
40
 
41
41
  int256 internal constant MINIMUM_LIQUIDITY = 10**3;
42
42
  int256 internal constant PERCENTAGE_DECIMALS = 100;
@@ -54,7 +54,7 @@ library MarketMathCore {
54
54
 
55
55
  function addLiquidity(
56
56
  MarketState memory market,
57
- SCYIndex index,
57
+ PYIndex index,
58
58
  uint256 scyDesired,
59
59
  uint256 ptDesired,
60
60
  uint256 blockTime
@@ -97,7 +97,7 @@ library MarketMathCore {
97
97
 
98
98
  function swapExactPtForScy(
99
99
  MarketState memory market,
100
- SCYIndex index,
100
+ PYIndex index,
101
101
  uint256 exactPtToMarket,
102
102
  uint256 blockTime
103
103
  ) internal pure returns (uint256 netScyToAccount, uint256 netScyToReserve) {
@@ -114,7 +114,7 @@ library MarketMathCore {
114
114
 
115
115
  function swapScyForExactPt(
116
116
  MarketState memory market,
117
- SCYIndex index,
117
+ PYIndex index,
118
118
  uint256 exactPtToAccount,
119
119
  uint256 blockTime
120
120
  ) internal pure returns (uint256 netScyToMarket, uint256 netScyToReserve) {
@@ -135,7 +135,7 @@ library MarketMathCore {
135
135
 
136
136
  function addLiquidityCore(
137
137
  MarketState memory market,
138
- SCYIndex index,
138
+ PYIndex index,
139
139
  int256 scyDesired,
140
140
  int256 ptDesired,
141
141
  uint256 blockTime
@@ -159,7 +159,9 @@ library MarketMathCore {
159
159
  /// MATH
160
160
  /// ------------------------------------------------------------
161
161
  if (market.totalLp == 0) {
162
- lpToAccount = index.scyToAsset(scyDesired).subNoNeg(MINIMUM_LIQUIDITY);
162
+ lpToAccount =
163
+ Math.sqrt((index.scyToAsset(scyDesired) * ptDesired).Uint()).Int() -
164
+ MINIMUM_LIQUIDITY;
163
165
  lpToReserve = MINIMUM_LIQUIDITY;
164
166
  scyUsed = scyDesired;
165
167
  ptUsed = ptDesired;
@@ -214,7 +216,7 @@ library MarketMathCore {
214
216
 
215
217
  function executeTradeCore(
216
218
  MarketState memory market,
217
- SCYIndex index,
219
+ PYIndex index,
218
220
  int256 netPtToAccount,
219
221
  uint256 blockTime
220
222
  ) internal pure returns (int256 netScyToAccount, int256 netScyToReserve) {
@@ -241,12 +243,20 @@ library MarketMathCore {
241
243
  /// ------------------------------------------------------------
242
244
  /// WRITE
243
245
  /// ------------------------------------------------------------
244
- _setNewMarketStateTrade(market, comp, index, netPtToAccount, netScyToAccount, blockTime);
246
+ _setNewMarketStateTrade(
247
+ market,
248
+ comp,
249
+ index,
250
+ netPtToAccount,
251
+ netScyToAccount,
252
+ netScyToReserve,
253
+ blockTime
254
+ );
245
255
  }
246
256
 
247
257
  function getMarketPreCompute(
248
258
  MarketState memory market,
249
- SCYIndex index,
259
+ PYIndex index,
250
260
  uint256 blockTime
251
261
  ) internal pure returns (MarketPreCompute memory res) {
252
262
  require(!MiniHelpers.isExpired(market.expiry, blockTime), "market expired");
@@ -294,16 +304,15 @@ library MarketMathCore {
294
304
 
295
305
  netAssetToReserve = (fee * market.reserveFeePercent.Int()) / PERCENTAGE_DECIMALS;
296
306
  netAssetToAccount = preFeeAssetToAccount - fee;
297
- // netAssetToMarket = (preFeeAssetToAccount - fee + netAssetToReserve)
298
- // .neg();
299
307
  }
300
308
 
301
309
  function _setNewMarketStateTrade(
302
310
  MarketState memory market,
303
311
  MarketPreCompute memory comp,
304
- SCYIndex index,
312
+ PYIndex index,
305
313
  int256 netPtToAccount,
306
314
  int256 netScyToAccount,
315
+ int256 netScyToReserve,
307
316
  uint256 blockTime
308
317
  ) internal pure {
309
318
  uint256 timeToExpiry = market.expiry - blockTime;
@@ -311,7 +320,7 @@ library MarketMathCore {
311
320
  market.lastTradeTime = blockTime;
312
321
 
313
322
  market.totalPt = market.totalPt.subNoNeg(netPtToAccount);
314
- market.totalScy = market.totalScy.subNoNeg(netScyToAccount);
323
+ market.totalScy = market.totalScy.subNoNeg(netScyToAccount + netScyToReserve);
315
324
 
316
325
  market.lastLnImpliedRate = _getLnImpliedRate(
317
326
  market.totalPt,
@@ -412,7 +421,7 @@ library MarketMathCore {
412
421
 
413
422
  function setInitialLnImpliedRate(
414
423
  MarketState memory market,
415
- SCYIndex index,
424
+ PYIndex index,
416
425
  int256 initialAnchor,
417
426
  uint256 blockTime
418
427
  ) internal pure {
@@ -59,6 +59,20 @@ library Math {
59
59
  }
60
60
  }
61
61
 
62
+ // @author Uniswap
63
+ function sqrt(uint256 y) internal pure returns (uint256 z) {
64
+ if (y > 3) {
65
+ z = y;
66
+ uint256 x = y / 2 + 1;
67
+ while (x < z) {
68
+ z = x;
69
+ x = (y / x + x) / 2;
70
+ }
71
+ } else if (y != 0) {
72
+ z = 1;
73
+ }
74
+ }
75
+
62
76
  function abs(int256 x) internal pure returns (uint256) {
63
77
  return uint256(x > 0 ? x : -x);
64
78
  }
@@ -19,7 +19,8 @@ contract RouterStatic is IPRouterStatic {
19
19
  using Math for uint256;
20
20
  using Math for int256;
21
21
  using LogExpMath for int256;
22
- using SCYIndexLib for SCYIndex;
22
+ using PYIndexLib for PYIndex;
23
+ using PYIndexLib for IPYieldToken;
23
24
 
24
25
  IPYieldContractFactory internal immutable yieldContractFactory;
25
26
  IPMarketFactory internal immutable marketFactory;
@@ -49,7 +50,7 @@ contract RouterStatic is IPRouterStatic {
49
50
  {
50
51
  (, address yt) = getPY(py);
51
52
  IPYieldToken YT = IPYieldToken(yt);
52
- exchangeRate = YT.scyIndexCurrent();
53
+ exchangeRate = YT.pyIndexCurrent();
53
54
  totalSupply = YT.totalSupply();
54
55
  address[] memory rewardTokens = YT.getRewardTokens();
55
56
  rewardIndexes = new RewardIndex[](rewardTokens.length);
@@ -78,7 +79,6 @@ contract RouterStatic is IPRouterStatic {
78
79
 
79
80
  function getMarketInfo(address market)
80
81
  external
81
- view
82
82
  returns (
83
83
  address pt,
84
84
  address scy,
@@ -145,7 +145,6 @@ contract RouterStatic is IPRouterStatic {
145
145
  uint256 ptDesired
146
146
  )
147
147
  external
148
- view
149
148
  returns (
150
149
  uint256 netLpOut,
151
150
  uint256 scyUsed,
@@ -154,7 +153,7 @@ contract RouterStatic is IPRouterStatic {
154
153
  {
155
154
  MarketState memory state = IPMarket(market).readState(false);
156
155
  (, netLpOut, scyUsed, ptUsed) = state.addLiquidity(
157
- scyIndex(market),
156
+ pyIndex(market),
158
157
  scyDesired,
159
158
  ptDesired,
160
159
  block.timestamp
@@ -163,23 +162,38 @@ contract RouterStatic is IPRouterStatic {
163
162
 
164
163
  function addLiquiditySinglePtStatic(address market, uint256 netPtIn)
165
164
  external
166
- returns (uint256 netLpOut)
165
+ returns (
166
+ uint256 netLpOut,
167
+ uint256 netScyFee,
168
+ uint256 priceImpact
169
+ )
167
170
  {
168
171
  require(false, "NOT IMPLEMENTED");
169
172
  }
170
173
 
171
- function addLiquiditySingleScy(address market, uint256 netScyIn)
174
+ function addLiquiditySingleScyStatic(address market, uint256 netScyIn)
172
175
  external
173
- returns (uint256 netLpOut)
176
+ returns (
177
+ uint256 netLpOut,
178
+ uint256 netScyFee,
179
+ uint256 priceImpact
180
+ )
174
181
  {
175
182
  require(false, "NOT IMPLEMENTED");
176
183
  }
177
184
 
178
- function addLiquiditySingleBaseToken(
185
+ function addLiquiditySingleBaseTokenStatic(
179
186
  address market,
180
187
  address baseToken,
181
188
  uint256 netBaseTokenIn
182
- ) external returns (uint256 netLpOut) {
189
+ )
190
+ external
191
+ returns (
192
+ uint256 netLpOut,
193
+ uint256 netScyFee,
194
+ uint256 priceImpact
195
+ )
196
+ {
183
197
  require(false, "NOT IMPLEMENTED");
184
198
  }
185
199
 
@@ -194,86 +208,124 @@ contract RouterStatic is IPRouterStatic {
194
208
 
195
209
  function removeLiquiditySinglePtStatic(address market, uint256 lpToRemove)
196
210
  external
197
- returns (uint256 netPtOut)
211
+ returns (
212
+ uint256 netPtOut,
213
+ uint256 netScyFee,
214
+ uint256 priceImpact
215
+ )
198
216
  {
199
217
  require(false, "NOT IMPLEMENTED");
200
218
  }
201
219
 
202
- function removeLiquiditySingleScy(address market, uint256 lpToRemove)
220
+ function removeLiquiditySingleScyStatic(address market, uint256 lpToRemove)
203
221
  external
204
- returns (uint256 netScyOut)
222
+ returns (
223
+ uint256 netScyOut,
224
+ uint256 netScyFee,
225
+ uint256 priceImpact
226
+ )
205
227
  {
206
228
  require(false, "NOT IMPLEMENTED");
207
229
  }
208
230
 
209
- function removeLiquiditySingleBaseToken(
231
+ function removeLiquiditySingleBaseTokenStatic(
210
232
  address market,
211
233
  uint256 lpToRemove,
212
234
  address baseToken
213
- ) external returns (uint256 netBaseTokenOut) {
235
+ )
236
+ external
237
+ returns (
238
+ uint256 netBaseTokenOut,
239
+ uint256 netScyFee,
240
+ uint256 priceImpact
241
+ )
242
+ {
214
243
  require(false, "NOT IMPLEMENTED");
215
244
  }
216
245
 
217
246
  function swapExactPtForScyStatic(address market, uint256 exactPtIn)
218
247
  public
219
- view
220
- returns (uint256 netScyOut, uint256 netScyFee)
248
+ returns (
249
+ uint256 netScyOut,
250
+ uint256 netScyFee,
251
+ uint256 priceImpact
252
+ )
221
253
  {
222
254
  MarketState memory state = IPMarket(market).readState(false);
223
255
  (netScyOut, netScyFee) = state.swapExactPtForScy(
224
- scyIndex(market),
256
+ pyIndex(market),
225
257
  exactPtIn,
226
258
  block.timestamp
227
259
  );
260
+ priceImpact = calcPriceImpact(market, exactPtIn.neg());
228
261
  }
229
262
 
230
263
  function swapScyForExactPtStatic(address market, uint256 exactPtOut)
231
264
  external
232
- view
233
- returns (uint256 netScyIn, uint256 netScyFee)
265
+ returns (
266
+ uint256 netScyIn,
267
+ uint256 netScyFee,
268
+ uint256 priceImpact
269
+ )
234
270
  {
235
271
  MarketState memory state = IPMarket(market).readState(false);
236
272
  (netScyIn, netScyFee) = state.swapScyForExactPt(
237
- scyIndex(market),
273
+ pyIndex(market),
238
274
  exactPtOut,
239
275
  block.timestamp
240
276
  );
277
+ priceImpact = calcPriceImpact(market, exactPtOut.Int());
241
278
  }
242
279
 
243
280
  function swapExactScyForPtStatic(address market, uint256 exactScyIn)
244
281
  public
245
- view
246
- returns (uint256 netPtOut, uint256 netScyFee)
282
+ returns (
283
+ uint256 netPtOut,
284
+ uint256 netScyFee,
285
+ uint256 priceImpact
286
+ )
247
287
  {
248
288
  MarketState memory state = IPMarket(market).readState(false);
249
289
  (netPtOut, , netScyFee) = state.approxSwapExactScyForPt(
250
- scyIndex(market),
290
+ pyIndex(market),
251
291
  exactScyIn,
252
292
  block.timestamp,
253
293
  approxParams
254
294
  );
295
+ priceImpact = calcPriceImpact(market, netPtOut.Int());
255
296
  }
256
297
 
257
298
  function swapPtForExactScyStatic(address market, uint256 exactScyOut)
258
299
  public
259
- view
260
- returns (uint256 netPtIn, uint256 netScyFee)
300
+ returns (
301
+ uint256 netPtIn,
302
+ uint256 netScyFee,
303
+ uint256 priceImpact
304
+ )
261
305
  {
262
306
  MarketState memory state = IPMarket(market).readState(false);
263
307
 
264
308
  (netPtIn, , netScyFee) = state.approxSwapPtForExactScy(
265
- scyIndex(market),
309
+ pyIndex(market),
266
310
  exactScyOut,
267
311
  block.timestamp,
268
312
  approxParams
269
313
  );
314
+ priceImpact = calcPriceImpact(market, netPtIn.neg());
270
315
  }
271
316
 
272
317
  function swapExactBaseTokenForPtStatic(
273
318
  address market,
274
319
  address baseToken,
275
320
  uint256 amountBaseToken
276
- ) external view returns (uint256 netPtOut, uint256 netScyFee) {
321
+ )
322
+ external
323
+ returns (
324
+ uint256 netPtOut,
325
+ uint256 netScyFee,
326
+ uint256 priceImpact
327
+ )
328
+ {
277
329
  (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
278
330
 
279
331
  return swapExactScyForPtStatic(market, SCY.previewDeposit(baseToken, amountBaseToken));
@@ -283,9 +335,16 @@ contract RouterStatic is IPRouterStatic {
283
335
  address market,
284
336
  uint256 exactYtIn,
285
337
  address baseToken
286
- ) external view returns (uint256 netBaseTokenOut, uint256 netScyFee) {
338
+ )
339
+ external
340
+ returns (
341
+ uint256 netBaseTokenOut,
342
+ uint256 netScyFee,
343
+ uint256 priceImpact
344
+ )
345
+ {
287
346
  uint256 netScyOut;
288
- (netScyOut, netScyFee) = swapExactPtForScyStatic(market, exactYtIn);
347
+ (netScyOut, netScyFee, priceImpact) = swapExactPtForScyStatic(market, exactYtIn);
289
348
 
290
349
  (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
291
350
  netBaseTokenOut = SCY.previewRedeem(baseToken, netScyOut);
@@ -293,31 +352,39 @@ contract RouterStatic is IPRouterStatic {
293
352
 
294
353
  function swapScyForExactYtStatic(address market, uint256 exactYtOut)
295
354
  external
296
- view
297
- returns (uint256 netScyIn, uint256 netScyFee)
355
+ returns (
356
+ uint256 netScyIn,
357
+ uint256 netScyFee,
358
+ uint256 priceImpact
359
+ )
298
360
  {
299
361
  MarketState memory state = IPMarket(market).readState(false);
300
362
 
301
- SCYIndex index = scyIndex(market);
363
+ PYIndex index = pyIndex(market);
302
364
 
303
365
  uint256 scyReceived;
304
366
  (scyReceived, netScyFee) = state.swapExactPtForScy(
305
- scyIndex(market),
367
+ pyIndex(market),
306
368
  exactYtOut,
307
369
  block.timestamp
308
370
  );
309
371
 
310
372
  uint256 totalScyNeed = index.assetToScyUp(exactYtOut);
311
373
  netScyIn = totalScyNeed.subMax0(scyReceived);
374
+
375
+ priceImpact = calcPriceImpact(market, exactYtOut.neg());
312
376
  }
313
377
 
314
378
  function swapExactScyForYtStatic(address market, uint256 exactScyIn)
315
379
  public
316
- view
317
- returns (uint256 netYtOut, uint256 netScyFee)
380
+ returns (
381
+ uint256 netYtOut,
382
+ uint256 netScyFee,
383
+ uint256 priceImpact
384
+ )
318
385
  {
319
386
  MarketState memory state = IPMarket(market).readState(false);
320
- SCYIndex index = scyIndex(market);
387
+ PYIndex index = pyIndex(market);
321
388
 
322
389
  (netYtOut, , netScyFee) = state.approxSwapExactScyForYt(
323
390
  index,
@@ -325,16 +392,21 @@ contract RouterStatic is IPRouterStatic {
325
392
  block.timestamp,
326
393
  approxParams
327
394
  );
395
+
396
+ priceImpact = calcPriceImpact(market, netYtOut.neg());
328
397
  }
329
398
 
330
399
  function swapExactYtForScyStatic(address market, uint256 exactYtIn)
331
400
  public
332
- view
333
- returns (uint256 netScyOut, uint256 netScyFee)
401
+ returns (
402
+ uint256 netScyOut,
403
+ uint256 netScyFee,
404
+ uint256 priceImpact
405
+ )
334
406
  {
335
407
  MarketState memory state = IPMarket(market).readState(false);
336
408
 
337
- SCYIndex index = scyIndex(market);
409
+ PYIndex index = pyIndex(market);
338
410
 
339
411
  uint256 scyOwed;
340
412
  (scyOwed, netScyFee) = state.swapScyForExactPt(index, exactYtIn, block.timestamp);
@@ -343,16 +415,20 @@ contract RouterStatic is IPRouterStatic {
343
415
  uint256 amountPYToRedeemScyOut = exactYtIn - amountPYToRepayScyOwed;
344
416
 
345
417
  netScyOut = index.assetToScy(amountPYToRedeemScyOut);
418
+ priceImpact = calcPriceImpact(market, exactYtIn.Int());
346
419
  }
347
420
 
348
421
  function swapYtForExactScyStatic(address market, uint256 exactScyOut)
349
422
  external
350
- view
351
- returns (uint256 netYtIn, uint256 netScyFee)
423
+ returns (
424
+ uint256 netYtIn,
425
+ uint256 netScyFee,
426
+ uint256 priceImpact
427
+ )
352
428
  {
353
429
  MarketState memory state = IPMarket(market).readState(false);
354
430
 
355
- SCYIndex index = scyIndex(market);
431
+ PYIndex index = pyIndex(market);
356
432
 
357
433
  (netYtIn, , netScyFee) = state.approxSwapYtForExactScy(
358
434
  index,
@@ -360,15 +436,23 @@ contract RouterStatic is IPRouterStatic {
360
436
  block.timestamp,
361
437
  approxParams
362
438
  );
439
+ priceImpact = calcPriceImpact(market, netYtIn.Int());
363
440
  }
364
441
 
365
442
  function swapExactYtForBaseTokenStatic(
366
443
  address market,
367
444
  uint256 exactYtIn,
368
445
  address baseToken
369
- ) external view returns (uint256 netBaseTokenOut, uint256 netScyFee) {
446
+ )
447
+ external
448
+ returns (
449
+ uint256 netBaseTokenOut,
450
+ uint256 netScyFee,
451
+ uint256 priceImpact
452
+ )
453
+ {
370
454
  uint256 netScyOut;
371
- (netScyOut, netScyFee) = swapExactYtForScyStatic(market, exactYtIn);
455
+ (netScyOut, netScyFee, priceImpact) = swapExactYtForScyStatic(market, exactYtIn);
372
456
 
373
457
  (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
374
458
  netBaseTokenOut = SCY.previewRedeem(baseToken, netScyOut);
@@ -378,7 +462,14 @@ contract RouterStatic is IPRouterStatic {
378
462
  address market,
379
463
  address baseToken,
380
464
  uint256 amountBaseToken
381
- ) external view returns (uint256 netPtOut, uint256 netScyFee) {
465
+ )
466
+ external
467
+ returns (
468
+ uint256 netPtOut,
469
+ uint256 netScyFee,
470
+ uint256 priceImpact
471
+ )
472
+ {
382
473
  (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
383
474
 
384
475
  return swapExactScyForYtStatic(market, SCY.previewDeposit(baseToken, amountBaseToken));
@@ -392,7 +483,7 @@ contract RouterStatic is IPRouterStatic {
392
483
  {
393
484
  IPYieldToken _YT = IPYieldToken(YT);
394
485
  require(!_YT.isExpired(), "YT is expired");
395
- return amountScyToMint.mulDown(_YT.scyIndexCurrent());
486
+ return amountScyToMint.mulDown(_YT.pyIndexCurrent());
396
487
  }
397
488
 
398
489
  function redeemPYToScyStatic(address YT, uint256 amountPYToRedeem)
@@ -400,7 +491,7 @@ contract RouterStatic is IPRouterStatic {
400
491
  returns (uint256 amountPY)
401
492
  {
402
493
  IPYieldToken _YT = IPYieldToken(YT);
403
- return amountPYToRedeem.divDown(_YT.scyIndexCurrent());
494
+ return amountPYToRedeem.divDown(_YT.pyIndexCurrent());
404
495
  }
405
496
 
406
497
  function mintPYFromBaseStatic(
@@ -421,10 +512,10 @@ contract RouterStatic is IPRouterStatic {
421
512
  return SCY.previewRedeem(baseToken, redeemPYToScyStatic(YT, amountPYToRedeem));
422
513
  }
423
514
 
424
- function scyIndex(address market) public view returns (SCYIndex index) {
425
- (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
515
+ function pyIndex(address market) public returns (PYIndex index) {
516
+ (, , IPYieldToken YT) = IPMarket(market).readTokens();
426
517
 
427
- return SCYIndexLib.newIndex(SCY);
518
+ return YT.newIndex();
428
519
  }
429
520
 
430
521
  function getPY(address py) public view returns (address pt, address yt) {
@@ -437,30 +528,50 @@ contract RouterStatic is IPRouterStatic {
437
528
  }
438
529
  }
439
530
 
440
- function getPtImpliedYield(address market) public view returns (int256) {
531
+ function getPtImpliedYield(address market) public returns (int256) {
441
532
  MarketState memory state = IPMarket(market).readState(false);
442
533
 
443
534
  int256 lnImpliedRate = (state.lastLnImpliedRate).Int();
444
535
  return lnImpliedRate.exp();
445
536
  }
446
537
 
447
- function getExchangeRate(address market) public view returns (uint256) {
538
+ function getExchangeRate(address market) public returns (uint256) {
539
+ return getTradeExchangeRateIncludeFee(market, 0);
540
+ }
541
+
542
+ function getTradeExchangeRateIncludeFee(address market, int256 netPtOut)
543
+ public
544
+ returns (uint256)
545
+ {
546
+ int256 netPtToAccount = netPtOut;
448
547
  MarketState memory state = IPMarket(market).readState(false);
449
- MarketPreCompute memory comp = state.getMarketPreCompute(
450
- scyIndex(market),
451
- block.timestamp
548
+ MarketPreCompute memory comp = state.getMarketPreCompute(pyIndex(market), block.timestamp);
549
+
550
+ int256 preFeeExchangeRate = MarketMathCore._getExchangeRate(
551
+ state.totalPt,
552
+ comp.totalAsset,
553
+ comp.rateScalar,
554
+ comp.rateAnchor,
555
+ netPtToAccount
452
556
  );
453
557
 
454
- return
455
- MarketMathCore
456
- ._getExchangeRate(
457
- state.totalPt,
458
- comp.totalAsset,
459
- comp.rateScalar,
460
- comp.rateAnchor,
461
- 0
462
- )
463
- .Uint();
558
+ if (netPtToAccount > 0) {
559
+ int256 postFeeExchangeRate = preFeeExchangeRate.divDown(comp.feeRate);
560
+ require(postFeeExchangeRate >= Math.IONE, "exchange rate below 1");
561
+ return postFeeExchangeRate.Uint();
562
+ } else {
563
+ return preFeeExchangeRate.mulDown(comp.feeRate).Uint();
564
+ }
565
+ }
566
+
567
+ function calcPriceImpact(address market, int256 netPtOut)
568
+ public
569
+ returns (uint256 priceImpact)
570
+ {
571
+ uint256 preTradeRate = getExchangeRate(market);
572
+ uint256 tradedRate = getTradeExchangeRateIncludeFee(market, netPtOut);
573
+
574
+ priceImpact = (tradedRate.Int() - preTradeRate.Int()).abs().divDown(preTradeRate);
464
575
  }
465
576
 
466
577
  function getUserPYInfo(address py, address user)
@@ -3,8 +3,8 @@
3
3
  "QI": "0x09Fe18C4C0cFE929a6CD40903129F9bA3C837866",
4
4
  "USD": "0x2018ecc38fbca2ce3A62f96f9F0D38F0DEE2f99D",
5
5
  "qiUSD": "0x884f8d66862b03434E11f4Bd5527A1119c115D83",
6
- "scyQiUSD": "0x4c91cC2062ABE2000A0E8AdF6b9b3Ceea839EAF7",
6
+ "scyQiUSD": "0xc68Fe29C91a5611e332A57d4FC091eDe7fD5156d",
7
7
  "WAVAX": "0xD323E5337713D2e01fb341D960BC31e1FB42348d",
8
8
  "qiAVAX": "0xABD65178Aa35051277b062327A70644F10D3cB9d",
9
- "scyQiAVAX": "0xe0c34CeF3980988a71aFC902FD7B12E0c51961E3"
9
+ "scyQiAVAX": "0x60e235D9836Ecf533966E2ef94795C83FcB5E7e3"
10
10
  }
@@ -3,14 +3,14 @@
3
3
  "network": 43113,
4
4
  "celerBus": "0xE9533976C590200E32d95C53f06AE12d292cFc47",
5
5
  "treasury": "0xB4E292AD98Ba0D5531Ca573757f7b7d6c0C205d8",
6
- "governanceManager": "0x96Ee4f9D53dFac1fDC10CD079F5D850cEb95b464",
6
+ "governanceManager": "0x8b6618109D33f84e1C83fFA50a1aAC3bEDc3d523",
7
7
  "PENDLE": "0x83B694f9Ef84D22BECe87257f0cd4513737A505e",
8
- "yieldContractFactory": "0x2B233F133f3DA67698453F4A251BAF8BAc1E584d",
9
- "marketFactory": "0xE3a730f28EAe40309A9868Fb5b66B5BaaF531204",
8
+ "yieldContractFactory": "0xf9397B3b93d118587c29bA2a166c0192251fc758",
9
+ "marketFactory": "0x2FfdD5E68ce0F668498029c1219Db39f79ebD5bd",
10
10
  "router": "0xFEdBED4682D136925d30FFb9B8977CC9b3a6c406",
11
- "routerStatic": "0x1436Cb03C753bB9fAc7fcfE5627d08F143D6d8ed",
11
+ "routerStatic": "0x501E089e6BD6b78e6E435C15118E52c665931850",
12
12
  "startTime": 1657756800,
13
- "vePendle": "0xD05B49500F35d879F3Bf220c81BE3ff9d73Ca205",
14
- "votingController": "0x449f676be160C5C682E1E64934f29641D6096116",
15
- "gaugeController": "0xc13B5c62e80bA35fEF620de4257e961AafFD5542"
13
+ "vePendle": "0xa94936409d9B0633dB6271Fc2789aBa9C74bD729",
14
+ "votingController": "0x676A97883D396b21f3a7554A73F30187752c7C45",
15
+ "gaugeController": "0x8490DDFBCf1F451dC25e7deaeB9ac6137E75b91b"
16
16
  }
@@ -0,0 +1,7 @@
1
+ {
2
+ "SCY": "0xc68Fe29C91a5611e332A57d4FC091eDe7fD5156d",
3
+ "expiry": 1688860800,
4
+ "PT": "0x43f637d5C1E6c4Ba6c557537ef59c56cCDeD9228",
5
+ "YT": "0xa6Fe544BbF21D0964452120eF4d1613227abE8E1",
6
+ "market": "0x4370105207dBdabCDE6f6B719Fd2E7f373599408"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "SCY": "0x60e235D9836Ecf533966E2ef94795C83FcB5E7e3",
3
+ "expiry": 1688860800,
4
+ "PT": "0x1c47Bc3d191E08Ae4d60c9a2dC5D1D04D31A89fA",
5
+ "YT": "0x2bf665477C0C7AE4c443a71b80Fbff2a87DE0776",
6
+ "market": "0xE327922Eadc6Fe151915906F548F555A4b93bbf0"
7
+ }