@pendle/core-v2 1.1.1-mainnet → 1.2.0-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 (636) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
  7. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
  10. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.json +2 -2
  11. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  12. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  13. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  14. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  15. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +3 -3
  16. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +4 -0
  17. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +592 -0
  18. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  19. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  20. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  21. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  22. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  23. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  24. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +3 -3
  25. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  26. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  28. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  29. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  30. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  31. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  32. package/build/artifacts/contracts/LiquidityMining/libraries/WeekMath.sol/WeekMath.dbg.json +1 -1
  33. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
  35. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
  37. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  39. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  41. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  43. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  44. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  46. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  48. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.json +141 -0
  53. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.json +141 -0
  55. package/build/artifacts/contracts/core/StandardizedYield/SYUtils.sol/SYUtils.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.dbg.json +4 -0
  57. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.json +10 -0
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +143 -2
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.dbg.json +4 -0
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.json +1218 -0
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.dbg.json +4 -0
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.json +1192 -0
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +4 -0
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.json +10 -0
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +4 -0
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.json +40 -0
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +4 -0
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.json +322 -0
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol/PendleAuraBalancerStableLPSY.dbg.json +4 -0
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol/PendleAuraBalancerStableLPSY.json +1171 -0
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +4 -0
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.json +10 -0
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +4 -0
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.json +133 -0
  76. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  78. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  79. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +143 -2
  80. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  81. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +143 -2
  82. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  83. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +143 -2
  84. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
  85. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
  86. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
  87. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.json +141 -0
  89. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol/GLPPreviewHelper.dbg.json +4 -0
  90. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol/GLPPreviewHelper.json +50 -0
  91. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +4 -0
  92. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.json +1163 -0
  93. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  94. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +143 -2
  95. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  96. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +143 -2
  97. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  98. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  99. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  100. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  101. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  102. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  103. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  104. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +4 -0
  105. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.json +66 -0
  106. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +4 -0
  107. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.json +476 -0
  108. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +4 -0
  109. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.json +590 -0
  110. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +4 -0
  111. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.json +1017 -0
  112. package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  113. package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  114. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  115. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.json +2 -2
  116. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.dbg.json +1 -1
  117. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.dbg.json +1 -1
  118. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
  119. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
  120. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  121. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +171 -5
  122. package/build/artifacts/contracts/core/libraries/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  123. package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  124. package/build/artifacts/contracts/core/libraries/StringLib.sol/StringLib.dbg.json +1 -1
  125. package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  126. package/build/artifacts/contracts/core/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  127. package/build/artifacts/contracts/core/libraries/math/Math.sol/Math.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +4 -0
  129. package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.json +10 -0
  130. package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +4 -0
  131. package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.json +24 -0
  132. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +4 -0
  133. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.json +133 -0
  134. package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +4 -0
  135. package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.json +328 -0
  136. package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +4 -0
  137. package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.json +467 -0
  138. package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +4 -0
  139. package/build/artifacts/contracts/interfaces/{IPFeeDistributorFactory.sol/IPFeeDistributorFactory.json → Balancer/IGauge.sol/IGauge.json} +18 -33
  140. package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +4 -0
  141. package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.json +30 -0
  142. package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +4 -0
  143. package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.json +398 -0
  144. package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +4 -0
  145. package/build/artifacts/contracts/{router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.json → interfaces/Balancer/IRateProvider.sol/IRateProvider.json} +5 -5
  146. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +4 -0
  147. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.json +278 -0
  148. package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.dbg.json +1 -1
  149. package/build/artifacts/contracts/interfaces/ConvexCurve/ICrvDepositor.sol/ICrvDepositor.dbg.json +1 -1
  150. package/build/artifacts/contracts/interfaces/ConvexCurve/ICvxCrv.sol/ICvxCrv.dbg.json +1 -1
  151. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +1 -1
  152. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.json +18 -0
  153. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
  154. package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +1 -1
  155. package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.dbg.json +4 -0
  156. package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.json +308 -0
  157. package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.dbg.json +4 -0
  158. package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.json +43 -0
  159. package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.dbg.json +4 -0
  160. package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.json +201 -0
  161. package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.dbg.json +4 -0
  162. package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.json +45 -0
  163. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  164. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  165. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  166. package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.dbg.json +4 -0
  167. package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.json +48 -0
  168. package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
  169. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  170. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  171. package/build/artifacts/contracts/interfaces/IBoringOwnableUpgradeable.sol/IBoringOwnableUpgradeable.dbg.json +1 -1
  172. package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.dbg.json +4 -0
  173. package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.json +93 -0
  174. package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.dbg.json +4 -0
  175. package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.json +87 -0
  176. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  177. package/build/artifacts/contracts/interfaces/IEulerEToken.sol/IEulerEToken.dbg.json +1 -1
  178. package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.dbg.json +1 -1
  179. package/build/artifacts/contracts/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.dbg.json +1 -1
  180. package/build/artifacts/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +1 -1
  181. package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.dbg.json +1 -1
  182. package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.dbg.json +1 -1
  183. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  184. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +338 -16
  185. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  186. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +105 -224
  187. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +1 -1
  188. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.json +56 -12
  189. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  190. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +52 -8
  191. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  192. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +231 -8
  193. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  194. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +675 -241
  195. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  196. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +1 -1
  197. package/build/artifacts/contracts/interfaces/IPBulkSellerSYCallback.sol/IPBulkSellerCallback.dbg.json +1 -1
  198. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
  199. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.json +43 -32
  200. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
  201. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  202. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  203. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  204. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  205. package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.dbg.json +4 -0
  206. package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.json +40 -0
  207. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  208. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  209. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  210. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
  211. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.json +1 -1
  212. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
  213. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  214. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  215. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  216. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  217. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  218. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  219. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  220. package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.dbg.json +4 -0
  221. package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.json +679 -0
  222. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  223. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  224. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  225. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
  226. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  227. package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.dbg.json +1 -1
  228. package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.dbg.json +1 -1
  229. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
  230. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
  231. package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.dbg.json +1 -1
  232. package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +1 -1
  233. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
  234. package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.dbg.json +1 -1
  235. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  236. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
  237. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  238. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  239. package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.dbg.json +4 -0
  240. package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.json +143 -0
  241. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
  242. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  243. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  244. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
  245. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +2 -28
  246. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +4 -0
  247. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.json +322 -0
  248. package/build/artifacts/contracts/offchain-helpers/PendleMulticall.sol/PendleMulticall.dbg.json +4 -0
  249. package/build/artifacts/contracts/offchain-helpers/PendleMulticall.sol/PendleMulticall.json +47 -0
  250. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  251. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +144 -60
  252. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  253. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +345 -62
  254. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  255. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +107 -260
  256. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  257. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +57 -18
  258. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  259. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +54 -65
  260. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  261. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +342 -44
  262. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  263. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +76 -67
  264. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +4 -0
  265. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.json +141 -0
  266. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  267. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.json +1 -15
  268. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  269. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  270. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  271. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  272. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  273. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.dbg.json +4 -0
  274. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.json +160 -0
  275. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.dbg.json +4 -0
  276. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.json +10 -0
  277. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +4 -0
  278. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.json +56 -0
  279. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapAggregator.sol/PendleSwapAggregator.dbg.json +4 -0
  280. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapAggregator.sol/PendleSwapAggregator.json +72 -0
  281. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.dbg.json +4 -0
  282. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.json +10 -0
  283. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.dbg.json +4 -0
  284. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.json +10 -0
  285. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +4 -0
  286. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.json +65 -0
  287. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.dbg.json +4 -0
  288. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.json +388 -0
  289. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.dbg.json +4 -0
  290. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.json +101 -0
  291. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +4 -0
  292. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.json +215 -0
  293. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol +0 -1
  294. package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +9 -9
  295. package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol +224 -0
  296. package/contracts/core/BulkSeller/BulkSeller.sol +1 -1
  297. package/contracts/core/RewardManager/RewardManager.sol +1 -1
  298. package/contracts/core/StandardizedYield/SYBase.sol +23 -5
  299. package/contracts/core/StandardizedYield/StEthHelper.sol +71 -0
  300. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol +134 -0
  301. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol +154 -0
  302. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol +68 -0
  303. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol +322 -0
  304. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol +390 -0
  305. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol +329 -0
  306. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol +30 -0
  307. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol +189 -0
  308. package/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol +142 -0
  309. package/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol +224 -0
  310. package/contracts/core/StandardizedYield/implementations/GLP/README.md +61 -0
  311. package/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol +138 -0
  312. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +10 -0
  313. package/contracts/core/YieldContractsV2/InterestManagerYTV2.sol +114 -0
  314. package/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol +63 -0
  315. package/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol +200 -0
  316. package/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol +485 -0
  317. package/contracts/core/libraries/ArrayLib.sol +27 -3
  318. package/contracts/core/libraries/Errors.sol +18 -4
  319. package/contracts/core/libraries/TokenHelper.sol +10 -0
  320. package/contracts/interfaces/Balancer/IAsset.sol +4 -0
  321. package/contracts/interfaces/Balancer/IBalancerFees.sol +6 -0
  322. package/contracts/interfaces/Balancer/IBalancerStablePreview.sol +22 -0
  323. package/contracts/interfaces/Balancer/IBasePool.sol +30 -0
  324. package/contracts/interfaces/Balancer/IComposableStable.sol +39 -0
  325. package/contracts/interfaces/Balancer/IGauge.sol +10 -0
  326. package/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol +6 -0
  327. package/contracts/interfaces/Balancer/IMetaStablePool.sol +31 -0
  328. package/contracts/interfaces/Balancer/IRateProvider.sol +6 -0
  329. package/contracts/interfaces/Balancer/IVault.sol +78 -0
  330. package/contracts/interfaces/ConvexCurve/IRewards.sol +5 -0
  331. package/contracts/interfaces/GMX/IGMXVault.sol +47 -0
  332. package/contracts/interfaces/GMX/IGlpManager.sol +12 -0
  333. package/contracts/interfaces/GMX/IRewardRouterV2.sol +43 -0
  334. package/contracts/interfaces/GMX/IVaultPriceFeed.sol +11 -0
  335. package/contracts/interfaces/IAddressProvider.sol +7 -0
  336. package/contracts/interfaces/IDiamondCut.sol +36 -0
  337. package/contracts/interfaces/IDiamondLoupe.sol +38 -0
  338. package/contracts/interfaces/IERC4626.sol +2 -0
  339. package/contracts/interfaces/IPActionAddRemoveLiq.sol +36 -1
  340. package/contracts/interfaces/IPActionInfoStatic.sol +43 -0
  341. package/contracts/interfaces/IPActionMarketAuxStatic.sol +30 -0
  342. package/contracts/interfaces/IPActionMarketCoreStatic.sol +317 -0
  343. package/contracts/interfaces/IPActionMintRedeem.sol +2 -55
  344. package/contracts/interfaces/IPActionMintRedeemStatic.sol +60 -0
  345. package/contracts/interfaces/IPActionMisc.sol +18 -4
  346. package/contracts/interfaces/IPActionStorageStatic.sol +25 -0
  347. package/contracts/interfaces/IPActionSwapPT.sol +1 -1
  348. package/contracts/interfaces/IPActionSwapYT.sol +28 -4
  349. package/contracts/interfaces/IPActionVePendleStatic.sol +9 -0
  350. package/contracts/interfaces/IPAllAction.sol +5 -3
  351. package/contracts/interfaces/IPFeeDistributor.sol +12 -10
  352. package/contracts/interfaces/IPInterestManagerYTV2.sol +13 -0
  353. package/contracts/interfaces/IPMiniDiamond.sol +12 -0
  354. package/contracts/interfaces/IPMsgReceiverApp.sol +1 -1
  355. package/contracts/interfaces/IPRouterStatic.sol +19 -0
  356. package/contracts/interfaces/IPVotingController.sol +6 -0
  357. package/contracts/interfaces/IPYieldTokenV2.sol +66 -0
  358. package/contracts/interfaces/IStandardizedYield.sol +1 -1
  359. package/contracts/offchain-helpers/AddressProvider.sol +16 -0
  360. package/contracts/offchain-helpers/Broadcaster.sol +48 -0
  361. package/contracts/offchain-helpers/Multicall2.sol +103 -0
  362. package/contracts/offchain-helpers/PendleMulticall.sol +26 -0
  363. package/contracts/offchain-helpers/{MarketMathStatic.sol → legacy/MarketMathStatic.sol} +2 -2
  364. package/contracts/offchain-helpers/{RouterStatic.sol → legacy/RouterStatic.sol} +7 -7
  365. package/contracts/offchain-helpers/router-static/PendleRouterStatic.sol +19 -0
  366. package/contracts/offchain-helpers/router-static/StorageLayout.sol +21 -0
  367. package/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol +125 -0
  368. package/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol +166 -0
  369. package/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol +769 -0
  370. package/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol +166 -0
  371. package/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol +75 -0
  372. package/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol +55 -0
  373. package/contracts/router/ActionAddRemoveLiq.sol +116 -6
  374. package/contracts/router/ActionMintRedeem.sol +12 -202
  375. package/contracts/router/ActionMisc.sol +45 -19
  376. package/contracts/router/ActionSwapPT.sol +0 -5
  377. package/contracts/router/ActionSwapYT.sol +103 -13
  378. package/contracts/router/PendleRouter.sol +211 -72
  379. package/contracts/router/{ActionCallback.sol → base/ActionBaseCallback.sol} +47 -47
  380. package/contracts/router/base/ActionBaseMintRedeem.sol +105 -60
  381. package/contracts/router/base/CallbackHelper.sol +137 -44
  382. package/contracts/router/base/MarketApproxLib.sol +227 -350
  383. package/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol +45 -0
  384. package/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol +69 -0
  385. package/contracts/router/swap-aggregator/IPSwapAggregator.sol +25 -0
  386. package/contracts/router/swap-aggregator/PendleSwapAggregator.sol +46 -0
  387. package/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol +214 -0
  388. package/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol +147 -0
  389. package/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol +17 -0
  390. package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol +191 -0
  391. package/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol +30 -0
  392. package/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol +42 -0
  393. package/deployments/43113-core.json +30 -0
  394. package/deployments/43113-markets/APE-30-MARCH.json +10 -0
  395. package/deployments/43113-markets/USDC-FEB-2ND-2024.json +10 -0
  396. package/deployments/43113-markets/USDC-FEB-2ND.json +10 -0
  397. package/deployments/43113-markets/USDC-FEB-4TH.json +10 -0
  398. package/deployments/43113-markets/WETH-FEB-2ND.json +11 -0
  399. package/deployments/43113-markets/WETH-FEB-4TH.json +11 -0
  400. package/deployments/43113-offchain-helper.json +4 -0
  401. package/deployments/43113-testenv.json +22 -0
  402. package/deployments/80001-core.json +29 -0
  403. package/deployments/80001-markets/GLP-DEC-8TH.json +10 -0
  404. package/deployments/80001-markets/USDC-DEC-8TH.json +10 -0
  405. package/deployments/80001-markets/USDC-FEB-4TH.json +10 -0
  406. package/deployments/80001-markets/WETH-FEB-4TH.json +11 -0
  407. package/deployments/80001-offchain-helper.json +4 -0
  408. package/deployments/80001-testenv.json +22 -0
  409. package/package.json +9 -10
  410. package/typechain-types/ActionAddRemoveLiq.ts +203 -23
  411. package/typechain-types/ActionBaseCallback.ts +115 -0
  412. package/typechain-types/ActionMintRedeem.ts +29 -230
  413. package/typechain-types/ActionMisc.ts +77 -27
  414. package/typechain-types/ActionSwapPT.ts +26 -31
  415. package/typechain-types/ActionSwapYT.ts +202 -21
  416. package/typechain-types/AddressProvider.ts +280 -0
  417. package/typechain-types/BribeDistributor.ts +363 -0
  418. package/typechain-types/ComposableStablePreview.ts +217 -0
  419. package/typechain-types/DistributorBase.ts +363 -0
  420. package/typechain-types/FeeDistributor.ts +416 -0
  421. package/typechain-types/GLPPreviewHelper.ts +121 -0
  422. package/typechain-types/GMXPreviewHelper.ts +121 -0
  423. package/typechain-types/I1inchAggregationRouterV5.ts +257 -0
  424. package/typechain-types/IAddressProvider.ts +123 -0
  425. package/typechain-types/IAggregationExecutor.ts +182 -0
  426. package/typechain-types/IBalancerFees.ts +89 -0
  427. package/typechain-types/IBalancerStablePreview.ts +217 -0
  428. package/typechain-types/IBasePool.ts +482 -0
  429. package/typechain-types/IComposableStable.ts +730 -0
  430. package/typechain-types/IDiamondCut.ts +152 -0
  431. package/typechain-types/IDiamondLoupe.ts +190 -0
  432. package/typechain-types/IExecutorHelperEthereum1.ts +643 -0
  433. package/typechain-types/IGMXVault.ts +494 -0
  434. package/typechain-types/IGauge.ts +160 -0
  435. package/typechain-types/IGlpManager.ts +115 -0
  436. package/typechain-types/IHashflow.ts +159 -0
  437. package/typechain-types/IKyberSwapAggregationRouterHelper.ts +109 -0
  438. package/typechain-types/ILiquidityGaugeFactory.ts +99 -0
  439. package/typechain-types/IMetaAggregationRouter.ts +213 -0
  440. package/typechain-types/IMetaAggregationRouterV2.ts +221 -0
  441. package/typechain-types/IMetaStablePool.ts +619 -0
  442. package/typechain-types/IMultihopRouterEthereum.ts +209 -0
  443. package/typechain-types/IPActionAddRemoveLiq.ts +213 -14
  444. package/typechain-types/IPActionMintRedeem.ts +29 -211
  445. package/typechain-types/IPActionMisc.ts +77 -27
  446. package/typechain-types/IPActionSwapPT.ts +26 -12
  447. package/typechain-types/IPActionSwapYT.ts +168 -12
  448. package/typechain-types/IPAllAction.ts +445 -227
  449. package/typechain-types/IPFeeDistributor.ts +61 -78
  450. package/typechain-types/IPFeeDistributorFactory.ts +53 -139
  451. package/typechain-types/IPInterestManagerYTV2.ts +117 -0
  452. package/typechain-types/IPMsgReceiverApp.ts +5 -5
  453. package/typechain-types/IPSwapAggregator.ts +126 -0
  454. package/typechain-types/IPYieldTokenV2.ts +901 -0
  455. package/typechain-types/IRateProvider.ts +81 -0
  456. package/typechain-types/IRewardRouterV2.ts +346 -0
  457. package/typechain-types/IRewards.ts +35 -5
  458. package/typechain-types/ISwapAggregator.ts +124 -0
  459. package/typechain-types/IVault.ts +410 -0
  460. package/typechain-types/IVaultPriceFeed.ts +114 -0
  461. package/typechain-types/InterestManagerYTV2.ts +157 -0
  462. package/typechain-types/MetaStableMath.ts +113 -0
  463. package/typechain-types/MetaStablePreview.ts +501 -0
  464. package/typechain-types/Multicall2.ts +437 -0
  465. package/typechain-types/PendleAura3EthSY.ts +1600 -0
  466. package/typechain-types/PendleAuraBalancerStableLPSY.ts +1523 -0
  467. package/typechain-types/PendleAuraCbethWstethSY.ts +1587 -0
  468. package/typechain-types/PendleAuraWethRethSY.ts +1549 -0
  469. package/typechain-types/PendleAuraWethWstethSY.ts +1523 -0
  470. package/typechain-types/PendleConvexLPSY.ts +204 -0
  471. package/typechain-types/PendleCurveFraxUsdcSY.ts +204 -0
  472. package/typechain-types/PendleCurveUsdd3CrvSY.ts +204 -0
  473. package/typechain-types/PendleFeeDistributor.ts +409 -117
  474. package/typechain-types/PendleGaugeControllerSidechainUpg.ts +4 -4
  475. package/typechain-types/PendleGlpSY.ts +1463 -0
  476. package/typechain-types/PendleLooksStakingSY.ts +204 -0
  477. package/typechain-types/PendleMsgReceiverAppUpg.ts +5 -5
  478. package/typechain-types/PendleMulticall.ts +110 -0
  479. package/typechain-types/PendlePrincipalTokenV2.ts +614 -0
  480. package/typechain-types/PendleQiTokenSY.ts +204 -0
  481. package/typechain-types/PendleRouter.ts +109 -131
  482. package/typechain-types/PendleSwapAggregator.ts +126 -0
  483. package/typechain-types/PendleWstEthSY.ts +204 -0
  484. package/typechain-types/PendleYieldContractFactoryV2.ts +801 -0
  485. package/typechain-types/PendleYieldTokenV2.ts +1298 -0
  486. package/typechain-types/RouterStatic.ts +92 -0
  487. package/typechain-types/SAPE.ts +204 -0
  488. package/typechain-types/SYBase.ts +204 -0
  489. package/typechain-types/SYBaseWithRewards.ts +204 -0
  490. package/typechain-types/StEthHelper.ts +107 -0
  491. package/typechain-types/StablePreviewBase.ts +217 -0
  492. package/typechain-types/SwapAggregator.ts +406 -0
  493. package/typechain-types/VotingEscrowPendleSidechain.ts +4 -5
  494. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +346 -68
  495. package/typechain-types/factories/ActionBaseCallback__factory.ts +156 -0
  496. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  497. package/typechain-types/factories/ActionMintRedeem__factory.ts +108 -266
  498. package/typechain-types/factories/ActionMisc__factory.ts +56 -17
  499. package/typechain-types/factories/ActionSwapPTYT__factory.ts +1 -1
  500. package/typechain-types/factories/ActionSwapPT__factory.ts +55 -71
  501. package/typechain-types/factories/ActionSwapYT__factory.ts +356 -48
  502. package/typechain-types/factories/AddressProvider__factory.ts +196 -0
  503. package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
  504. package/typechain-types/factories/BribeDistributor__factory.ts +303 -0
  505. package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
  506. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  507. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  508. package/typechain-types/factories/ComposableStablePreview__factory.ts +190 -0
  509. package/typechain-types/factories/DistributorBase__factory.ts +249 -0
  510. package/typechain-types/factories/Errors__factory.ts +170 -4
  511. package/typechain-types/factories/FeeDistributor__factory.ts +339 -0
  512. package/typechain-types/factories/GLPPreviewHelper__factory.ts +65 -0
  513. package/typechain-types/factories/GMXPreviewHelper__factory.ts +65 -0
  514. package/typechain-types/factories/I1inchAggregationRouterV5__factory.ts +179 -0
  515. package/typechain-types/factories/IAddressProvider__factory.ts +63 -0
  516. package/typechain-types/factories/IAggregationExecutor__factory.ts +84 -0
  517. package/typechain-types/factories/IBalancerFees__factory.ts +36 -0
  518. package/typechain-types/factories/IBalancerStablePreview__factory.ts +152 -0
  519. package/typechain-types/factories/IBasePool__factory.ts +340 -0
  520. package/typechain-types/factories/IComposableStable__factory.ts +482 -0
  521. package/typechain-types/factories/IDiamondCut__factory.ts +105 -0
  522. package/typechain-types/factories/IDiamondLoupe__factory.ts +99 -0
  523. package/typechain-types/factories/IExecutorHelperEthereum1__factory.ts +407 -0
  524. package/typechain-types/factories/IGMXVault__factory.ts +320 -0
  525. package/typechain-types/factories/IGauge__factory.ts +70 -0
  526. package/typechain-types/factories/IGlpManager__factory.ts +55 -0
  527. package/typechain-types/factories/IHashflow__factory.ts +113 -0
  528. package/typechain-types/factories/IKyberSwapAggregationRouterHelper__factory.ts +56 -0
  529. package/typechain-types/factories/ILiquidityGaugeFactory__factory.ts +49 -0
  530. package/typechain-types/factories/IMetaAggregationRouterV2__factory.ts +234 -0
  531. package/typechain-types/factories/IMetaAggregationRouter__factory.ts +202 -0
  532. package/typechain-types/factories/IMetaStablePool__factory.ts +413 -0
  533. package/typechain-types/factories/IMultihopRouterEthereum__factory.ts +155 -0
  534. package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +338 -16
  535. package/typechain-types/factories/IPActionMintRedeem__factory.ts +105 -224
  536. package/typechain-types/factories/IPActionMisc__factory.ts +55 -11
  537. package/typechain-types/factories/IPActionSwapPT__factory.ts +52 -8
  538. package/typechain-types/factories/IPActionSwapYT__factory.ts +231 -8
  539. package/typechain-types/factories/IPAllAction__factory.ts +675 -241
  540. package/typechain-types/factories/IPFeeDistributorFactory__factory.ts +25 -34
  541. package/typechain-types/factories/IPFeeDistributor__factory.ts +42 -31
  542. package/typechain-types/factories/IPInterestManagerYTV2__factory.ts +59 -0
  543. package/typechain-types/factories/IPMsgReceiverApp__factory.ts +1 -1
  544. package/typechain-types/factories/IPSwapAggregator__factory.ts +71 -0
  545. package/typechain-types/factories/IPYieldTokenV2__factory.ts +694 -0
  546. package/typechain-types/factories/IRateProvider__factory.ts +36 -0
  547. package/typechain-types/factories/IRewardRouterV2__factory.ts +216 -0
  548. package/typechain-types/factories/IRewards__factory.ts +18 -0
  549. package/typechain-types/factories/ISwapAggregator__factory.ts +66 -0
  550. package/typechain-types/factories/IVaultPriceFeed__factory.ts +60 -0
  551. package/typechain-types/factories/IVault__factory.ts +287 -0
  552. package/typechain-types/factories/InterestManagerYTV2__factory.ts +81 -0
  553. package/typechain-types/factories/MarketMathStatic__factory.ts +1 -27
  554. package/typechain-types/factories/MetaStableMath__factory.ts +93 -0
  555. package/typechain-types/factories/MetaStablePreview__factory.ts +375 -0
  556. package/typechain-types/factories/Multicall2__factory.ts +372 -0
  557. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  558. package/typechain-types/factories/PendleAura3EthSY__factory.ts +1326 -0
  559. package/typechain-types/factories/PendleAuraBalancerStableLPSY__factory.ts +1190 -0
  560. package/typechain-types/factories/PendleAuraCbethWstethSY__factory.ts +1317 -0
  561. package/typechain-types/factories/PendleAuraWethRethSY__factory.ts +1291 -0
  562. package/typechain-types/factories/PendleAuraWethWstethSY__factory.ts +1265 -0
  563. package/typechain-types/factories/PendleConvexLPSY__factory.ts +141 -0
  564. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +142 -1
  565. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +142 -1
  566. package/typechain-types/factories/PendleFeeDistributor__factory.ts +341 -66
  567. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  568. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +2 -2
  569. package/typechain-types/factories/PendleGlpSY__factory.ts +1249 -0
  570. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +142 -1
  571. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  572. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  573. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  574. package/typechain-types/factories/PendleMsgReceiverAppUpg__factory.ts +1 -1
  575. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  576. package/typechain-types/factories/PendleMulticall__factory.ts +100 -0
  577. package/typechain-types/factories/PendlePrincipalTokenV2__factory.ts +564 -0
  578. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  579. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  580. package/typechain-types/factories/PendleQiTokenSY__factory.ts +142 -1
  581. package/typechain-types/factories/PendleRouter__factory.ts +75 -74
  582. package/typechain-types/factories/PendleSwapAggregator__factory.ts +129 -0
  583. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  584. package/typechain-types/factories/PendleWstEthSY__factory.ts +142 -1
  585. package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +674 -0
  586. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  587. package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1109 -0
  588. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  589. package/typechain-types/factories/RouterStatic__factory.ts +69 -1
  590. package/typechain-types/factories/SAPE__factory.ts +142 -1
  591. package/typechain-types/factories/SYBaseWithRewards__factory.ts +141 -0
  592. package/typechain-types/factories/SYBase__factory.ts +141 -0
  593. package/typechain-types/factories/StEthHelper__factory.ts +62 -0
  594. package/typechain-types/factories/StablePreviewBase__factory.ts +148 -0
  595. package/typechain-types/factories/SwapAggregator__factory.ts +309 -0
  596. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  597. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +2 -2
  598. package/typechain-types/hardhat.d.ts +383 -86
  599. package/typechain-types/index.ts +90 -24
  600. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +0 -4
  601. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.json +0 -131
  602. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +0 -4
  603. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +0 -310
  604. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +0 -4
  605. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +0 -389
  606. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +0 -4
  607. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.json +0 -190
  608. package/build/artifacts/contracts/interfaces/IPFeeDistributorFactory.sol/IPFeeDistributorFactory.dbg.json +0 -4
  609. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +0 -4
  610. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +0 -165
  611. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +0 -4
  612. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +0 -343
  613. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +0 -4
  614. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +0 -224
  615. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.dbg.json +0 -4
  616. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.json +0 -35
  617. package/build/artifacts/contracts/router/kyberswap/IMultihopRouter.sol/IMultihopRouter.dbg.json +0 -4
  618. package/build/artifacts/contracts/router/kyberswap/IMultihopRouter.sol/IMultihopRouter.json +0 -136
  619. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +0 -4
  620. package/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol +0 -159
  621. package/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol +0 -99
  622. package/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol +0 -70
  623. package/contracts/interfaces/IBoringOwnableUpgradeable.sol +0 -10
  624. package/contracts/interfaces/IPActionSwapPTYT.sol +0 -31
  625. package/contracts/interfaces/IPFeeDistributorFactory.sol +0 -14
  626. package/contracts/router/ActionSwapPTYT.sol +0 -108
  627. package/contracts/router/kyberswap/AggregationRouterHelper.sol +0 -317
  628. package/contracts/router/kyberswap/IAggregatorRouterHelper.sol +0 -10
  629. package/contracts/router/kyberswap/IMultihopRouter.sol +0 -139
  630. package/contracts/router/kyberswap/KyberSwapHelper.sol +0 -79
  631. package/deployments/1-core.json +0 -29
  632. package/deployments/1-markets/APE-JUNE-29.json +0 -8
  633. package/deployments/1-markets/FRAXUSDC-CURVELP-MARCH30.json +0 -11
  634. package/deployments/1-markets/LOOKS-STAKING-MARCH30.json +0 -10
  635. package/deployments/1-markets/STETH-JUNE29.json +0 -10
  636. package/deployments/1-markets/STETH-MARCH30.json +0 -10
@@ -0,0 +1,134 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ import "./base/PendleAuraBalancerStableLPSY.sol";
5
+ import "../../../../interfaces/IWETH.sol";
6
+ import "./base/MetaStable/MetaStablePreview.sol";
7
+
8
+ contract PendleAuraWethRethSY is PendleAuraBalancerStableLPSY {
9
+ address public constant RETH = 0xae78736Cd615f374D3085123A210448E74Fc6393;
10
+ address public constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
11
+
12
+ uint256 internal constant AURA_PID = 15;
13
+ address internal constant LP = 0x1E19CF2D73a72Ef1332C882F20534B6519Be0276;
14
+
15
+ constructor(
16
+ string memory _name,
17
+ string memory _symbol,
18
+ MetaStablePreview _previewHelper
19
+ ) PendleAuraBalancerStableLPSY(_name, _symbol, LP, AURA_PID, _previewHelper) {}
20
+
21
+ function _deposit(address tokenIn, uint256 amount)
22
+ internal
23
+ virtual
24
+ override
25
+ returns (uint256 amountSharesOut)
26
+ {
27
+ if (tokenIn == NATIVE) {
28
+ IWETH(WETH).deposit{ value: amount }();
29
+ amountSharesOut = super._deposit(WETH, amount);
30
+ } else {
31
+ amountSharesOut = super._deposit(tokenIn, amount);
32
+ }
33
+ }
34
+
35
+ function _redeem(
36
+ address receiver,
37
+ address tokenOut,
38
+ uint256 amountSharesToRedeem
39
+ ) internal virtual override returns (uint256 amountTokenOut) {
40
+ if (tokenOut == NATIVE) {
41
+ amountTokenOut = super._redeem(address(this), WETH, amountSharesToRedeem);
42
+ IWETH(WETH).withdraw(amountTokenOut);
43
+ _transferOut(NATIVE, receiver, amountTokenOut);
44
+ } else {
45
+ amountTokenOut = super._redeem(receiver, tokenOut, amountSharesToRedeem);
46
+ }
47
+ }
48
+
49
+ function _previewDeposit(address tokenIn, uint256 amountTokenToDeposit)
50
+ internal
51
+ view
52
+ virtual
53
+ override
54
+ returns (uint256 amountSharesOut)
55
+ {
56
+ if (tokenIn == NATIVE) {
57
+ amountSharesOut = super._previewDeposit(WETH, amountTokenToDeposit);
58
+ } else {
59
+ amountSharesOut = super._previewDeposit(tokenIn, amountTokenToDeposit);
60
+ }
61
+ }
62
+
63
+ function _previewRedeem(address tokenOut, uint256 amountSharesToRedeem)
64
+ internal
65
+ view
66
+ virtual
67
+ override
68
+ returns (uint256 amountTokenOut)
69
+ {
70
+ if (tokenOut == NATIVE) {
71
+ amountTokenOut = super._previewRedeem(WETH, amountSharesToRedeem);
72
+ } else {
73
+ amountTokenOut = super._previewRedeem(tokenOut, amountSharesToRedeem);
74
+ }
75
+ }
76
+
77
+ function _getPoolTokenAddresses()
78
+ internal
79
+ view
80
+ virtual
81
+ override
82
+ returns (address[] memory res)
83
+ {
84
+ res = new address[](2);
85
+ res[0] = RETH;
86
+ res[1] = WETH;
87
+ }
88
+
89
+ function _getRateProviders() internal view virtual returns (address[] memory res) {
90
+ res = new address[](2);
91
+ res[0] = 0x1a8F81c256aee9C640e14bB0453ce247ea0DFE6F;
92
+ res[1] = 0x0000000000000000000000000000000000000000;
93
+ }
94
+
95
+ function _getRawScalingFactors() internal view virtual returns (uint256[] memory res) {
96
+ res = new uint256[](2);
97
+ res[0] = 1e18;
98
+ res[1] = 1e18;
99
+ }
100
+
101
+ function _getImmutablePoolData() internal view virtual override returns (bytes memory) {
102
+ MetaStablePreview.ImmutableData memory res;
103
+ res.LP = LP;
104
+ res.poolTokens = _getPoolTokenAddresses();
105
+ res.rateProviders = _getRateProviders();
106
+ res.rawScalingFactors = _getRawScalingFactors();
107
+
108
+ return abi.encode(res);
109
+ }
110
+
111
+ function getTokensIn() public view virtual override returns (address[] memory res) {
112
+ res = new address[](4);
113
+ res[0] = LP;
114
+ res[1] = RETH;
115
+ res[2] = WETH;
116
+ res[3] = NATIVE;
117
+ }
118
+
119
+ function getTokensOut() public view virtual override returns (address[] memory res) {
120
+ res = new address[](4);
121
+ res[0] = LP;
122
+ res[1] = RETH;
123
+ res[2] = WETH;
124
+ res[3] = NATIVE;
125
+ }
126
+
127
+ function isValidTokenIn(address token) public view virtual override returns (bool) {
128
+ return (token == LP || token == RETH || token == WETH || token == NATIVE);
129
+ }
130
+
131
+ function isValidTokenOut(address token) public view virtual override returns (bool) {
132
+ return (token == LP || token == RETH || token == WETH || token == NATIVE);
133
+ }
134
+ }
@@ -0,0 +1,154 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
5
+ import "./base/PendleAuraBalancerStableLPSY.sol";
6
+ import "../../StEthHelper.sol";
7
+ import "./base/MetaStable/MetaStablePreview.sol";
8
+
9
+ contract PendleAuraWethWstethSY is PendleAuraBalancerStableLPSY, StEthHelper {
10
+ uint256 internal constant AURA_PID = 29;
11
+ address internal constant LP = 0x32296969Ef14EB0c6d29669C550D4a0449130230;
12
+
13
+ constructor(
14
+ string memory _name,
15
+ string memory _symbol,
16
+ MetaStablePreview _previewHelper
17
+ ) PendleAuraBalancerStableLPSY(_name, _symbol, LP, AURA_PID, _previewHelper) StEthHelper() {}
18
+
19
+ function _deposit(address tokenIn, uint256 amount)
20
+ internal
21
+ virtual
22
+ override
23
+ returns (uint256 amountSharesOut)
24
+ {
25
+ if (tokenIn == NATIVE) {
26
+ IWETH(WETH).deposit{ value: amount }();
27
+ amountSharesOut = super._deposit(WETH, amount);
28
+ } else if (tokenIn == STETH) {
29
+ uint256 amountWstETH = _depositWstETH(STETH, amount);
30
+ amountSharesOut = super._deposit(WSTETH, amountWstETH);
31
+ } else {
32
+ amountSharesOut = super._deposit(tokenIn, amount);
33
+ }
34
+ }
35
+
36
+ function _redeem(
37
+ address receiver,
38
+ address tokenOut,
39
+ uint256 amountSharesToRedeem
40
+ ) internal virtual override returns (uint256 amountTokenOut) {
41
+ if (tokenOut == NATIVE) {
42
+ amountTokenOut = super._redeem(address(this), WETH, amountSharesToRedeem);
43
+ IWETH(WETH).withdraw(amountTokenOut);
44
+ _transferOut(NATIVE, receiver, amountTokenOut);
45
+ } else if (tokenOut == STETH) {
46
+ uint256 amountWstETH = super._redeem(address(this), WSTETH, amountSharesToRedeem);
47
+ amountTokenOut = _redeemWstETH(receiver, amountWstETH);
48
+ } else {
49
+ amountTokenOut = super._redeem(receiver, tokenOut, amountSharesToRedeem);
50
+ }
51
+ }
52
+
53
+ function _previewDeposit(address tokenIn, uint256 amountTokenToDeposit)
54
+ internal
55
+ view
56
+ virtual
57
+ override
58
+ returns (uint256 amountSharesOut)
59
+ {
60
+ if (tokenIn == NATIVE) {
61
+ amountSharesOut = super._previewDeposit(WETH, amountTokenToDeposit);
62
+ } else if (tokenIn == STETH) {
63
+ uint256 amountWstETH = _previewDepositWstETH(STETH, amountTokenToDeposit);
64
+ amountSharesOut = super._previewDeposit(WSTETH, amountWstETH);
65
+ } else {
66
+ amountSharesOut = super._previewDeposit(tokenIn, amountTokenToDeposit);
67
+ }
68
+ }
69
+
70
+ function _previewRedeem(address tokenOut, uint256 amountSharesToRedeem)
71
+ internal
72
+ view
73
+ virtual
74
+ override
75
+ returns (uint256 amountTokenOut)
76
+ {
77
+ if (tokenOut == NATIVE) {
78
+ amountTokenOut = super._previewRedeem(WETH, amountSharesToRedeem);
79
+ } else if (tokenOut == STETH) {
80
+ uint256 amountWstETH = super._previewRedeem(WSTETH, amountSharesToRedeem);
81
+ amountTokenOut = _previewRedeemWstETH(amountWstETH);
82
+ } else {
83
+ amountTokenOut = super._previewRedeem(tokenOut, amountSharesToRedeem);
84
+ }
85
+ }
86
+
87
+ function _getPoolTokenAddresses()
88
+ internal
89
+ view
90
+ virtual
91
+ override
92
+ returns (address[] memory res)
93
+ {
94
+ res = new address[](2);
95
+ res[0] = WSTETH;
96
+ res[1] = WETH;
97
+ }
98
+
99
+ function _getRateProviders() internal view virtual returns (address[] memory res) {
100
+ res = new address[](2);
101
+ res[0] = 0x72D07D7DcA67b8A406aD1Ec34ce969c90bFEE768;
102
+ res[1] = 0x0000000000000000000000000000000000000000;
103
+ }
104
+
105
+ function _getRawScalingFactors() internal view virtual returns (uint256[] memory res) {
106
+ res = new uint256[](2);
107
+ res[0] = 1e18;
108
+ res[1] = 1e18;
109
+ }
110
+
111
+ function _getImmutablePoolData() internal view virtual override returns (bytes memory) {
112
+ MetaStablePreview.ImmutableData memory res;
113
+ res.LP = LP;
114
+ res.poolTokens = _getPoolTokenAddresses();
115
+ res.rateProviders = _getRateProviders();
116
+ res.rawScalingFactors = _getRawScalingFactors();
117
+
118
+ return abi.encode(res);
119
+ }
120
+
121
+ function getTokensIn() public view virtual override returns (address[] memory res) {
122
+ res = new address[](5);
123
+ res[0] = LP;
124
+ res[1] = WSTETH;
125
+ res[2] = WETH;
126
+ res[3] = STETH;
127
+ res[4] = NATIVE;
128
+ }
129
+
130
+ function getTokensOut() public view virtual override returns (address[] memory res) {
131
+ res = new address[](5);
132
+ res[0] = LP;
133
+ res[1] = WSTETH;
134
+ res[2] = WETH;
135
+ res[3] = STETH;
136
+ res[4] = NATIVE;
137
+ }
138
+
139
+ function isValidTokenIn(address token) public view virtual override returns (bool) {
140
+ return (token == LP ||
141
+ token == WSTETH ||
142
+ token == WETH ||
143
+ token == STETH ||
144
+ token == NATIVE);
145
+ }
146
+
147
+ function isValidTokenOut(address token) public view virtual override returns (bool) {
148
+ return (token == LP ||
149
+ token == WSTETH ||
150
+ token == WETH ||
151
+ token == STETH ||
152
+ token == NATIVE);
153
+ }
154
+ }
@@ -0,0 +1,68 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity ^0.8.17;
3
+
4
+ /* solhint-disable private-vars-leading-underscore */
5
+
6
+ /**
7
+ * @dev forked from https://etherscan.io/token/0x8e85e97ed19c0fa13b2549309965291fbbc0048b#code
8
+ * with omitted overflow checks given solidity version
9
+ */
10
+
11
+ library FixedPoint {
12
+ uint256 internal constant ONE = 1e18; // 18 decimal places
13
+ uint256 internal constant TWO = 2 * ONE;
14
+ uint256 internal constant FOUR = 4 * ONE;
15
+
16
+ function add(uint256 a, uint256 b) internal pure returns (uint256) {
17
+ return a + b;
18
+ }
19
+
20
+ function sub(uint256 a, uint256 b) internal pure returns (uint256) {
21
+ return a - b;
22
+ }
23
+
24
+ function mulDown(uint256 a, uint256 b) internal pure returns (uint256) {
25
+ return (a * b) / ONE;
26
+ }
27
+
28
+ function mulUp(uint256 a, uint256 b) internal pure returns (uint256) {
29
+ uint256 product = a * b;
30
+ if (product == 0) {
31
+ return 0;
32
+ } else {
33
+ unchecked {
34
+ return ((product - 1) / ONE) + 1;
35
+ }
36
+ }
37
+ }
38
+
39
+ function divDown(uint256 a, uint256 b) internal pure returns (uint256) {
40
+ require(b != 0, "Zero division");
41
+
42
+ if (a == 0) {
43
+ return 0;
44
+ } else {
45
+ uint256 aInflated = a * ONE;
46
+ return aInflated / b;
47
+ }
48
+ }
49
+
50
+ function divUp(uint256 a, uint256 b) internal pure returns (uint256) {
51
+ require(b != 0, "Zero division");
52
+
53
+ if (a == 0) {
54
+ return 0;
55
+ } else {
56
+ uint256 aInflated = a * ONE;
57
+ unchecked {
58
+ return ((aInflated - 1) / b) + 1;
59
+ }
60
+ }
61
+ }
62
+
63
+ function complement(uint256 x) internal pure returns (uint256) {
64
+ unchecked {
65
+ return (x < ONE) ? (ONE - x) : 0;
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,322 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity ^0.8.17;
3
+
4
+ import "../FixedPoint.sol";
5
+
6
+ // almost copy-paste from https://etherscan.io/token/0x1e19cf2d73a72ef1332c882f20534b6519be0276#code
7
+ library MetaStableMath {
8
+ using FixedPoint for uint256;
9
+
10
+ uint256 internal constant _MIN_AMP = 1;
11
+ uint256 internal constant _MAX_AMP = 5000;
12
+ uint256 internal constant _AMP_PRECISION = 1e3;
13
+
14
+ function _calculateInvariant(
15
+ uint256 amplificationParameter,
16
+ uint256[] memory balances,
17
+ bool roundUp
18
+ ) public pure returns (uint256) {
19
+ unchecked {
20
+ /**********************************************************************************************
21
+ // invariant //
22
+ // D = invariant D^(n+1) //
23
+ // A = amplification coefficient A n^n S + D = A D n^n + ----------- //
24
+ // S = sum of balances n^n P //
25
+ // P = product of balances //
26
+ // n = number of tokens //
27
+ **********************************************************************************************/
28
+ // We support rounding up or down.
29
+
30
+ uint256 sum = 0;
31
+ uint256 numTokens = balances.length;
32
+ for (uint256 i = 0; i < numTokens; i++) {
33
+ sum = sum.add(balances[i]);
34
+ }
35
+ if (sum == 0) {
36
+ return 0;
37
+ }
38
+
39
+ uint256 prevInvariant = 0;
40
+ uint256 invariant = sum;
41
+ uint256 ampTimesTotal = amplificationParameter * numTokens;
42
+
43
+ for (uint256 i = 0; i < 255; i++) {
44
+ uint256 P_D = balances[0] * numTokens;
45
+ for (uint256 j = 1; j < numTokens; j++) {
46
+ P_D = div(mul(mul(P_D, balances[j]), numTokens), invariant, roundUp);
47
+ }
48
+ prevInvariant = invariant;
49
+ invariant = div(
50
+ mul(mul(numTokens, invariant), invariant).add(
51
+ div(mul(mul(ampTimesTotal, sum), P_D), _AMP_PRECISION, roundUp)
52
+ ),
53
+ mul(numTokens + 1, invariant).add(
54
+ // No need to use checked arithmetic for the amp precision, the amp is guaranteed to be at least 1
55
+ div(mul(ampTimesTotal - _AMP_PRECISION, P_D), _AMP_PRECISION, !roundUp)
56
+ ),
57
+ roundUp
58
+ );
59
+
60
+ if (invariant > prevInvariant) {
61
+ if (invariant - prevInvariant <= 1) {
62
+ return invariant;
63
+ }
64
+ } else if (prevInvariant - invariant <= 1) {
65
+ return invariant;
66
+ }
67
+ }
68
+
69
+ revert("Stable Invariant did not converge");
70
+ }
71
+ }
72
+
73
+ function _calcBptOutGivenExactTokensIn(
74
+ uint256 amp,
75
+ uint256[] memory balances,
76
+ uint256[] memory amountsIn,
77
+ uint256 bptTotalSupply,
78
+ uint256 swapFeePercentage
79
+ ) internal pure returns (uint256) {
80
+ unchecked {
81
+ // BPT out, so we round down overall.
82
+
83
+ // First loop calculates the sum of all token balances, which will be used to calculate
84
+ // the current weights of each token, relative to this sum
85
+ uint256 sumBalances = 0;
86
+ for (uint256 i = 0; i < balances.length; i++) {
87
+ sumBalances = sumBalances.add(balances[i]);
88
+ }
89
+
90
+ // Calculate the weighted balance ratio without considering fees
91
+ uint256[] memory balanceRatiosWithFee = new uint256[](amountsIn.length);
92
+ // The weighted sum of token balance ratios with fee
93
+ uint256 invariantRatioWithFees = 0;
94
+ for (uint256 i = 0; i < balances.length; i++) {
95
+ uint256 currentWeight = balances[i].divDown(sumBalances);
96
+ balanceRatiosWithFee[i] = balances[i].add(amountsIn[i]).divDown(balances[i]);
97
+ invariantRatioWithFees = invariantRatioWithFees.add(
98
+ balanceRatiosWithFee[i].mulDown(currentWeight)
99
+ );
100
+ }
101
+
102
+ // Second loop calculates new amounts in, taking into account the fee on the percentage excess
103
+ uint256[] memory newBalances = new uint256[](balances.length);
104
+ for (uint256 i = 0; i < balances.length; i++) {
105
+ uint256 amountInWithoutFee;
106
+
107
+ // Check if the balance ratio is greater than the ideal ratio to charge fees or not
108
+ if (balanceRatiosWithFee[i] > invariantRatioWithFees) {
109
+ uint256 nonTaxableAmount = balances[i].mulDown(
110
+ invariantRatioWithFees.sub(FixedPoint.ONE)
111
+ );
112
+ uint256 taxableAmount = amountsIn[i].sub(nonTaxableAmount);
113
+ // No need to use checked arithmetic for the swap fee, it is guaranteed to be lower than 50%
114
+ amountInWithoutFee = nonTaxableAmount.add(
115
+ taxableAmount.mulDown(FixedPoint.ONE - swapFeePercentage)
116
+ );
117
+ } else {
118
+ amountInWithoutFee = amountsIn[i];
119
+ }
120
+
121
+ newBalances[i] = balances[i].add(amountInWithoutFee);
122
+ }
123
+
124
+ // Get current and new invariants, taking swap fees into account
125
+ uint256 currentInvariant = _calculateInvariant(amp, balances, true);
126
+ uint256 newInvariant = _calculateInvariant(amp, newBalances, false);
127
+ uint256 invariantRatio = newInvariant.divDown(currentInvariant);
128
+
129
+ // If the invariant didn't increase for any reason, we simply don't mint BPT
130
+ if (invariantRatio > FixedPoint.ONE) {
131
+ return bptTotalSupply.mulDown(invariantRatio - FixedPoint.ONE);
132
+ } else {
133
+ return 0;
134
+ }
135
+ }
136
+ }
137
+
138
+ function _calcTokenOutGivenExactBptIn(
139
+ uint256 amp,
140
+ uint256[] memory balances,
141
+ uint256 tokenIndex,
142
+ uint256 bptAmountIn,
143
+ uint256 bptTotalSupply,
144
+ uint256 swapFeePercentage
145
+ ) internal pure returns (uint256) {
146
+ unchecked {
147
+ // Token out, so we round down overall.
148
+
149
+ // Get the current and new invariants. Since we need a bigger new invariant, we round the current one up.
150
+ uint256 currentInvariant = _calculateInvariant(amp, balances, true);
151
+ uint256 newInvariant = bptTotalSupply.sub(bptAmountIn).divUp(bptTotalSupply).mulUp(
152
+ currentInvariant
153
+ );
154
+
155
+ // Calculate amount out without fee
156
+ uint256 newBalanceTokenIndex = _getTokenBalanceGivenInvariantAndAllOtherBalances(
157
+ amp,
158
+ balances,
159
+ newInvariant,
160
+ tokenIndex
161
+ );
162
+ uint256 amountOutWithoutFee = balances[tokenIndex].sub(newBalanceTokenIndex);
163
+
164
+ // First calculate the sum of all token balances, which will be used to calculate
165
+ // the current weight of each token
166
+ uint256 sumBalances = 0;
167
+ for (uint256 i = 0; i < balances.length; i++) {
168
+ sumBalances = sumBalances.add(balances[i]);
169
+ }
170
+
171
+ // We can now compute how much excess balance is being withdrawn as a result of the virtual swaps, which result
172
+ // in swap fees.
173
+ uint256 currentWeight = balances[tokenIndex].divDown(sumBalances);
174
+ uint256 taxablePercentage = currentWeight.complement();
175
+
176
+ // Swap fees are typically charged on 'token in', but there is no 'token in' here, so we apply it
177
+ // to 'token out'. This results in slightly larger price impact. Fees are rounded up.
178
+ uint256 taxableAmount = amountOutWithoutFee.mulUp(taxablePercentage);
179
+ uint256 nonTaxableAmount = amountOutWithoutFee.sub(taxableAmount);
180
+
181
+ // No need to use checked arithmetic for the swap fee, it is guaranteed to be lower than 50%
182
+ return nonTaxableAmount.add(taxableAmount.mulDown(FixedPoint.ONE - swapFeePercentage));
183
+ }
184
+ }
185
+
186
+ // The amplification parameter equals: A n^(n-1)
187
+ function _calcDueTokenProtocolSwapFeeAmount(
188
+ uint256 amplificationParameter,
189
+ uint256[] memory balances,
190
+ uint256 lastInvariant,
191
+ uint256 tokenIndex,
192
+ uint256 protocolSwapFeePercentage
193
+ ) internal pure returns (uint256) {
194
+ unchecked {
195
+ /**************************************************************************************************************
196
+ // oneTokenSwapFee - polynomial equation to solve //
197
+ // af = fee amount to calculate in one token //
198
+ // bf = balance of fee token //
199
+ // f = bf - af (finalBalanceFeeToken) //
200
+ // D = old invariant D D^(n+1) //
201
+ // A = amplification coefficient f^2 + ( S - ---------- - D) * f - ------------- = 0 //
202
+ // n = number of tokens (A * n^n) A * n^2n * P //
203
+ // S = sum of final balances but f //
204
+ // P = product of final balances but f //
205
+ **************************************************************************************************************/
206
+
207
+ // Protocol swap fee amount, so we round down overall.
208
+
209
+ uint256 finalBalanceFeeToken = _getTokenBalanceGivenInvariantAndAllOtherBalances(
210
+ amplificationParameter,
211
+ balances,
212
+ lastInvariant,
213
+ tokenIndex
214
+ );
215
+
216
+ if (balances[tokenIndex] <= finalBalanceFeeToken) {
217
+ // This shouldn't happen outside of rounding errors, but have this safeguard nonetheless to prevent the Pool
218
+ // from entering a locked state in which joins and exits revert while computing accumulated swap fees.
219
+ return 0;
220
+ }
221
+
222
+ // Result is rounded down
223
+ uint256 accumulatedTokenSwapFees = balances[tokenIndex] - finalBalanceFeeToken;
224
+ return accumulatedTokenSwapFees.mulDown(protocolSwapFeePercentage);
225
+ }
226
+ }
227
+
228
+ // This function calculates the balance of a given token (tokenIndex)
229
+ // given all the other balances and the invariant
230
+ function _getTokenBalanceGivenInvariantAndAllOtherBalances(
231
+ uint256 amplificationParameter,
232
+ uint256[] memory balances,
233
+ uint256 invariant,
234
+ uint256 tokenIndex
235
+ ) internal pure returns (uint256) {
236
+ unchecked {
237
+ // Rounds result up overall
238
+
239
+ uint256 ampTimesTotal = amplificationParameter * balances.length;
240
+ uint256 sum = balances[0];
241
+ uint256 P_D = balances[0] * balances.length;
242
+ for (uint256 j = 1; j < balances.length; j++) {
243
+ P_D = divDown(mul(mul(P_D, balances[j]), balances.length), invariant);
244
+ sum = sum.add(balances[j]);
245
+ }
246
+ // No need to use safe math, based on the loop above `sum` is greater than or equal to `balances[tokenIndex]`
247
+ sum = sum - balances[tokenIndex];
248
+
249
+ uint256 inv2 = mul(invariant, invariant);
250
+ // We remove the balance from c by multiplying it
251
+ uint256 c = mul(
252
+ mul(divUp(inv2, mul(ampTimesTotal, P_D)), _AMP_PRECISION),
253
+ balances[tokenIndex]
254
+ );
255
+ uint256 b = sum.add(mul(divDown(invariant, ampTimesTotal), _AMP_PRECISION));
256
+
257
+ // We iterate to find the balance
258
+ uint256 prevTokenBalance = 0;
259
+ // We multiply the first iteration outside the loop with the invariant to set the value of the
260
+ // initial approximation.
261
+ uint256 tokenBalance = divUp(inv2.add(c), invariant.add(b));
262
+
263
+ for (uint256 i = 0; i < 255; i++) {
264
+ prevTokenBalance = tokenBalance;
265
+
266
+ tokenBalance = divUp(
267
+ mul(tokenBalance, tokenBalance).add(c),
268
+ mul(tokenBalance, 2).add(b).sub(invariant)
269
+ );
270
+
271
+ if (tokenBalance > prevTokenBalance) {
272
+ if (tokenBalance - prevTokenBalance <= 1) {
273
+ return tokenBalance;
274
+ }
275
+ } else if (prevTokenBalance - tokenBalance <= 1) {
276
+ return tokenBalance;
277
+ }
278
+ }
279
+
280
+ revert("Stable get balance did not converge");
281
+ }
282
+ }
283
+
284
+ /*///////////////////////////////////////////////////////////////
285
+ LEGACY MATH FUNCTIONS
286
+ //////////////////////////////////////////////////////////////*/
287
+
288
+ function mul(uint256 a, uint256 b) internal pure returns (uint256) {
289
+ unchecked {
290
+ uint256 c = a * b;
291
+ require(a == 0 || c / a == b);
292
+ return c;
293
+ }
294
+ }
295
+
296
+ function div(
297
+ uint256 a,
298
+ uint256 b,
299
+ bool roundUp
300
+ ) internal pure returns (uint256) {
301
+ return roundUp ? divUp(a, b) : divDown(a, b);
302
+ }
303
+
304
+ function divDown(uint256 a, uint256 b) internal pure returns (uint256) {
305
+ unchecked {
306
+ require(b != 0);
307
+ return a / b;
308
+ }
309
+ }
310
+
311
+ function divUp(uint256 a, uint256 b) internal pure returns (uint256) {
312
+ unchecked {
313
+ require(b != 0);
314
+
315
+ if (a == 0) {
316
+ return 0;
317
+ } else {
318
+ return 1 + (a - 1) / b;
319
+ }
320
+ }
321
+ }
322
+ }