@pendle/core-v2 0.17.4-testnet → 0.17.6-testnet

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 (283) hide show
  1. package/README.md +28 -0
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
  7. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.json +2 -2
  10. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.json +2 -2
  12. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +1 -1
  13. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  14. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
  15. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +1 -1
  16. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +2 -2
  17. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.json +26 -1
  19. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  20. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +28 -3
  21. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  22. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +28 -3
  23. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  24. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  25. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  26. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  27. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  28. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  29. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  30. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  31. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  32. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  33. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  34. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  35. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  36. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  37. package/build/artifacts/contracts/LiquidityMining/libraries/WeekMath.sol/WeekMath.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +22 -28
  40. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +3 -22
  42. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  44. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  46. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  48. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  51. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  53. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.json +2 -2
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.json +2 -2
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.json +2 -2
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  76. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  78. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  79. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  80. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  81. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  82. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  83. package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  84. package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.json +2 -2
  85. package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  86. package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.json +2 -2
  87. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.json +2 -2
  89. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
  90. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
  91. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.json +2 -2
  92. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  93. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +2 -18
  94. package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  95. package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.json +2 -2
  96. package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +1 -1
  99. package/build/artifacts/contracts/interfaces/IBoringOwnableUpgradeable.sol/IBoringOwnableUpgradeable.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  109. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.json +187 -1
  110. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.json +0 -19
  112. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  113. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.json +26 -1
  114. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  115. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.json +26 -1
  116. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  117. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
  118. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
  119. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  120. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  121. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  122. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
  123. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
  124. package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.dbg.json +1 -1
  125. package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +1 -1
  126. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
  127. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
  128. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
  129. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.json +2 -2
  130. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  131. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  132. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
  133. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +2 -2
  134. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  135. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +160 -60
  136. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  137. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
  138. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  139. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +2 -2
  140. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  141. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
  142. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  143. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +2 -2
  144. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  145. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
  146. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
  147. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +2 -2
  148. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  149. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
  150. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  151. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
  152. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  153. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  154. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  155. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  156. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  157. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +1 -1
  158. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +2 -2
  159. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.dbg.json +1 -1
  160. package/build/artifacts/contracts/router/kyberswap/IMultihopRouter.sol/IMultihopRouter.dbg.json +1 -1
  161. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
  162. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol +1 -4
  163. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol +6 -5
  164. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol +1 -4
  165. package/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol +1 -1
  166. package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +9 -6
  167. package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +11 -21
  168. package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol +0 -3
  169. package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol +0 -3
  170. package/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +34 -54
  171. package/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +6 -25
  172. package/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +20 -38
  173. package/contracts/LiquidityMining/libraries/VeHistoryLib.sol +1 -1
  174. package/contracts/core/BulkSeller/BulkSeller.sol +35 -42
  175. package/contracts/core/BulkSeller/BulkSellerFactory.sol +5 -9
  176. package/contracts/core/BulkSeller/BulkSellerMathCore.sol +6 -5
  177. package/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol +1 -3
  178. package/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol +1 -1
  179. package/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol +1 -1
  180. package/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol +1 -1
  181. package/contracts/core/YieldContracts/PendleYieldToken.sol +6 -6
  182. package/contracts/core/erc20/PendleERC20.sol +2 -2
  183. package/contracts/core/erc20/PendleERC20Permit.sol +1 -1
  184. package/contracts/core/libraries/ArrayLib.sol +1 -1
  185. package/contracts/core/libraries/BoringOwnableUpgradeable.sol +1 -1
  186. package/contracts/core/libraries/Errors.sol +0 -1
  187. package/contracts/core/libraries/MiniHelpers.sol +1 -0
  188. package/contracts/core/libraries/TokenHelper.sol +4 -5
  189. package/contracts/interfaces/Curve/ICrvPool.sol +3 -4
  190. package/contracts/interfaces/Curve/ITriCrvPool.sol +1 -4
  191. package/contracts/interfaces/IBoringOwnableUpgradeable.sol +2 -2
  192. package/contracts/interfaces/ILayerZeroEndpoint.sol +1 -1
  193. package/contracts/interfaces/ILayerZeroReceiver.sol +8 -3
  194. package/contracts/interfaces/IPBulkSeller.sol +30 -6
  195. package/contracts/interfaces/IPBulkSellerFactory.sol +0 -2
  196. package/contracts/interfaces/IPGaugeController.sol +7 -1
  197. package/contracts/interfaces/IPMarket.sol +2 -12
  198. package/contracts/interfaces/IPMsgReceiverApp.sol +1 -1
  199. package/contracts/interfaces/IPMsgSendEndpoint.sol +1 -1
  200. package/contracts/interfaces/IPVeToken.sol +1 -1
  201. package/contracts/interfaces/IREDACTEDStaking.sol +1 -1
  202. package/contracts/interfaces/IStETH.sol +1 -1
  203. package/contracts/interfaces/IStargateLPStaking.sol +1 -1
  204. package/contracts/interfaces/IStargatePool.sol +1 -1
  205. package/contracts/interfaces/IStargateRouter.sol +1 -1
  206. package/contracts/interfaces/IWXBTRFLY.sol +1 -1
  207. package/contracts/offchain-helpers/MarketMathStatic.sol +152 -34
  208. package/contracts/offchain-helpers/RouterStatic.sol +58 -32
  209. package/contracts/router/ActionAddRemoveLiq.sol +2 -2
  210. package/contracts/router/ActionMintRedeem.sol +4 -4
  211. package/contracts/router/ActionSwapPT.sol +4 -4
  212. package/contracts/router/ActionSwapPTYT.sol +1 -1
  213. package/contracts/router/ActionSwapYT.sol +8 -8
  214. package/contracts/router/base/ActionBaseMintRedeem.sol +6 -7
  215. package/contracts/router/base/MarketApproxLib.sol +14 -8
  216. package/contracts/router/kyberswap/AggregationRouterHelper.sol +1 -1
  217. package/contracts/router/kyberswap/IAggregatorRouterHelper.sol +1 -1
  218. package/contracts/router/kyberswap/IMultihopRouter.sol +1 -1
  219. package/deployments/43113-core.json +1 -1
  220. package/deployments/43113-markets/USDC-FEB-4TH.json +10 -0
  221. package/deployments/43113-markets/WETH-FEB-4TH.json +11 -0
  222. package/package.json +1 -1
  223. package/typechain-types/BulkSeller.ts +59 -6
  224. package/typechain-types/BulkSellerFactory.ts +0 -16
  225. package/typechain-types/IApeStaking.ts +274 -0
  226. package/typechain-types/IPBulkSeller.ts +178 -9
  227. package/typechain-types/IPBulkSellerFactory.ts +0 -16
  228. package/typechain-types/IPGaugeController.ts +23 -2
  229. package/typechain-types/IPGaugeControllerMainchain.ts +23 -2
  230. package/typechain-types/PendleApeStakingSY.ts +1251 -0
  231. package/typechain-types/PendleGaugeControllerBaseUpg.ts +23 -2
  232. package/typechain-types/PendleGaugeControllerMainchainUpg.ts +23 -2
  233. package/typechain-types/PendleGaugeControllerSidechainUpg.ts +23 -2
  234. package/typechain-types/RouterStatic.ts +40 -20
  235. package/typechain-types/SYBaseAutoCompound.ts +1203 -0
  236. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
  237. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  238. package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
  239. package/typechain-types/factories/ActionMisc__factory.ts +1 -1
  240. package/typechain-types/factories/ActionSwapPTYT__factory.ts +1 -1
  241. package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
  242. package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
  243. package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
  244. package/typechain-types/factories/BaseSplitCodeFactoryContract__factory.ts +1 -1
  245. package/typechain-types/factories/BoringOwnableUpgradeableData__factory.ts +1 -1
  246. package/typechain-types/factories/BulkSellerFactory__factory.ts +2 -21
  247. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  248. package/typechain-types/factories/BulkSeller__factory.ts +21 -27
  249. package/typechain-types/factories/Errors__factory.ts +1 -17
  250. package/typechain-types/factories/IApeStaking__factory.ts +127 -0
  251. package/typechain-types/factories/IPBulkSellerFactory__factory.ts +0 -19
  252. package/typechain-types/factories/IPBulkSeller__factory.ts +187 -1
  253. package/typechain-types/factories/IPGaugeControllerMainchain__factory.ts +26 -1
  254. package/typechain-types/factories/IPGaugeController__factory.ts +26 -1
  255. package/typechain-types/factories/MarketMathStatic__factory.ts +1 -1
  256. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  257. package/typechain-types/factories/PendleApeStakingSY__factory.ts +1065 -0
  258. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
  259. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
  260. package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
  261. package/typechain-types/factories/PendleERC20__factory.ts +1 -1
  262. package/typechain-types/factories/PendleFeeDistributorFactory__factory.ts +1 -1
  263. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  264. package/typechain-types/factories/PendleGaugeControllerBaseUpg__factory.ts +26 -1
  265. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +27 -2
  266. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +27 -2
  267. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
  268. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  269. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  270. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  271. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  272. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  273. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  274. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  275. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  276. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  277. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  278. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  279. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  280. package/typechain-types/factories/RouterStatic__factory.ts +101 -1
  281. package/typechain-types/factories/SYBaseAutoCompound__factory.ts +942 -0
  282. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  283. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
@@ -4,17 +4,41 @@ pragma solidity 0.8.17;
4
4
  import "../core/BulkSeller/BulkSellerMathCore.sol";
5
5
 
6
6
  interface IPBulkSeller {
7
- function swapExactSyForToken(
8
- address receiver,
9
- uint256 exactSyIn,
10
- uint256 minTokenOut
11
- ) external returns (uint256 netTokenOut);
7
+ event SwapExactTokenForSy(address receiver, uint256 netTokenIn, uint256 netSyOut);
8
+ event SwapExactSyForToken(address receiver, uint256 netSyIn, uint256 netTokenOut);
9
+ event RateUpdated(
10
+ uint256 newRateTokenToSy,
11
+ uint256 newRateSyToToken,
12
+ uint256 oldRateTokenToSy,
13
+ uint256 oldRateSyToToken
14
+ );
15
+ event ReBalanceTokenToSy(
16
+ uint256 netTokenDeposit,
17
+ uint256 netSyFromToken,
18
+ uint256 newTokenProp,
19
+ uint256 oldTokenProp
20
+ );
21
+ event ReBalanceSyToToken(
22
+ uint256 netSyRedeem,
23
+ uint256 netTokenFromSy,
24
+ uint256 newTokenProp,
25
+ uint256 oldTokenProp
26
+ );
27
+ event ReserveUpdated(uint256 totalToken, uint256 totalSy);
28
+ event FeeRateUpdated(uint256 newFeeRate, uint256 oldFeeRate);
12
29
 
13
30
  function swapExactTokenForSy(
14
31
  address receiver,
15
32
  uint256 netTokenIn,
16
33
  uint256 minSyOut
17
- ) external returns (uint256 netSyOut);
34
+ ) external payable returns (uint256 netSyOut);
35
+
36
+ function swapExactSyForToken(
37
+ address receiver,
38
+ uint256 exactSyIn,
39
+ uint256 minTokenOut,
40
+ bool swapFromInternalBalance
41
+ ) external returns (uint256 netTokenOut);
18
42
 
19
43
  function SY() external view returns (address);
20
44
 
@@ -9,6 +9,4 @@ interface IPBulkSellerFactory {
9
9
  function get(address token, address SY) external view returns (address);
10
10
 
11
11
  function isMaintainer(address addr) external view returns (bool);
12
-
13
- function isAdmin(address addr) external view returns (bool);
14
12
  }
@@ -4,7 +4,13 @@ pragma solidity 0.8.17;
4
4
  interface IPGaugeController {
5
5
  event MarketClaimReward(address indexed market, uint256 amount);
6
6
 
7
- event ReceiveVotingResults(uint128 wTime, address[] markets, uint256[] pendleAmounts);
7
+ event ReceiveVotingResults(uint128 indexed wTime, address[] markets, uint256[] pendleAmounts);
8
+
9
+ event UpdateMarketReward(
10
+ address indexed market,
11
+ uint256 pendlePerSec,
12
+ uint256 incentiveEndsAt
13
+ );
8
14
 
9
15
  function fundPendle(uint256 amount) external;
10
16
 
@@ -62,23 +62,13 @@ interface IPMarket is IERC20Metadata, IPGauge {
62
62
  address receiver,
63
63
  uint256 exactPtIn,
64
64
  bytes calldata data
65
- )
66
- external
67
- returns (
68
- uint256 netSyOut,
69
- uint256 netSyFee
70
- );
65
+ ) external returns (uint256 netSyOut, uint256 netSyFee);
71
66
 
72
67
  function swapSyForExactPt(
73
68
  address receiver,
74
69
  uint256 exactPtOut,
75
70
  bytes calldata data
76
- )
77
- external
78
- returns (
79
- uint256 netSyIn,
80
- uint256 netSyFee
81
- );
71
+ ) external returns (uint256 netSyIn, uint256 netSyFee);
82
72
 
83
73
  function redeemRewards(address user) external returns (uint256[] memory);
84
74
 
@@ -1,4 +1,4 @@
1
- // SPDX-License-Identifier: GPL-3.0-only
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
2
 
3
3
  pragma solidity >=0.8.0;
4
4
 
@@ -1,4 +1,4 @@
1
- // SPDX-License-Identifier: GPL-3.0-only
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
2
 
3
3
  pragma solidity >=0.8.0;
4
4
 
@@ -1,4 +1,4 @@
1
- // SPDX-License-Identifier: MIT
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
2
 
3
3
  pragma solidity 0.8.17;
4
4
 
@@ -1,4 +1,4 @@
1
- // SPDX-License-Identifier: MIT
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  /*
3
3
  * MIT License
4
4
  * ===========
@@ -11,7 +11,7 @@ interface IStETH {
11
11
  function burnShares(address _account, uint256 _sharesAmount)
12
12
  external
13
13
  returns (uint256 newTotalShares);
14
-
14
+
15
15
  function sharesOf(address account) external view returns (uint256);
16
16
 
17
17
  function getTotalShares() external view returns (uint256);
@@ -1,4 +1,4 @@
1
- // SPDX-License-Identifier: MIT
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  /*
3
3
  * MIT License
4
4
  * ===========
@@ -1,4 +1,4 @@
1
- // SPDX-License-Identifier: MIT
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  /*
3
3
  * MIT License
4
4
  * ===========
@@ -1,4 +1,4 @@
1
- // SPDX-License-Identifier: MIT
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  /*
3
3
  * MIT License
4
4
  * ===========
@@ -1,4 +1,4 @@
1
- // SPDX-License-Identifier: MIT
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  /*
3
3
  * MIT License
4
4
  * ===========
@@ -46,7 +46,8 @@ library MarketMathStatic {
46
46
  uint256 netLpOut,
47
47
  uint256 netPtToSwap,
48
48
  uint256 netSyFee,
49
- uint256 priceImpact
49
+ uint256 priceImpact,
50
+ uint256 exchangeRateAfter
50
51
  )
51
52
  {
52
53
  MarketState memory state = IPMarket(market).readState(address(this));
@@ -72,7 +73,8 @@ library MarketMathStatic {
72
73
  block.timestamp
73
74
  );
74
75
 
75
- priceImpact = calcPriceImpact(market, netPtToSwap.neg());
76
+ priceImpact = calcPriceImpactPt(market, netPtToSwap.neg());
77
+ exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
76
78
  }
77
79
 
78
80
  /// @dev netPtFromSwap is the parameter to approx
@@ -86,7 +88,8 @@ library MarketMathStatic {
86
88
  uint256 netLpOut,
87
89
  uint256 netPtFromSwap,
88
90
  uint256 netSyFee,
89
- uint256 priceImpact
91
+ uint256 priceImpact,
92
+ uint256 exchangeRateAfter
90
93
  )
91
94
  {
92
95
  MarketState memory state = IPMarket(market).readState(address(this));
@@ -108,7 +111,8 @@ library MarketMathStatic {
108
111
  );
109
112
  (, netLpOut, , ) = state.addLiquidity(netSyIn - netSySwap, netPtFromSwap, block.timestamp);
110
113
 
111
- priceImpact = calcPriceImpact(market, netPtFromSwap.Int());
114
+ priceImpact = calcPriceImpactPt(market, netPtFromSwap.Int());
115
+ exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
112
116
  }
113
117
 
114
118
  function removeLiquidityDualSyAndPtStatic(address market, uint256 netLpToRemove)
@@ -131,7 +135,8 @@ library MarketMathStatic {
131
135
  uint256 netPtOut,
132
136
  uint256 netPtFromSwap,
133
137
  uint256 netSyFee,
134
- uint256 priceImpact
138
+ uint256 priceImpact,
139
+ uint256 exchangeRateAfter
135
140
  )
136
141
  {
137
142
  MarketState memory state = IPMarket(market).readState(address(this));
@@ -145,7 +150,11 @@ library MarketMathStatic {
145
150
  );
146
151
 
147
152
  netPtOut = ptFromBurn + netPtFromSwap;
148
- priceImpact = calcPriceImpact(market, netPtFromSwap.Int());
153
+ priceImpact = calcPriceImpactPt(market, netPtFromSwap.Int());
154
+
155
+ // Execute swap to calculate exchangeRateAfter
156
+ state.swapSyForExactPt(pyIndex(market), netPtFromSwap, block.timestamp);
157
+ exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
149
158
  }
150
159
 
151
160
  function removeLiquiditySingleSyStatic(address market, uint256 netLpToRemove)
@@ -153,7 +162,8 @@ library MarketMathStatic {
153
162
  returns (
154
163
  uint256 netSyOut,
155
164
  uint256 netSyFee,
156
- uint256 priceImpact
165
+ uint256 priceImpact,
166
+ uint256 exchangeRateAfter
157
167
  )
158
168
  {
159
169
  MarketState memory state = IPMarket(market).readState(address(this));
@@ -171,7 +181,8 @@ library MarketMathStatic {
171
181
  );
172
182
 
173
183
  netSyOut = syFromBurn + syFromSwap;
174
- priceImpact = calcPriceImpact(market, ptFromBurn.neg());
184
+ priceImpact = calcPriceImpactPt(market, ptFromBurn.neg());
185
+ exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
175
186
  }
176
187
  }
177
188
 
@@ -180,7 +191,8 @@ library MarketMathStatic {
180
191
  returns (
181
192
  uint256 netSyOut,
182
193
  uint256 netSyFee,
183
- uint256 priceImpact
194
+ uint256 priceImpact,
195
+ uint256 exchangeRateAfter
184
196
  )
185
197
  {
186
198
  MarketState memory state = IPMarket(market).readState(address(this));
@@ -189,7 +201,8 @@ library MarketMathStatic {
189
201
  exactPtIn,
190
202
  block.timestamp
191
203
  );
192
- priceImpact = calcPriceImpact(market, exactPtIn.neg());
204
+ priceImpact = calcPriceImpactPt(market, exactPtIn.neg());
205
+ exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
193
206
  }
194
207
 
195
208
  function swapSyForExactPtStatic(address market, uint256 exactPtOut)
@@ -197,7 +210,8 @@ library MarketMathStatic {
197
210
  returns (
198
211
  uint256 netSyIn,
199
212
  uint256 netSyFee,
200
- uint256 priceImpact
213
+ uint256 priceImpact,
214
+ uint256 exchangeRateAfter
201
215
  )
202
216
  {
203
217
  MarketState memory state = IPMarket(market).readState(address(this));
@@ -206,7 +220,8 @@ library MarketMathStatic {
206
220
  exactPtOut,
207
221
  block.timestamp
208
222
  );
209
- priceImpact = calcPriceImpact(market, exactPtOut.Int());
223
+ priceImpact = calcPriceImpactPt(market, exactPtOut.Int());
224
+ exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
210
225
  }
211
226
 
212
227
  /// @dev netPtOut is the parameter to approx
@@ -219,7 +234,8 @@ library MarketMathStatic {
219
234
  returns (
220
235
  uint256 netPtOut,
221
236
  uint256 netSyFee,
222
- uint256 priceImpact
237
+ uint256 priceImpact,
238
+ uint256 exchangeRateAfter
223
239
  )
224
240
  {
225
241
  MarketState memory state = IPMarket(market).readState(address(this));
@@ -229,7 +245,11 @@ library MarketMathStatic {
229
245
  block.timestamp,
230
246
  approxParams
231
247
  );
232
- priceImpact = calcPriceImpact(market, netPtOut.Int());
248
+ priceImpact = calcPriceImpactPt(market, netPtOut.Int());
249
+
250
+ // Execute swap to calculate exchangeRateAfter
251
+ state.swapSyForExactPt(pyIndex(market), netPtOut, block.timestamp);
252
+ exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
233
253
  }
234
254
 
235
255
  /// @dev netPtIn is the parameter to approx
@@ -242,7 +262,8 @@ library MarketMathStatic {
242
262
  returns (
243
263
  uint256 netPtIn,
244
264
  uint256 netSyFee,
245
- uint256 priceImpact
265
+ uint256 priceImpact,
266
+ uint256 exchangeRateAfter
246
267
  )
247
268
  {
248
269
  MarketState memory state = IPMarket(market).readState(address(this));
@@ -253,7 +274,11 @@ library MarketMathStatic {
253
274
  block.timestamp,
254
275
  approxParams
255
276
  );
256
- priceImpact = calcPriceImpact(market, netPtIn.neg());
277
+ priceImpact = calcPriceImpactPt(market, netPtIn.neg());
278
+
279
+ // Execute swap to calculate exchangeRateAfter
280
+ state.swapExactPtForSy(pyIndex(market), netPtIn, block.timestamp);
281
+ exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
257
282
  }
258
283
 
259
284
  function swapSyForExactYtStatic(address market, uint256 exactYtOut)
@@ -261,11 +286,13 @@ library MarketMathStatic {
261
286
  returns (
262
287
  uint256 netSyIn,
263
288
  uint256 netSyFee,
264
- uint256 priceImpact
289
+ uint256 priceImpact,
290
+ uint256 exchangeRateAfter
265
291
  )
266
292
  {
267
- MarketState memory state = IPMarket(market).readState(address(this));
293
+ priceImpact = calcPriceImpactYt(market, exactYtOut.neg());
268
294
 
295
+ MarketState memory state = IPMarket(market).readState(address(this));
269
296
  PYIndex index = pyIndex(market);
270
297
 
271
298
  uint256 syReceived;
@@ -278,7 +305,7 @@ library MarketMathStatic {
278
305
  uint256 totalSyNeed = index.assetToSyUp(exactYtOut);
279
306
  netSyIn = totalSyNeed.subMax0(syReceived);
280
307
 
281
- priceImpact = calcPriceImpact(market, exactYtOut.neg());
308
+ exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
282
309
  }
283
310
 
284
311
  /// @dev netYtOut is the parameter to approx
@@ -291,7 +318,8 @@ library MarketMathStatic {
291
318
  returns (
292
319
  uint256 netYtOut,
293
320
  uint256 netSyFee,
294
- uint256 priceImpact
321
+ uint256 priceImpact,
322
+ uint256 exchangeRateAfter
295
323
  )
296
324
  {
297
325
  MarketState memory state = IPMarket(market).readState(address(this));
@@ -304,7 +332,11 @@ library MarketMathStatic {
304
332
  approxParams
305
333
  );
306
334
 
307
- priceImpact = calcPriceImpact(market, netYtOut.neg());
335
+ priceImpact = calcPriceImpactYt(market, netYtOut.neg());
336
+
337
+ // Execute swap to calculate exchangeRateAfter
338
+ state.swapSyForExactPt(index, netYtOut, block.timestamp);
339
+ exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
308
340
  }
309
341
 
310
342
  function swapExactYtForSyStatic(address market, uint256 exactYtIn)
@@ -312,9 +344,12 @@ library MarketMathStatic {
312
344
  returns (
313
345
  uint256 netSyOut,
314
346
  uint256 netSyFee,
315
- uint256 priceImpact
347
+ uint256 priceImpact,
348
+ uint256 exchangeRateAfter
316
349
  )
317
350
  {
351
+ priceImpact = calcPriceImpactYt(market, exactYtIn.Int());
352
+
318
353
  MarketState memory state = IPMarket(market).readState(address(this));
319
354
 
320
355
  PYIndex index = pyIndex(market);
@@ -326,7 +361,7 @@ library MarketMathStatic {
326
361
  uint256 amountPYToRedeemSyOut = exactYtIn - amountPYToRepaySyOwed;
327
362
 
328
363
  netSyOut = index.assetToSy(amountPYToRedeemSyOut);
329
- priceImpact = calcPriceImpact(market, exactYtIn.Int());
364
+ exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
330
365
  }
331
366
 
332
367
  /// @dev netYtIn is the parameter to approx
@@ -339,7 +374,8 @@ library MarketMathStatic {
339
374
  returns (
340
375
  uint256 netYtIn,
341
376
  uint256 netSyFee,
342
- uint256 priceImpact
377
+ uint256 priceImpact,
378
+ uint256 exchangeRateAfter
343
379
  )
344
380
  {
345
381
  MarketState memory state = IPMarket(market).readState(address(this));
@@ -352,7 +388,11 @@ library MarketMathStatic {
352
388
  block.timestamp,
353
389
  approxParams
354
390
  );
355
- priceImpact = calcPriceImpact(market, netYtIn.Int());
391
+ priceImpact = calcPriceImpactYt(market, netYtIn.Int());
392
+
393
+ // Execute swap to calculate exchangeRateAfter
394
+ state.swapSyForExactPt(index, netYtIn, block.timestamp);
395
+ exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
356
396
  }
357
397
 
358
398
  // totalPtToSwap is the param to approx
@@ -366,7 +406,8 @@ library MarketMathStatic {
366
406
  uint256 netYtOut,
367
407
  uint256 totalPtToSwap,
368
408
  uint256 netSyFee,
369
- uint256 priceImpact
409
+ uint256 priceImpact,
410
+ uint256 exchangeRateAfter
370
411
  )
371
412
  {
372
413
  MarketState memory state = IPMarket(market).readState(address(this));
@@ -378,7 +419,11 @@ library MarketMathStatic {
378
419
  block.timestamp,
379
420
  approxParams
380
421
  );
381
- priceImpact = calcPriceImpact(market, totalPtToSwap.neg());
422
+ priceImpact = calcPriceImpactPY(market, totalPtToSwap.neg());
423
+
424
+ // Execute swap to calculate exchangeRateAfter
425
+ state.swapExactPtForSy(index, totalPtToSwap, block.timestamp);
426
+ exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
382
427
  }
383
428
 
384
429
  // totalPtSwapped is the param to approx
@@ -392,7 +437,8 @@ library MarketMathStatic {
392
437
  uint256 netPtOut,
393
438
  uint256 totalPtSwapped,
394
439
  uint256 netSyFee,
395
- uint256 priceImpact
440
+ uint256 priceImpact,
441
+ uint256 exchangeRateAfter
396
442
  )
397
443
  {
398
444
  MarketState memory state = IPMarket(market).readState(address(this));
@@ -405,7 +451,11 @@ library MarketMathStatic {
405
451
  approxParams
406
452
  );
407
453
 
408
- priceImpact = calcPriceImpact(market, totalPtSwapped.Int());
454
+ priceImpact = calcPriceImpactPY(market, totalPtSwapped.Int());
455
+
456
+ // Execute swap to calculate exchangeRateAfter
457
+ state.swapSyForExactPt(index, totalPtSwapped, block.timestamp);
458
+ exchangeRateAfter = _getTradeExchangeRateExcludeFee(market, state);
409
459
  }
410
460
 
411
461
  function pyIndex(address market) public returns (PYIndex index) {
@@ -414,8 +464,25 @@ library MarketMathStatic {
414
464
  return YT.newIndex();
415
465
  }
416
466
 
417
- function getExchangeRate(address market) public returns (uint256) {
418
- return getTradeExchangeRateIncludeFee(market, 0);
467
+ function getTradeExchangeRateExcludeFee(address market) public returns (uint256) {
468
+ if (IPMarket(market).isExpired()) return Math.ONE;
469
+ MarketState memory state = IPMarket(market).readState(address(this));
470
+ return _getTradeExchangeRateExcludeFee(market, state);
471
+ }
472
+
473
+ function _getTradeExchangeRateExcludeFee(address market, MarketState memory state)
474
+ public
475
+ returns (uint256)
476
+ {
477
+ MarketPreCompute memory comp = state.getMarketPreCompute(pyIndex(market), block.timestamp);
478
+ int256 preFeeExchangeRate = MarketMathCore._getExchangeRate(
479
+ state.totalPt,
480
+ comp.totalAsset,
481
+ comp.rateScalar,
482
+ comp.rateAnchor,
483
+ 0
484
+ );
485
+ return preFeeExchangeRate.Uint();
419
486
  }
420
487
 
421
488
  function getTradeExchangeRateIncludeFee(address market, int256 netPtOut)
@@ -445,14 +512,40 @@ library MarketMathStatic {
445
512
  }
446
513
  }
447
514
 
448
- function calcPriceImpact(address market, int256 netPtOut)
515
+ function calcPriceImpactPt(address market, int256 netPtOut)
449
516
  public
450
517
  returns (uint256 priceImpact)
451
518
  {
452
- uint256 preTradeRate = getExchangeRate(market);
519
+ uint256 preTradeRate = getTradeExchangeRateIncludeFee(market, _getSign(netPtOut));
453
520
  uint256 tradedRate = getTradeExchangeRateIncludeFee(market, netPtOut);
521
+ priceImpact = _calculateImpact(preTradeRate, tradedRate);
522
+ }
454
523
 
455
- priceImpact = (tradedRate.Int() - preTradeRate.Int()).abs().divDown(preTradeRate);
524
+ function calcPriceImpactYt(address market, int256 netPtOut)
525
+ public
526
+ returns (uint256 priceImpact)
527
+ {
528
+ uint256 ytPreTradeRate = _calcVirtualYTPrice(
529
+ getTradeExchangeRateIncludeFee(market, _getSign(netPtOut))
530
+ );
531
+ uint256 ytTradedRate = _calcVirtualYTPrice(
532
+ getTradeExchangeRateIncludeFee(market, netPtOut)
533
+ );
534
+ priceImpact = _calculateImpact(ytPreTradeRate, ytTradedRate);
535
+ }
536
+
537
+ function calcPriceImpactPY(address market, int256 netPtOut)
538
+ public
539
+ returns (uint256 priceImpact)
540
+ {
541
+ uint256 ptPreTradeRate = getTradeExchangeRateIncludeFee(market, _getSign(netPtOut));
542
+ uint256 ytPreTradeRate = _calcVirtualYTPrice(ptPreTradeRate);
543
+ uint256 ptTradeRate = getTradeExchangeRateIncludeFee(market, netPtOut);
544
+ uint256 ytTradeRate = _calcVirtualYTPrice(ptTradeRate);
545
+
546
+ uint256 pyPreTradeRate = ytPreTradeRate.divDown(ptPreTradeRate);
547
+ uint256 pyTradeRate = ytTradeRate.divDown(ptTradeRate);
548
+ priceImpact = _calculateImpact(pyPreTradeRate, pyTradeRate);
456
549
  }
457
550
 
458
551
  function getPtImpliedYield(address market) public view returns (int256) {
@@ -461,4 +554,29 @@ library MarketMathStatic {
461
554
  int256 lnImpliedRate = (state.lastLnImpliedRate).Int();
462
555
  return lnImpliedRate.exp();
463
556
  }
557
+
558
+ function _calcVirtualYTPrice(uint256 ptAssetExchangeRate)
559
+ private
560
+ pure
561
+ returns (uint256 ytAssetExchangeRate)
562
+ {
563
+ // 1 asset = EX pt
564
+ // 1 pt = 1/EX Asset
565
+ // 1 yt + 1/EX Asset = 1 Asset
566
+ // 1 yt = 1 Asset - 1/EX Asset
567
+ // 1 yt = (EX - 1) / EX Asset
568
+ return (ptAssetExchangeRate - Math.ONE).divDown(ptAssetExchangeRate);
569
+ }
570
+
571
+ function _getSign(int256 netPtOut) private pure returns (int256) {
572
+ return netPtOut > 0 ? int256(1) : int256(-1);
573
+ }
574
+
575
+ function _calculateImpact(uint256 rateBefore, uint256 rateTraded)
576
+ private
577
+ pure
578
+ returns (uint256 impact)
579
+ {
580
+ impact = (rateBefore.Int() - rateTraded.Int()).abs().divDown(rateBefore);
581
+ }
464
582
  }