@pendle/core-v2 1.3.0-mainnet → 2.0.0-mainnet
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/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 +1 -1
- package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
- 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/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 +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.json +1 -41
- 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 +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.json +2 -41
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.json +2 -41
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.json +2 -41
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol/PendleAuraBalancerStableLPSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
- 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/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
- 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 +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/libraries/ArrayLib.sol/ArrayLib.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 +50 -2
- package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.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/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/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/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/IPFeeDistributor.sol/IPFeeDistributor.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/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.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/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/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 +1 -1
- 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 +7 -9
- package/contracts/core/StandardizedYield/StEthHelper.sol +4 -4
- package/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol +142 -0
- package/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol +222 -0
- package/contracts/core/StandardizedYield/implementations/GLP/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/Errors.sol +5 -0
- package/contracts/core/libraries/TokenHelper.sol +10 -0
- package/contracts/interfaces/GMX/IGMXVault.sol +47 -0
- package/contracts/interfaces/GMX/IGlpManager.sol +8 -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/IPActionAddRemoveLiq.sol +36 -1
- package/contracts/interfaces/IPActionMintRedeem.sol +2 -55
- package/contracts/interfaces/IPActionMisc.sol +18 -4
- package/contracts/interfaces/IPActionSwapPT.sol +1 -1
- package/contracts/interfaces/IPActionSwapYT.sol +28 -4
- package/contracts/interfaces/IPAllAction.sol +5 -3
- package/contracts/interfaces/IPInterestManagerYTV2.sol +13 -0
- package/contracts/interfaces/IPMsgReceiverApp.sol +1 -1
- package/contracts/interfaces/IPYieldTokenV2.sol +66 -0
- package/contracts/offchain-helpers/AddressProvider.sol +16 -0
- package/contracts/offchain-helpers/MarketMathStatic.sol +15 -0
- package/contracts/offchain-helpers/PendleMulticall.sol +26 -0
- package/contracts/offchain-helpers/RouterStatic.sol +22 -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 +47 -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/1-core.json +2 -1
- package/deployments/1-markets/BALANCER-LP-AURA-WSTETH-WETH-JUN272024.json +11 -0
- package/deployments/1-offchain-helper.json +4 -0
- package/deployments/42161-core.json +26 -0
- package/deployments/42161-markets/GLP-28MARCH2024.json +10 -0
- package/deployments/42161-offchain-helper.json +4 -0
- package/package.json +1 -1
- 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/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/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/IGlpManager.ts +115 -0
- package/typechain-types/IHashflow.ts +159 -0
- package/typechain-types/IKyberSwapAggregationRouterHelper.ts +109 -0
- package/typechain-types/IMetaAggregationRouter.ts +213 -0
- package/typechain-types/IMetaAggregationRouterV2.ts +221 -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/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/IRewardRouterV2.ts +346 -0
- package/typechain-types/ISwapAggregator.ts +124 -0
- package/typechain-types/IVaultPriceFeed.ts +114 -0
- package/typechain-types/InterestManagerYTV2.ts +157 -0
- package/typechain-types/PendleAura3EthSY.ts +0 -39
- package/typechain-types/PendleAuraCbethWstethSY.ts +0 -39
- package/typechain-types/PendleAuraWethWstethSY.ts +0 -39
- package/typechain-types/PendleGaugeControllerSidechainUpg.ts +4 -4
- package/typechain-types/PendleGlpSY.ts +1463 -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/PendleRouter.ts +109 -131
- package/typechain-types/PendleSwapAggregator.ts +126 -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/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/ActionMintRedeem__factory.ts +108 -266
- package/typechain-types/factories/ActionMisc__factory.ts +56 -17
- 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/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/Errors__factory.ts +49 -1
- 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/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/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/IMetaAggregationRouterV2__factory.ts +234 -0
- package/typechain-types/factories/IMetaAggregationRouter__factory.ts +202 -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/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/IRewardRouterV2__factory.ts +216 -0
- package/typechain-types/factories/ISwapAggregator__factory.ts +66 -0
- package/typechain-types/factories/IVaultPriceFeed__factory.ts +60 -0
- package/typechain-types/factories/InterestManagerYTV2__factory.ts +81 -0
- package/typechain-types/factories/MarketMathStatic__factory.ts +1 -27
- package/typechain-types/factories/OracleLib__factory.ts +1 -1
- package/typechain-types/factories/PendleAura3EthSY__factory.ts +1 -40
- package/typechain-types/factories/PendleAuraCbethWstethSY__factory.ts +1 -40
- package/typechain-types/factories/PendleAuraWethRethSY__factory.ts +1 -1
- package/typechain-types/factories/PendleAuraWethWstethSY__factory.ts +1 -40
- package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
- package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
- package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
- 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 +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/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 +1 -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 +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 +69 -1
- package/typechain-types/factories/SAPE__factory.ts +1 -1
- 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 +203 -59
- package/typechain-types/index.ts +50 -18
- 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/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/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.dbg.json +0 -4
- package/build/artifacts/contracts/router/kyberswap/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.json +0 -136
- package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +0 -4
- package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.json +0 -24
- package/contracts/interfaces/IPActionSwapPTYT.sol +0 -31
- package/contracts/router/ActionSwapPTYT.sol +0 -108
- package/contracts/router/kyberswap/AggregationRouterHelper.sol +0 -341
- package/contracts/router/kyberswap/IAggregatorRouterHelper.sol +0 -10
- package/contracts/router/kyberswap/IMultihopRouterEthereum.sol +0 -141
- package/contracts/router/kyberswap/KyberSwapHelper.sol +0 -79
|
@@ -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
|
}
|
|
@@ -1,25 +1,51 @@
|
|
|
1
1
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
2
|
pragma solidity 0.8.17;
|
|
3
3
|
|
|
4
|
-
import "../interfaces/IPMarket.sol";
|
|
5
4
|
import "../interfaces/IPActionMisc.sol";
|
|
6
|
-
import "../core/libraries/
|
|
7
|
-
|
|
8
|
-
contract ActionMisc is IPActionMisc {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
5
|
+
import "../core/libraries/TokenHelper.sol";
|
|
6
|
+
|
|
7
|
+
contract ActionMisc is IPActionMisc, TokenHelper {
|
|
8
|
+
function approveInf(MultiApproval[] calldata arr) external {
|
|
9
|
+
for (uint256 i = 0; i < arr.length; ) {
|
|
10
|
+
MultiApproval calldata ele = arr[i];
|
|
11
|
+
for (uint256 j = 0; j < ele.tokens.length; ) {
|
|
12
|
+
_safeApproveInf(ele.tokens[j], ele.spender);
|
|
13
|
+
unchecked {
|
|
14
|
+
j++;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
unchecked {
|
|
18
|
+
i++;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function batchExec(Call3[] calldata calls) external returns (Result[] memory res) {
|
|
24
|
+
uint256 length = calls.length;
|
|
25
|
+
|
|
26
|
+
res = new Result[](length);
|
|
27
|
+
|
|
28
|
+
Call3 calldata calli;
|
|
29
|
+
|
|
30
|
+
for (uint256 i = 0; i < length; ) {
|
|
31
|
+
calli = calls[i];
|
|
32
|
+
|
|
33
|
+
// delegatecall to itself, it turns allowing invoking functions from other actions
|
|
34
|
+
(bool success, bytes memory result) = address(this).delegatecall(calli.callData);
|
|
35
|
+
|
|
36
|
+
if (!success && !calli.allowFailure) {
|
|
37
|
+
assembly {
|
|
38
|
+
// We use Yul's revert() to bubble up errors from the target contract.
|
|
39
|
+
revert(add(32, result), mload(result))
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
res[i].success = success;
|
|
44
|
+
res[i].returnData = result;
|
|
45
|
+
|
|
46
|
+
unchecked {
|
|
47
|
+
++i;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
24
50
|
}
|
|
25
51
|
}
|
|
@@ -15,11 +15,6 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
15
15
|
using Math for int256;
|
|
16
16
|
using PYIndexLib for IPYieldToken;
|
|
17
17
|
|
|
18
|
-
/// @dev since this contract will be proxied, it must not contains non-immutable variables
|
|
19
|
-
constructor(address _kyberScalingLib)
|
|
20
|
-
ActionBaseMintRedeem(_kyberScalingLib) //solhint-disable-next-line no-empty-blocks
|
|
21
|
-
{}
|
|
22
|
-
|
|
23
18
|
/**
|
|
24
19
|
* @notice swaps exact amount of PT for SY
|
|
25
20
|
* @param exactPtIn will always consume this exact amount of PT for as much SY as possible
|
|
@@ -4,11 +4,14 @@ pragma solidity 0.8.17;
|
|
|
4
4
|
import "./base/ActionBaseMintRedeem.sol";
|
|
5
5
|
import "./base/CallbackHelper.sol";
|
|
6
6
|
import "../interfaces/IPActionSwapYT.sol";
|
|
7
|
+
import "../interfaces/IAddressProvider.sol";
|
|
7
8
|
import "../interfaces/IPMarket.sol";
|
|
8
9
|
import "../core/libraries/Errors.sol";
|
|
9
10
|
|
|
11
|
+
import "./base/ActionBaseCallback.sol";
|
|
12
|
+
|
|
10
13
|
/// @dev All swap actions will revert if market is expired
|
|
11
|
-
contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem
|
|
14
|
+
contract ActionSwapYT is ActionBaseCallback, IPActionSwapYT, ActionBaseMintRedeem {
|
|
12
15
|
using Math for uint256;
|
|
13
16
|
using Math for int256;
|
|
14
17
|
using MarketMathCore for MarketState;
|
|
@@ -16,10 +19,11 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
16
19
|
using MarketApproxPtOutLib for MarketState;
|
|
17
20
|
using PYIndexLib for IPYieldToken;
|
|
18
21
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
constructor(IAddressProvider provider, uint256 providerId) ActionBaseCallback(_getMarketFactory(provider,providerId)) {}
|
|
23
|
+
|
|
24
|
+
function _getMarketFactory(IAddressProvider provider, uint256 providerId) internal view returns (address) {
|
|
25
|
+
return provider.get(providerId);
|
|
26
|
+
}
|
|
23
27
|
|
|
24
28
|
/**
|
|
25
29
|
* @notice swap exact SY to YT with the help of flashswaps & YT tokenization / redemption
|
|
@@ -38,7 +42,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
38
42
|
address market,
|
|
39
43
|
uint256 exactSyIn,
|
|
40
44
|
uint256 minYtOut,
|
|
41
|
-
ApproxParams
|
|
45
|
+
ApproxParams calldata guessYtOut
|
|
42
46
|
) external returns (uint256 netYtOut, uint256 netSyFee) {
|
|
43
47
|
(IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
44
48
|
|
|
@@ -105,7 +109,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
105
109
|
(, netSyFee) = IPMarket(market).swapExactPtForSy(
|
|
106
110
|
address(YT),
|
|
107
111
|
exactYtOut, // exactPtIn = exactYtOut
|
|
108
|
-
_encodeSwapSyForExactYt(msg.sender, receiver, maxSyIn)
|
|
112
|
+
_encodeSwapSyForExactYt(msg.sender, receiver, maxSyIn, SY, YT)
|
|
109
113
|
);
|
|
110
114
|
|
|
111
115
|
netSyIn = preSyBalance - SY.balanceOf(msg.sender);
|
|
@@ -129,7 +133,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
129
133
|
address market,
|
|
130
134
|
uint256 exactSyOut,
|
|
131
135
|
uint256 maxYtIn,
|
|
132
|
-
ApproxParams
|
|
136
|
+
ApproxParams calldata guessYtIn
|
|
133
137
|
) external returns (uint256 netYtIn, uint256 netSyFee) {
|
|
134
138
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
135
139
|
(, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
@@ -148,7 +152,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
148
152
|
(, netSyFee) = IPMarket(market).swapSyForExactPt(
|
|
149
153
|
address(YT),
|
|
150
154
|
netYtIn, // exactPtOut = netYtIn
|
|
151
|
-
_encodeSwapYtForSy(receiver, exactSyOut)
|
|
155
|
+
_encodeSwapYtForSy(receiver, exactSyOut, YT)
|
|
152
156
|
);
|
|
153
157
|
|
|
154
158
|
emit SwapYtAndSy(msg.sender, market, receiver, netYtIn.neg(), exactSyOut.Int());
|
|
@@ -163,7 +167,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
163
167
|
address receiver,
|
|
164
168
|
address market,
|
|
165
169
|
uint256 minYtOut,
|
|
166
|
-
ApproxParams
|
|
170
|
+
ApproxParams calldata guessYtOut,
|
|
167
171
|
TokenInput calldata input
|
|
168
172
|
) external payable returns (uint256 netYtOut, uint256 netSyFee) {
|
|
169
173
|
(IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
@@ -227,13 +231,99 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
227
231
|
);
|
|
228
232
|
}
|
|
229
233
|
|
|
234
|
+
/**
|
|
235
|
+
* @notice swap exact PT to YT with the help of flashswaps & YT tokenization / redemption
|
|
236
|
+
* @dev inner working of this function:
|
|
237
|
+
- `exactPtIn` PT is transferred to market contract
|
|
238
|
+
- `market.swapExactPtForSy` is called, which will transfer SY directly to YT contract & callback is invoked.
|
|
239
|
+
Note that we will owe PT, the amount before is not sufficient
|
|
240
|
+
- in callback, all SY in YT contract is used to mint PT + YT, with PT used to pay the rest of the loan, and YT
|
|
241
|
+
transferred to the receiver
|
|
242
|
+
* @param exactPtIn will always consume this amount of PT for as much YT as possible
|
|
243
|
+
* @param guessTotalPtToSwap approximation data for PT used for the PT-to-SY flashswap
|
|
244
|
+
* @dev this function works in conjunction with ActionCallback
|
|
245
|
+
*/
|
|
246
|
+
function swapExactPtForYt(
|
|
247
|
+
address receiver,
|
|
248
|
+
address market,
|
|
249
|
+
uint256 exactPtIn,
|
|
250
|
+
uint256 minYtOut,
|
|
251
|
+
ApproxParams calldata guessTotalPtToSwap
|
|
252
|
+
) external returns (uint256 netYtOut, uint256 netSyFee) {
|
|
253
|
+
(, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
|
|
254
|
+
MarketState memory state = IPMarket(market).readState(address(this));
|
|
255
|
+
|
|
256
|
+
_transferFrom(IERC20(PT), msg.sender, market, exactPtIn);
|
|
257
|
+
|
|
258
|
+
uint256 totalPtToSwap;
|
|
259
|
+
(netYtOut, totalPtToSwap, netSyFee) = state.approxSwapExactPtForYt(
|
|
260
|
+
YT.newIndex(),
|
|
261
|
+
exactPtIn,
|
|
262
|
+
block.timestamp,
|
|
263
|
+
guessTotalPtToSwap
|
|
264
|
+
);
|
|
265
|
+
|
|
266
|
+
if (netYtOut < minYtOut) revert Errors.RouterInsufficientYtOut(netYtOut, minYtOut);
|
|
267
|
+
|
|
268
|
+
IPMarket(market).swapExactPtForSy(
|
|
269
|
+
address(YT),
|
|
270
|
+
totalPtToSwap,
|
|
271
|
+
_encodeSwapExactPtForYt(receiver, exactPtIn, minYtOut, YT)
|
|
272
|
+
);
|
|
273
|
+
|
|
274
|
+
emit SwapPtAndYt(msg.sender, market, receiver, exactPtIn.neg(), netYtOut.Int());
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* @notice swap exact YT to PT with the help of flashswaps & YT tokenization / redemption
|
|
279
|
+
* @dev inner working of this function:
|
|
280
|
+
- `exactYtIn` YT is transferred to yield contract
|
|
281
|
+
- `market.swapSyForExactPt` is called, which will transfer PT directly to this contract & callback is invoked.
|
|
282
|
+
Note that we now owe SY
|
|
283
|
+
- in callback, a portion of PT + YT is used to redeem SY, which is then used to payback the loan. The rest of
|
|
284
|
+
of the PT is transferred to `receiver`
|
|
285
|
+
* @param exactYtIn will always consume this amount of YT for as much PT as possible
|
|
286
|
+
* @param guessTotalPtFromSwap approximation data for PT output of the SY-to-PT flashswap
|
|
287
|
+
* @dev this function works in conjunction with ActionCallback
|
|
288
|
+
*/
|
|
289
|
+
function swapExactYtForPt(
|
|
290
|
+
address receiver,
|
|
291
|
+
address market,
|
|
292
|
+
uint256 exactYtIn,
|
|
293
|
+
uint256 minPtOut,
|
|
294
|
+
ApproxParams calldata guessTotalPtFromSwap
|
|
295
|
+
) external returns (uint256 netPtOut, uint256 netSyFee) {
|
|
296
|
+
(, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
|
|
297
|
+
MarketState memory state = IPMarket(market).readState(address(this));
|
|
298
|
+
|
|
299
|
+
_transferFrom(IERC20(YT), msg.sender, address(YT), exactYtIn);
|
|
300
|
+
|
|
301
|
+
uint256 totalPtFromSwap;
|
|
302
|
+
(netPtOut, totalPtFromSwap, netSyFee) = state.approxSwapExactYtForPt(
|
|
303
|
+
YT.newIndex(),
|
|
304
|
+
exactYtIn,
|
|
305
|
+
block.timestamp,
|
|
306
|
+
guessTotalPtFromSwap
|
|
307
|
+
);
|
|
308
|
+
|
|
309
|
+
if (netPtOut < minPtOut) revert Errors.RouterInsufficientPtOut(netPtOut, minPtOut);
|
|
310
|
+
|
|
311
|
+
IPMarket(market).swapSyForExactPt(
|
|
312
|
+
address(this),
|
|
313
|
+
totalPtFromSwap,
|
|
314
|
+
_encodeSwapExactYtForPt(receiver, exactYtIn, minPtOut, PT, YT)
|
|
315
|
+
);
|
|
316
|
+
|
|
317
|
+
emit SwapPtAndYt(msg.sender, market, receiver, netPtOut.Int(), exactYtIn.neg());
|
|
318
|
+
}
|
|
319
|
+
|
|
230
320
|
function _swapExactSyForYt(
|
|
231
321
|
address receiver,
|
|
232
322
|
address market,
|
|
233
323
|
IPYieldToken YT,
|
|
234
324
|
uint256 exactSyIn,
|
|
235
325
|
uint256 minYtOut,
|
|
236
|
-
ApproxParams
|
|
326
|
+
ApproxParams calldata guessYtOut
|
|
237
327
|
) internal returns (uint256 netYtOut, uint256 netSyFee) {
|
|
238
328
|
MarketState memory state = IPMarket(market).readState(address(this));
|
|
239
329
|
|
|
@@ -250,7 +340,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
250
340
|
(, netSyFee) = IPMarket(market).swapExactPtForSy(
|
|
251
341
|
address(YT),
|
|
252
342
|
netYtOut, // exactPtIn = netYtOut
|
|
253
|
-
_encodeSwapExactSyForYt(receiver, minYtOut)
|
|
343
|
+
_encodeSwapExactSyForYt(receiver, minYtOut, YT)
|
|
254
344
|
);
|
|
255
345
|
}
|
|
256
346
|
|
|
@@ -267,7 +357,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
267
357
|
(, netSyFee) = IPMarket(market).swapSyForExactPt(
|
|
268
358
|
address(YT),
|
|
269
359
|
exactYtIn, // exactPtOut = exactYtIn
|
|
270
|
-
_encodeSwapYtForSy(receiver, minSyOut)
|
|
360
|
+
_encodeSwapYtForSy(receiver, minSyOut, YT)
|
|
271
361
|
);
|
|
272
362
|
|
|
273
363
|
netSyOut = SY.balanceOf(receiver) - preSyBalance;
|