@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.
- package/README.md +28 -0
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +4 -0
- package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +592 -0
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
- package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
- package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
- package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
- package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.json +10 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +1075 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.json +1257 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.json +1244 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.json +1218 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.json +1192 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.json +10 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.json +133 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.json +10 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.json +40 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.json +322 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol/PendleAuraBalancerStableLPSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol/PendleAuraBalancerStableLPSY.json +1171 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.json +10 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.json +133 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GMX/GMXPreviewHelper.sol/GMXPreviewHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GMX/GMXPreviewHelper.sol/GMXPreviewHelper.json +50 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GMX/PendleGlpSY.sol/PendleGlpSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GMX/PendleGlpSY.sol/PendleGlpSY.json +1163 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
- package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +4 -0
- package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.json +66 -0
- package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +4 -0
- package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.json +476 -0
- package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +4 -0
- package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.json +590 -0
- package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +4 -0
- package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.json +1017 -0
- package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
- package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.json +2 -2
- package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +182 -5
- package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.json +10 -0
- package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.json +24 -0
- package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.json +133 -0
- package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.json +328 -0
- package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.json +467 -0
- package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/{IPFeeDistributorFactory.sol/IPFeeDistributorFactory.json → Balancer/IGauge.sol/IGauge.json} +18 -33
- package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.json +30 -0
- package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.json +398 -0
- package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +4 -0
- package/build/artifacts/contracts/{router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.json → interfaces/Balancer/IRateProvider.sol/IRateProvider.json} +5 -5
- package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.json +278 -0
- package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.json +18 -0
- package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.json +308 -0
- package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.json +43 -0
- package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.json +165 -0
- package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.json +45 -0
- package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +4 -0
- package/build/artifacts/contracts/{LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.json → interfaces/IApeStaking.sol/IApeStaking.json} +70 -52
- package/build/artifacts/contracts/interfaces/IBoringOwnableUpgradeable.sol/IBoringOwnableUpgradeable.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.json +93 -0
- package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.json +87 -0
- package/build/artifacts/contracts/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +338 -16
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +105 -224
- package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.json +56 -12
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +52 -8
- package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +231 -8
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +675 -241
- package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.json +43 -32
- package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.json +40 -0
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.json +679 -0
- package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +42 -28
- package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +4 -0
- package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.json +322 -0
- package/build/artifacts/contracts/offchain-helpers/PendleMulticall.sol/PendleMulticall.dbg.json +4 -0
- package/build/artifacts/contracts/offchain-helpers/PendleMulticall.sol/PendleMulticall.json +47 -0
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +257 -100
- package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +345 -62
- package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +107 -260
- package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +57 -18
- package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +54 -65
- package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +338 -45
- package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
- package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +76 -67
- package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +4 -0
- package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.json +141 -0
- package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.json +1 -15
- package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
- package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.json +160 -0
- package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.json +10 -0
- package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.json +56 -0
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwapAggregator.sol/PendleSwapAggregator.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwapAggregator.sol/PendleSwapAggregator.json +97 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.json +10 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.json +10 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.json +65 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.json +388 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.json +101 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.json +215 -0
- package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +7 -9
- package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol +224 -0
- package/contracts/core/BulkSeller/BulkSeller.sol +1 -1
- package/contracts/core/StandardizedYield/SYBaseWithRewards.sol +1 -3
- package/contracts/core/StandardizedYield/StEthHelper.sol +71 -0
- package/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol +197 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol +170 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol +162 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol +134 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol +154 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol +289 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol +618 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol +68 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol +322 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol +390 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol +329 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol +30 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol +189 -0
- package/contracts/core/StandardizedYield/implementations/GMX/GMXPreviewHelper.sol +142 -0
- package/contracts/core/StandardizedYield/implementations/GMX/PendleGlpSY.sol +244 -0
- package/contracts/core/StandardizedYield/implementations/GMX/README.md +61 -0
- package/contracts/core/YieldContractsV2/InterestManagerYTV2.sol +114 -0
- package/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol +63 -0
- package/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol +200 -0
- package/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol +485 -0
- package/contracts/core/libraries/ArrayLib.sol +12 -0
- package/contracts/core/libraries/Errors.sol +20 -2
- package/contracts/core/libraries/TokenHelper.sol +10 -0
- package/contracts/interfaces/Balancer/IAsset.sol +4 -0
- package/contracts/interfaces/Balancer/IBalancerFees.sol +6 -0
- package/contracts/interfaces/Balancer/IBalancerStablePreview.sol +22 -0
- package/contracts/interfaces/Balancer/IBasePool.sol +30 -0
- package/contracts/interfaces/Balancer/IComposableStable.sol +39 -0
- package/contracts/interfaces/Balancer/IGauge.sol +10 -0
- package/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol +6 -0
- package/contracts/interfaces/Balancer/IMetaStablePool.sol +31 -0
- package/contracts/interfaces/Balancer/IRateProvider.sol +6 -0
- package/contracts/interfaces/Balancer/IVault.sol +78 -0
- package/contracts/interfaces/ConvexCurve/IRewards.sol +5 -0
- package/contracts/interfaces/GMX/IGMXVault.sol +47 -0
- package/contracts/interfaces/GMX/IGlpManager.sol +8 -0
- package/contracts/interfaces/GMX/IRewardRouterV2.sol +35 -0
- package/contracts/interfaces/GMX/IVaultPriceFeed.sol +11 -0
- package/contracts/interfaces/IApeStaking.sol +30 -0
- package/contracts/interfaces/IDiamondCut.sol +36 -0
- package/contracts/interfaces/IDiamondLoupe.sol +38 -0
- package/contracts/interfaces/IPActionAddRemoveLiq.sol +36 -1
- package/contracts/interfaces/IPActionMintRedeem.sol +2 -55
- package/contracts/interfaces/IPActionMisc.sol +20 -3
- package/contracts/interfaces/IPActionSwapPT.sol +1 -1
- package/contracts/interfaces/IPActionSwapYT.sol +28 -4
- package/contracts/interfaces/IPAllAction.sol +5 -3
- package/contracts/interfaces/IPFeeDistributor.sol +12 -10
- package/contracts/interfaces/IPInterestManagerYTV2.sol +13 -0
- package/contracts/interfaces/IPYieldTokenV2.sol +66 -0
- package/contracts/offchain-helpers/MarketMathStatic.sol +196 -88
- package/contracts/offchain-helpers/Multicall2.sol +103 -0
- package/contracts/offchain-helpers/PendleMulticall.sol +26 -0
- package/contracts/offchain-helpers/RouterStatic.sol +94 -72
- package/contracts/router/ActionAddRemoveLiq.sol +116 -6
- package/contracts/router/ActionMintRedeem.sol +12 -202
- package/contracts/router/ActionMisc.sol +45 -19
- package/contracts/router/ActionSwapPT.sol +0 -5
- package/contracts/router/ActionSwapYT.sol +98 -13
- package/contracts/router/PendleRouter.sol +211 -72
- package/contracts/router/{ActionCallback.sol → base/ActionBaseCallback.sol} +47 -47
- package/contracts/router/base/ActionBaseMintRedeem.sol +105 -60
- package/contracts/router/base/CallbackHelper.sol +137 -44
- package/contracts/router/base/MarketApproxLib.sol +227 -350
- package/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol +45 -0
- package/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol +69 -0
- package/contracts/router/swap-aggregator/IPSwapAggregator.sol +30 -0
- package/contracts/router/swap-aggregator/PendleSwapAggregator.sol +63 -0
- package/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol +214 -0
- package/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol +147 -0
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol +17 -0
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol +191 -0
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol +30 -0
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol +42 -0
- package/deployments/43113-core.json +30 -0
- package/deployments/43113-markets/APE-30-MARCH.json +10 -0
- package/deployments/43113-markets/USDC-FEB-2ND.json +10 -0
- package/deployments/43113-markets/USDC-FEB-4TH.json +10 -0
- package/deployments/43113-markets/WETH-FEB-2ND.json +11 -0
- package/deployments/43113-markets/WETH-FEB-4TH.json +11 -0
- package/deployments/43113-offchain-helper.json +4 -0
- package/deployments/43113-testenv.json +22 -0
- package/deployments/80001-core.json +29 -0
- package/deployments/80001-markets/GLP-DEC-8TH.json +10 -0
- package/deployments/80001-markets/USDC-DEC-8TH.json +10 -0
- package/deployments/80001-markets/USDC-FEB-4TH.json +10 -0
- package/deployments/80001-markets/WETH-FEB-4TH.json +11 -0
- package/deployments/80001-offchain-helper.json +4 -0
- package/deployments/80001-testenv.json +22 -0
- package/package.json +6 -6
- package/typechain-types/ActionAddRemoveLiq.ts +203 -23
- package/typechain-types/ActionBaseCallback.ts +115 -0
- package/typechain-types/ActionMintRedeem.ts +29 -230
- package/typechain-types/ActionMisc.ts +78 -27
- package/typechain-types/ActionSwapPT.ts +26 -31
- package/typechain-types/ActionSwapYT.ts +202 -21
- package/typechain-types/BribeDistributor.ts +363 -0
- package/typechain-types/ComposableStablePreview.ts +217 -0
- package/typechain-types/DistributorBase.ts +363 -0
- package/typechain-types/FeeDistributor.ts +416 -0
- package/typechain-types/GMXPreviewHelper.ts +121 -0
- package/typechain-types/I1inchAggregationRouterV5.ts +257 -0
- package/typechain-types/IAggregationExecutor.ts +182 -0
- package/typechain-types/IApeStaking.ts +305 -0
- package/typechain-types/IBalancerFees.ts +89 -0
- package/typechain-types/IBalancerStablePreview.ts +217 -0
- package/typechain-types/IBasePool.ts +482 -0
- package/typechain-types/IComposableStable.ts +730 -0
- package/typechain-types/IDiamondCut.ts +152 -0
- package/typechain-types/IDiamondLoupe.ts +190 -0
- package/typechain-types/IExecutorHelperEthereum1.ts +643 -0
- package/typechain-types/IGMXVault.ts +494 -0
- package/typechain-types/IGauge.ts +160 -0
- package/typechain-types/IGlpManager.ts +115 -0
- package/typechain-types/IHashflow.ts +159 -0
- package/typechain-types/IKyberSwapAggregationRouterHelper.ts +109 -0
- package/typechain-types/ILiquidityGaugeFactory.ts +99 -0
- package/typechain-types/IMetaAggregationRouter.ts +213 -0
- package/typechain-types/IMetaAggregationRouterV2.ts +221 -0
- package/typechain-types/IMetaStablePool.ts +619 -0
- package/typechain-types/IMultihopRouterEthereum.ts +209 -0
- package/typechain-types/IPActionAddRemoveLiq.ts +213 -14
- package/typechain-types/IPActionMintRedeem.ts +29 -211
- package/typechain-types/IPActionMisc.ts +78 -27
- package/typechain-types/IPActionSwapPT.ts +26 -12
- package/typechain-types/IPActionSwapYT.ts +168 -12
- package/typechain-types/IPAllAction.ts +445 -227
- package/typechain-types/IPFeeDistributor.ts +61 -78
- package/typechain-types/IPFeeDistributorFactory.ts +53 -139
- package/typechain-types/IPInterestManagerYTV2.ts +117 -0
- package/typechain-types/IPSwapAggregator.ts +126 -0
- package/typechain-types/IPYieldTokenV2.ts +901 -0
- package/typechain-types/IRateProvider.ts +81 -0
- package/typechain-types/IRewardRouterV2.ts +303 -0
- package/typechain-types/IRewards.ts +35 -5
- package/typechain-types/ISwapAggregator.ts +124 -0
- package/typechain-types/IVault.ts +410 -0
- package/typechain-types/IVaultPriceFeed.ts +114 -0
- package/typechain-types/InterestManagerYTV2.ts +157 -0
- package/typechain-types/MarketMathStatic.ts +49 -0
- package/typechain-types/MetaStableMath.ts +113 -0
- package/typechain-types/MetaStablePreview.ts +501 -0
- package/typechain-types/Multicall2.ts +437 -0
- package/typechain-types/PendleApeStakingSY.ts +1135 -0
- package/typechain-types/PendleAura3EthSY.ts +1600 -0
- package/typechain-types/PendleAuraBalancerStableLPSY.ts +1523 -0
- package/typechain-types/PendleAuraCbethWstethSY.ts +1587 -0
- package/typechain-types/PendleAuraWethRethSY.ts +1549 -0
- package/typechain-types/PendleAuraWethWstethSY.ts +1523 -0
- package/typechain-types/PendleFeeDistributor.ts +409 -117
- package/typechain-types/PendleGlpSY.ts +1463 -0
- package/typechain-types/PendleMulticall.ts +110 -0
- package/typechain-types/PendlePrincipalTokenV2.ts +614 -0
- package/typechain-types/PendleRouter.ts +109 -131
- package/typechain-types/PendleSwapAggregator.ts +167 -0
- package/typechain-types/PendleYieldContractFactoryV2.ts +801 -0
- package/typechain-types/PendleYieldTokenV2.ts +1298 -0
- package/typechain-types/RouterStatic.ts +132 -69
- package/typechain-types/SAPE.ts +1395 -0
- package/typechain-types/SYBaseAutoCompound.ts +1203 -0
- package/typechain-types/StEthHelper.ts +107 -0
- package/typechain-types/StablePreviewBase.ts +217 -0
- package/typechain-types/SwapAggregator.ts +406 -0
- package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +346 -68
- package/typechain-types/factories/ActionBaseCallback__factory.ts +156 -0
- package/typechain-types/factories/ActionCallback__factory.ts +1 -1
- package/typechain-types/factories/ActionMintRedeem__factory.ts +108 -266
- package/typechain-types/factories/ActionMisc__factory.ts +56 -17
- package/typechain-types/factories/ActionSwapPTYT__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapPT__factory.ts +55 -71
- package/typechain-types/factories/ActionSwapYT__factory.ts +341 -48
- package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
- package/typechain-types/factories/BribeDistributor__factory.ts +303 -0
- package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
- package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
- package/typechain-types/factories/BulkSeller__factory.ts +1 -1
- package/typechain-types/factories/ComposableStablePreview__factory.ts +190 -0
- package/typechain-types/factories/DistributorBase__factory.ts +249 -0
- package/typechain-types/factories/Errors__factory.ts +181 -4
- package/typechain-types/factories/FeeDistributor__factory.ts +339 -0
- package/typechain-types/factories/GMXPreviewHelper__factory.ts +65 -0
- package/typechain-types/factories/I1inchAggregationRouterV5__factory.ts +179 -0
- package/typechain-types/factories/IAggregationExecutor__factory.ts +84 -0
- package/typechain-types/factories/IApeStaking__factory.ts +161 -0
- package/typechain-types/factories/IBalancerFees__factory.ts +36 -0
- package/typechain-types/factories/IBalancerStablePreview__factory.ts +152 -0
- package/typechain-types/factories/IBasePool__factory.ts +340 -0
- package/typechain-types/factories/IComposableStable__factory.ts +482 -0
- package/typechain-types/factories/IDiamondCut__factory.ts +105 -0
- package/typechain-types/factories/IDiamondLoupe__factory.ts +99 -0
- package/typechain-types/factories/IExecutorHelperEthereum1__factory.ts +407 -0
- package/typechain-types/factories/IGMXVault__factory.ts +320 -0
- package/typechain-types/factories/IGauge__factory.ts +70 -0
- package/typechain-types/factories/IGlpManager__factory.ts +55 -0
- package/typechain-types/factories/IHashflow__factory.ts +113 -0
- package/typechain-types/factories/IKyberSwapAggregationRouterHelper__factory.ts +56 -0
- package/typechain-types/factories/ILiquidityGaugeFactory__factory.ts +49 -0
- package/typechain-types/factories/IMetaAggregationRouterV2__factory.ts +234 -0
- package/typechain-types/factories/IMetaAggregationRouter__factory.ts +202 -0
- package/typechain-types/factories/IMetaStablePool__factory.ts +413 -0
- package/typechain-types/factories/IMultihopRouterEthereum__factory.ts +155 -0
- package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +338 -16
- package/typechain-types/factories/IPActionMintRedeem__factory.ts +105 -224
- package/typechain-types/factories/IPActionMisc__factory.ts +55 -11
- package/typechain-types/factories/IPActionSwapPT__factory.ts +52 -8
- package/typechain-types/factories/IPActionSwapYT__factory.ts +231 -8
- package/typechain-types/factories/IPAllAction__factory.ts +675 -241
- package/typechain-types/factories/IPFeeDistributorFactory__factory.ts +25 -34
- package/typechain-types/factories/IPFeeDistributor__factory.ts +42 -31
- package/typechain-types/factories/IPInterestManagerYTV2__factory.ts +59 -0
- package/typechain-types/factories/IPSwapAggregator__factory.ts +71 -0
- package/typechain-types/factories/IPYieldTokenV2__factory.ts +694 -0
- package/typechain-types/factories/IRateProvider__factory.ts +36 -0
- package/typechain-types/factories/IRewardRouterV2__factory.ts +180 -0
- package/typechain-types/factories/IRewards__factory.ts +18 -0
- package/typechain-types/factories/ISwapAggregator__factory.ts +66 -0
- package/typechain-types/factories/IVaultPriceFeed__factory.ts +60 -0
- package/typechain-types/factories/IVault__factory.ts +287 -0
- package/typechain-types/factories/InterestManagerYTV2__factory.ts +81 -0
- package/typechain-types/factories/MarketMathStatic__factory.ts +41 -27
- package/typechain-types/factories/MetaStableMath__factory.ts +93 -0
- package/typechain-types/factories/MetaStablePreview__factory.ts +375 -0
- package/typechain-types/factories/Multicall2__factory.ts +372 -0
- package/typechain-types/factories/OracleLib__factory.ts +1 -1
- package/typechain-types/factories/PendleApeStakingSY__factory.ts +981 -0
- package/typechain-types/factories/PendleAura3EthSY__factory.ts +1326 -0
- package/typechain-types/factories/PendleAuraBalancerStableLPSY__factory.ts +1190 -0
- package/typechain-types/factories/PendleAuraCbethWstethSY__factory.ts +1317 -0
- package/typechain-types/factories/PendleAuraWethRethSY__factory.ts +1291 -0
- package/typechain-types/factories/PendleAuraWethWstethSY__factory.ts +1265 -0
- package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
- package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
- package/typechain-types/factories/PendleFeeDistributorFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleFeeDistributor__factory.ts +341 -66
- package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleGlpSY__factory.ts +1249 -0
- package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
- package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleMarket__factory.ts +1 -1
- package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleMulticall__factory.ts +100 -0
- package/typechain-types/factories/PendlePrincipalTokenV2__factory.ts +564 -0
- package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
- package/typechain-types/factories/PendleRouter__factory.ts +75 -74
- package/typechain-types/factories/PendleSwapAggregator__factory.ts +154 -0
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +674 -0
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1109 -0
- package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
- package/typechain-types/factories/RouterStatic__factory.ts +186 -41
- package/typechain-types/factories/SAPE__factory.ts +1142 -0
- package/typechain-types/factories/SYBaseAutoCompound__factory.ts +942 -0
- package/typechain-types/factories/StEthHelper__factory.ts +62 -0
- package/typechain-types/factories/StablePreviewBase__factory.ts +148 -0
- package/typechain-types/factories/SwapAggregator__factory.ts +309 -0
- package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
- package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
- package/typechain-types/hardhat.d.ts +383 -86
- package/typechain-types/index.ts +90 -24
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +0 -4
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +0 -4
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +0 -310
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +0 -4
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +0 -389
- package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.json +0 -190
- package/build/artifacts/contracts/interfaces/IPFeeDistributorFactory.sol/IPFeeDistributorFactory.dbg.json +0 -4
- package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +0 -4
- package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +0 -165
- package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +0 -4
- package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +0 -343
- package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +0 -4
- package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +0 -224
- package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.dbg.json +0 -4
- package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.json +0 -35
- package/build/artifacts/contracts/router/kyberswap/IMultihopRouter.sol/IMultihopRouter.dbg.json +0 -4
- package/build/artifacts/contracts/router/kyberswap/IMultihopRouter.sol/IMultihopRouter.json +0 -136
- package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +0 -4
- package/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol +0 -159
- package/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol +0 -99
- package/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol +0 -70
- package/contracts/interfaces/IPActionSwapPTYT.sol +0 -31
- package/contracts/interfaces/IPFeeDistributorFactory.sol +0 -14
- package/contracts/router/ActionSwapPTYT.sol +0 -108
- package/contracts/router/kyberswap/AggregationRouterHelper.sol +0 -317
- package/contracts/router/kyberswap/IAggregatorRouterHelper.sol +0 -10
- package/contracts/router/kyberswap/IMultihopRouter.sol +0 -139
- package/contracts/router/kyberswap/KyberSwapHelper.sol +0 -79
- package/deployments/1-core.json +0 -29
- package/deployments/1-markets/FRAXUSDC-CURVELP-MARCH30.json +0 -11
- package/deployments/1-markets/LOOKS-STAKING-MARCH30.json +0 -10
- package/deployments/1-markets/STETH-JUNE29.json +0 -10
- 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
|
|
140
|
-
error
|
|
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,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
|
+
}
|