@pendle/core-v2 1.0.0-mainnet → 1.0.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 (552) hide show
  1. package/README.md +28 -0
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
  7. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/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 +2 -2
  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 +2 -2
  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/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  33. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
  34. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
  36. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  38. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  40. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  42. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  44. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  45. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  46. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  47. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.dbg.json +4 -0
  52. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.json +10 -0
  53. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +4 -0
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +1075 -0
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.dbg.json +4 -0
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.json +1257 -0
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.dbg.json +4 -0
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.json +1244 -0
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.dbg.json +4 -0
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.json +1218 -0
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.dbg.json +4 -0
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.json +1192 -0
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +4 -0
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.json +10 -0
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +4 -0
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.json +133 -0
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +4 -0
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.json +10 -0
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +4 -0
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.json +40 -0
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +4 -0
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.json +322 -0
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol/PendleAuraBalancerStableLPSY.dbg.json +4 -0
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol/PendleAuraBalancerStableLPSY.json +1171 -0
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +4 -0
  76. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.json +10 -0
  77. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +4 -0
  78. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.json +133 -0
  79. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  80. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  81. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  82. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  83. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  84. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
  85. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  86. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
  87. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
  89. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
  90. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  91. package/build/artifacts/contracts/core/StandardizedYield/implementations/GMX/GMXPreviewHelper.sol/GMXPreviewHelper.dbg.json +4 -0
  92. package/build/artifacts/contracts/core/StandardizedYield/implementations/GMX/GMXPreviewHelper.sol/GMXPreviewHelper.json +50 -0
  93. package/build/artifacts/contracts/core/StandardizedYield/implementations/GMX/PendleGlpSY.sol/PendleGlpSY.dbg.json +4 -0
  94. package/build/artifacts/contracts/core/StandardizedYield/implementations/GMX/PendleGlpSY.sol/PendleGlpSY.json +1163 -0
  95. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  96. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
  97. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  98. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  99. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  100. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  101. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  102. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  103. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  104. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  105. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  106. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +4 -0
  107. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.json +66 -0
  108. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +4 -0
  109. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.json +476 -0
  110. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +4 -0
  111. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.json +590 -0
  112. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +4 -0
  113. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.json +1017 -0
  114. package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  115. package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  116. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  117. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.json +2 -2
  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 +182 -5
  122. package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  123. package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  124. package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +4 -0
  125. package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.json +10 -0
  126. package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +4 -0
  127. package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.json +24 -0
  128. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +4 -0
  129. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.json +133 -0
  130. package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +4 -0
  131. package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.json +328 -0
  132. package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +4 -0
  133. package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.json +467 -0
  134. package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +4 -0
  135. package/build/artifacts/contracts/interfaces/{IPFeeDistributorFactory.sol/IPFeeDistributorFactory.json → Balancer/IGauge.sol/IGauge.json} +18 -33
  136. package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +4 -0
  137. package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.json +30 -0
  138. package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +4 -0
  139. package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.json +398 -0
  140. package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +4 -0
  141. package/build/artifacts/contracts/{router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.json → interfaces/Balancer/IRateProvider.sol/IRateProvider.json} +5 -5
  142. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +4 -0
  143. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.json +278 -0
  144. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +1 -1
  145. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.json +18 -0
  146. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
  147. package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +1 -1
  148. package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.dbg.json +4 -0
  149. package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.json +308 -0
  150. package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.dbg.json +4 -0
  151. package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.json +43 -0
  152. package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.dbg.json +4 -0
  153. package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.json +165 -0
  154. package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.dbg.json +4 -0
  155. package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.json +45 -0
  156. package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +4 -0
  157. package/build/artifacts/contracts/{LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.json → interfaces/IApeStaking.sol/IApeStaking.json} +70 -52
  158. package/build/artifacts/contracts/interfaces/IBoringOwnableUpgradeable.sol/IBoringOwnableUpgradeable.dbg.json +1 -1
  159. package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.dbg.json +4 -0
  160. package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.json +93 -0
  161. package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.dbg.json +4 -0
  162. package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.json +87 -0
  163. package/build/artifacts/contracts/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.dbg.json +1 -1
  164. package/build/artifacts/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +1 -1
  165. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  166. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +338 -16
  167. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  168. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +105 -224
  169. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +1 -1
  170. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.json +56 -12
  171. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  172. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +52 -8
  173. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  174. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +231 -8
  175. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  176. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +675 -241
  177. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  178. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +1 -1
  179. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
  180. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.json +43 -32
  181. package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.dbg.json +4 -0
  182. package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.json +40 -0
  183. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  184. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
  185. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
  186. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  187. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  188. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  189. package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.dbg.json +4 -0
  190. package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.json +679 -0
  191. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
  192. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
  193. package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.dbg.json +1 -1
  194. package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +1 -1
  195. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
  196. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
  197. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
  198. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  199. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  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 +42 -28
  202. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +4 -0
  203. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.json +322 -0
  204. package/build/artifacts/contracts/offchain-helpers/PendleMulticall.sol/PendleMulticall.dbg.json +4 -0
  205. package/build/artifacts/contracts/offchain-helpers/PendleMulticall.sol/PendleMulticall.json +47 -0
  206. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  207. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +257 -100
  208. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  209. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +345 -62
  210. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  211. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +107 -260
  212. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  213. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +57 -18
  214. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  215. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +54 -65
  216. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  217. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +338 -45
  218. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  219. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +76 -67
  220. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +4 -0
  221. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.json +141 -0
  222. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  223. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.json +1 -15
  224. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  225. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  226. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  227. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  228. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  229. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.dbg.json +4 -0
  230. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.json +160 -0
  231. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.dbg.json +4 -0
  232. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.json +10 -0
  233. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +4 -0
  234. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.json +56 -0
  235. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapAggregator.sol/PendleSwapAggregator.dbg.json +4 -0
  236. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapAggregator.sol/PendleSwapAggregator.json +97 -0
  237. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.dbg.json +4 -0
  238. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.json +10 -0
  239. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.dbg.json +4 -0
  240. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.json +10 -0
  241. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +4 -0
  242. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.json +65 -0
  243. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.dbg.json +4 -0
  244. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.json +388 -0
  245. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.dbg.json +4 -0
  246. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.json +101 -0
  247. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +4 -0
  248. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.json +215 -0
  249. package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +7 -9
  250. package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol +224 -0
  251. package/contracts/core/BulkSeller/BulkSeller.sol +1 -1
  252. package/contracts/core/StandardizedYield/SYBaseWithRewards.sol +1 -3
  253. package/contracts/core/StandardizedYield/StEthHelper.sol +71 -0
  254. package/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol +197 -0
  255. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol +170 -0
  256. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol +162 -0
  257. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol +134 -0
  258. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol +154 -0
  259. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol +289 -0
  260. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol +618 -0
  261. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol +68 -0
  262. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol +322 -0
  263. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol +390 -0
  264. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol +329 -0
  265. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol +30 -0
  266. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol +189 -0
  267. package/contracts/core/StandardizedYield/implementations/GMX/GMXPreviewHelper.sol +142 -0
  268. package/contracts/core/StandardizedYield/implementations/GMX/PendleGlpSY.sol +244 -0
  269. package/contracts/core/StandardizedYield/implementations/GMX/README.md +61 -0
  270. package/contracts/core/YieldContractsV2/InterestManagerYTV2.sol +114 -0
  271. package/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol +63 -0
  272. package/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol +200 -0
  273. package/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol +485 -0
  274. package/contracts/core/libraries/ArrayLib.sol +12 -0
  275. package/contracts/core/libraries/Errors.sol +20 -2
  276. package/contracts/core/libraries/TokenHelper.sol +10 -0
  277. package/contracts/interfaces/Balancer/IAsset.sol +4 -0
  278. package/contracts/interfaces/Balancer/IBalancerFees.sol +6 -0
  279. package/contracts/interfaces/Balancer/IBalancerStablePreview.sol +22 -0
  280. package/contracts/interfaces/Balancer/IBasePool.sol +30 -0
  281. package/contracts/interfaces/Balancer/IComposableStable.sol +39 -0
  282. package/contracts/interfaces/Balancer/IGauge.sol +10 -0
  283. package/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol +6 -0
  284. package/contracts/interfaces/Balancer/IMetaStablePool.sol +31 -0
  285. package/contracts/interfaces/Balancer/IRateProvider.sol +6 -0
  286. package/contracts/interfaces/Balancer/IVault.sol +78 -0
  287. package/contracts/interfaces/ConvexCurve/IRewards.sol +5 -0
  288. package/contracts/interfaces/GMX/IGMXVault.sol +47 -0
  289. package/contracts/interfaces/GMX/IGlpManager.sol +8 -0
  290. package/contracts/interfaces/GMX/IRewardRouterV2.sol +35 -0
  291. package/contracts/interfaces/GMX/IVaultPriceFeed.sol +11 -0
  292. package/contracts/interfaces/IApeStaking.sol +30 -0
  293. package/contracts/interfaces/IDiamondCut.sol +36 -0
  294. package/contracts/interfaces/IDiamondLoupe.sol +38 -0
  295. package/contracts/interfaces/IPActionAddRemoveLiq.sol +36 -1
  296. package/contracts/interfaces/IPActionMintRedeem.sol +2 -55
  297. package/contracts/interfaces/IPActionMisc.sol +20 -3
  298. package/contracts/interfaces/IPActionSwapPT.sol +1 -1
  299. package/contracts/interfaces/IPActionSwapYT.sol +28 -4
  300. package/contracts/interfaces/IPAllAction.sol +5 -3
  301. package/contracts/interfaces/IPFeeDistributor.sol +12 -10
  302. package/contracts/interfaces/IPInterestManagerYTV2.sol +13 -0
  303. package/contracts/interfaces/IPYieldTokenV2.sol +66 -0
  304. package/contracts/offchain-helpers/MarketMathStatic.sol +196 -88
  305. package/contracts/offchain-helpers/Multicall2.sol +103 -0
  306. package/contracts/offchain-helpers/PendleMulticall.sol +26 -0
  307. package/contracts/offchain-helpers/RouterStatic.sol +94 -72
  308. package/contracts/router/ActionAddRemoveLiq.sol +116 -6
  309. package/contracts/router/ActionMintRedeem.sol +12 -202
  310. package/contracts/router/ActionMisc.sol +45 -19
  311. package/contracts/router/ActionSwapPT.sol +0 -5
  312. package/contracts/router/ActionSwapYT.sol +98 -13
  313. package/contracts/router/PendleRouter.sol +211 -72
  314. package/contracts/router/{ActionCallback.sol → base/ActionBaseCallback.sol} +47 -47
  315. package/contracts/router/base/ActionBaseMintRedeem.sol +105 -60
  316. package/contracts/router/base/CallbackHelper.sol +137 -44
  317. package/contracts/router/base/MarketApproxLib.sol +227 -350
  318. package/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol +45 -0
  319. package/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol +69 -0
  320. package/contracts/router/swap-aggregator/IPSwapAggregator.sol +30 -0
  321. package/contracts/router/swap-aggregator/PendleSwapAggregator.sol +63 -0
  322. package/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol +214 -0
  323. package/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol +147 -0
  324. package/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol +17 -0
  325. package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol +191 -0
  326. package/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol +30 -0
  327. package/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol +42 -0
  328. package/deployments/43113-core.json +30 -0
  329. package/deployments/43113-markets/APE-30-MARCH.json +10 -0
  330. package/deployments/43113-markets/USDC-FEB-2ND.json +10 -0
  331. package/deployments/43113-markets/USDC-FEB-4TH.json +10 -0
  332. package/deployments/43113-markets/WETH-FEB-2ND.json +11 -0
  333. package/deployments/43113-markets/WETH-FEB-4TH.json +11 -0
  334. package/deployments/43113-offchain-helper.json +4 -0
  335. package/deployments/43113-testenv.json +22 -0
  336. package/deployments/80001-core.json +29 -0
  337. package/deployments/80001-markets/GLP-DEC-8TH.json +10 -0
  338. package/deployments/80001-markets/USDC-DEC-8TH.json +10 -0
  339. package/deployments/80001-markets/USDC-FEB-4TH.json +10 -0
  340. package/deployments/80001-markets/WETH-FEB-4TH.json +11 -0
  341. package/deployments/80001-offchain-helper.json +4 -0
  342. package/deployments/80001-testenv.json +22 -0
  343. package/package.json +6 -6
  344. package/typechain-types/ActionAddRemoveLiq.ts +203 -23
  345. package/typechain-types/ActionBaseCallback.ts +115 -0
  346. package/typechain-types/ActionMintRedeem.ts +29 -230
  347. package/typechain-types/ActionMisc.ts +78 -27
  348. package/typechain-types/ActionSwapPT.ts +26 -31
  349. package/typechain-types/ActionSwapYT.ts +202 -21
  350. package/typechain-types/BribeDistributor.ts +363 -0
  351. package/typechain-types/ComposableStablePreview.ts +217 -0
  352. package/typechain-types/DistributorBase.ts +363 -0
  353. package/typechain-types/FeeDistributor.ts +416 -0
  354. package/typechain-types/GMXPreviewHelper.ts +121 -0
  355. package/typechain-types/I1inchAggregationRouterV5.ts +257 -0
  356. package/typechain-types/IAggregationExecutor.ts +182 -0
  357. package/typechain-types/IApeStaking.ts +305 -0
  358. package/typechain-types/IBalancerFees.ts +89 -0
  359. package/typechain-types/IBalancerStablePreview.ts +217 -0
  360. package/typechain-types/IBasePool.ts +482 -0
  361. package/typechain-types/IComposableStable.ts +730 -0
  362. package/typechain-types/IDiamondCut.ts +152 -0
  363. package/typechain-types/IDiamondLoupe.ts +190 -0
  364. package/typechain-types/IExecutorHelperEthereum1.ts +643 -0
  365. package/typechain-types/IGMXVault.ts +494 -0
  366. package/typechain-types/IGauge.ts +160 -0
  367. package/typechain-types/IGlpManager.ts +115 -0
  368. package/typechain-types/IHashflow.ts +159 -0
  369. package/typechain-types/IKyberSwapAggregationRouterHelper.ts +109 -0
  370. package/typechain-types/ILiquidityGaugeFactory.ts +99 -0
  371. package/typechain-types/IMetaAggregationRouter.ts +213 -0
  372. package/typechain-types/IMetaAggregationRouterV2.ts +221 -0
  373. package/typechain-types/IMetaStablePool.ts +619 -0
  374. package/typechain-types/IMultihopRouterEthereum.ts +209 -0
  375. package/typechain-types/IPActionAddRemoveLiq.ts +213 -14
  376. package/typechain-types/IPActionMintRedeem.ts +29 -211
  377. package/typechain-types/IPActionMisc.ts +78 -27
  378. package/typechain-types/IPActionSwapPT.ts +26 -12
  379. package/typechain-types/IPActionSwapYT.ts +168 -12
  380. package/typechain-types/IPAllAction.ts +445 -227
  381. package/typechain-types/IPFeeDistributor.ts +61 -78
  382. package/typechain-types/IPFeeDistributorFactory.ts +53 -139
  383. package/typechain-types/IPInterestManagerYTV2.ts +117 -0
  384. package/typechain-types/IPSwapAggregator.ts +126 -0
  385. package/typechain-types/IPYieldTokenV2.ts +901 -0
  386. package/typechain-types/IRateProvider.ts +81 -0
  387. package/typechain-types/IRewardRouterV2.ts +303 -0
  388. package/typechain-types/IRewards.ts +35 -5
  389. package/typechain-types/ISwapAggregator.ts +124 -0
  390. package/typechain-types/IVault.ts +410 -0
  391. package/typechain-types/IVaultPriceFeed.ts +114 -0
  392. package/typechain-types/InterestManagerYTV2.ts +157 -0
  393. package/typechain-types/MarketMathStatic.ts +49 -0
  394. package/typechain-types/MetaStableMath.ts +113 -0
  395. package/typechain-types/MetaStablePreview.ts +501 -0
  396. package/typechain-types/Multicall2.ts +437 -0
  397. package/typechain-types/PendleApeStakingSY.ts +1135 -0
  398. package/typechain-types/PendleAura3EthSY.ts +1600 -0
  399. package/typechain-types/PendleAuraBalancerStableLPSY.ts +1523 -0
  400. package/typechain-types/PendleAuraCbethWstethSY.ts +1587 -0
  401. package/typechain-types/PendleAuraWethRethSY.ts +1549 -0
  402. package/typechain-types/PendleAuraWethWstethSY.ts +1523 -0
  403. package/typechain-types/PendleFeeDistributor.ts +409 -117
  404. package/typechain-types/PendleGlpSY.ts +1463 -0
  405. package/typechain-types/PendleMulticall.ts +110 -0
  406. package/typechain-types/PendlePrincipalTokenV2.ts +614 -0
  407. package/typechain-types/PendleRouter.ts +109 -131
  408. package/typechain-types/PendleSwapAggregator.ts +167 -0
  409. package/typechain-types/PendleYieldContractFactoryV2.ts +801 -0
  410. package/typechain-types/PendleYieldTokenV2.ts +1298 -0
  411. package/typechain-types/RouterStatic.ts +132 -69
  412. package/typechain-types/SAPE.ts +1395 -0
  413. package/typechain-types/SYBaseAutoCompound.ts +1203 -0
  414. package/typechain-types/StEthHelper.ts +107 -0
  415. package/typechain-types/StablePreviewBase.ts +217 -0
  416. package/typechain-types/SwapAggregator.ts +406 -0
  417. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +346 -68
  418. package/typechain-types/factories/ActionBaseCallback__factory.ts +156 -0
  419. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  420. package/typechain-types/factories/ActionMintRedeem__factory.ts +108 -266
  421. package/typechain-types/factories/ActionMisc__factory.ts +56 -17
  422. package/typechain-types/factories/ActionSwapPTYT__factory.ts +1 -1
  423. package/typechain-types/factories/ActionSwapPT__factory.ts +55 -71
  424. package/typechain-types/factories/ActionSwapYT__factory.ts +341 -48
  425. package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
  426. package/typechain-types/factories/BribeDistributor__factory.ts +303 -0
  427. package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
  428. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  429. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  430. package/typechain-types/factories/ComposableStablePreview__factory.ts +190 -0
  431. package/typechain-types/factories/DistributorBase__factory.ts +249 -0
  432. package/typechain-types/factories/Errors__factory.ts +181 -4
  433. package/typechain-types/factories/FeeDistributor__factory.ts +339 -0
  434. package/typechain-types/factories/GMXPreviewHelper__factory.ts +65 -0
  435. package/typechain-types/factories/I1inchAggregationRouterV5__factory.ts +179 -0
  436. package/typechain-types/factories/IAggregationExecutor__factory.ts +84 -0
  437. package/typechain-types/factories/IApeStaking__factory.ts +161 -0
  438. package/typechain-types/factories/IBalancerFees__factory.ts +36 -0
  439. package/typechain-types/factories/IBalancerStablePreview__factory.ts +152 -0
  440. package/typechain-types/factories/IBasePool__factory.ts +340 -0
  441. package/typechain-types/factories/IComposableStable__factory.ts +482 -0
  442. package/typechain-types/factories/IDiamondCut__factory.ts +105 -0
  443. package/typechain-types/factories/IDiamondLoupe__factory.ts +99 -0
  444. package/typechain-types/factories/IExecutorHelperEthereum1__factory.ts +407 -0
  445. package/typechain-types/factories/IGMXVault__factory.ts +320 -0
  446. package/typechain-types/factories/IGauge__factory.ts +70 -0
  447. package/typechain-types/factories/IGlpManager__factory.ts +55 -0
  448. package/typechain-types/factories/IHashflow__factory.ts +113 -0
  449. package/typechain-types/factories/IKyberSwapAggregationRouterHelper__factory.ts +56 -0
  450. package/typechain-types/factories/ILiquidityGaugeFactory__factory.ts +49 -0
  451. package/typechain-types/factories/IMetaAggregationRouterV2__factory.ts +234 -0
  452. package/typechain-types/factories/IMetaAggregationRouter__factory.ts +202 -0
  453. package/typechain-types/factories/IMetaStablePool__factory.ts +413 -0
  454. package/typechain-types/factories/IMultihopRouterEthereum__factory.ts +155 -0
  455. package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +338 -16
  456. package/typechain-types/factories/IPActionMintRedeem__factory.ts +105 -224
  457. package/typechain-types/factories/IPActionMisc__factory.ts +55 -11
  458. package/typechain-types/factories/IPActionSwapPT__factory.ts +52 -8
  459. package/typechain-types/factories/IPActionSwapYT__factory.ts +231 -8
  460. package/typechain-types/factories/IPAllAction__factory.ts +675 -241
  461. package/typechain-types/factories/IPFeeDistributorFactory__factory.ts +25 -34
  462. package/typechain-types/factories/IPFeeDistributor__factory.ts +42 -31
  463. package/typechain-types/factories/IPInterestManagerYTV2__factory.ts +59 -0
  464. package/typechain-types/factories/IPSwapAggregator__factory.ts +71 -0
  465. package/typechain-types/factories/IPYieldTokenV2__factory.ts +694 -0
  466. package/typechain-types/factories/IRateProvider__factory.ts +36 -0
  467. package/typechain-types/factories/IRewardRouterV2__factory.ts +180 -0
  468. package/typechain-types/factories/IRewards__factory.ts +18 -0
  469. package/typechain-types/factories/ISwapAggregator__factory.ts +66 -0
  470. package/typechain-types/factories/IVaultPriceFeed__factory.ts +60 -0
  471. package/typechain-types/factories/IVault__factory.ts +287 -0
  472. package/typechain-types/factories/InterestManagerYTV2__factory.ts +81 -0
  473. package/typechain-types/factories/MarketMathStatic__factory.ts +41 -27
  474. package/typechain-types/factories/MetaStableMath__factory.ts +93 -0
  475. package/typechain-types/factories/MetaStablePreview__factory.ts +375 -0
  476. package/typechain-types/factories/Multicall2__factory.ts +372 -0
  477. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  478. package/typechain-types/factories/PendleApeStakingSY__factory.ts +981 -0
  479. package/typechain-types/factories/PendleAura3EthSY__factory.ts +1326 -0
  480. package/typechain-types/factories/PendleAuraBalancerStableLPSY__factory.ts +1190 -0
  481. package/typechain-types/factories/PendleAuraCbethWstethSY__factory.ts +1317 -0
  482. package/typechain-types/factories/PendleAuraWethRethSY__factory.ts +1291 -0
  483. package/typechain-types/factories/PendleAuraWethWstethSY__factory.ts +1265 -0
  484. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
  485. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
  486. package/typechain-types/factories/PendleFeeDistributorFactory__factory.ts +1 -1
  487. package/typechain-types/factories/PendleFeeDistributor__factory.ts +341 -66
  488. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  489. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  490. package/typechain-types/factories/PendleGlpSY__factory.ts +1249 -0
  491. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
  492. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  493. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  494. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  495. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  496. package/typechain-types/factories/PendleMulticall__factory.ts +100 -0
  497. package/typechain-types/factories/PendlePrincipalTokenV2__factory.ts +564 -0
  498. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  499. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  500. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  501. package/typechain-types/factories/PendleRouter__factory.ts +75 -74
  502. package/typechain-types/factories/PendleSwapAggregator__factory.ts +154 -0
  503. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  504. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  505. package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +674 -0
  506. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  507. package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1109 -0
  508. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  509. package/typechain-types/factories/RouterStatic__factory.ts +186 -41
  510. package/typechain-types/factories/SAPE__factory.ts +1142 -0
  511. package/typechain-types/factories/SYBaseAutoCompound__factory.ts +942 -0
  512. package/typechain-types/factories/StEthHelper__factory.ts +62 -0
  513. package/typechain-types/factories/StablePreviewBase__factory.ts +148 -0
  514. package/typechain-types/factories/SwapAggregator__factory.ts +309 -0
  515. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  516. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  517. package/typechain-types/hardhat.d.ts +383 -86
  518. package/typechain-types/index.ts +90 -24
  519. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +0 -4
  520. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +0 -4
  521. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +0 -310
  522. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +0 -4
  523. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +0 -389
  524. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +0 -4
  525. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.json +0 -190
  526. package/build/artifacts/contracts/interfaces/IPFeeDistributorFactory.sol/IPFeeDistributorFactory.dbg.json +0 -4
  527. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +0 -4
  528. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +0 -165
  529. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +0 -4
  530. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +0 -343
  531. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +0 -4
  532. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +0 -224
  533. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.dbg.json +0 -4
  534. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.json +0 -35
  535. package/build/artifacts/contracts/router/kyberswap/IMultihopRouter.sol/IMultihopRouter.dbg.json +0 -4
  536. package/build/artifacts/contracts/router/kyberswap/IMultihopRouter.sol/IMultihopRouter.json +0 -136
  537. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +0 -4
  538. package/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol +0 -159
  539. package/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol +0 -99
  540. package/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol +0 -70
  541. package/contracts/interfaces/IPActionSwapPTYT.sol +0 -31
  542. package/contracts/interfaces/IPFeeDistributorFactory.sol +0 -14
  543. package/contracts/router/ActionSwapPTYT.sol +0 -108
  544. package/contracts/router/kyberswap/AggregationRouterHelper.sol +0 -317
  545. package/contracts/router/kyberswap/IAggregatorRouterHelper.sol +0 -10
  546. package/contracts/router/kyberswap/IMultihopRouter.sol +0 -139
  547. package/contracts/router/kyberswap/KyberSwapHelper.sol +0 -79
  548. package/deployments/1-core.json +0 -29
  549. package/deployments/1-markets/FRAXUSDC-CURVELP-MARCH30.json +0 -11
  550. package/deployments/1-markets/LOOKS-STAKING-MARCH30.json +0 -10
  551. package/deployments/1-markets/STETH-JUNE29.json +0 -10
  552. package/deployments/1-markets/STETH-MARCH30.json +0 -10
@@ -0,0 +1,485 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
5
+
6
+ import "../../interfaces/IStandardizedYield.sol";
7
+ import "../../interfaces/IPYieldTokenV2.sol";
8
+ import "../../interfaces/IPPrincipalToken.sol";
9
+
10
+ import "../libraries/math/Math.sol";
11
+ import "../libraries/ArrayLib.sol";
12
+ import "../../interfaces/IPYieldContractFactory.sol";
13
+ import "../StandardizedYield/SYUtils.sol";
14
+ import "../libraries/Errors.sol";
15
+ import "../libraries/MiniHelpers.sol";
16
+
17
+ import "../RewardManager/RewardManager.sol";
18
+ import "../erc20/PendleERC20Permit.sol";
19
+ import "./InterestManagerYTV2.sol";
20
+
21
+ /**
22
+ Invariance to maintain:
23
+ - address(0) & address(this) should never have any rewards & activeBalance accounting done. This is
24
+ guaranteed by address(0) & address(this) check in each updateForTwo function
25
+ */
26
+ contract PendleYieldTokenV2 is
27
+ IPYieldTokenV2,
28
+ PendleERC20Permit,
29
+ RewardManager,
30
+ InterestManagerYTV2
31
+ {
32
+ using Math for uint256;
33
+ using SafeERC20 for IERC20;
34
+ using ArrayLib for uint256[];
35
+
36
+ struct PostExpiryData {
37
+ uint256 firstPYIndex;
38
+ }
39
+
40
+ address public immutable SY;
41
+ address public immutable PT;
42
+ address public immutable factory;
43
+ uint256 public immutable expiry;
44
+
45
+ bool public immutable doCacheIndexSameBlock;
46
+
47
+ uint256 public syReserve;
48
+
49
+ uint128 public pyIndexLastUpdatedBlock;
50
+ uint128 internal _pyIndexStored;
51
+
52
+ PostExpiryData public postExpiry;
53
+
54
+ uint256 internal _lastCollectedInterestIndex;
55
+
56
+ modifier updateData() {
57
+ if (isExpired()) _setPostExpiryData();
58
+ _;
59
+ _updateSyReserve();
60
+ }
61
+
62
+ modifier notExpired() {
63
+ if (isExpired()) revert Errors.YCExpired();
64
+ _;
65
+ }
66
+
67
+ /**
68
+ * @param _doCacheIndexSameBlock if true, the PY index is cached for each block, and thus is
69
+ * constant for all txs within the same block. Otherwise, the PY index is recalculated for
70
+ * every tx.
71
+ */
72
+ constructor(
73
+ address _SY,
74
+ address _PT,
75
+ string memory _name,
76
+ string memory _symbol,
77
+ uint8 __decimals,
78
+ uint256 _expiry,
79
+ bool _doCacheIndexSameBlock
80
+ ) PendleERC20Permit(_name, _symbol, __decimals) {
81
+ SY = _SY;
82
+ PT = _PT;
83
+ expiry = _expiry;
84
+ factory = msg.sender;
85
+ doCacheIndexSameBlock = _doCacheIndexSameBlock;
86
+ }
87
+
88
+ /**
89
+ * @notice Tokenize SY into PT + YT of equal qty. Every unit of asset of SY will create 1 PT + 1 YT
90
+ * @dev SY must be transferred to this contract prior to calling
91
+ */
92
+ function mintPY(address receiverPT, address receiverYT)
93
+ external
94
+ nonReentrant
95
+ notExpired
96
+ updateData
97
+ returns (uint256 amountPYOut)
98
+ {
99
+ address[] memory receiverPTs = new address[](1);
100
+ address[] memory receiverYTs = new address[](1);
101
+ uint256[] memory amountSyToMints = new uint256[](1);
102
+
103
+ (receiverPTs[0], receiverYTs[0], amountSyToMints[0]) = (
104
+ receiverPT,
105
+ receiverYT,
106
+ _getFloatingSyAmount()
107
+ );
108
+
109
+ uint256[] memory amountPYOuts = _mintPY(receiverPTs, receiverYTs, amountSyToMints);
110
+ amountPYOut = amountPYOuts[0];
111
+ }
112
+
113
+ /// @notice Tokenize SY into PT + YT for multiple receivers. See `mintPY()` for more details
114
+ function mintPYMulti(
115
+ address[] calldata receiverPTs,
116
+ address[] calldata receiverYTs,
117
+ uint256[] calldata amountSyToMints
118
+ ) external nonReentrant notExpired updateData returns (uint256[] memory amountPYOuts) {
119
+ uint256 length = receiverPTs.length;
120
+
121
+ if (length == 0) revert Errors.ArrayEmpty();
122
+ if (receiverYTs.length != length || amountSyToMints.length != length)
123
+ revert Errors.ArrayLengthMismatch();
124
+
125
+ uint256 totalSyToMint = amountSyToMints.sum();
126
+ if (totalSyToMint > _getFloatingSyAmount())
127
+ revert Errors.YieldContractInsufficientSy(totalSyToMint, _getFloatingSyAmount());
128
+
129
+ amountPYOuts = _mintPY(receiverPTs, receiverYTs, amountSyToMints);
130
+ }
131
+
132
+ /**
133
+ * @notice converts PT(+YT) tokens into SY, but interests & rewards are not redeemed at the
134
+ * same time
135
+ * @dev PT/YT must be transferred to this contract prior to calling
136
+ */
137
+ function redeemPY(address receiver)
138
+ external
139
+ nonReentrant
140
+ updateData
141
+ returns (uint256 amountSyOut)
142
+ {
143
+ address[] memory receivers = new address[](1);
144
+ uint256[] memory amounts = new uint256[](1);
145
+ (receivers[0], amounts[0]) = (receiver, _getAmountPYToRedeem());
146
+
147
+ uint256[] memory amountSyOuts;
148
+ amountSyOuts = _redeemPY(receivers, amounts);
149
+
150
+ amountSyOut = amountSyOuts[0];
151
+ }
152
+
153
+ /**
154
+ * @notice redeems PT(+YT) for multiple users. See `redeemPY()`
155
+ * @dev PT/YT must be transferred to this contract prior to calling
156
+ * @dev fails if unable to redeem the total PY amount in `amountPYToRedeems`
157
+ */
158
+ function redeemPYMulti(address[] calldata receivers, uint256[] calldata amountPYToRedeems)
159
+ external
160
+ nonReentrant
161
+ updateData
162
+ returns (uint256[] memory amountSyOuts)
163
+ {
164
+ if (receivers.length != amountPYToRedeems.length) revert Errors.ArrayLengthMismatch();
165
+ if (receivers.length == 0) revert Errors.ArrayEmpty();
166
+ amountSyOuts = _redeemPY(receivers, amountPYToRedeems);
167
+ }
168
+
169
+ /**
170
+ * @notice Redeems interests and rewards for `user`
171
+ * @param redeemInterest will only transfer out interest for user if true
172
+ * @param redeemRewards will only transfer out rewards for user if true
173
+ * @dev With YT yielding interest in the form of SY, which is redeemable by users, the reward
174
+ * distribution should be based on the amount of SYs that their YT currently represent, plus
175
+ * their dueInterest. It has been proven and tested that _rewardSharesUser will not change over
176
+ * time, unless users redeem their dueInterest or redeemPY. Due to this, it is required to
177
+ * update users' accruedReward STRICTLY BEFORE transferring out their interest.
178
+ */
179
+ function redeemDueInterestAndRewards(
180
+ address user,
181
+ bool redeemInterest,
182
+ bool redeemRewards
183
+ ) external nonReentrant updateData returns (uint256 interestOut, uint256[] memory rewardsOut) {
184
+ if (!redeemInterest && !redeemRewards) revert Errors.YCNothingToRedeem();
185
+
186
+ // if redeemRewards == true, this line must be here for obvious reason
187
+ // if redeemInterest == true, this line must be here because of the reason above
188
+ _updateAndDistributeRewards(user);
189
+
190
+ if (redeemRewards) {
191
+ rewardsOut = _doTransferOutRewards(user, user);
192
+ emit RedeemRewards(user, rewardsOut);
193
+ } else {
194
+ address[] memory tokens = getRewardTokens();
195
+ rewardsOut = new uint256[](tokens.length);
196
+ }
197
+
198
+ if (redeemInterest) {
199
+ _updateAndDistributeInterest(user);
200
+ interestOut = _doTransferOutInterest(user, SY);
201
+ emit RedeemInterest(user, interestOut);
202
+ } else {
203
+ interestOut = 0;
204
+ }
205
+ }
206
+
207
+ /**
208
+ * @dev All rewards and interests accrued post-expiry goes to the treasury.
209
+ * Reverts if called pre-expiry.
210
+ */
211
+ function redeemInterestAndRewardsPostExpiryForTreasury() external nonReentrant updateData {
212
+ if (!isExpired()) revert Errors.YCNotExpired();
213
+
214
+ _collectInterest();
215
+ _redeemExternalReward();
216
+ }
217
+
218
+ /// @notice updates and returns the reward indexes
219
+ function rewardIndexesCurrent() external override nonReentrant returns (uint256[] memory) {
220
+ return IStandardizedYield(SY).rewardIndexesCurrent();
221
+ }
222
+
223
+ /**
224
+ * @notice updates and returns the current PY index
225
+ * @dev this function maximizes the current PY index with the previous index, guaranteeing
226
+ * non-decreasing PY index
227
+ * @dev if `doCacheIndexSameBlock` is true, PY index only updates at most once per block,
228
+ * and has no state changes on the second call onwards (within the same block).
229
+ * @dev see `pyIndexStored()` for view function for cached value.
230
+ */
231
+ function pyIndexCurrent() public nonReentrant returns (uint256 currentIndex) {
232
+ currentIndex = _pyIndexCurrent();
233
+ }
234
+
235
+ /// @notice returns the last-updated PY index
236
+ function pyIndexStored() public view returns (uint256) {
237
+ return _pyIndexStored;
238
+ }
239
+
240
+ /**
241
+ * @notice do a final rewards redeeming, and sets post-expiry data
242
+ * @dev has no effect if called pre-expiry
243
+ */
244
+ function setPostExpiryData() external nonReentrant {
245
+ if (isExpired()) {
246
+ _setPostExpiryData();
247
+ }
248
+ }
249
+
250
+ /**
251
+ * @notice returns the current data post-expiry, if exists
252
+ * @dev reverts if post-expiry data not set (see `setPostExpiryData()`)
253
+ * @return firstPYIndex the earliest PY index post-expiry
254
+ */
255
+ function getPostExpiryData() external view returns (uint256 firstPYIndex) {
256
+ if (postExpiry.firstPYIndex == 0) revert Errors.YCPostExpiryDataNotSet();
257
+ firstPYIndex = postExpiry.firstPYIndex;
258
+ }
259
+
260
+ function _mintPY(
261
+ address[] memory receiverPTs,
262
+ address[] memory receiverYTs,
263
+ uint256[] memory amountSyToMints
264
+ ) internal returns (uint256[] memory amountPYOuts) {
265
+ amountPYOuts = new uint256[](amountSyToMints.length);
266
+
267
+ uint256 index = _pyIndexCurrent();
268
+
269
+ for (uint256 i = 0; i < amountSyToMints.length; i++) {
270
+ amountPYOuts[i] = _calcPYToMint(amountSyToMints[i], index);
271
+
272
+ _mint(receiverYTs[i], amountPYOuts[i]);
273
+ IPPrincipalToken(PT).mintByYT(receiverPTs[i], amountPYOuts[i]);
274
+
275
+ emit Mint(
276
+ msg.sender,
277
+ receiverPTs[i],
278
+ receiverYTs[i],
279
+ amountSyToMints[i],
280
+ amountPYOuts[i]
281
+ );
282
+ }
283
+ }
284
+
285
+ function isExpired() public view returns (bool) {
286
+ return MiniHelpers.isCurrentlyExpired(expiry);
287
+ }
288
+
289
+ function isDistributingInterestAndRewards() public view returns (bool) {
290
+ return postExpiry.firstPYIndex == 0;
291
+ }
292
+
293
+ function _redeemPY(address[] memory receivers, uint256[] memory amountPYToRedeems)
294
+ internal
295
+ returns (uint256[] memory amountSyOuts)
296
+ {
297
+ uint256 totalAmountPYToRedeem = amountPYToRedeems.sum();
298
+ IPPrincipalToken(PT).burnByYT(address(this), totalAmountPYToRedeem);
299
+ if (!isExpired()) _burn(address(this), totalAmountPYToRedeem);
300
+
301
+ uint256 index = _pyIndexCurrent();
302
+ uint256 totalSyInterestPostExpiry;
303
+ amountSyOuts = new uint256[](receivers.length);
304
+
305
+ for (uint256 i = 0; i < receivers.length; i++) {
306
+ uint256 syInterestPostExpiry;
307
+ (amountSyOuts[i], syInterestPostExpiry) = _calcSyRedeemableFromPY(
308
+ amountPYToRedeems[i],
309
+ index
310
+ );
311
+ _transferOut(SY, receivers[i], amountSyOuts[i]);
312
+ totalSyInterestPostExpiry += syInterestPostExpiry;
313
+
314
+ emit Burn(msg.sender, receivers[i], amountPYToRedeems[i], amountSyOuts[i]);
315
+ }
316
+
317
+ address treasury = IPYieldContractFactory(factory).treasury();
318
+ _transferOut(SY, treasury, totalSyInterestPostExpiry);
319
+ }
320
+
321
+ function _calcPYToMint(uint256 amountSy, uint256 indexCurrent)
322
+ internal
323
+ pure
324
+ returns (uint256 amountPY)
325
+ {
326
+ // doesn't matter before or after expiry, since mintPY is only allowed before expiry
327
+ return SYUtils.syToAsset(indexCurrent, amountSy);
328
+ }
329
+
330
+ function _calcSyRedeemableFromPY(uint256 amountPY, uint256 indexCurrent)
331
+ internal
332
+ view
333
+ returns (uint256 syToUser, uint256 syInterestPostExpiry)
334
+ {
335
+ syToUser = SYUtils.assetToSy(indexCurrent, amountPY);
336
+ if (isExpired()) {
337
+ uint256 totalSyRedeemable = SYUtils.assetToSy(postExpiry.firstPYIndex, amountPY);
338
+ syInterestPostExpiry = totalSyRedeemable - syToUser;
339
+ }
340
+ }
341
+
342
+ function _getAmountPYToRedeem() internal view returns (uint256) {
343
+ if (!isExpired()) return Math.min(_selfBalance(PT), balanceOf(address(this)));
344
+ else return _selfBalance(PT);
345
+ }
346
+
347
+ function _updateSyReserve() internal virtual {
348
+ syReserve = _selfBalance(SY);
349
+ }
350
+
351
+ function _getFloatingSyAmount() internal view returns (uint256 amount) {
352
+ amount = _selfBalance(SY) - syReserve;
353
+ if (amount == 0) revert Errors.YCNoFloatingSy();
354
+ }
355
+
356
+ function _setPostExpiryData() internal {
357
+ PostExpiryData storage local = postExpiry;
358
+ if (local.firstPYIndex != 0) return; // already set
359
+
360
+ _updateInterestIndex();
361
+ _updateRewardIndex();
362
+
363
+ // by setting this, we have finished setting postExpiry data, all income will go to treasury
364
+ local.firstPYIndex = _pyIndexCurrent().Uint128();
365
+ }
366
+
367
+ /*///////////////////////////////////////////////////////////////
368
+ INTEREST-RELATED
369
+ //////////////////////////////////////////////////////////////*/
370
+
371
+ function _pyIndexCurrent() internal returns (uint256 currentIndex) {
372
+ if (doCacheIndexSameBlock && pyIndexLastUpdatedBlock == block.number)
373
+ return _pyIndexStored;
374
+
375
+ uint128 index128 = Math
376
+ .max(IStandardizedYield(SY).exchangeRate(), _pyIndexStored)
377
+ .Uint128();
378
+
379
+ currentIndex = index128;
380
+ _pyIndexStored = index128;
381
+ pyIndexLastUpdatedBlock = uint128(block.number);
382
+ }
383
+
384
+ function _collectInterest()
385
+ internal
386
+ override
387
+ returns (uint256 accuredAmount, uint256 currentIndex)
388
+ {
389
+ uint256 prevIndex = _lastCollectedInterestIndex;
390
+ currentIndex = _pyIndexCurrent();
391
+
392
+ if (prevIndex != 0 && prevIndex != currentIndex) {
393
+ // guaranteed feeAmount != 0
394
+ address treasury = IPYieldContractFactory(factory).treasury();
395
+ uint256 interestFeeRate = isDistributingInterestAndRewards()
396
+ ? IPYieldContractFactory(factory).interestFeeRate()
397
+ : Math.ONE;
398
+
399
+ uint256 totalInterest = _calcInterest(totalSupply(), prevIndex, currentIndex);
400
+ uint256 feeAmount = totalInterest.mulDown(interestFeeRate);
401
+ accuredAmount = totalInterest - feeAmount;
402
+
403
+ _transferOut(SY, treasury, feeAmount);
404
+ _updateSyReserve();
405
+ emit CollectInterestFee(feeAmount);
406
+ }
407
+
408
+ _lastCollectedInterestIndex = currentIndex;
409
+ }
410
+
411
+ function _calcInterest(
412
+ uint256 principal,
413
+ uint256 prevIndex,
414
+ uint256 currentIndex
415
+ ) internal pure returns (uint256) {
416
+ return (principal * (currentIndex - prevIndex)).divDown(prevIndex * currentIndex);
417
+ }
418
+
419
+ function _YTbalance(address user) internal view override returns (uint256) {
420
+ return balanceOf(user);
421
+ }
422
+
423
+ function _YTSupply() internal view override returns (uint256) {
424
+ return totalSupply();
425
+ }
426
+
427
+ function _getGlobalPYIndex() internal view virtual override returns (uint256) {
428
+ return _pyIndexStored;
429
+ }
430
+
431
+ /*///////////////////////////////////////////////////////////////
432
+ REWARDS-RELATED
433
+ //////////////////////////////////////////////////////////////*/
434
+
435
+ function getRewardTokens() public view returns (address[] memory) {
436
+ return IStandardizedYield(SY).getRewardTokens();
437
+ }
438
+
439
+ function _redeemExternalReward() internal virtual override {
440
+ IStandardizedYield(SY).claimRewards(address(this));
441
+
442
+ address treasury = IPYieldContractFactory(factory).treasury();
443
+ uint256 rewardFeeRate = isDistributingInterestAndRewards()
444
+ ? IPYieldContractFactory(factory).rewardFeeRate()
445
+ : Math.ONE;
446
+
447
+ address[] memory rewardTokens = getRewardTokens();
448
+
449
+ for (uint256 i = 0; i < rewardTokens.length; ++i) {
450
+ address token = rewardTokens[i];
451
+ uint256 accruedReward = _selfBalance(token) - rewardState[token].lastBalance;
452
+
453
+ uint256 amountRewardFee = accruedReward.mulDown(rewardFeeRate);
454
+
455
+ _transferOut(token, treasury, amountRewardFee);
456
+ emit CollectRewardFee(token, amountRewardFee);
457
+ }
458
+ }
459
+
460
+ /// @dev effectively returning the amount of SY generating rewards for this user
461
+ function _rewardSharesUser(address user) internal view virtual override returns (uint256) {
462
+ uint256 index = userInterest[user].pyIndex;
463
+ if (index == 0) return 0;
464
+ return SYUtils.assetToSy(index, balanceOf(user)) + userInterest[user].accrued;
465
+ }
466
+
467
+ function _rewardSharesTotal() internal view virtual override returns (uint256) {
468
+ return syReserve;
469
+ }
470
+
471
+ function _getRewardTokens() internal view virtual override returns (address[] memory) {
472
+ return IStandardizedYield(SY).getRewardTokens();
473
+ }
474
+
475
+ //solhint-disable-next-line ordering
476
+ function _beforeTokenTransfer(
477
+ address from,
478
+ address to,
479
+ uint256
480
+ ) internal override {
481
+ if (isExpired()) _setPostExpiryData();
482
+ _updateAndDistributeRewardsForTwo(from, to);
483
+ _updateAndDistributeInterestForTwo(from, to);
484
+ }
485
+ }
@@ -13,6 +13,18 @@ library ArrayLib {
13
13
  return value;
14
14
  }
15
15
 
16
+ /// @notice return index of the element if found, else return uint256.max
17
+ function find(address[] memory array, address element) internal pure returns (uint256 index) {
18
+ uint256 length = array.length;
19
+ for (uint256 i = 0; i < length; ) {
20
+ if (array[i] == element) return i;
21
+ unchecked {
22
+ i++;
23
+ }
24
+ }
25
+ return type(uint256).max;
26
+ }
27
+
16
28
  function contains(address[] memory array, address element) internal pure returns (bool) {
17
29
  uint256 length = array.length;
18
30
  for (uint256 i = 0; i < length; ) {
@@ -75,6 +75,7 @@ library Errors {
75
75
  error RouterTimeRangeZero();
76
76
  error RouterCallbackNotPendleMarket(address caller);
77
77
  error RouterInvalidAction(bytes4 selector);
78
+ error RouterInvalidFacet(address facet);
78
79
 
79
80
  error RouterKyberSwapDataZero();
80
81
 
@@ -111,6 +112,10 @@ library Errors {
111
112
  error SYCurveInvalidPid();
112
113
  error SYCurve3crvPoolNotFound();
113
114
 
115
+ error SYApeDepositAmountTooSmall(uint256 amountDeposited);
116
+ error SYBalancerInvalidPid();
117
+ error SYInvalidRewardToken(address token);
118
+
114
119
  // Liquidity Mining
115
120
  error VCInactivePool(address pool);
116
121
  error VCPoolAlreadyActive(address pool);
@@ -136,8 +141,16 @@ library Errors {
136
141
  error ExpiryInThePast(uint256 expiry);
137
142
  error ChainNotSupported(uint256 chainId);
138
143
 
139
- error FDCantFundFutureEpoch();
140
- error FDFactoryDistributorAlreadyExisted(address pool, address distributor);
144
+ error FDTotalAmountFundedNotMatch(uint256 actualTotalAmount, uint256 expectedTotalAmount);
145
+ error FDEpochLengthMismatch();
146
+ error FDInvalidPool(address pool);
147
+ error FDPoolAlreadyExists(address pool);
148
+ error FDInvalidNewFinishedEpoch(uint256 oldFinishedEpoch, uint256 newFinishedEpoch);
149
+ error FDInvalidStartEpoch(uint256 startEpoch);
150
+ error FDInvalidWTimeFund(uint256 lastFunded, uint256 wTime);
151
+ error FDFutureFunding(uint256 lastFunded, uint256 currentWTime);
152
+
153
+ error BDInvalidEpoch(uint256 epoch, uint256 startTime);
141
154
 
142
155
  // Cross-Chain
143
156
  error MsgNotFromSendEndpoint(uint16 srcChainId, bytes path);
@@ -151,9 +164,14 @@ library Errors {
151
164
  error ArrayEmpty();
152
165
  error ArrayOutOfBounds();
153
166
  error ZeroAddress();
167
+ error FailedToSendEther();
154
168
 
155
169
  error OnlyLayerZeroEndpoint();
156
170
  error OnlyYT();
157
171
  error OnlyYCFactory();
158
172
  error OnlyWhitelisted();
173
+
174
+ // Swap Aggregator
175
+ error SAInsufficientTokenIn(address tokenIn, uint256 amountExpected, uint256 amountActual);
176
+ error UnsupportedSelector(uint256 aggregatorType, bytes4 selector);
159
177
  }
@@ -2,6 +2,7 @@
2
2
  pragma solidity 0.8.17;
3
3
  import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
4
4
  import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
5
+ import "../../interfaces/IWETH.sol";
5
6
 
6
7
  abstract contract TokenHelper {
7
8
  using SafeERC20 for IERC20;
@@ -83,4 +84,13 @@ abstract contract TokenHelper {
83
84
  _safeApprove(token, to, type(uint256).max);
84
85
  }
85
86
  }
87
+
88
+ function _wrap_unwrap_ETH(
89
+ address tokenIn,
90
+ address tokenOut,
91
+ uint256 netTokenIn
92
+ ) internal {
93
+ if (tokenIn == NATIVE) IWETH(tokenOut).deposit{ value: netTokenIn }();
94
+ else IWETH(tokenIn).withdraw(netTokenIn);
95
+ }
86
96
  }
@@ -0,0 +1,4 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ interface IAsset {}
@@ -0,0 +1,6 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ interface IBalancerFees {
5
+ function getSwapFeePercentage() external view returns (uint256);
6
+ }
@@ -0,0 +1,22 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ import "./IVault.sol";
5
+
6
+ interface IBalancerStablePreview {
7
+ function joinPoolPreview(
8
+ bytes32 poolId,
9
+ address sender,
10
+ address recipient,
11
+ IVault.JoinPoolRequest memory request,
12
+ bytes memory data
13
+ ) external view returns (uint256 amountBptOut);
14
+
15
+ function exitPoolPreview(
16
+ bytes32 poolId,
17
+ address sender,
18
+ address recipient,
19
+ IVault.ExitPoolRequest memory request,
20
+ bytes memory data
21
+ ) external view returns (uint256 amountTokenOut);
22
+ }
@@ -0,0 +1,30 @@
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
+
6
+ interface IBasePool is IERC20 {
7
+ function onJoinPool(
8
+ bytes32 poolId,
9
+ address sender,
10
+ address recipient,
11
+ uint256[] memory balances,
12
+ uint256 lastChangeBlock,
13
+ uint256 protocolSwapFeePercentage,
14
+ bytes memory userData
15
+ ) external returns (uint256[] memory amountsIn, uint256[] memory dueProtocolFeeAmounts);
16
+
17
+ function onExitPool(
18
+ bytes32 poolId,
19
+ address sender,
20
+ address recipient,
21
+ uint256[] memory balances,
22
+ uint256 lastChangeBlock,
23
+ uint256 protocolSwapFeePercentage,
24
+ bytes memory userData
25
+ ) external returns (uint256[] memory amountsOut, uint256[] memory dueProtocolFeeAmounts);
26
+
27
+ function getPoolId() external view returns (bytes32);
28
+
29
+ function getSwapFeePercentage() external view returns (uint256);
30
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ import "./IBasePool.sol";
5
+ import "./IRateProvider.sol";
6
+
7
+ interface IComposableStable is IBasePool {
8
+ function getLastJoinExitData()
9
+ external
10
+ view
11
+ returns (uint256 lastJoinExitAmplification, uint256 lastPostJoinExitInvariant);
12
+
13
+ function getAmplificationParameter()
14
+ external
15
+ view
16
+ returns (
17
+ uint256 value,
18
+ bool isUpdating,
19
+ uint256 precision
20
+ );
21
+
22
+ function getProtocolFeePercentageCache(uint256 feeType) external view returns (uint256);
23
+
24
+ function isTokenExemptFromYieldProtocolFee(IERC20 token) external view returns (bool);
25
+
26
+ function getTokenRateCache(IERC20 token)
27
+ external
28
+ view
29
+ returns (
30
+ uint256 rate,
31
+ uint256 oldRate,
32
+ uint256 duration,
33
+ uint256 expires
34
+ );
35
+
36
+ function getRateProviders() external view returns (IRateProvider[] memory);
37
+
38
+ function getBptIndex() external view returns (uint256);
39
+ }