@pendle/core-v2 0.9.4-beta → 0.10.2-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 (360) 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 +2 -2
  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 +1 -1
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.json +2 -2
  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 +2 -2
  9. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.dbg.json +1 -1
  10. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.json +2 -2
  11. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.dbg.json +1 -1
  12. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.json +7 -2
  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 +2 -2
  15. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.dbg.json +1 -1
  16. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.json +2 -2
  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 +2 -2
  19. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultSCY.sol/PendleYearnVaultSCY.dbg.json +4 -0
  20. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/{PendleYearnVaultScy.sol → PendleYearnVaultSCY.sol}/PendleYearnVaultSCY.json +3 -3
  21. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.dbg.json +1 -1
  22. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.json +2 -2
  23. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
  24. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
  25. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +1 -1
  26. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.json +67 -5
  27. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +1 -1
  28. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.json +63 -1
  29. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  30. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.json +65 -3
  31. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +74 -10
  33. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +79 -15
  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 +204 -123
  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 +127 -73
  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 +93 -34
  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 +90 -14
  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 +14 -1
  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 +139 -37
  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 +84 -56
  50. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +122 -11
  53. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  56. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  57. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +96 -40
  58. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  59. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  60. package/build/artifacts/contracts/core/actions/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +4 -0
  61. package/build/artifacts/contracts/core/actions/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +1025 -0
  62. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  63. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
  64. package/build/artifacts/contracts/core/actions/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +4 -0
  65. package/build/artifacts/contracts/core/actions/ActionMintRedeem.sol/ActionMintRedeem.json +622 -0
  66. package/build/artifacts/contracts/core/actions/ActionMisc.sol/ActionMisc.dbg.json +4 -0
  67. package/build/artifacts/contracts/core/actions/ActionMisc.sol/ActionMisc.json +35 -0
  68. package/build/artifacts/contracts/core/actions/ActionSwapPT.sol/ActionSwapPT.dbg.json +4 -0
  69. package/build/artifacts/contracts/core/actions/ActionSwapPT.sol/ActionSwapPT.json +459 -0
  70. package/build/artifacts/contracts/core/actions/ActionSwapYT.sol/ActionSwapYT.dbg.json +4 -0
  71. package/build/artifacts/contracts/core/actions/ActionSwapYT.sol/ActionSwapYT.json +459 -0
  72. package/build/artifacts/contracts/core/actions/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +4 -0
  73. package/build/artifacts/contracts/core/actions/base/{ActionSCYAndPTBase.sol/ActionSCYAndPTBase.json → ActionBaseMintRedeem.sol/ActionBaseMintRedeem.json} +2 -2
  74. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  75. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  77. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.json +24 -0
  80. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  81. package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
  82. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
  83. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  84. package/build/artifacts/contracts/interfaces/IEulerEToken.sol/IEulerEToken.dbg.json +1 -1
  85. package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.dbg.json +1 -1
  86. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +4 -0
  87. package/build/artifacts/contracts/interfaces/{IPActionCore.sol/IPActionCore.json → IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json} +141 -912
  88. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +4 -0
  89. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +598 -0
  90. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +4 -0
  91. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.json +35 -0
  92. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +4 -0
  93. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +435 -0
  94. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +4 -0
  95. package/build/artifacts/contracts/interfaces/{IPActionYT.sol/IPActionYT.json → IPActionSwapYT.sol/IPActionSwapYT.json} +23 -11
  96. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +323 -47
  98. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +4 -0
  99. package/build/artifacts/contracts/{core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.json → interfaces/IPGauge.sol/IPGauge.json} +5 -5
  100. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +72 -29
  106. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.json +0 -11
  108. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  109. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.json +1 -1
  113. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.json +0 -37
  115. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +1 -1
  116. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  117. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  118. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +1 -1
  119. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  120. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  121. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  122. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
  123. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  124. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.json +1 -1
  125. package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.dbg.json +1 -1
  126. package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.dbg.json +1 -1
  127. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.dbg.json +1 -1
  129. package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +1 -1
  130. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
  131. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
  132. package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.dbg.json +1 -1
  133. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  134. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
  135. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  136. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  137. package/build/artifacts/contracts/libraries/OracleLib.sol/OracleLib.dbg.json +4 -0
  138. package/build/artifacts/contracts/libraries/OracleLib.sol/OracleLib.json +74 -0
  139. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
  140. package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  141. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
  142. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  143. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  144. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  145. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  146. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  147. package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  148. package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.json +2 -2
  149. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +1 -1
  150. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  151. package/build/artifacts/contracts/libraries/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
  152. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  153. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
  154. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
  155. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  156. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
  157. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  158. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
  159. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
  160. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +4 -0
  161. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +93 -0
  162. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  163. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +427 -39
  164. package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +4 -0
  165. package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.json +86 -0
  166. package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +4 -0
  167. package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.json +37 -0
  168. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +1 -1
  169. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
  170. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +8 -0
  171. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol +1 -1
  172. package/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol +11 -5
  173. package/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol +0 -1
  174. package/contracts/SuperComposableYield/SCY-implementations/{PendleYearnVaultScy.sol → PendleYearnVaultSCY.sol} +0 -0
  175. package/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol +1 -0
  176. package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +1 -1
  177. package/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol +7 -7
  178. package/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol +7 -6
  179. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +4 -5
  180. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol +6 -3
  181. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol +6 -3
  182. package/contracts/core/LiquidityMining/PendleGauge.sol +3 -2
  183. package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +22 -28
  184. package/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +71 -13
  185. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +7 -4
  186. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +6 -2
  187. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +4 -3
  188. package/contracts/core/Market/PendleMarket.sol +93 -57
  189. package/contracts/core/Market/PendleMarketFactory.sol +18 -33
  190. package/contracts/core/PendleRouter.sol +60 -52
  191. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +12 -12
  192. package/contracts/core/YieldContracts/PendleYieldToken.sol +1 -1
  193. package/contracts/core/actions/ActionAddRemoveLiq.sol +366 -0
  194. package/contracts/core/actions/ActionCallback.sol +6 -6
  195. package/contracts/core/actions/ActionMintRedeem.sol +124 -0
  196. package/contracts/core/actions/ActionMisc.sol +24 -0
  197. package/contracts/core/actions/ActionSwapPT.sol +199 -0
  198. package/contracts/core/actions/{base/ActionSCYAndYTBase.sol → ActionSwapYT.sol} +109 -74
  199. package/contracts/core/actions/base/{ActionSCYAndPYBase.sol → ActionBaseMintRedeem.sol} +9 -8
  200. package/contracts/interfaces/IBenQiComptroller.sol +2 -0
  201. package/contracts/interfaces/IPActionAddRemoveLiq.sol +188 -0
  202. package/contracts/interfaces/IPActionMintRedeem.sol +115 -0
  203. package/contracts/interfaces/IPActionMisc.sol +9 -0
  204. package/contracts/interfaces/IPActionSwapPT.sol +69 -0
  205. package/contracts/interfaces/{IPActionYT.sol → IPActionSwapYT.sol} +12 -10
  206. package/contracts/interfaces/IPAllAction.sol +12 -3
  207. package/contracts/interfaces/IPGauge.sol +6 -0
  208. package/contracts/interfaces/IPGaugeController.sol +0 -2
  209. package/contracts/interfaces/IPMarket.sol +28 -10
  210. package/contracts/interfaces/IPMarketFactory.sol +1 -7
  211. package/contracts/interfaces/IPVeToken.sol +1 -1
  212. package/contracts/interfaces/IPVotingController.sol +0 -2
  213. package/contracts/interfaces/IRewardManager.sol +1 -1
  214. package/contracts/libraries/OracleLib.sol +214 -0
  215. package/contracts/libraries/RewardManagerAbstract.sol +1 -1
  216. package/contracts/libraries/math/MarketApproxLib.sol +227 -14
  217. package/contracts/libraries/math/MarketMathCore.sol +0 -33
  218. package/contracts/offchain-helpers/MarketMathStatic.sol +565 -0
  219. package/contracts/offchain-helpers/RouterStatic.sol +187 -251
  220. package/contracts/periphery/BoringOwnableUpgradeable.sol +62 -0
  221. package/deployments/43113-core.json +7 -8
  222. package/deployments/43113-markets/benqi-market-590025.json +8 -0
  223. package/deployments/43113-markets/benqi-market-c93916.json +8 -0
  224. package/deployments/80001-core.json +6 -7
  225. package/deployments/80001-markets/benqi-market-3b8BD1.json +8 -0
  226. package/deployments/80001-markets/benqi-market-b61e7f.json +8 -0
  227. package/package.json +11 -11
  228. package/typechain-types/ActionAddRemoveLiq.ts +1037 -0
  229. package/typechain-types/ActionBaseMintRedeem.ts +87 -0
  230. package/typechain-types/ActionCore.ts +21 -20
  231. package/typechain-types/ActionMintRedeem.ts +665 -0
  232. package/typechain-types/ActionMisc.ts +105 -0
  233. package/typechain-types/ActionSwapPT.ts +515 -0
  234. package/typechain-types/ActionSwapYT.ts +515 -0
  235. package/typechain-types/ActionYT.ts +5 -4
  236. package/typechain-types/BoringOwnable.ts +194 -0
  237. package/typechain-types/BoringOwnableData.ts +100 -0
  238. package/typechain-types/BoringOwnableUpgradeable.ts +194 -0
  239. package/typechain-types/BoringOwnableUpgradeableData.ts +100 -0
  240. package/typechain-types/CelerReceiverUpg.ts +124 -19
  241. package/typechain-types/CelerSenderUpg.ts +116 -11
  242. package/typechain-types/IBenQiComptroller.ts +39 -0
  243. package/typechain-types/IPActionAddRemoveLiq.ts +1018 -0
  244. package/typechain-types/IPActionCore.ts +21 -20
  245. package/typechain-types/IPActionMintRedeem.ts +646 -0
  246. package/typechain-types/IPActionMisc.ts +105 -0
  247. package/typechain-types/IPActionSwapPT.ts +496 -0
  248. package/typechain-types/IPActionSwapYT.ts +496 -0
  249. package/typechain-types/IPActionYT.ts +5 -4
  250. package/typechain-types/IPAllAction.ts +431 -193
  251. package/typechain-types/IPGauge.ts +87 -0
  252. package/typechain-types/IPMarket.ts +133 -50
  253. package/typechain-types/IPMarketFactory.ts +7 -17
  254. package/typechain-types/IPVeToken.ts +8 -8
  255. package/typechain-types/IPVotingController.ts +0 -20
  256. package/typechain-types/IPYieldToken.ts +3 -3
  257. package/typechain-types/IRewardManager.ts +3 -3
  258. package/typechain-types/MarketMathStatic.ts +198 -0
  259. package/typechain-types/OracleLib.ts +124 -0
  260. package/typechain-types/PendleGaugeControllerBaseUpg.ts +118 -15
  261. package/typechain-types/PendleGaugeControllerMainchainUpg.ts +136 -9
  262. package/typechain-types/PendleGaugeControllerSidechainUpg.ts +138 -11
  263. package/typechain-types/PendleMarket.ts +178 -59
  264. package/typechain-types/PendleMarketFactory.ts +135 -61
  265. package/typechain-types/PendleRouter.ts +201 -31
  266. package/typechain-types/PendleVotingControllerUpg.ts +325 -149
  267. package/typechain-types/PendleYieldContractFactory.ts +144 -21
  268. package/typechain-types/RouterStatic.ts +344 -64
  269. package/typechain-types/VotingControllerStorageUpg.ts +182 -113
  270. package/typechain-types/VotingEscrowPendleMainchain.ts +170 -63
  271. package/typechain-types/VotingEscrowPendleSidechain.ts +163 -17
  272. package/typechain-types/VotingEscrowTokenBase.ts +27 -8
  273. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1083 -0
  274. package/typechain-types/factories/ActionBaseMintRedeem__factory.ts +43 -0
  275. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  276. package/typechain-types/factories/ActionCore__factory.ts +6 -6
  277. package/typechain-types/factories/ActionMintRedeem__factory.ts +680 -0
  278. package/typechain-types/factories/ActionMisc__factory.ts +85 -0
  279. package/typechain-types/factories/ActionSwapPT__factory.ts +514 -0
  280. package/typechain-types/factories/ActionSwapYT__factory.ts +514 -0
  281. package/typechain-types/factories/ActionYT__factory.ts +2 -2
  282. package/typechain-types/factories/BoringOwnableData__factory.ts +90 -0
  283. package/typechain-types/factories/BoringOwnableUpgradeableData__factory.ts +96 -0
  284. package/typechain-types/factories/BoringOwnableUpgradeable__factory.ts +143 -0
  285. package/typechain-types/factories/BoringOwnable__factory.ts +141 -0
  286. package/typechain-types/factories/CelerReceiverUpg__factory.ts +67 -5
  287. package/typechain-types/factories/CelerSenderUpg__factory.ts +63 -1
  288. package/typechain-types/factories/IBenQiComptroller__factory.ts +24 -0
  289. package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +1020 -0
  290. package/typechain-types/factories/IPActionCore__factory.ts +5 -5
  291. package/typechain-types/factories/IPActionMintRedeem__factory.ts +613 -0
  292. package/typechain-types/factories/IPActionMisc__factory.ts +47 -0
  293. package/typechain-types/factories/IPActionSwapPT__factory.ts +450 -0
  294. package/typechain-types/factories/IPActionSwapYT__factory.ts +450 -0
  295. package/typechain-types/factories/IPActionYT__factory.ts +1 -1
  296. package/typechain-types/factories/IPAllAction__factory.ts +323 -47
  297. package/typechain-types/factories/IPGauge__factory.ts +36 -0
  298. package/typechain-types/factories/IPMarketFactory__factory.ts +0 -11
  299. package/typechain-types/factories/IPMarket__factory.ts +72 -29
  300. package/typechain-types/factories/IPVeToken__factory.ts +1 -1
  301. package/typechain-types/factories/IPVotingController__factory.ts +0 -37
  302. package/typechain-types/factories/IPYieldToken__factory.ts +1 -1
  303. package/typechain-types/factories/IRewardManager__factory.ts +1 -1
  304. package/typechain-types/factories/MarketMathStatic__factory.ts +146 -0
  305. package/typechain-types/factories/OracleLib__factory.ts +124 -0
  306. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +1 -1
  307. package/typechain-types/factories/PendleERC4626SCY__factory.ts +1 -1
  308. package/typechain-types/factories/PendleEulerSCY__factory.ts +10 -1
  309. package/typechain-types/factories/PendleGaugeControllerBaseUpg__factory.ts +65 -3
  310. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +73 -13
  311. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +79 -23
  312. package/typechain-types/factories/PendleMarketFactory__factory.ts +84 -86
  313. package/typechain-types/factories/PendleMarket__factory.ts +131 -37
  314. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  315. package/typechain-types/factories/PendleQiSAvaxSCY__factory.ts +1 -1
  316. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +1 -1
  317. package/typechain-types/factories/PendleRouter__factory.ts +141 -22
  318. package/typechain-types/factories/PendleSAvaxSCY__factory.ts +1 -1
  319. package/typechain-types/factories/PendleSJoeSCY__factory.ts +1 -1
  320. package/typechain-types/factories/PendleStargateSCY__factory.ts +1 -1
  321. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +203 -129
  322. package/typechain-types/factories/PendleWstEthSCY__factory.ts +1 -1
  323. package/typechain-types/factories/PendleYearnVaultSCY__factory.ts +1 -1
  324. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +97 -72
  325. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  326. package/typechain-types/factories/RouterStatic__factory.ts +233 -39
  327. package/typechain-types/factories/VotingControllerStorageUpg__factory.ts +126 -72
  328. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +93 -41
  329. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +90 -17
  330. package/typechain-types/factories/VotingEscrowTokenBase__factory.ts +14 -1
  331. package/typechain-types/hardhat.d.ts +162 -0
  332. package/typechain-types/index.ts +36 -0
  333. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +0 -4
  334. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +0 -4
  335. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +0 -1801
  336. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +0 -4
  337. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +0 -447
  338. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +0 -4
  339. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +0 -4
  340. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +0 -4
  341. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.json +0 -24
  342. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +0 -4
  343. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +0 -4
  344. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +0 -4
  345. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +0 -874
  346. package/contracts/core/actions/ActionCore.sol +0 -382
  347. package/contracts/core/actions/ActionYT.sol +0 -93
  348. package/contracts/core/actions/base/ActionSCYAndPTBase.sol +0 -303
  349. package/contracts/interfaces/IPActionCore.sol +0 -306
  350. package/contracts/interfaces/IPRouterStatic.sol +0 -152
  351. package/deployments/43113-markets/benqi-market-599408.json +0 -7
  352. package/deployments/43113-markets/benqi-market-93bbf0.json +0 -7
  353. package/deployments/43113-markets/benqi-market-95E744.json +0 -7
  354. package/deployments/43113-markets/benqi-market-D91a3F.json +0 -7
  355. package/deployments/80001-markets/benqi-market-007811.json +0 -7
  356. package/deployments/80001-markets/benqi-market-3fe528.json +0 -7
  357. package/typechain-types/FeeDistributorAbstract.ts +0 -164
  358. package/typechain-types/IPVotingControllerStorage.ts +0 -169
  359. package/typechain-types/factories/FeeDistributorAbstract__factory.ts +0 -90
  360. package/typechain-types/factories/IPVotingControllerStorage__factory.ts +0 -107
@@ -0,0 +1,565 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.15;
3
+
4
+ import "../libraries/math/MarketApproxLib.sol";
5
+ import "../interfaces/IPMarket.sol";
6
+
7
+ library MarketMathStatic {
8
+ using MarketMathCore for MarketState;
9
+ using MarketApproxLib for MarketState;
10
+ using Math for uint256;
11
+ using Math for int256;
12
+ using LogExpMath for int256;
13
+ using PYIndexLib for PYIndex;
14
+ using PYIndexLib for IPYieldToken;
15
+
16
+ function addLiquidityDualScyAndPtStatic(
17
+ address market,
18
+ uint256 scyDesired,
19
+ uint256 ptDesired
20
+ )
21
+ external
22
+ returns (
23
+ uint256 netLpOut,
24
+ uint256 scyUsed,
25
+ uint256 ptUsed
26
+ )
27
+ {
28
+ MarketState memory state = IPMarket(market).readState();
29
+ (, netLpOut, scyUsed, ptUsed) = state.addLiquidity(
30
+ pyIndex(market),
31
+ scyDesired,
32
+ ptDesired,
33
+ block.timestamp
34
+ );
35
+ }
36
+
37
+ function addLiquidityDualTokenAndPtStatic(
38
+ address market,
39
+ address tokenIn,
40
+ uint256 tokenDesired,
41
+ uint256 ptDesired
42
+ )
43
+ external
44
+ returns (
45
+ uint256 netLpOut,
46
+ uint256 tokenUsed,
47
+ uint256 ptUsed
48
+ )
49
+ {
50
+ (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
51
+
52
+ uint256 scyDesired = SCY.previewDeposit(tokenIn, tokenDesired);
53
+ uint256 scyUsed;
54
+
55
+ MarketState memory state = IPMarket(market).readState();
56
+ (, netLpOut, scyUsed, ptUsed) = state.addLiquidity(
57
+ pyIndex(market),
58
+ scyDesired,
59
+ ptDesired,
60
+ block.timestamp
61
+ );
62
+
63
+ tokenUsed = (tokenDesired * scyUsed).rawDivUp(scyDesired);
64
+ }
65
+
66
+ function addLiquiditySinglePtStatic(
67
+ address market,
68
+ uint256 netPtIn,
69
+ ApproxParams memory approxParams
70
+ )
71
+ external
72
+ returns (
73
+ uint256 netLpOut,
74
+ uint256 netScyFee,
75
+ uint256 priceImpact
76
+ )
77
+ {
78
+ MarketState memory state = IPMarket(market).readState();
79
+
80
+ (uint256 netPtSwap, , ) = state.approxSwapPtToAddLiquidity(
81
+ pyIndex(market),
82
+ netPtIn,
83
+ block.timestamp,
84
+ approxParams
85
+ );
86
+
87
+ uint256 netScyReceived;
88
+ (netScyReceived, netScyFee) = state.swapExactPtForScy(
89
+ pyIndex(market),
90
+ netPtSwap,
91
+ block.timestamp
92
+ );
93
+ (, netLpOut, , ) = state.addLiquidity(
94
+ pyIndex(market),
95
+ netScyReceived,
96
+ netPtIn - netPtSwap,
97
+ block.timestamp
98
+ );
99
+
100
+ priceImpact = calcPriceImpact(market, netPtSwap.neg());
101
+ }
102
+
103
+ function addLiquiditySingleScyStatic(
104
+ address market,
105
+ uint256 netScyIn,
106
+ ApproxParams memory approxParams
107
+ )
108
+ public
109
+ returns (
110
+ uint256 netLpOut,
111
+ uint256 netScyFee,
112
+ uint256 priceImpact
113
+ )
114
+ {
115
+ MarketState memory state = IPMarket(market).readState();
116
+
117
+ (uint256 netPtReceived, , ) = state.approxSwapScyToAddLiquidity(
118
+ pyIndex(market),
119
+ netScyIn,
120
+ block.timestamp,
121
+ approxParams
122
+ );
123
+
124
+ uint256 netScySwap;
125
+ (netScySwap, netScyFee) = state.swapScyForExactPt(
126
+ pyIndex(market),
127
+ netPtReceived,
128
+ block.timestamp
129
+ );
130
+ (, netLpOut, , ) = state.addLiquidity(
131
+ pyIndex(market),
132
+ netScyIn - netScySwap,
133
+ netPtReceived,
134
+ block.timestamp
135
+ );
136
+
137
+ priceImpact = calcPriceImpact(market, netPtReceived.Int());
138
+ }
139
+
140
+ function addLiquiditySingleBaseTokenStatic(
141
+ address market,
142
+ address baseToken,
143
+ uint256 netBaseTokenIn,
144
+ ApproxParams memory approxParams
145
+ )
146
+ external
147
+ returns (
148
+ uint256 netLpOut,
149
+ uint256 netScyFee,
150
+ uint256 priceImpact
151
+ )
152
+ {
153
+ (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
154
+
155
+ return
156
+ addLiquiditySingleScyStatic(
157
+ market,
158
+ SCY.previewDeposit(baseToken, netBaseTokenIn),
159
+ approxParams
160
+ );
161
+ }
162
+
163
+ function removeLiquidityDualScyAndPtStatic(address market, uint256 lpToRemove)
164
+ external
165
+ view
166
+ returns (uint256 netScyOut, uint256 netPtOut)
167
+ {
168
+ MarketState memory state = IPMarket(market).readState();
169
+ (netScyOut, netPtOut) = state.removeLiquidity(lpToRemove);
170
+ }
171
+
172
+ function removeLiquidityDualTokenAndPtStatic(
173
+ address market,
174
+ uint256 lpToRemove,
175
+ address tokenOut
176
+ ) external view returns (uint256 netTokenOut, uint256 netPtOut) {
177
+ (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
178
+
179
+ uint256 netScyOut;
180
+ MarketState memory state = IPMarket(market).readState();
181
+ (netScyOut, netPtOut) = state.removeLiquidity(lpToRemove);
182
+
183
+ netTokenOut = SCY.previewRedeem(tokenOut, netScyOut);
184
+ }
185
+
186
+ function removeLiquiditySinglePtStatic(
187
+ address market,
188
+ uint256 lpToRemove,
189
+ ApproxParams memory approxParams
190
+ )
191
+ external
192
+ returns (
193
+ uint256 netPtOut,
194
+ uint256 netScyFee,
195
+ uint256 priceImpact
196
+ )
197
+ {
198
+ MarketState memory state = IPMarket(market).readState();
199
+
200
+ (uint256 scyFromBurn, uint256 ptFromBurn) = state.removeLiquidity(lpToRemove);
201
+ uint256 ptFromSwap;
202
+ (ptFromSwap, , netScyFee) = state.approxSwapExactScyForPt(
203
+ pyIndex(market),
204
+ scyFromBurn,
205
+ block.timestamp,
206
+ approxParams
207
+ );
208
+
209
+ netPtOut = ptFromBurn + ptFromSwap;
210
+ priceImpact = calcPriceImpact(market, ptFromSwap.Int());
211
+ }
212
+
213
+ function removeLiquiditySingleScyStatic(address market, uint256 lpToRemove)
214
+ public
215
+ returns (
216
+ uint256 netScyOut,
217
+ uint256 netScyFee,
218
+ uint256 priceImpact
219
+ )
220
+ {
221
+ MarketState memory state = IPMarket(market).readState();
222
+
223
+ (uint256 scyFromBurn, uint256 ptFromBurn) = state.removeLiquidity(lpToRemove);
224
+ uint256 scyFromSwap;
225
+ (scyFromSwap, netScyFee) = state.swapExactPtForScy(
226
+ pyIndex(market),
227
+ ptFromBurn,
228
+ block.timestamp
229
+ );
230
+
231
+ netScyOut = scyFromBurn + scyFromSwap;
232
+ priceImpact = calcPriceImpact(market, ptFromBurn.neg());
233
+ }
234
+
235
+ function removeLiquiditySingleBaseTokenStatic(
236
+ address market,
237
+ uint256 lpToRemove,
238
+ address baseToken
239
+ )
240
+ external
241
+ returns (
242
+ uint256 netBaseTokenOut,
243
+ uint256 netScyFee,
244
+ uint256 priceImpact
245
+ )
246
+ {
247
+ uint256 netScyOut;
248
+ (netScyOut, netScyFee, priceImpact) = removeLiquiditySingleScyStatic(market, lpToRemove);
249
+
250
+ (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
251
+ netBaseTokenOut = SCY.previewRedeem(baseToken, netScyOut);
252
+ }
253
+
254
+ function swapExactPtForScyStatic(address market, uint256 exactPtIn)
255
+ public
256
+ returns (
257
+ uint256 netScyOut,
258
+ uint256 netScyFee,
259
+ uint256 priceImpact
260
+ )
261
+ {
262
+ MarketState memory state = IPMarket(market).readState();
263
+ (netScyOut, netScyFee) = state.swapExactPtForScy(
264
+ pyIndex(market),
265
+ exactPtIn,
266
+ block.timestamp
267
+ );
268
+ priceImpact = calcPriceImpact(market, exactPtIn.neg());
269
+ }
270
+
271
+ function swapScyForExactPtStatic(address market, uint256 exactPtOut)
272
+ external
273
+ returns (
274
+ uint256 netScyIn,
275
+ uint256 netScyFee,
276
+ uint256 priceImpact
277
+ )
278
+ {
279
+ MarketState memory state = IPMarket(market).readState();
280
+ (netScyIn, netScyFee) = state.swapScyForExactPt(
281
+ pyIndex(market),
282
+ exactPtOut,
283
+ block.timestamp
284
+ );
285
+ priceImpact = calcPriceImpact(market, exactPtOut.Int());
286
+ }
287
+
288
+ function swapExactScyForPtStatic(
289
+ address market,
290
+ uint256 exactScyIn,
291
+ ApproxParams memory approxParams
292
+ )
293
+ public
294
+ returns (
295
+ uint256 netPtOut,
296
+ uint256 netScyFee,
297
+ uint256 priceImpact
298
+ )
299
+ {
300
+ MarketState memory state = IPMarket(market).readState();
301
+ (netPtOut, , netScyFee) = state.approxSwapExactScyForPt(
302
+ pyIndex(market),
303
+ exactScyIn,
304
+ block.timestamp,
305
+ approxParams
306
+ );
307
+ priceImpact = calcPriceImpact(market, netPtOut.Int());
308
+ }
309
+
310
+ function swapPtForExactScyStatic(
311
+ address market,
312
+ uint256 exactScyOut,
313
+ ApproxParams memory approxParams
314
+ )
315
+ public
316
+ returns (
317
+ uint256 netPtIn,
318
+ uint256 netScyFee,
319
+ uint256 priceImpact
320
+ )
321
+ {
322
+ MarketState memory state = IPMarket(market).readState();
323
+
324
+ (netPtIn, , netScyFee) = state.approxSwapPtForExactScy(
325
+ pyIndex(market),
326
+ exactScyOut,
327
+ block.timestamp,
328
+ approxParams
329
+ );
330
+ priceImpact = calcPriceImpact(market, netPtIn.neg());
331
+ }
332
+
333
+ function swapExactBaseTokenForPtStatic(
334
+ address market,
335
+ address baseToken,
336
+ uint256 amountBaseToken,
337
+ ApproxParams memory approxParams
338
+ )
339
+ external
340
+ returns (
341
+ uint256 netPtOut,
342
+ uint256 netScyFee,
343
+ uint256 priceImpact
344
+ )
345
+ {
346
+ (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
347
+
348
+ return
349
+ swapExactScyForPtStatic(
350
+ market,
351
+ SCY.previewDeposit(baseToken, amountBaseToken),
352
+ approxParams
353
+ );
354
+ }
355
+
356
+ function swapExactPtForBaseTokenStatic(
357
+ address market,
358
+ uint256 exactYtIn,
359
+ address baseToken
360
+ )
361
+ external
362
+ returns (
363
+ uint256 netBaseTokenOut,
364
+ uint256 netScyFee,
365
+ uint256 priceImpact
366
+ )
367
+ {
368
+ uint256 netScyOut;
369
+ (netScyOut, netScyFee, priceImpact) = swapExactPtForScyStatic(market, exactYtIn);
370
+
371
+ (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
372
+ netBaseTokenOut = SCY.previewRedeem(baseToken, netScyOut);
373
+ }
374
+
375
+ function swapScyForExactYtStatic(address market, uint256 exactYtOut)
376
+ external
377
+ returns (
378
+ uint256 netScyIn,
379
+ uint256 netScyFee,
380
+ uint256 priceImpact
381
+ )
382
+ {
383
+ MarketState memory state = IPMarket(market).readState();
384
+
385
+ PYIndex index = pyIndex(market);
386
+
387
+ uint256 scyReceived;
388
+ (scyReceived, netScyFee) = state.swapExactPtForScy(
389
+ pyIndex(market),
390
+ exactYtOut,
391
+ block.timestamp
392
+ );
393
+
394
+ uint256 totalScyNeed = index.assetToScyUp(exactYtOut);
395
+ netScyIn = totalScyNeed.subMax0(scyReceived);
396
+
397
+ priceImpact = calcPriceImpact(market, exactYtOut.neg());
398
+ }
399
+
400
+ function swapExactScyForYtStatic(
401
+ address market,
402
+ uint256 exactScyIn,
403
+ ApproxParams memory approxParams
404
+ )
405
+ public
406
+ returns (
407
+ uint256 netYtOut,
408
+ uint256 netScyFee,
409
+ uint256 priceImpact
410
+ )
411
+ {
412
+ MarketState memory state = IPMarket(market).readState();
413
+ PYIndex index = pyIndex(market);
414
+
415
+ (netYtOut, , netScyFee) = state.approxSwapExactScyForYt(
416
+ index,
417
+ exactScyIn,
418
+ block.timestamp,
419
+ approxParams
420
+ );
421
+
422
+ priceImpact = calcPriceImpact(market, netYtOut.neg());
423
+ }
424
+
425
+ function swapExactYtForScyStatic(address market, uint256 exactYtIn)
426
+ public
427
+ returns (
428
+ uint256 netScyOut,
429
+ uint256 netScyFee,
430
+ uint256 priceImpact
431
+ )
432
+ {
433
+ MarketState memory state = IPMarket(market).readState();
434
+
435
+ PYIndex index = pyIndex(market);
436
+
437
+ uint256 scyOwed;
438
+ (scyOwed, netScyFee) = state.swapScyForExactPt(index, exactYtIn, block.timestamp);
439
+
440
+ uint256 amountPYToRepayScyOwed = index.scyToAssetUp(scyOwed);
441
+ uint256 amountPYToRedeemScyOut = exactYtIn - amountPYToRepayScyOwed;
442
+
443
+ netScyOut = index.assetToScy(amountPYToRedeemScyOut);
444
+ priceImpact = calcPriceImpact(market, exactYtIn.Int());
445
+ }
446
+
447
+ function swapYtForExactScyStatic(
448
+ address market,
449
+ uint256 exactScyOut,
450
+ ApproxParams memory approxParams
451
+ )
452
+ external
453
+ returns (
454
+ uint256 netYtIn,
455
+ uint256 netScyFee,
456
+ uint256 priceImpact
457
+ )
458
+ {
459
+ MarketState memory state = IPMarket(market).readState();
460
+
461
+ PYIndex index = pyIndex(market);
462
+
463
+ (netYtIn, , netScyFee) = state.approxSwapYtForExactScy(
464
+ index,
465
+ exactScyOut,
466
+ block.timestamp,
467
+ approxParams
468
+ );
469
+ priceImpact = calcPriceImpact(market, netYtIn.Int());
470
+ }
471
+
472
+ function swapExactYtForBaseTokenStatic(
473
+ address market,
474
+ uint256 exactYtIn,
475
+ address baseToken
476
+ )
477
+ external
478
+ returns (
479
+ uint256 netBaseTokenOut,
480
+ uint256 netScyFee,
481
+ uint256 priceImpact
482
+ )
483
+ {
484
+ uint256 netScyOut;
485
+ (netScyOut, netScyFee, priceImpact) = swapExactYtForScyStatic(market, exactYtIn);
486
+
487
+ (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
488
+ netBaseTokenOut = SCY.previewRedeem(baseToken, netScyOut);
489
+ }
490
+
491
+ function swapExactBaseTokenForYtStatic(
492
+ address market,
493
+ address baseToken,
494
+ uint256 amountBaseToken,
495
+ ApproxParams memory approxParams
496
+ )
497
+ external
498
+ returns (
499
+ uint256 netPtOut,
500
+ uint256 netScyFee,
501
+ uint256 priceImpact
502
+ )
503
+ {
504
+ (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
505
+
506
+ return
507
+ swapExactScyForYtStatic(
508
+ market,
509
+ SCY.previewDeposit(baseToken, amountBaseToken),
510
+ approxParams
511
+ );
512
+ }
513
+
514
+ function pyIndex(address market) public returns (PYIndex index) {
515
+ (, , IPYieldToken YT) = IPMarket(market).readTokens();
516
+
517
+ return YT.newIndex();
518
+ }
519
+
520
+ function getExchangeRate(address market) public returns (uint256) {
521
+ return getTradeExchangeRateIncludeFee(market, 0);
522
+ }
523
+
524
+ function getTradeExchangeRateIncludeFee(address market, int256 netPtOut)
525
+ public
526
+ returns (uint256)
527
+ {
528
+ int256 netPtToAccount = netPtOut;
529
+ MarketState memory state = IPMarket(market).readState();
530
+ MarketPreCompute memory comp = state.getMarketPreCompute(pyIndex(market), block.timestamp);
531
+
532
+ int256 preFeeExchangeRate = MarketMathCore._getExchangeRate(
533
+ state.totalPt,
534
+ comp.totalAsset,
535
+ comp.rateScalar,
536
+ comp.rateAnchor,
537
+ netPtToAccount
538
+ );
539
+
540
+ if (netPtToAccount > 0) {
541
+ int256 postFeeExchangeRate = preFeeExchangeRate.divDown(comp.feeRate);
542
+ require(postFeeExchangeRate >= Math.IONE, "exchange rate below 1");
543
+ return postFeeExchangeRate.Uint();
544
+ } else {
545
+ return preFeeExchangeRate.mulDown(comp.feeRate).Uint();
546
+ }
547
+ }
548
+
549
+ function calcPriceImpact(address market, int256 netPtOut)
550
+ public
551
+ returns (uint256 priceImpact)
552
+ {
553
+ uint256 preTradeRate = getExchangeRate(market);
554
+ uint256 tradedRate = getTradeExchangeRateIncludeFee(market, netPtOut);
555
+
556
+ priceImpact = (tradedRate.Int() - preTradeRate.Int()).abs().divDown(preTradeRate);
557
+ }
558
+
559
+ function getPtImpliedYield(address market) public view returns (int256) {
560
+ MarketState memory state = IPMarket(market).readState();
561
+
562
+ int256 lnImpliedRate = (state.lastLnImpliedRate).Int();
563
+ return lnImpliedRate.exp();
564
+ }
565
+ }