@pendle/core-v2 0.11.11-testnet → 0.12.1-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 (403) hide show
  1. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  2. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  3. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +1 -1
  4. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +199 -30
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSCY.sol/Pendle3CrvAndTokenSCY.dbg.json +4 -0
  6. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSCY.sol/Pendle3CrvAndTokenSCY.json +1030 -0
  7. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/PendleConvexCurveLP2PoolSCY.sol/PendleConvexCurveLP2PoolSCY.dbg.json +4 -0
  8. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/PendleConvexCurveLP2PoolSCY.sol/PendleConvexCurveLP2PoolSCY.json +1025 -0
  9. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/PendleConvexCurveLPSCY.sol/PendleConvexCurveLPSCY.dbg.json +4 -0
  10. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/PendleConvexCurveLPSCY.sol/PendleConvexCurveLPSCY.json +948 -0
  11. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/Pendle3CrvHelper.sol/Pendle3CrvHelper.dbg.json +4 -0
  12. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/Pendle3CrvHelper.sol/Pendle3CrvHelper.json +76 -0
  13. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
  14. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +140 -25
  15. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
  16. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.json +138 -23
  17. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
  18. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +138 -23
  19. package/build/artifacts/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +4 -0
  20. package/build/artifacts/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +310 -0
  21. package/build/artifacts/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +4 -0
  22. package/build/artifacts/contracts/core/LiquidityMining/{CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.json → CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.json} +18 -85
  23. package/build/artifacts/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +4 -0
  24. package/build/artifacts/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +336 -0
  25. package/build/artifacts/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +4 -0
  26. package/build/artifacts/contracts/core/LiquidityMining/{CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.json → CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.json} +8 -21
  27. package/build/artifacts/contracts/core/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +4 -0
  28. package/build/artifacts/contracts/core/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.json +131 -0
  29. package/build/artifacts/contracts/core/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +4 -0
  30. package/build/artifacts/contracts/core/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +297 -0
  31. package/build/artifacts/contracts/core/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +4 -0
  32. package/build/artifacts/contracts/core/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +376 -0
  33. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.json +11 -0
  35. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +29 -2
  37. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +40 -86
  39. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +228 -40
  42. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.json +232 -12
  44. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +164 -47
  46. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +25 -93
  48. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.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 +222 -9
  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 +106 -5
  53. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +4 -0
  55. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +329 -0
  56. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  57. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +13 -2
  58. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  59. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +87 -2
  61. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +80 -16
  63. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +164 -2
  65. package/build/artifacts/contracts/core/actions/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/actions/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +172 -4
  67. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +109 -2
  69. package/build/artifacts/contracts/core/actions/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/actions/ActionMintRedeem.sol/ActionMintRedeem.json +57 -4
  71. package/build/artifacts/contracts/core/actions/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  72. package/build/artifacts/contracts/core/actions/ActionMisc.sol/ActionMisc.json +7 -2
  73. package/build/artifacts/contracts/core/actions/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  74. package/build/artifacts/contracts/core/actions/ActionSwapPT.sol/ActionSwapPT.json +199 -4
  75. package/build/artifacts/contracts/core/actions/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
  76. package/build/artifacts/contracts/core/actions/ActionSwapPTYT.sol/ActionSwapPTYT.json +108 -2
  77. package/build/artifacts/contracts/core/actions/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  78. package/build/artifacts/contracts/core/actions/ActionSwapYT.sol/ActionSwapYT.json +146 -4
  79. package/build/artifacts/contracts/core/actions/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  80. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  81. package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.dbg.json +4 -0
  82. package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.json +177 -0
  83. package/build/artifacts/contracts/interfaces/ConvexCurve/ICrvDepositor.sol/ICrvDepositor.dbg.json +4 -0
  84. package/build/artifacts/contracts/interfaces/ConvexCurve/ICrvDepositor.sol/ICrvDepositor.json +78 -0
  85. package/build/artifacts/contracts/interfaces/ConvexCurve/ICvxCrv.sol/ICvxCrv.dbg.json +4 -0
  86. package/build/artifacts/contracts/interfaces/ConvexCurve/ICvxCrv.sol/ICvxCrv.json +24 -0
  87. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +4 -0
  88. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.json +264 -0
  89. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +4 -0
  90. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.json +305 -0
  91. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  92. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  93. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  95. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  96. package/build/artifacts/contracts/interfaces/IBoringOwnableUpgradeable.sol/IBoringOwnableUpgradeable.dbg.json +4 -0
  97. package/build/artifacts/contracts/interfaces/IBoringOwnableUpgradeable.sol/IBoringOwnableUpgradeable.json +34 -0
  98. package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
  99. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IEulerEToken.sol/IEulerEToken.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +31 -1
  105. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +30 -0
  109. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.json +10 -0
  111. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +30 -0
  113. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +101 -1
  115. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +4 -0
  116. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.json +112 -0
  117. package/build/artifacts/contracts/interfaces/IPFeeDistributorFactory.sol/IPFeeDistributorFactory.dbg.json +4 -0
  118. package/build/artifacts/contracts/interfaces/IPFeeDistributorFactory.sol/IPFeeDistributorFactory.json +76 -0
  119. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
  120. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  121. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  122. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  123. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  124. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  125. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +13 -0
  126. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  127. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +4 -0
  129. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.json +24 -0
  130. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +4 -0
  131. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.json +63 -0
  132. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  133. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  134. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  135. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  136. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.json +148 -0
  137. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +4 -0
  138. package/build/artifacts/contracts/interfaces/{IPVotingEscrow.sol/IPVotingEscrow.json → IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.json} +88 -2
  139. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  140. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  141. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  142. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  143. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  144. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
  145. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  146. package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.dbg.json +1 -1
  147. package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.dbg.json +1 -1
  148. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
  149. package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.dbg.json +1 -1
  150. package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +1 -1
  151. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
  152. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
  153. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.json +4 -28
  154. package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.dbg.json +1 -1
  155. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  156. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
  157. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  158. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  159. package/build/artifacts/contracts/libraries/Errors.sol/Errors.dbg.json +4 -0
  160. package/build/artifacts/contracts/libraries/Errors.sol/Errors.json +886 -0
  161. package/build/artifacts/contracts/libraries/OracleLib.sol/OracleLib.dbg.json +1 -1
  162. package/build/artifacts/contracts/libraries/OracleLib.sol/OracleLib.json +28 -2
  163. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
  164. package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  165. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
  166. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  167. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  168. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +4 -0
  169. package/build/artifacts/contracts/libraries/{solmate/SSTORE2.sol/SSTORE2.json → VeHistoryLib.sol/CheckpointHelper.json} +4 -4
  170. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  171. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  172. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  173. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.json +2 -2
  174. package/build/artifacts/contracts/libraries/helpers/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.dbg.json +4 -0
  175. package/build/artifacts/contracts/libraries/helpers/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.json +45 -0
  176. package/build/artifacts/contracts/libraries/helpers/BaseSplitCodeFactory.sol/CodeDeployer.dbg.json +4 -0
  177. package/build/artifacts/contracts/libraries/helpers/{SSTORE2Deployer.sol/SSTORE2Deployer.json → BaseSplitCodeFactory.sol/CodeDeployer.json} +4 -4
  178. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  179. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  180. package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  181. package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.json +2 -2
  182. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  183. package/build/artifacts/contracts/libraries/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +1 -1
  184. package/build/artifacts/contracts/libraries/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +2 -2
  185. package/build/artifacts/contracts/libraries/kyberswap/IMultihopRouter.sol/IMultihopRouter.dbg.json +1 -1
  186. package/build/artifacts/contracts/libraries/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
  187. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  188. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  189. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  190. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  191. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  192. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  193. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
  194. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  195. package/build/artifacts/contracts/libraries/math/Math.sol/Math.json +2 -2
  196. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
  197. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.json +2 -2
  198. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +4 -0
  199. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.json +167 -0
  200. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
  201. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +182 -4
  202. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  203. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +142 -66
  204. package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
  205. package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
  206. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol +3 -1
  207. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +19 -16
  208. package/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSCY.sol +135 -0
  209. package/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/PendleConvexCurveLP2PoolSCY.sol +96 -0
  210. package/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/PendleConvexCurveLPSCY.sol +215 -0
  211. package/contracts/SuperComposableYield/SCY-implementations/Convex/Pendle3CrvHelper.sol +83 -0
  212. package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +10 -15
  213. package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +30 -43
  214. package/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol +74 -0
  215. package/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol +38 -0
  216. package/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol +83 -0
  217. package/contracts/core/LiquidityMining/{CelerAbstracts/CelerSenderUpg.sol → CrossChainMsg/PendleMsgSenderAppUpg.sol} +12 -13
  218. package/contracts/core/LiquidityMining/FeeDistributor/EpochResultManager.sol +159 -0
  219. package/contracts/core/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol +96 -0
  220. package/contracts/core/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol +68 -0
  221. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +4 -3
  222. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol +6 -2
  223. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol +12 -4
  224. package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +29 -19
  225. package/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +27 -19
  226. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +63 -27
  227. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +6 -5
  228. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +2 -2
  229. package/contracts/core/Market/PendleMarket.sol +26 -24
  230. package/contracts/core/Market/PendleMarketFactory.sol +41 -20
  231. package/contracts/core/PendleERC20Permit.sol +84 -0
  232. package/contracts/core/PendleRouter.sol +2 -1
  233. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +8 -7
  234. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +37 -22
  235. package/contracts/core/YieldContracts/PendleYieldToken.sol +106 -35
  236. package/contracts/core/actions/ActionAddRemoveLiq.sol +58 -41
  237. package/contracts/core/actions/ActionCallback.sol +24 -14
  238. package/contracts/core/actions/ActionMintRedeem.sol +11 -5
  239. package/contracts/core/actions/ActionMisc.sol +2 -1
  240. package/contracts/core/actions/ActionSwapPT.sol +38 -19
  241. package/contracts/core/actions/ActionSwapPTYT.sol +7 -6
  242. package/contracts/core/actions/ActionSwapYT.sol +36 -19
  243. package/contracts/core/actions/base/ActionBaseMintRedeem.sol +15 -8
  244. package/contracts/interfaces/ConvexCurve/IBooster.sol +32 -0
  245. package/contracts/interfaces/ConvexCurve/ICrvDepositor.sol +20 -0
  246. package/contracts/interfaces/ConvexCurve/ICvxCrv.sol +6 -0
  247. package/contracts/interfaces/ConvexCurve/IRewards.sol +38 -0
  248. package/contracts/interfaces/Curve/ICrvPool.sol +69 -0
  249. package/contracts/interfaces/IBoringOwnableUpgradeable.sol +10 -0
  250. package/contracts/interfaces/IPActionAddRemoveLiq.sol +7 -7
  251. package/contracts/interfaces/IPActionSwapPT.sol +6 -6
  252. package/contracts/interfaces/IPActionSwapPTYT.sol +2 -2
  253. package/contracts/interfaces/IPActionSwapYT.sol +13 -13
  254. package/contracts/interfaces/IPFeeDistributor.sol +19 -0
  255. package/contracts/interfaces/IPFeeDistributorFactory.sol +14 -0
  256. package/contracts/interfaces/IPMarket.sol +2 -0
  257. package/contracts/interfaces/IPMsgReceiverApp.sol +7 -0
  258. package/contracts/interfaces/IPMsgSendEndpoint.sol +17 -0
  259. package/contracts/interfaces/IPVotingController.sol +22 -0
  260. package/contracts/interfaces/{IPVotingEscrow.sol → IPVotingEscrowMainchain.sol} +11 -1
  261. package/contracts/interfaces/ISuperComposableYield.sol +2 -7
  262. package/contracts/libraries/Errors.sol +121 -0
  263. package/contracts/libraries/OracleLib.sol +6 -3
  264. package/contracts/libraries/VeBalanceLib.sol +5 -1
  265. package/contracts/libraries/VeHistoryLib.sol +20 -31
  266. package/contracts/libraries/helpers/ArrayLib.sol +0 -17
  267. package/contracts/libraries/helpers/BaseSplitCodeFactory.sol +288 -0
  268. package/contracts/libraries/helpers/TokenHelper.sol +4 -0
  269. package/contracts/libraries/kyberswap/AggregationRouterHelper.sol +0 -7
  270. package/contracts/libraries/math/MarketMathCore.sol +29 -25
  271. package/contracts/libraries/math/Math.sol +6 -2
  272. package/contracts/libraries/math/WeekMath.sol +2 -2
  273. package/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol +43 -0
  274. package/contracts/offchain-helpers/MarketMathStatic.sol +36 -36
  275. package/contracts/offchain-helpers/RouterStatic.sol +53 -37
  276. package/deployments/43113-core.json +11 -10
  277. package/deployments/43113-markets/benqi-market-QI-USDC-FEB-2ND.json +8 -0
  278. package/deployments/43113-markets/benqi-market-QI-WETH-DEC-1ST.json +8 -0
  279. package/deployments/43113-testenv.json +9 -9
  280. package/deployments/80001-core.json +10 -9
  281. package/deployments/80001-markets/benqi-market-QI-USDC-FEB-2ND.json +8 -0
  282. package/deployments/80001-markets/benqi-market-QI-WETH-DEC-1ST.json +8 -0
  283. package/deployments/80001-testenv.json +16 -16
  284. package/package.json +1 -1
  285. package/typechain-types/ActionAddRemoveLiq.ts +18 -6
  286. package/typechain-types/ActionSwapPT.ts +18 -6
  287. package/typechain-types/ActionSwapPTYT.ts +6 -2
  288. package/typechain-types/ActionSwapYT.ts +18 -6
  289. package/typechain-types/IPActionAddRemoveLiq.ts +19 -7
  290. package/typechain-types/IPActionSwapPT.ts +18 -6
  291. package/typechain-types/IPActionSwapPTYT.ts +6 -2
  292. package/typechain-types/IPActionSwapYT.ts +18 -6
  293. package/typechain-types/IPAllAction.ts +61 -21
  294. package/typechain-types/IPBatchSeller.ts +19 -37
  295. package/typechain-types/IPMarket.ts +13 -0
  296. package/typechain-types/IPVotingController.ts +244 -7
  297. package/typechain-types/ISuperComposableYield.ts +7 -46
  298. package/typechain-types/MarketMathStatic.ts +139 -10
  299. package/typechain-types/PendleBatchSeller.ts +72 -50
  300. package/typechain-types/PendleGaugeControllerSidechainUpg.ts +28 -149
  301. package/typechain-types/PendleMarket.ts +104 -0
  302. package/typechain-types/PendleMarketFactory.ts +76 -13
  303. package/typechain-types/PendlePrincipalToken.ts +104 -0
  304. package/typechain-types/PendleQiTokenSCY.ts +111 -46
  305. package/typechain-types/PendleVotingControllerUpg.ts +133 -77
  306. package/typechain-types/PendleWstEthSCY.ts +111 -46
  307. package/typechain-types/PendleYieldContractFactory.ts +84 -21
  308. package/typechain-types/PendleYieldToken.ts +175 -0
  309. package/typechain-types/RouterStatic.ts +136 -67
  310. package/typechain-types/SCYBase.ts +111 -46
  311. package/typechain-types/SCYBaseWithRewards.ts +111 -46
  312. package/typechain-types/VotingControllerStorageUpg.ts +246 -27
  313. package/typechain-types/VotingEscrowPendleMainchain.ts +81 -93
  314. package/typechain-types/VotingEscrowPendleSidechain.ts +26 -171
  315. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +169 -1
  316. package/typechain-types/factories/ActionCallback__factory.ts +108 -1
  317. package/typechain-types/factories/ActionMintRedeem__factory.ts +54 -1
  318. package/typechain-types/factories/ActionMisc__factory.ts +6 -1
  319. package/typechain-types/factories/ActionSwapPTYT__factory.ts +107 -1
  320. package/typechain-types/factories/ActionSwapPT__factory.ts +196 -1
  321. package/typechain-types/factories/ActionSwapYT__factory.ts +143 -1
  322. package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
  323. package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +31 -1
  324. package/typechain-types/factories/IPActionSwapPTYT__factory.ts +10 -0
  325. package/typechain-types/factories/IPActionSwapPT__factory.ts +30 -0
  326. package/typechain-types/factories/IPActionSwapYT__factory.ts +30 -0
  327. package/typechain-types/factories/IPAllAction__factory.ts +101 -1
  328. package/typechain-types/factories/IPBatchSeller__factory.ts +4 -10
  329. package/typechain-types/factories/IPMarket__factory.ts +13 -0
  330. package/typechain-types/factories/IPVotingController__factory.ts +148 -0
  331. package/typechain-types/factories/ISuperComposableYield__factory.ts +4 -28
  332. package/typechain-types/factories/MarketMathStatic__factory.ts +181 -3
  333. package/typechain-types/factories/OracleLib__factory.ts +27 -1
  334. package/typechain-types/factories/Pendle3CrvAndTokenSCY__factory.ts +1 -1
  335. package/typechain-types/factories/Pendle3CrvHelper__factory.ts +1 -1
  336. package/typechain-types/factories/PendleBatchSeller__factory.ts +40 -118
  337. package/typechain-types/factories/PendleConvexCurveLP2PoolSCY__factory.ts +1 -1
  338. package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
  339. package/typechain-types/factories/PendleFeeDistributorFactory__factory.ts +1 -1
  340. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  341. package/typechain-types/factories/PendleGaugeControllerBaseUpg__factory.ts +11 -0
  342. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +28 -1
  343. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +48 -86
  344. package/typechain-types/factories/PendleMarketFactory__factory.ts +129 -9
  345. package/typechain-types/factories/PendleMarket__factory.ts +214 -1
  346. package/typechain-types/factories/PendlePrincipalToken__factory.ts +86 -1
  347. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  348. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +198 -29
  349. package/typechain-types/factories/PendleRouter__factory.ts +12 -1
  350. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +235 -40
  351. package/typechain-types/factories/PendleWstEthSCY__factory.ts +137 -22
  352. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +103 -20
  353. package/typechain-types/factories/PendleYieldToken__factory.ts +163 -1
  354. package/typechain-types/factories/PtAMMArb__factory.ts +1 -1
  355. package/typechain-types/factories/RouterStatic__factory.ts +95 -19
  356. package/typechain-types/factories/SCYBaseWithRewards__factory.ts +136 -21
  357. package/typechain-types/factories/SCYBase__factory.ts +136 -21
  358. package/typechain-types/factories/VotingControllerStorageUpg__factory.ts +232 -12
  359. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +171 -47
  360. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +31 -93
  361. package/typechain-types/hardhat.d.ts +393 -114
  362. package/typechain-types/index.ts +36 -66
  363. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +0 -4
  364. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +0 -810
  365. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +0 -4
  366. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.json +0 -10
  367. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.dbg.json +0 -4
  368. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.json +0 -833
  369. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.dbg.json +0 -4
  370. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.json +0 -723
  371. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.dbg.json +0 -4
  372. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.json +0 -728
  373. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +0 -4
  374. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +0 -705
  375. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.dbg.json +0 -4
  376. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.json +0 -864
  377. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultSCY.sol/PendleYearnVaultSCY.dbg.json +0 -4
  378. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultSCY.sol/PendleYearnVaultSCY.json +0 -718
  379. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.dbg.json +0 -4
  380. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.json +0 -784
  381. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +0 -4
  382. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +0 -4
  383. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +0 -4
  384. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +0 -4
  385. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +0 -4
  386. package/build/artifacts/contracts/offchain-helpers/SSTORE2DeployerContract.sol/SSTORE2DeployerContract.dbg.json +0 -4
  387. package/build/artifacts/contracts/offchain-helpers/SSTORE2DeployerContract.sol/SSTORE2DeployerContract.json +0 -134
  388. package/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol +0 -161
  389. package/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol +0 -126
  390. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol +0 -242
  391. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol +0 -146
  392. package/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol +0 -176
  393. package/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol +0 -129
  394. package/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol +0 -193
  395. package/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultSCY.sol +0 -155
  396. package/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol +0 -182
  397. package/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol +0 -53
  398. package/contracts/libraries/helpers/SSTORE2Deployer.sol +0 -30
  399. package/contracts/libraries/solmate/SSTORE2.sol +0 -99
  400. package/contracts/offchain-helpers/SSTORE2DeployerContract.sol +0 -21
  401. package/deployments/43113-markets/benqi-market-10D931.json +0 -8
  402. package/deployments/43113-markets/benqi-market-9fbD64.json +0 -8
  403. package/deployments/43113-markets/benqi-market-A12361.json +0 -8
@@ -4,6 +4,7 @@ pragma solidity 0.8.15;
4
4
  import "./base/ActionBaseMintRedeem.sol";
5
5
  import "../../interfaces/IPMarket.sol";
6
6
  import "../../interfaces/IPActionMintRedeem.sol";
7
+ import "../../libraries/Errors.sol";
7
8
 
8
9
  contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
9
10
  using MarketMathCore for MarketState;
@@ -143,8 +144,11 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
143
144
  address[] calldata markets,
144
145
  RouterSwapAllStruct calldata dataSwap
145
146
  ) external returns (uint256 netTokenOut, uint256[] memory amountsSwapped) {
146
- require(dataSwap.tokens.length == dataSwap.kybercalls.length, "invalid dataSwap");
147
- require(dataYT.tokenRedeemScys.length == dataYT.scyAddrs.length, "invalid dataYT");
147
+ if (dataSwap.tokens.length != dataSwap.kybercalls.length)
148
+ revert Errors.ArrayLengthMismatch();
149
+
150
+ if (dataYT.tokenRedeemScys.length != dataYT.scyAddrs.length)
151
+ revert Errors.ArrayLengthMismatch();
148
152
 
149
153
  RouterTokenAmounts memory tokensOut = _newRouterTokenAmounts(dataSwap.tokens);
150
154
  RouterTokenAmounts memory scysOut = _newRouterTokenAmounts(dataYT.scyAddrs);
@@ -189,7 +193,7 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
189
193
  netTokenOut = _swapAllToOutputToken(tokensOut, dataSwap);
190
194
 
191
195
  if (netTokenOut < dataSwap.minTokenOut)
192
- require(netTokenOut < dataSwap.minTokenOut, "Insufficient Token Out");
196
+ revert Errors.RouterInsufficientTokenOut(netTokenOut, dataSwap.minTokenOut);
193
197
 
194
198
  amountsSwapped = tokensOut.amounts;
195
199
 
@@ -221,10 +225,12 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
221
225
  if (scys.amounts[i] == 0) continue;
222
226
 
223
227
  _transferFrom(scys.tokens[i], msg.sender, scys.tokens[i], scys.amounts[i]);
224
- uint256 amountOut = ISuperComposableYield(scys.tokens[i]).redeemAfterTransfer(
228
+ uint256 amountOut = ISuperComposableYield(scys.tokens[i]).redeem(
225
229
  address(this),
230
+ scys.amounts[i],
226
231
  tokenRedeemScys[i],
227
- 1
232
+ 1,
233
+ true
228
234
  );
229
235
 
230
236
  _addTokenAmount(tokensOut, tokenRedeemScys[i], amountOut);
@@ -3,6 +3,7 @@ pragma solidity 0.8.15;
3
3
 
4
4
  import "../../interfaces/IPMarket.sol";
5
5
  import "../../interfaces/IPActionMisc.sol";
6
+ import "../../libraries/Errors.sol";
6
7
 
7
8
  contract ActionMisc is IPActionMisc {
8
9
  using Math for uint256;
@@ -12,7 +13,7 @@ contract ActionMisc is IPActionMisc {
12
13
  view
13
14
  returns (uint96 lnImpliedRateMean)
14
15
  {
15
- require(secondsAgo != 0, "time range is zero");
16
+ if (secondsAgo == 0) revert Errors.RouterTimeRangeZero();
16
17
  uint32[] memory secondsAgos = new uint32[](2);
17
18
  secondsAgos[0] = secondsAgo;
18
19
  secondsAgos[1] = 0;
@@ -4,6 +4,7 @@ pragma solidity 0.8.15;
4
4
  import "./base/ActionBaseMintRedeem.sol";
5
5
  import "../../interfaces/IPActionSwapPT.sol";
6
6
  import "../../interfaces/IPMarket.sol";
7
+ import "../../libraries/Errors.sol";
7
8
 
8
9
  contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
9
10
  using MarketMathCore for MarketState;
@@ -24,13 +25,17 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
24
25
  address market,
25
26
  uint256 exactPtIn,
26
27
  uint256 minScyOut
27
- ) external returns (uint256 netScyOut) {
28
+ ) external returns (uint256 netScyOut, uint256 netScyFee) {
28
29
  (, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
29
30
  IERC20(address(PT)).safeTransferFrom(msg.sender, market, exactPtIn);
30
31
 
31
- (netScyOut, ) = IPMarket(market).swapExactPtForScy(receiver, exactPtIn, EMPTY_BYTES);
32
+ (netScyOut, netScyFee) = IPMarket(market).swapExactPtForScy(
33
+ receiver,
34
+ exactPtIn,
35
+ EMPTY_BYTES
36
+ );
32
37
 
33
- require(netScyOut >= minScyOut, "insufficient SCY out");
38
+ if (netScyOut < minScyOut) revert Errors.RouterInsufficientScyOut(netScyOut, minScyOut);
34
39
 
35
40
  emit SwapPtAndScy(msg.sender, market, receiver, exactPtIn.neg(), netScyOut.Int());
36
41
  }
@@ -45,7 +50,7 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
45
50
  uint256 exactScyOut,
46
51
  uint256 maxPtIn,
47
52
  ApproxParams calldata guessPtIn
48
- ) external returns (uint256 netPtIn) {
53
+ ) external returns (uint256 netPtIn, uint256 netScyFee) {
49
54
  MarketState memory state = IPMarket(market).readState();
50
55
  (, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
51
56
 
@@ -55,14 +60,20 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
55
60
  block.timestamp,
56
61
  guessPtIn
57
62
  );
58
- require(netPtIn <= maxPtIn, "exceed limit PT in");
63
+
64
+ if (netPtIn > maxPtIn) revert Errors.RouterExceededLimitPtIn(netPtIn, maxPtIn);
59
65
 
60
66
  IERC20(PT).safeTransferFrom(msg.sender, market, netPtIn);
61
67
 
62
- (uint256 netScyOut, ) = IPMarket(market).swapExactPtForScy(receiver, netPtIn, EMPTY_BYTES);
68
+ uint256 netScyOut;
69
+ (netScyOut, netScyFee) = IPMarket(market).swapExactPtForScy(
70
+ receiver,
71
+ netPtIn,
72
+ EMPTY_BYTES
73
+ );
63
74
 
64
75
  // fail-safe
65
- require(netScyOut >= exactScyOut, "FS insufficient SCY out");
76
+ if (netScyOut < exactScyOut) assert(false);
66
77
 
67
78
  emit SwapPtAndScy(msg.sender, market, receiver, netPtIn.neg(), exactScyOut.Int());
68
79
  }
@@ -72,17 +83,17 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
72
83
  address market,
73
84
  uint256 exactPtOut,
74
85
  uint256 maxScyIn
75
- ) external returns (uint256 netScyIn) {
86
+ ) external returns (uint256 netScyIn, uint256 netScyFee) {
76
87
  MarketState memory state = IPMarket(market).readState();
77
88
  (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
78
89
 
79
90
  (netScyIn, ) = state.swapScyForExactPt(YT.newIndex(), exactPtOut, block.timestamp);
80
91
 
81
- require(netScyIn <= maxScyIn, "exceed limit SCY in");
92
+ if (netScyIn > maxScyIn) revert Errors.RouterExceededLimitScyIn(netScyIn, maxScyIn);
82
93
 
83
94
  IERC20(SCY).safeTransferFrom(msg.sender, market, netScyIn);
84
95
 
85
- IPMarket(market).swapScyForExactPt(receiver, exactPtOut, EMPTY_BYTES); // ignore return
96
+ (, netScyFee) = IPMarket(market).swapScyForExactPt(receiver, exactPtOut, EMPTY_BYTES); // ignore return
86
97
 
87
98
  // no fail-safe since exactly netScyIn will go into the market
88
99
  emit SwapPtAndScy(msg.sender, market, receiver, exactPtOut.Int(), netScyIn.neg());
@@ -94,12 +105,19 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
94
105
  uint256 exactScyIn,
95
106
  uint256 minPtOut,
96
107
  ApproxParams calldata guessPtOut
97
- ) external returns (uint256 netPtOut) {
108
+ ) external returns (uint256 netPtOut, uint256 netScyFee) {
98
109
  (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
99
110
 
100
111
  IERC20(SCY).safeTransferFrom(msg.sender, market, exactScyIn);
101
112
 
102
- netPtOut = _swapExactScyForPt(receiver, market, YT, exactScyIn, minPtOut, guessPtOut);
113
+ (netPtOut, netScyFee) = _swapExactScyForPt(
114
+ receiver,
115
+ market,
116
+ YT,
117
+ exactScyIn,
118
+ minPtOut,
119
+ guessPtOut
120
+ );
103
121
 
104
122
  emit SwapPtAndScy(msg.sender, market, receiver, netPtOut.Int(), exactScyIn.neg());
105
123
  }
@@ -115,14 +133,14 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
115
133
  uint256 minPtOut,
116
134
  ApproxParams calldata guessPtOut,
117
135
  TokenInput calldata input
118
- ) external payable returns (uint256 netPtOut) {
136
+ ) external payable returns (uint256 netPtOut, uint256 netScyFee) {
119
137
  (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
120
138
 
121
139
  // all output SCY is transferred directly to the market
122
140
  uint256 netScyUseToBuyPt = _mintScyFromToken(address(market), address(SCY), 1, input);
123
141
 
124
142
  // SCY is already in the market, hence doPull = false
125
- netPtOut = _swapExactScyForPt(
143
+ (netPtOut, netScyFee) = _swapExactScyForPt(
126
144
  receiver,
127
145
  market,
128
146
  YT,
@@ -150,13 +168,14 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
150
168
  address market,
151
169
  uint256 exactPtIn,
152
170
  TokenOutput calldata output
153
- ) external returns (uint256 netTokenOut) {
171
+ ) external returns (uint256 netTokenOut, uint256 netScyFee) {
154
172
  (ISuperComposableYield SCY, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
155
173
 
156
174
  IERC20(address(PT)).safeTransferFrom(msg.sender, market, exactPtIn);
157
175
 
158
176
  // all output SCY is directly transferred to the SCY contract
159
- (uint256 netScyReceived, ) = IPMarket(market).swapExactPtForScy(
177
+ uint256 netScyReceived;
178
+ (netScyReceived, netScyFee) = IPMarket(market).swapExactPtForScy(
160
179
  address(SCY),
161
180
  exactPtIn,
162
181
  EMPTY_BYTES
@@ -182,7 +201,7 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
182
201
  uint256 exactScyIn,
183
202
  uint256 minPtOut,
184
203
  ApproxParams calldata guessPtOut
185
- ) internal returns (uint256 netPtOut) {
204
+ ) internal returns (uint256 netPtOut, uint256 netScyFee) {
186
205
  MarketState memory state = IPMarket(market).readState();
187
206
 
188
207
  (netPtOut, , ) = state.approxSwapExactScyForPt(
@@ -192,9 +211,9 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
192
211
  guessPtOut
193
212
  );
194
213
 
195
- require(netPtOut >= minPtOut, "insufficient PT out");
214
+ if (netPtOut < minPtOut) revert Errors.RouterInsufficientPtOut(netPtOut, minPtOut);
196
215
 
197
- IPMarket(market).swapScyForExactPt(receiver, netPtOut, EMPTY_BYTES); // ignore return
216
+ (, netScyFee) = IPMarket(market).swapScyForExactPt(receiver, netPtOut, EMPTY_BYTES);
198
217
  // no fail-safe since exactly netPtOut >= minPtOut will be out
199
218
  }
200
219
  }
@@ -29,21 +29,22 @@ contract ActionSwapPTYT is IPActionSwapPTYT, CallbackHelper {
29
29
  uint256 exactPtIn,
30
30
  uint256 minYtOut,
31
31
  ApproxParams calldata guessTotalPtToSwap
32
- ) external returns (uint256 netYtOut) {
32
+ ) external returns (uint256 netYtOut, uint256 netScyFee) {
33
33
  (, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
34
34
  MarketState memory state = IPMarket(market).readState();
35
35
 
36
36
  PT.safeTransferFrom(msg.sender, market, exactPtIn);
37
37
 
38
38
  uint256 totalPtToSwap;
39
- (netYtOut, , totalPtToSwap, ) = state.approxSwapExactPtForYt(
39
+ (netYtOut, , totalPtToSwap, netScyFee) = state.approxSwapExactPtForYt(
40
40
  YT.newIndex(),
41
41
  exactPtIn,
42
42
  block.timestamp,
43
43
  guessTotalPtToSwap
44
44
  );
45
45
 
46
- require(netYtOut >= minYtOut, "insufficient YT out");
46
+ if (netYtOut < minYtOut) revert Errors.RouterInsufficientYtOut(netYtOut, minYtOut);
47
+
47
48
  IPMarket(market).swapExactPtForScy(
48
49
  address(YT),
49
50
  totalPtToSwap,
@@ -59,21 +60,21 @@ contract ActionSwapPTYT is IPActionSwapPTYT, CallbackHelper {
59
60
  uint256 exactYtIn,
60
61
  uint256 minPtOut,
61
62
  ApproxParams calldata guessTotalPtSwapped
62
- ) external returns (uint256 netPtOut) {
63
+ ) external returns (uint256 netPtOut, uint256 netScyFee) {
63
64
  (, , IPYieldToken YT) = IPMarket(market).readTokens();
64
65
  MarketState memory state = IPMarket(market).readState();
65
66
 
66
67
  YT.safeTransferFrom(msg.sender, address(YT), exactYtIn);
67
68
 
68
69
  uint256 totalPtSwapped;
69
- (netPtOut, , totalPtSwapped, ) = state.approxSwapExactYtForPt(
70
+ (netPtOut, , totalPtSwapped, netScyFee) = state.approxSwapExactYtForPt(
70
71
  YT.newIndex(),
71
72
  exactYtIn,
72
73
  block.timestamp,
73
74
  guessTotalPtSwapped
74
75
  );
75
76
 
76
- require(netPtOut >= minPtOut, "insufficient PT out");
77
+ if (netPtOut < minPtOut) revert Errors.RouterInsufficientPtOut(netPtOut, minPtOut);
77
78
 
78
79
  IPMarket(market).swapScyForExactPt(
79
80
  address(this),
@@ -5,6 +5,7 @@ import "./base/ActionBaseMintRedeem.sol";
5
5
  import "./base/CallbackHelper.sol";
6
6
  import "../../interfaces/IPActionSwapYT.sol";
7
7
  import "../../interfaces/IPMarket.sol";
8
+ import "../../libraries/Errors.sol";
8
9
 
9
10
  contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
10
11
  using Math for uint256;
@@ -37,12 +38,19 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
37
38
  uint256 exactScyIn,
38
39
  uint256 minYtOut,
39
40
  ApproxParams memory guessYtOut
40
- ) external returns (uint256 netYtOut) {
41
+ ) external returns (uint256 netYtOut, uint256 netScyFee) {
41
42
  (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
42
43
 
43
44
  SCY.safeTransferFrom(msg.sender, address(YT), exactScyIn);
44
45
 
45
- netYtOut = _swapExactScyForYt(receiver, market, YT, exactScyIn, minYtOut, guessYtOut);
46
+ (netYtOut, netScyFee) = _swapExactScyForYt(
47
+ receiver,
48
+ market,
49
+ YT,
50
+ exactScyIn,
51
+ minYtOut,
52
+ guessYtOut
53
+ );
46
54
 
47
55
  emit SwapYtAndScy(msg.sender, market, receiver, netYtOut.Int(), exactScyIn.neg());
48
56
  }
@@ -62,12 +70,19 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
62
70
  address market,
63
71
  uint256 exactYtIn,
64
72
  uint256 minScyOut
65
- ) external returns (uint256 netScyOut) {
73
+ ) external returns (uint256 netScyOut, uint256 netScyFee) {
66
74
  (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
67
75
 
68
76
  YT.safeTransferFrom(msg.sender, address(YT), exactYtIn);
69
77
 
70
- netScyOut = _swapExactYtForScy(receiver, market, SCY, YT, exactYtIn, minScyOut);
78
+ (netScyOut, netScyFee) = _swapExactYtForScy(
79
+ receiver,
80
+ market,
81
+ SCY,
82
+ YT,
83
+ exactYtIn,
84
+ minScyOut
85
+ );
71
86
 
72
87
  emit SwapYtAndScy(msg.sender, market, receiver, exactYtIn.neg(), netScyOut.Int());
73
88
  }
@@ -86,12 +101,12 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
86
101
  address market,
87
102
  uint256 exactYtOut,
88
103
  uint256 maxScyIn
89
- ) external returns (uint256 netScyIn) {
104
+ ) external returns (uint256 netScyIn, uint256 netScyFee) {
90
105
  (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
91
106
 
92
107
  uint256 preScyBalance = SCY.balanceOf(msg.sender);
93
108
 
94
- IPMarket(market).swapExactPtForScy(
109
+ (, netScyFee) = IPMarket(market).swapExactPtForScy(
95
110
  address(YT),
96
111
  exactYtOut, // exactPtIn = exactYtOut
97
112
  _encodeSwapScyForExactYt(msg.sender, receiver, maxScyIn)
@@ -118,7 +133,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
118
133
  uint256 exactScyOut,
119
134
  uint256 maxYtIn,
120
135
  ApproxParams memory guessYtIn
121
- ) external returns (uint256 netYtIn) {
136
+ ) external returns (uint256 netYtIn, uint256 netScyFee) {
122
137
  MarketState memory state = IPMarket(market).readState();
123
138
  (, , IPYieldToken YT) = IPMarket(market).readTokens();
124
139
 
@@ -129,15 +144,15 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
129
144
  guessYtIn
130
145
  );
131
146
 
132
- require(netYtIn <= maxYtIn, "exceed YT in limit");
147
+ if (netYtIn > maxYtIn) revert Errors.RouterExceededLimitYtIn(netYtIn, maxYtIn);
133
148
 
134
149
  YT.safeTransferFrom(msg.sender, address(YT), netYtIn);
135
150
 
136
- IPMarket(market).swapScyForExactPt(
151
+ (, netScyFee) = IPMarket(market).swapScyForExactPt(
137
152
  address(YT),
138
153
  netYtIn, // exactPtOut = netYtIn
139
154
  _encodeSwapYtForScy(receiver, exactScyOut)
140
- ); // ignore return
155
+ );
141
156
 
142
157
  emit SwapYtAndScy(msg.sender, market, receiver, netYtIn.neg(), exactScyOut.Int());
143
158
  }
@@ -148,12 +163,12 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
148
163
  uint256 minYtOut,
149
164
  ApproxParams memory guessYtOut,
150
165
  TokenInput calldata input
151
- ) external payable returns (uint256 netYtOut) {
166
+ ) external payable returns (uint256 netYtOut, uint256 netScyFee) {
152
167
  (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
153
168
 
154
169
  uint256 netScyUsedToBuyYT = _mintScyFromToken(address(YT), address(SCY), 1, input);
155
170
 
156
- netYtOut = _swapExactScyForYt(
171
+ (netYtOut, netScyFee) = _swapExactScyForYt(
157
172
  receiver,
158
173
  market,
159
174
  YT,
@@ -177,12 +192,14 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
177
192
  address market,
178
193
  uint256 netYtIn,
179
194
  TokenOutput calldata output
180
- ) external returns (uint256 netTokenOut) {
195
+ ) external returns (uint256 netTokenOut, uint256 netScyFee) {
181
196
  (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
182
197
 
183
198
  YT.safeTransferFrom(msg.sender, address(YT), netYtIn);
184
199
 
185
- uint256 netScyOut = _swapExactYtForScy(address(SCY), market, SCY, YT, netYtIn, 1);
200
+ uint256 netScyOut;
201
+
202
+ (netScyOut, netScyFee) = _swapExactYtForScy(address(SCY), market, SCY, YT, netYtIn, 1);
186
203
 
187
204
  netTokenOut = _redeemScyToToken(receiver, address(SCY), netScyOut, output, false);
188
205
 
@@ -203,7 +220,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
203
220
  uint256 exactScyIn,
204
221
  uint256 minYtOut,
205
222
  ApproxParams memory guessYtOut
206
- ) internal returns (uint256 netYtOut) {
223
+ ) internal returns (uint256 netYtOut, uint256 netScyFee) {
207
224
  MarketState memory state = IPMarket(market).readState();
208
225
 
209
226
  (netYtOut, , ) = state.approxSwapExactScyForYt(
@@ -214,9 +231,9 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
214
231
  );
215
232
 
216
233
  // early-check
217
- require(netYtOut >= minYtOut, "insufficient YT out");
234
+ if (netYtOut < minYtOut) revert Errors.RouterInsufficientYtOut(netYtOut, minYtOut);
218
235
 
219
- IPMarket(market).swapExactPtForScy(
236
+ (, netScyFee) = IPMarket(market).swapExactPtForScy(
220
237
  address(YT),
221
238
  netYtOut, // exactPtIn = netYtOut
222
239
  _encodeSwapExactScyForYt(receiver, minYtOut)
@@ -230,10 +247,10 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
230
247
  IPYieldToken YT,
231
248
  uint256 exactYtIn,
232
249
  uint256 minScyOut
233
- ) internal returns (uint256 netScyOut) {
250
+ ) internal returns (uint256 netScyOut, uint256 netScyFee) {
234
251
  uint256 preScyBalance = SCY.balanceOf(receiver);
235
252
 
236
- IPMarket(market).swapScyForExactPt(
253
+ (, netScyFee) = IPMarket(market).swapScyForExactPt(
237
254
  address(YT),
238
255
  exactYtIn, // exactPtOut = exactYtIn
239
256
  _encodeSwapYtForScy(receiver, minScyOut)
@@ -5,6 +5,7 @@ import "../../../libraries/kyberswap/KyberSwapHelper.sol";
5
5
  import "../../../libraries/helpers/TokenHelper.sol";
6
6
  import "../../../interfaces/ISuperComposableYield.sol";
7
7
  import "../../../interfaces/IPYieldToken.sol";
8
+ import "../../../libraries/Errors.sol";
8
9
 
9
10
  // solhint-disable no-empty-blocks
10
11
  abstract contract ActionBaseMintRedeem is TokenHelper, KyberSwapHelper {
@@ -57,21 +58,27 @@ abstract contract ActionBaseMintRedeem is TokenHelper, KyberSwapHelper {
57
58
  }
58
59
 
59
60
  if (output.tokenRedeemScy == output.tokenOut) {
60
- netTokenOut = ISuperComposableYield(SCY).redeemAfterTransfer(
61
+ netTokenOut = ISuperComposableYield(SCY).redeem(
61
62
  receiver,
63
+ netScyIn,
62
64
  output.tokenRedeemScy,
63
- output.minTokenOut
65
+ output.minTokenOut,
66
+ true
64
67
  );
65
68
  } else {
66
- uint256 netTokenRedeemed = ISuperComposableYield(SCY).redeemAfterTransfer(
69
+ uint256 netTokenRedeemed = ISuperComposableYield(SCY).redeem(
67
70
  address(this),
71
+ netScyIn,
68
72
  output.tokenRedeemScy,
69
- 1
73
+ 1,
74
+ true
70
75
  );
71
76
  _kyberswap(output.tokenRedeemScy, netTokenRedeemed, output.kybercall);
72
77
 
73
78
  netTokenOut = _selfBalance(output.tokenOut);
74
- require(netTokenOut >= output.minTokenOut, "insufficient out");
79
+
80
+ if (netTokenOut < output.minTokenOut)
81
+ revert Errors.RouterInsufficientTokenOut(netTokenOut, output.minTokenOut);
75
82
 
76
83
  _transferOut(output.tokenOut, receiver, netTokenOut);
77
84
  }
@@ -91,7 +98,7 @@ abstract contract ActionBaseMintRedeem is TokenHelper, KyberSwapHelper {
91
98
  _mintScyFromToken(YT, SCY, 1, input);
92
99
 
93
100
  netPyOut = IPYieldToken(YT).mintPY(receiver, receiver);
94
- require(netPyOut >= minPyOut, "insufficient PY out");
101
+ if (netPyOut < minPyOut) revert Errors.RouterInsufficientPYOut(netPyOut, minPyOut);
95
102
  }
96
103
 
97
104
  /**
@@ -133,7 +140,7 @@ abstract contract ActionBaseMintRedeem is TokenHelper, KyberSwapHelper {
133
140
  }
134
141
 
135
142
  netPyOut = IPYieldToken(YT).mintPY(receiver, receiver);
136
- require(netPyOut >= minPyOut, "insufficient PY out");
143
+ if (netPyOut < minPyOut) revert Errors.RouterInsufficientPYOut(netPyOut, minPyOut);
137
144
  }
138
145
 
139
146
  function _redeemPyToScy(
@@ -152,6 +159,6 @@ abstract contract ActionBaseMintRedeem is TokenHelper, KyberSwapHelper {
152
159
  }
153
160
 
154
161
  netScyOut = IPYieldToken(YT).redeemPY(receiver);
155
- require(netScyOut >= minScyOut, "insufficient SCY out");
162
+ if (netScyOut < minScyOut) revert Errors.RouterInsufficientScyOut(netScyOut, minScyOut);
156
163
  }
157
164
  }
@@ -0,0 +1,32 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.15;
3
+
4
+ interface IBooster {
5
+ function crv() external view returns (address);
6
+
7
+ function poolLength() external view returns (uint256);
8
+
9
+ function poolInfo(uint256)
10
+ external
11
+ view
12
+ returns (
13
+ address,
14
+ address,
15
+ address,
16
+ address,
17
+ address,
18
+ bool
19
+ );
20
+
21
+ function deposit(
22
+ uint256 _pid,
23
+ uint256 _amount,
24
+ bool _stake
25
+ ) external returns (bool);
26
+
27
+ function depositAll(uint256 _pid, bool _stake) external returns (bool);
28
+
29
+ function withdraw(uint256 _pid, uint256 _amount) external returns (bool);
30
+
31
+ function withdrawAll(uint256 _pid) external returns (bool);
32
+ }
@@ -0,0 +1,20 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.15;
3
+
4
+ interface ICrvDepositor {
5
+ function crv() external view returns (address);
6
+
7
+ function minter() external view returns (address);
8
+
9
+ function deposit(
10
+ uint256 _amount,
11
+ bool _lock,
12
+ address _stakeAddress
13
+ ) external;
14
+
15
+ //deposit crv for cvxCrv
16
+ //can locking immediately or defer locking to someone else by paying a fee.
17
+ //while users can choose to lock or defer, this is mostly in place so that
18
+ //the cvx reward contract isnt costly to claim rewards
19
+ function depositAll(bool _lock, address _stakeAddress) external;
20
+ }
@@ -0,0 +1,6 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.15;
3
+
4
+ interface ICvxCrv {
5
+ function operator() external view returns (address);
6
+ }
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.15;
3
+
4
+ interface IRewards {
5
+ function operator() external view returns (address);
6
+
7
+ function stake(address, uint256) external;
8
+
9
+ function stakeFor(address, uint256) external;
10
+
11
+ function withdraw(uint256, bool) external returns (bool);
12
+
13
+ function withdrawAndUnwrap(uint256, bool) external returns (bool);
14
+
15
+ function exit(address) external;
16
+
17
+ function getReward() external;
18
+
19
+ function queueNewRewards(uint256) external;
20
+
21
+ function notifyRewardAmount(uint256) external;
22
+
23
+ function addExtraReward(address) external;
24
+
25
+ function rewardToken() external returns (address);
26
+
27
+ function rewardPerToken() external returns (uint256);
28
+
29
+ function rewardPerTokenStored() external view returns (uint256);
30
+
31
+ function extraRewardsLength() external view returns (uint256);
32
+
33
+ function extraRewards(uint256) external returns (address);
34
+
35
+ function stakingToken() external returns (address);
36
+
37
+ function lastTimeRewardApplicable() external view returns (uint256);
38
+ }
@@ -0,0 +1,69 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.15;
3
+
4
+ interface ICrvPool {
5
+ function get_virtual_price() external view returns (uint256);
6
+
7
+ function get_dy(
8
+ int128 i,
9
+ int128 j,
10
+ uint256 dx // The amount of i being exchanged.
11
+ ) external view returns (uint256);
12
+
13
+ function exchange(
14
+ int128 i,
15
+ int128 j,
16
+ uint256 dx,
17
+ uint256 min_dy, // The amount of i being exchanged.
18
+ address _receiver
19
+ ) external returns (uint256);
20
+
21
+ function add_liquidity(
22
+ uint256[] memory _deposit_amount,
23
+ uint256 _min_amount,
24
+ address _receiver
25
+ ) external returns (uint256);
26
+
27
+ function add_liquidity(
28
+ uint256[2] memory _deposit_amount,
29
+ uint256 _min_amount
30
+ ) external;
31
+
32
+ function add_liquidity(
33
+ uint256[3] memory _deposit_amount,
34
+ uint256 _min_amount
35
+ ) external;
36
+
37
+ function remove_liquidity(
38
+ uint256 _burn_amount,
39
+ uint256[] memory _min_amounts,
40
+ address _receiver
41
+ ) external returns (uint256[] memory);
42
+
43
+ function remove_liquidity_one_coin(
44
+ uint256 _burn_amount,
45
+ int128 i,
46
+ uint256 _min_amount
47
+ ) external;
48
+
49
+ function calc_token_amount(uint256[] memory _amounts, bool _is_deposit)
50
+ external
51
+ view
52
+ returns (uint256);
53
+
54
+ function calc_token_amount(uint256[2] memory _amounts, bool _is_deposit)
55
+ external
56
+ view
57
+ returns (uint256);
58
+
59
+ function calc_token_amount(uint256[3] memory _amounts, bool _is_deposit)
60
+ external
61
+ view
62
+ returns (uint256);
63
+
64
+
65
+ function calc_withdraw_one_coin(uint256 _burn_amount, int128 i)
66
+ external
67
+ view
68
+ returns (uint256);
69
+ }