@pendle/core-v2 1.1.1-mainnet → 1.2.0-testnet
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.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 +3 -3
- 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 +3 -3
- 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/LiquidityMining/libraries/WeekMath.sol/WeekMath.dbg.json +1 -1
- 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/PYIndex.sol/PYIndexLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.json +141 -0
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.json +141 -0
- package/build/artifacts/contracts/core/StandardizedYield/SYUtils.sol/SYUtils.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 +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +143 -2
- 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/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 +143 -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 +143 -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 +143 -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/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.json +141 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol/GLPPreviewHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol/GLPPreviewHelper.json +50 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/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 +143 -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 +143 -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/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.dbg.json +1 -1
- 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 +171 -5
- package/build/artifacts/contracts/core/libraries/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/StringLib.sol/StringLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/math/Math.sol/Math.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/IBooster.sol/IBooster.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ConvexCurve/ICrvDepositor.sol/ICrvDepositor.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ConvexCurve/ICvxCrv.sol/ICvxCrv.dbg.json +1 -1
- 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 +201 -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/IAToken.sol/IAToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.json +48 -0
- package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
- 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/IERC4626.sol/IERC4626.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IEulerEToken.sol/IEulerEToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.dbg.json +1 -1
- 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/ILooksFeeSharing.sol/ILooksFeeSharing.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.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/IPBulkSellerSYCallback.sol/IPBulkSellerCallback.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/IPGauge.sol/IPGauge.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
- 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/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.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/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.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/IQiAvax.sol/IQiAvax.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.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/IWAvax.sol/IWAvax.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.dbg.json +4 -0
- package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.json +143 -0
- 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 +2 -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 +144 -60
- 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 +342 -44
- 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 +72 -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/PendleMsgReceiverAppUpg.sol +0 -1
- package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +9 -9
- package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol +224 -0
- package/contracts/core/BulkSeller/BulkSeller.sol +1 -1
- package/contracts/core/RewardManager/RewardManager.sol +1 -1
- package/contracts/core/StandardizedYield/SYBase.sol +23 -5
- package/contracts/core/StandardizedYield/StEthHelper.sol +71 -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/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/GLP/GLPPreviewHelper.sol +142 -0
- package/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol +224 -0
- package/contracts/core/StandardizedYield/implementations/GLP/README.md +61 -0
- package/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol +138 -0
- package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +10 -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 +27 -3
- package/contracts/core/libraries/Errors.sol +18 -4
- 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 +12 -0
- package/contracts/interfaces/GMX/IRewardRouterV2.sol +43 -0
- package/contracts/interfaces/GMX/IVaultPriceFeed.sol +11 -0
- package/contracts/interfaces/IAddressProvider.sol +7 -0
- package/contracts/interfaces/IDiamondCut.sol +36 -0
- package/contracts/interfaces/IDiamondLoupe.sol +38 -0
- package/contracts/interfaces/IERC4626.sol +2 -0
- package/contracts/interfaces/IPActionAddRemoveLiq.sol +36 -1
- package/contracts/interfaces/IPActionInfoStatic.sol +43 -0
- package/contracts/interfaces/IPActionMarketAuxStatic.sol +30 -0
- package/contracts/interfaces/IPActionMarketCoreStatic.sol +317 -0
- package/contracts/interfaces/IPActionMintRedeem.sol +2 -55
- package/contracts/interfaces/IPActionMintRedeemStatic.sol +60 -0
- package/contracts/interfaces/IPActionMisc.sol +18 -4
- package/contracts/interfaces/IPActionStorageStatic.sol +25 -0
- package/contracts/interfaces/IPActionSwapPT.sol +1 -1
- package/contracts/interfaces/IPActionSwapYT.sol +28 -4
- package/contracts/interfaces/IPActionVePendleStatic.sol +9 -0
- package/contracts/interfaces/IPAllAction.sol +5 -3
- package/contracts/interfaces/IPFeeDistributor.sol +12 -10
- package/contracts/interfaces/IPInterestManagerYTV2.sol +13 -0
- package/contracts/interfaces/IPMiniDiamond.sol +12 -0
- package/contracts/interfaces/IPMsgReceiverApp.sol +1 -1
- package/contracts/interfaces/IPRouterStatic.sol +19 -0
- package/contracts/interfaces/IPVotingController.sol +6 -0
- package/contracts/interfaces/IPYieldTokenV2.sol +66 -0
- package/contracts/interfaces/IStandardizedYield.sol +1 -1
- package/contracts/offchain-helpers/AddressProvider.sol +16 -0
- package/contracts/offchain-helpers/Broadcaster.sol +48 -0
- package/contracts/offchain-helpers/Multicall2.sol +103 -0
- package/contracts/offchain-helpers/PendleMulticall.sol +26 -0
- package/contracts/offchain-helpers/{MarketMathStatic.sol → legacy/MarketMathStatic.sol} +2 -2
- package/contracts/offchain-helpers/{RouterStatic.sol → legacy/RouterStatic.sol} +7 -7
- package/contracts/offchain-helpers/router-static/PendleRouterStatic.sol +19 -0
- package/contracts/offchain-helpers/router-static/StorageLayout.sol +21 -0
- package/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol +125 -0
- package/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol +166 -0
- package/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol +769 -0
- package/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol +166 -0
- package/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol +75 -0
- package/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol +55 -0
- 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 +103 -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 +25 -0
- package/contracts/router/swap-aggregator/PendleSwapAggregator.sol +46 -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-2024.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 +9 -10
- 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 +77 -27
- package/typechain-types/ActionSwapPT.ts +26 -31
- package/typechain-types/ActionSwapYT.ts +202 -21
- package/typechain-types/AddressProvider.ts +280 -0
- 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/GLPPreviewHelper.ts +121 -0
- package/typechain-types/GMXPreviewHelper.ts +121 -0
- package/typechain-types/I1inchAggregationRouterV5.ts +257 -0
- package/typechain-types/IAddressProvider.ts +123 -0
- package/typechain-types/IAggregationExecutor.ts +182 -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 +77 -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/IPMsgReceiverApp.ts +5 -5
- 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 +346 -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/MetaStableMath.ts +113 -0
- package/typechain-types/MetaStablePreview.ts +501 -0
- package/typechain-types/Multicall2.ts +437 -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/PendleConvexLPSY.ts +204 -0
- package/typechain-types/PendleCurveFraxUsdcSY.ts +204 -0
- package/typechain-types/PendleCurveUsdd3CrvSY.ts +204 -0
- package/typechain-types/PendleFeeDistributor.ts +409 -117
- package/typechain-types/PendleGaugeControllerSidechainUpg.ts +4 -4
- package/typechain-types/PendleGlpSY.ts +1463 -0
- package/typechain-types/PendleLooksStakingSY.ts +204 -0
- package/typechain-types/PendleMsgReceiverAppUpg.ts +5 -5
- package/typechain-types/PendleMulticall.ts +110 -0
- package/typechain-types/PendlePrincipalTokenV2.ts +614 -0
- package/typechain-types/PendleQiTokenSY.ts +204 -0
- package/typechain-types/PendleRouter.ts +109 -131
- package/typechain-types/PendleSwapAggregator.ts +126 -0
- package/typechain-types/PendleWstEthSY.ts +204 -0
- package/typechain-types/PendleYieldContractFactoryV2.ts +801 -0
- package/typechain-types/PendleYieldTokenV2.ts +1298 -0
- package/typechain-types/RouterStatic.ts +92 -0
- package/typechain-types/SAPE.ts +204 -0
- package/typechain-types/SYBase.ts +204 -0
- package/typechain-types/SYBaseWithRewards.ts +204 -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/VotingEscrowPendleSidechain.ts +4 -5
- 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 +356 -48
- package/typechain-types/factories/AddressProvider__factory.ts +196 -0
- 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 +170 -4
- package/typechain-types/factories/FeeDistributor__factory.ts +339 -0
- package/typechain-types/factories/GLPPreviewHelper__factory.ts +65 -0
- package/typechain-types/factories/GMXPreviewHelper__factory.ts +65 -0
- package/typechain-types/factories/I1inchAggregationRouterV5__factory.ts +179 -0
- package/typechain-types/factories/IAddressProvider__factory.ts +63 -0
- package/typechain-types/factories/IAggregationExecutor__factory.ts +84 -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/IPMsgReceiverApp__factory.ts +1 -1
- 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 +216 -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 +1 -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/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/PendleConvexLPSY__factory.ts +141 -0
- package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +142 -1
- package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +142 -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 +2 -2
- package/typechain-types/factories/PendleGlpSY__factory.ts +1249 -0
- package/typechain-types/factories/PendleLooksStakingSY__factory.ts +142 -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/PendleMsgReceiverAppUpg__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 +142 -1
- package/typechain-types/factories/PendleRouter__factory.ts +75 -74
- package/typechain-types/factories/PendleSwapAggregator__factory.ts +129 -0
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleWstEthSY__factory.ts +142 -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 +69 -1
- package/typechain-types/factories/SAPE__factory.ts +142 -1
- package/typechain-types/factories/SYBaseWithRewards__factory.ts +141 -0
- package/typechain-types/factories/SYBase__factory.ts +141 -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 +2 -2
- 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/EpochResultManager.sol/EpochResultManager.json +0 -131
- 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/IBoringOwnableUpgradeable.sol +0 -10
- 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/APE-JUNE-29.json +0 -8
- 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,166 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.17;
|
|
3
|
+
|
|
4
|
+
import "../../../interfaces/IPRouterStatic.sol";
|
|
5
|
+
import "../../../interfaces/IPBulkSeller.sol";
|
|
6
|
+
import "../../../interfaces/IPBulkSellerFactory.sol";
|
|
7
|
+
import "../StorageLayout.sol";
|
|
8
|
+
|
|
9
|
+
contract ActionMintRedeemStatic is StorageLayout, IPActionMintRedeemStatic {
|
|
10
|
+
using Math for uint256;
|
|
11
|
+
using BulkSellerMathCore for BulkSellerState;
|
|
12
|
+
|
|
13
|
+
function mintPyFromSyStatic(address YT, uint256 netSyToMint)
|
|
14
|
+
public
|
|
15
|
+
returns (uint256 netPYOut)
|
|
16
|
+
{
|
|
17
|
+
if (IPYieldToken(YT).isExpired()) revert Errors.YCExpired();
|
|
18
|
+
return netSyToMint.mulDown(IPYieldToken(YT).pyIndexCurrent());
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function redeemPyToSyStatic(address YT, uint256 netPYToRedeem)
|
|
22
|
+
public
|
|
23
|
+
returns (uint256 netSyOut)
|
|
24
|
+
{
|
|
25
|
+
return netPYToRedeem.divDown(IPYieldToken(YT).pyIndexCurrent());
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function mintPyFromTokenStatic(
|
|
29
|
+
address YT,
|
|
30
|
+
address tokenIn,
|
|
31
|
+
uint256 netTokenIn,
|
|
32
|
+
address bulk
|
|
33
|
+
) external returns (uint256 netPyOut) {
|
|
34
|
+
address SY = IPYieldToken(YT).SY();
|
|
35
|
+
uint256 netSyReceived = mintSyFromTokenStatic(SY, tokenIn, netTokenIn, bulk);
|
|
36
|
+
netPyOut = mintPyFromSyStatic(YT, netSyReceived);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function redeemPyToTokenStatic(
|
|
40
|
+
address YT,
|
|
41
|
+
uint256 netPYToRedeem,
|
|
42
|
+
address tokenOut,
|
|
43
|
+
address bulk
|
|
44
|
+
) external returns (uint256 netTokenOut) {
|
|
45
|
+
address SY = IPYieldToken(YT).SY();
|
|
46
|
+
uint256 netSyReceived = redeemPyToSyStatic(YT, netPYToRedeem);
|
|
47
|
+
netTokenOut = redeemSyToTokenStatic(SY, tokenOut, netSyReceived, bulk);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function mintSyFromTokenStatic(
|
|
51
|
+
address SY,
|
|
52
|
+
address tokenIn,
|
|
53
|
+
uint256 netTokenIn,
|
|
54
|
+
address bulk
|
|
55
|
+
) public view returns (uint256 netSyOut) {
|
|
56
|
+
if (bulk != address(0)) {
|
|
57
|
+
BulkSellerState memory state = _readBulkSellerState(bulk);
|
|
58
|
+
return state.calcSwapExactTokenForSy(netTokenIn);
|
|
59
|
+
} else {
|
|
60
|
+
return IStandardizedYield(SY).previewDeposit(tokenIn, netTokenIn);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function redeemSyToTokenStatic(
|
|
65
|
+
address SY,
|
|
66
|
+
address tokenOut,
|
|
67
|
+
uint256 netSyIn,
|
|
68
|
+
address bulk
|
|
69
|
+
) public view returns (uint256 netTokenOut) {
|
|
70
|
+
if (bulk != address(0)) {
|
|
71
|
+
BulkSellerState memory state = _readBulkSellerState(bulk);
|
|
72
|
+
return state.calcSwapExactSyForToken(netSyIn);
|
|
73
|
+
} else {
|
|
74
|
+
return IStandardizedYield(SY).previewRedeem(tokenOut, netSyIn);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function getAmountTokenToMintSy(
|
|
79
|
+
address SY,
|
|
80
|
+
address tokenIn,
|
|
81
|
+
address bulk,
|
|
82
|
+
uint256 netSyOut
|
|
83
|
+
) public view returns (uint256 netTokenIn) {
|
|
84
|
+
uint256 pivotAmount;
|
|
85
|
+
|
|
86
|
+
if (tokenIn == address(0)) pivotAmount = 1e18;
|
|
87
|
+
else pivotAmount = 10**IStandardizedYield(SY).decimals();
|
|
88
|
+
|
|
89
|
+
uint256 low = pivotAmount;
|
|
90
|
+
{
|
|
91
|
+
while (true) {
|
|
92
|
+
uint256 lowSyOut = mintSyFromTokenStatic(SY, tokenIn, low, bulk);
|
|
93
|
+
if (lowSyOut >= netSyOut) low /= 10;
|
|
94
|
+
else break;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
uint256 high = pivotAmount;
|
|
99
|
+
{
|
|
100
|
+
while (true) {
|
|
101
|
+
uint256 highSyOut = mintSyFromTokenStatic(SY, tokenIn, high, bulk);
|
|
102
|
+
if (highSyOut < netSyOut) high *= 10;
|
|
103
|
+
else break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
while (low <= high) {
|
|
108
|
+
uint256 mid = (low + high) / 2;
|
|
109
|
+
uint256 syOut = mintSyFromTokenStatic(SY, tokenIn, mid, bulk);
|
|
110
|
+
|
|
111
|
+
if (syOut >= netSyOut) {
|
|
112
|
+
netTokenIn = mid;
|
|
113
|
+
high = mid - 1;
|
|
114
|
+
} else {
|
|
115
|
+
low = mid + 1;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
assert(netTokenIn > 0);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function getBulkSellerInfo(
|
|
123
|
+
address token,
|
|
124
|
+
address SY,
|
|
125
|
+
uint256 netTokenIn,
|
|
126
|
+
uint256 netSyIn
|
|
127
|
+
)
|
|
128
|
+
public
|
|
129
|
+
view
|
|
130
|
+
returns (
|
|
131
|
+
address bulk,
|
|
132
|
+
uint256 totalToken,
|
|
133
|
+
uint256 totalSy
|
|
134
|
+
)
|
|
135
|
+
{
|
|
136
|
+
if (address(bulkSellerFactory) == address(0)) return (address(0), 0, 0);
|
|
137
|
+
|
|
138
|
+
bulk = bulkSellerFactory.get(token, SY);
|
|
139
|
+
if (bulk == address(0)) return (address(0), 0, 0);
|
|
140
|
+
|
|
141
|
+
BulkSellerState memory state = _readBulkSellerState(bulk);
|
|
142
|
+
|
|
143
|
+
// Paused check
|
|
144
|
+
if (state.rateTokenToSy == 0 || state.rateSyToToken == 0) {
|
|
145
|
+
return (address(0), 0, 0);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Liquidity check
|
|
149
|
+
uint256 postFeeRateTokenToSy = state.rateTokenToSy.mulDown(Math.ONE - state.feeRate);
|
|
150
|
+
uint256 postFeeRateSyToToken = state.rateSyToToken.mulDown(Math.ONE - state.feeRate);
|
|
151
|
+
if (
|
|
152
|
+
netTokenIn.mulDown(postFeeRateTokenToSy) > state.totalSy ||
|
|
153
|
+
netSyIn.mulDown(postFeeRateSyToToken) > state.totalToken
|
|
154
|
+
) {
|
|
155
|
+
return (address(0), 0, 0);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// return...
|
|
159
|
+
totalToken = state.totalToken;
|
|
160
|
+
totalSy = state.totalSy;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function _readBulkSellerState(address bulk) internal view returns (BulkSellerState memory) {
|
|
164
|
+
return IPBulkSeller(bulk).readState();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.17;
|
|
3
|
+
|
|
4
|
+
import "../StorageLayout.sol";
|
|
5
|
+
import "../../../interfaces/IPActionStorageStatic.sol";
|
|
6
|
+
import "../../../interfaces/IPMiniDiamond.sol";
|
|
7
|
+
|
|
8
|
+
contract ActionStorageStatic is StorageLayout, IPActionStorageStatic, IPMiniDiamond {
|
|
9
|
+
function setDefaultApproxParams(ApproxParams memory params) public onlyOwner {
|
|
10
|
+
defaultApproxParams = params;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function setBulkSellerFactory(address _bulkSellerFactory) external onlyOwner {
|
|
14
|
+
bulkSellerFactory = IPBulkSellerFactory(_bulkSellerFactory);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function getDefaultApproxParams() public view returns (ApproxParams memory) {
|
|
18
|
+
return defaultApproxParams;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function getBulkSellerFactory() external view returns (address) {
|
|
22
|
+
return address(bulkSellerFactory);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function getOwnerAndPendingOwner() external view returns (address, address) {
|
|
26
|
+
return (owner, pendingOwner);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function setFacetForSelectors(SelectorsToFacet[] calldata arr) external onlyOwner {
|
|
30
|
+
for (uint256 i = 0; i < arr.length; ) {
|
|
31
|
+
SelectorsToFacet memory s = arr[i];
|
|
32
|
+
for (uint256 j = 0; j < s.selectors.length; ) {
|
|
33
|
+
selectorToFacet[s.selectors[j]] = s.facet;
|
|
34
|
+
unchecked {
|
|
35
|
+
j++;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
unchecked {
|
|
39
|
+
i++;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function facetAddress(bytes4 selector) public view returns (address res) {
|
|
45
|
+
res = selectorToFacet[selector];
|
|
46
|
+
require(res != address(0), "selector not found");
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Ownable
|
|
50
|
+
function transferOwnership(
|
|
51
|
+
address newOwner,
|
|
52
|
+
bool direct,
|
|
53
|
+
bool renounce
|
|
54
|
+
) public onlyOwner {
|
|
55
|
+
if (direct) {
|
|
56
|
+
require(newOwner != address(0) || renounce, "Ownable: zero address");
|
|
57
|
+
|
|
58
|
+
emit OwnershipTransferred(owner, newOwner);
|
|
59
|
+
owner = newOwner;
|
|
60
|
+
pendingOwner = address(0);
|
|
61
|
+
} else {
|
|
62
|
+
pendingOwner = newOwner;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function claimOwnership() public {
|
|
67
|
+
address _pendingOwner = pendingOwner;
|
|
68
|
+
|
|
69
|
+
require(msg.sender == _pendingOwner, "Ownable: caller != pending owner");
|
|
70
|
+
|
|
71
|
+
emit OwnershipTransferred(owner, _pendingOwner);
|
|
72
|
+
owner = _pendingOwner;
|
|
73
|
+
pendingOwner = address(0);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.17;
|
|
3
|
+
|
|
4
|
+
import "../../../core/libraries/MiniHelpers.sol";
|
|
5
|
+
import "../../../interfaces/IPRouterStatic.sol";
|
|
6
|
+
import "../../../interfaces/IPVotingEscrowMainchain.sol";
|
|
7
|
+
import "../../../LiquidityMining/libraries/VeBalanceLib.sol";
|
|
8
|
+
|
|
9
|
+
contract ActionVePendleStatic is IPActionVePendleStatic {
|
|
10
|
+
using VeBalanceLib for VeBalance;
|
|
11
|
+
using VeBalanceLib for LockedPosition;
|
|
12
|
+
|
|
13
|
+
uint128 private constant MAX_LOCK_TIME = 104 weeks;
|
|
14
|
+
uint128 private constant MIN_LOCK_TIME = 1 weeks;
|
|
15
|
+
|
|
16
|
+
IPVotingEscrowMainchain private immutable vePENDLE;
|
|
17
|
+
|
|
18
|
+
constructor(IPVotingEscrowMainchain _vePENDLE) {
|
|
19
|
+
vePENDLE = _vePENDLE;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function increaseLockPositionStatic(
|
|
23
|
+
address user,
|
|
24
|
+
uint128 additionalAmountToLock,
|
|
25
|
+
uint128 newExpiry
|
|
26
|
+
) external view returns (uint128 newVeBalance) {
|
|
27
|
+
if (!WeekMath.isValidWTime(newExpiry)) revert Errors.InvalidWTime(newExpiry);
|
|
28
|
+
if (MiniHelpers.isTimeInThePast(newExpiry)) revert Errors.ExpiryInThePast(newExpiry);
|
|
29
|
+
|
|
30
|
+
if (newExpiry > block.timestamp + MAX_LOCK_TIME) revert Errors.VEExceededMaxLockTime();
|
|
31
|
+
if (newExpiry < block.timestamp + MIN_LOCK_TIME) revert Errors.VEInsufficientLockTime();
|
|
32
|
+
|
|
33
|
+
LockedPosition memory oldPosition;
|
|
34
|
+
|
|
35
|
+
{
|
|
36
|
+
(uint128 amount, uint128 expiry) = vePENDLE.positionData(user);
|
|
37
|
+
oldPosition = LockedPosition(amount, expiry);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (newExpiry < oldPosition.expiry) revert Errors.VENotAllowedReduceExpiry();
|
|
41
|
+
|
|
42
|
+
uint128 newTotalAmountLocked = additionalAmountToLock + oldPosition.amount;
|
|
43
|
+
if (newTotalAmountLocked == 0) revert Errors.VEZeroAmountLocked();
|
|
44
|
+
|
|
45
|
+
uint128 additionalDurationToLock = newExpiry - oldPosition.expiry;
|
|
46
|
+
|
|
47
|
+
LockedPosition memory newPosition = LockedPosition(
|
|
48
|
+
oldPosition.amount + additionalAmountToLock,
|
|
49
|
+
oldPosition.expiry + additionalDurationToLock
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
VeBalance memory newBalance = newPosition.convertToVeBalance();
|
|
53
|
+
return newBalance.getCurrentValue();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -21,13 +21,9 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
21
21
|
using MarketApproxPtInLib for MarketState;
|
|
22
22
|
using MarketApproxPtOutLib for MarketState;
|
|
23
23
|
using PYIndexLib for IPYieldToken;
|
|
24
|
+
using PYIndexLib for PYIndex;
|
|
24
25
|
using BulkSellerMathCore for BulkSellerState;
|
|
25
26
|
|
|
26
|
-
/// @dev since this contract will be proxied, it must not contains non-immutable variables
|
|
27
|
-
constructor(address _kyberScalingLib)
|
|
28
|
-
ActionBaseMintRedeem(_kyberScalingLib) //solhint-disable-next-line no-empty-blocks
|
|
29
|
-
{}
|
|
30
|
-
|
|
31
27
|
/**
|
|
32
28
|
* @notice Adds liquidity to the SY/PT market, granting LP tokens in return
|
|
33
29
|
* @dev Will mint as much LP as possible given no more than `netSyDesired` and `netPtDesired`,
|
|
@@ -258,6 +254,78 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
258
254
|
);
|
|
259
255
|
}
|
|
260
256
|
|
|
257
|
+
/**
|
|
258
|
+
* @notice Mints partial SY to PT+YT, returns YT to user, then uses PT+SY to add liquidity
|
|
259
|
+
* @param netSyIn amount of SY to be transferred in from caller
|
|
260
|
+
* @return netLpOut actual LP output, will not be lower than `minLpOut`
|
|
261
|
+
* @return netYtOut actual YT output, will not be lower than `minYtOut`
|
|
262
|
+
* @dev Reverts if market is expired
|
|
263
|
+
*/
|
|
264
|
+
function addLiquiditySingleSyKeepYt(
|
|
265
|
+
address receiver,
|
|
266
|
+
address market,
|
|
267
|
+
uint256 netSyIn,
|
|
268
|
+
uint256 minLpOut,
|
|
269
|
+
uint256 minYtOut
|
|
270
|
+
) external returns (uint256 netLpOut, uint256 netYtOut) {
|
|
271
|
+
(IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
272
|
+
|
|
273
|
+
_transferIn(address(SY), msg.sender, netSyIn);
|
|
274
|
+
|
|
275
|
+
(netLpOut, netYtOut) = _addLiquiditySingleSyKeepYt(
|
|
276
|
+
receiver,
|
|
277
|
+
market,
|
|
278
|
+
SY,
|
|
279
|
+
YT,
|
|
280
|
+
netSyIn,
|
|
281
|
+
minLpOut,
|
|
282
|
+
minYtOut
|
|
283
|
+
);
|
|
284
|
+
|
|
285
|
+
emit AddLiquiditySingleSyKeepYt(msg.sender, market, receiver, netSyIn, netLpOut, netYtOut);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* @notice Adds liquidity and returns leftover YT using a single token input. The input token
|
|
290
|
+
* is first swapped through Kyberswap to a SY-mintable token, the rest is the same as
|
|
291
|
+
* `addLiquiditySingleSyKeepYt()`
|
|
292
|
+
* @param input data for input token, see {`./kyberswap/KyberSwapHelper.sol`}
|
|
293
|
+
* @return netLpOut actual LP output, will not be lower than `minLpOut`
|
|
294
|
+
* @return netYtOut actual YT output, will not be lower than `minYtOut`
|
|
295
|
+
* @dev Reverts if market is expired
|
|
296
|
+
*/
|
|
297
|
+
function addLiquiditySingleTokenKeepYt(
|
|
298
|
+
address receiver,
|
|
299
|
+
address market,
|
|
300
|
+
uint256 minLpOut,
|
|
301
|
+
uint256 minYtOut,
|
|
302
|
+
TokenInput calldata input
|
|
303
|
+
) external returns (uint256 netLpOut, uint256 netYtOut) {
|
|
304
|
+
(IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
305
|
+
|
|
306
|
+
uint256 netSyUsed = _mintSyFromToken(address(this), address(SY), 1, input);
|
|
307
|
+
|
|
308
|
+
(netLpOut, netYtOut) = _addLiquiditySingleSyKeepYt(
|
|
309
|
+
receiver,
|
|
310
|
+
market,
|
|
311
|
+
SY,
|
|
312
|
+
YT,
|
|
313
|
+
netSyUsed,
|
|
314
|
+
minLpOut,
|
|
315
|
+
minYtOut
|
|
316
|
+
);
|
|
317
|
+
|
|
318
|
+
emit AddLiquiditySingleTokenKeepYt(
|
|
319
|
+
msg.sender,
|
|
320
|
+
market,
|
|
321
|
+
input.tokenIn,
|
|
322
|
+
receiver,
|
|
323
|
+
input.netTokenIn,
|
|
324
|
+
netLpOut,
|
|
325
|
+
netYtOut
|
|
326
|
+
);
|
|
327
|
+
}
|
|
328
|
+
|
|
261
329
|
/**
|
|
262
330
|
* @notice Burns LP token to remove SY/PT liquidity
|
|
263
331
|
* @param netLpToRemove amount of LP to be burned from caller
|
|
@@ -473,6 +541,48 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
473
541
|
if (netLpOut < minLpOut) revert Errors.RouterInsufficientLpOut(netLpOut, minLpOut);
|
|
474
542
|
}
|
|
475
543
|
|
|
544
|
+
/**
|
|
545
|
+
* @dev algorithm:
|
|
546
|
+
- Split SY into a SY and b SY (with a + b = netSyIn)
|
|
547
|
+
- Mint PY with a SY ---> gives (a * pyIndex / ONE) PT + YT
|
|
548
|
+
- Mint LP with (a * pyIndex / ONE) PT and b SY
|
|
549
|
+
|
|
550
|
+
-> We want (a * pyIndex / ONE) / totalPt = b / totalSy
|
|
551
|
+
-> a * (1 + pyIndex * totalSy / ONE / totalPt) = netSyIn
|
|
552
|
+
-> a = (netSyIn * totalPt) / (totalPt + (pyIndex * totalSy / ONE))
|
|
553
|
+
-> a = (netSyIn * totalPt) / (totalPt + totalAsset)
|
|
554
|
+
*/
|
|
555
|
+
function _addLiquiditySingleSyKeepYt(
|
|
556
|
+
address receiver,
|
|
557
|
+
address market,
|
|
558
|
+
IStandardizedYield SY,
|
|
559
|
+
IPYieldToken YT,
|
|
560
|
+
uint256 netSyIn,
|
|
561
|
+
uint256 minLpOut,
|
|
562
|
+
uint256 minYtOut
|
|
563
|
+
) internal returns (uint256 netLpOut, uint256 netYtOut) {
|
|
564
|
+
MarketState memory state = IPMarket(market).readState(address(this));
|
|
565
|
+
|
|
566
|
+
PYIndex pyIndex = YT.newIndex();
|
|
567
|
+
|
|
568
|
+
uint256 netSyToPt = (netSyIn * state.totalPt.Uint()) /
|
|
569
|
+
(state.totalPt.Uint() + pyIndex.syToAsset(state.totalSy.Uint()));
|
|
570
|
+
|
|
571
|
+
// transfer SY to mint PY
|
|
572
|
+
_transferOut(address(SY), address(YT), netSyToPt);
|
|
573
|
+
|
|
574
|
+
// the rest of SY goes to market
|
|
575
|
+
_transferOut(address(SY), market, netSyIn - netSyToPt);
|
|
576
|
+
|
|
577
|
+
// PT goes to market, YT goes to receiver
|
|
578
|
+
netYtOut = YT.mintPY(market, receiver);
|
|
579
|
+
|
|
580
|
+
(netLpOut, , ) = IPMarket(market).mint(receiver, netSyIn - netSyToPt, netYtOut);
|
|
581
|
+
|
|
582
|
+
if (netLpOut < minLpOut) revert Errors.RouterInsufficientLpOut(netLpOut, minLpOut);
|
|
583
|
+
if (netYtOut < minYtOut) revert Errors.RouterInsufficientYtOut(netYtOut, minYtOut);
|
|
584
|
+
}
|
|
585
|
+
|
|
476
586
|
/// @dev removes SY/PT liquidity, then converts PT to SY
|
|
477
587
|
function _removeLiquiditySingleSy(
|
|
478
588
|
address receiver,
|
|
@@ -497,7 +607,7 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
497
607
|
) internal returns (uint256 netSyOut) {
|
|
498
608
|
(, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
499
609
|
(uint256 syFromBurn, ) = IPMarket(market).burn(receiver, address(YT), netLpToRemove);
|
|
500
|
-
netSyOut = syFromBurn +
|
|
610
|
+
netSyOut = syFromBurn + YT.redeemPY(receiver);
|
|
501
611
|
}
|
|
502
612
|
|
|
503
613
|
/// @dev swaps PT to SY pre-expiry
|
|
@@ -11,11 +11,6 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
11
11
|
using Math for uint256;
|
|
12
12
|
using Math for int256;
|
|
13
13
|
|
|
14
|
-
/// @dev since this contract will be proxied, it must not contains non-immutable variables
|
|
15
|
-
constructor(address _kyberScalingLib)
|
|
16
|
-
ActionBaseMintRedeem(_kyberScalingLib) //solhint-disable-next-line no-empty-blocks
|
|
17
|
-
{}
|
|
18
|
-
|
|
19
14
|
/**
|
|
20
15
|
* @notice swaps input token for SY-mintable tokens (if needed), then mints SY from such
|
|
21
16
|
* @param input data for input token, see {`./kyberswap/KyberSwapHelper.sol`}
|
|
@@ -61,7 +56,7 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
61
56
|
address SY = IPYieldToken(YT).SY();
|
|
62
57
|
|
|
63
58
|
uint256 netSyToMint = _mintSyFromToken(YT, SY, 0, input);
|
|
64
|
-
netPyOut = _mintPyFromSy(receiver, YT, netSyToMint, minPyOut, false);
|
|
59
|
+
netPyOut = _mintPyFromSy(receiver, SY, YT, netSyToMint, minPyOut, false);
|
|
65
60
|
|
|
66
61
|
emit MintPyFromToken(msg.sender, input.tokenIn, YT, receiver, input.netTokenIn, netPyOut);
|
|
67
62
|
}
|
|
@@ -96,7 +91,7 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
96
91
|
uint256 netSyIn,
|
|
97
92
|
uint256 minPyOut
|
|
98
93
|
) external returns (uint256 netPyOut) {
|
|
99
|
-
netPyOut = _mintPyFromSy(receiver, YT, netSyIn, minPyOut, true);
|
|
94
|
+
netPyOut = _mintPyFromSy(receiver, IPYieldToken(YT).SY(), YT, netSyIn, minPyOut, true);
|
|
100
95
|
emit MintPyFromSy(msg.sender, receiver, YT, netSyIn, netPyOut);
|
|
101
96
|
}
|
|
102
97
|
|
|
@@ -121,204 +116,19 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
121
116
|
address[] calldata sys,
|
|
122
117
|
address[] calldata yts,
|
|
123
118
|
address[] calldata markets
|
|
124
|
-
)
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
uint256[][] memory ytRewards,
|
|
130
|
-
uint256[][] memory marketRewards
|
|
131
|
-
)
|
|
132
|
-
{
|
|
133
|
-
syRewards = new uint256[][](sys.length);
|
|
134
|
-
for (uint256 i = 0; i < sys.length; ++i) {
|
|
135
|
-
syRewards[i] = IStandardizedYield(sys[i]).claimRewards(user);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
ytInterests = new uint256[](yts.length);
|
|
139
|
-
ytRewards = new uint256[][](yts.length);
|
|
140
|
-
for (uint256 i = 0; i < yts.length; ++i) {
|
|
141
|
-
(ytInterests[i], ytRewards[i]) = IPYieldToken(yts[i]).redeemDueInterestAndRewards(
|
|
142
|
-
user,
|
|
143
|
-
true,
|
|
144
|
-
true
|
|
145
|
-
);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
marketRewards = new uint256[][](markets.length);
|
|
149
|
-
for (uint256 i = 0; i < markets.length; ++i) {
|
|
150
|
-
marketRewards[i] = IPMarket(markets[i]).redeemRewards(user);
|
|
151
|
-
}
|
|
152
|
-
emit RedeemDueInterestAndRewards(
|
|
153
|
-
user,
|
|
154
|
-
sys,
|
|
155
|
-
yts,
|
|
156
|
-
markets,
|
|
157
|
-
syRewards,
|
|
158
|
-
ytInterests,
|
|
159
|
-
ytRewards,
|
|
160
|
-
marketRewards
|
|
161
|
-
);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
struct RouterTokenAmounts {
|
|
165
|
-
address[] tokens;
|
|
166
|
-
uint256[] amounts;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* @notice A function to:
|
|
171
|
-
- Redeem all of caller's due interest and rewards in SYs, YTs, and markets
|
|
172
|
-
- Redeem SYs themselves
|
|
173
|
-
- Finally swaps all resulting tokens to `dataSwap.outputToken`
|
|
174
|
-
* @return netTokenOut total token output amount, will not be lower than `dataSwap.minTokenOut`
|
|
175
|
-
* @return amountsSwapped the amounts swapped for each token defined in `dataSwap.tokens`
|
|
176
|
-
*/
|
|
177
|
-
function redeemDueInterestAndRewardsThenSwapAll(
|
|
178
|
-
address[] calldata sys,
|
|
179
|
-
RouterYtRedeemStruct calldata dataYT,
|
|
180
|
-
address[] calldata markets,
|
|
181
|
-
RouterSwapAllStruct calldata dataSwap
|
|
182
|
-
) external returns (uint256 netTokenOut, uint256[] memory amountsSwapped) {
|
|
183
|
-
if (dataSwap.tokens.length != dataSwap.kybercalls.length)
|
|
184
|
-
revert Errors.ArrayLengthMismatch();
|
|
185
|
-
|
|
186
|
-
if (dataYT.tokenRedeemSys.length != dataYT.syAddrs.length)
|
|
187
|
-
revert Errors.ArrayLengthMismatch();
|
|
188
|
-
|
|
189
|
-
RouterTokenAmounts memory tokensOut = _newRouterTokenAmounts(dataSwap.tokens);
|
|
190
|
-
RouterTokenAmounts memory sysOut = _newRouterTokenAmounts(dataYT.syAddrs);
|
|
191
|
-
|
|
192
|
-
// redeem SY
|
|
193
|
-
for (uint256 i = 0; i < sys.length; ++i) {
|
|
194
|
-
IStandardizedYield SY = IStandardizedYield(sys[i]);
|
|
195
|
-
|
|
196
|
-
address[] memory rewardTokens = SY.getRewardTokens();
|
|
197
|
-
uint256[] memory rewardAmounts = SY.claimRewards(msg.sender);
|
|
198
|
-
_addTokenAmounts(tokensOut, rewardTokens, rewardAmounts);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// redeem YT
|
|
202
|
-
for (uint256 i = 0; i < dataYT.yts.length; ++i) {
|
|
203
|
-
IPYieldToken YT = IPYieldToken(dataYT.yts[i]);
|
|
204
|
-
|
|
205
|
-
(uint256 interestAmount, uint256[] memory rewardAmounts) = YT
|
|
206
|
-
.redeemDueInterestAndRewards(msg.sender, true, true);
|
|
207
|
-
|
|
208
|
-
address syAddr = YT.SY();
|
|
209
|
-
address[] memory rewardTokens = YT.getRewardTokens();
|
|
210
|
-
|
|
211
|
-
_addTokenAmount(sysOut, syAddr, interestAmount);
|
|
212
|
-
_addTokenAmounts(tokensOut, rewardTokens, rewardAmounts);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
// redeem market
|
|
216
|
-
for (uint256 i = 0; i < markets.length; ++i) {
|
|
217
|
-
IPMarket market = IPMarket(markets[i]);
|
|
218
|
-
|
|
219
|
-
address[] memory rewardTokens = market.getRewardTokens();
|
|
220
|
-
uint256[] memory rewardAmounts = market.redeemRewards(msg.sender);
|
|
221
|
-
_addTokenAmounts(tokensOut, rewardTokens, rewardAmounts);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
// guaranteed no ETH, all rewards are ERC20
|
|
225
|
-
for (uint256 i = 0; i < tokensOut.tokens.length; ++i) {
|
|
226
|
-
_transferFrom(
|
|
227
|
-
IERC20(tokensOut.tokens[i]),
|
|
228
|
-
msg.sender,
|
|
229
|
-
address(this),
|
|
230
|
-
tokensOut.amounts[i]
|
|
231
|
-
);
|
|
232
|
-
}
|
|
233
|
-
_redeemAllSys(sysOut, dataYT.bulks, dataYT.tokenRedeemSys, tokensOut);
|
|
234
|
-
|
|
235
|
-
// now swap all to outputToken
|
|
236
|
-
netTokenOut = _swapAllToOutputToken(tokensOut, dataSwap);
|
|
237
|
-
|
|
238
|
-
if (netTokenOut < dataSwap.minTokenOut)
|
|
239
|
-
revert Errors.RouterInsufficientTokenOut(netTokenOut, dataSwap.minTokenOut);
|
|
240
|
-
|
|
241
|
-
amountsSwapped = tokensOut.amounts;
|
|
242
|
-
|
|
243
|
-
emit RedeemDueInterestAndRewardsThenSwapAll(
|
|
244
|
-
msg.sender,
|
|
245
|
-
sys,
|
|
246
|
-
dataYT.yts,
|
|
247
|
-
markets,
|
|
248
|
-
dataSwap.outputToken,
|
|
249
|
-
netTokenOut
|
|
250
|
-
);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
function _newRouterTokenAmounts(address[] memory tokens)
|
|
254
|
-
internal
|
|
255
|
-
pure
|
|
256
|
-
returns (RouterTokenAmounts memory)
|
|
257
|
-
{
|
|
258
|
-
return RouterTokenAmounts(tokens, new uint256[](tokens.length));
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
/// @dev pull SYs from users & redeem them, then add to tokensOut
|
|
262
|
-
function _redeemAllSys(
|
|
263
|
-
RouterTokenAmounts memory sys,
|
|
264
|
-
address[] calldata bulks,
|
|
265
|
-
address[] calldata tokenRedeemSys,
|
|
266
|
-
RouterTokenAmounts memory tokensOut
|
|
267
|
-
) internal {
|
|
268
|
-
for (uint256 i = 0; i < sys.tokens.length; ++i) {
|
|
269
|
-
if (sys.amounts[i] == 0) continue;
|
|
270
|
-
|
|
271
|
-
TokenOutput memory output = _wrapTokenOutput(tokenRedeemSys[i], 1, bulks[i]);
|
|
272
|
-
uint256 amountOut = _redeemSyToToken(
|
|
273
|
-
address(this),
|
|
274
|
-
sys.tokens[i],
|
|
275
|
-
sys.amounts[i],
|
|
276
|
-
output,
|
|
277
|
-
true
|
|
278
|
-
);
|
|
279
|
-
|
|
280
|
-
_addTokenAmount(tokensOut, tokenRedeemSys[i], amountOut);
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
function _swapAllToOutputToken(
|
|
285
|
-
RouterTokenAmounts memory tokens,
|
|
286
|
-
RouterSwapAllStruct memory dataSwap
|
|
287
|
-
) internal returns (uint256 netTokenOut) {
|
|
288
|
-
for (uint256 i = 0; i < tokens.tokens.length; ++i) {
|
|
289
|
-
if (tokens.amounts[i] == 0) continue;
|
|
290
|
-
_kyberswap(
|
|
291
|
-
tokens.tokens[i],
|
|
292
|
-
tokens.amounts[i],
|
|
293
|
-
dataSwap.kyberRouter,
|
|
294
|
-
dataSwap.kybercalls[i]
|
|
295
|
-
);
|
|
296
|
-
}
|
|
297
|
-
netTokenOut = _selfBalance(dataSwap.outputToken);
|
|
298
|
-
_transferOut(dataSwap.outputToken, msg.sender, netTokenOut);
|
|
299
|
-
}
|
|
119
|
+
) external {
|
|
120
|
+
unchecked {
|
|
121
|
+
for (uint256 i = 0; i < sys.length; ++i) {
|
|
122
|
+
IStandardizedYield(sys[i]).claimRewards(user);
|
|
123
|
+
}
|
|
300
124
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
address token,
|
|
304
|
-
uint256 amount
|
|
305
|
-
) internal pure {
|
|
306
|
-
for (uint256 j = 0; j < data.tokens.length; j++) {
|
|
307
|
-
if (data.tokens[j] == token) {
|
|
308
|
-
data.amounts[j] += amount;
|
|
309
|
-
return;
|
|
125
|
+
for (uint256 i = 0; i < yts.length; ++i) {
|
|
126
|
+
IPYieldToken(yts[i]).redeemDueInterestAndRewards(user, true, true);
|
|
310
127
|
}
|
|
311
|
-
}
|
|
312
|
-
revert("token not found");
|
|
313
|
-
}
|
|
314
128
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
uint256[] memory amounts
|
|
319
|
-
) internal pure {
|
|
320
|
-
for (uint256 i = 0; i < tokens.length; i++) {
|
|
321
|
-
_addTokenAmount(data, tokens[i], amounts[i]);
|
|
129
|
+
for (uint256 i = 0; i < markets.length; ++i) {
|
|
130
|
+
IPMarket(markets[i]).redeemRewards(user);
|
|
131
|
+
}
|
|
322
132
|
}
|
|
323
133
|
}
|
|
324
134
|
}
|