@pendle/core-v2 0.15.0-mainnet → 0.15.2-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 +110 -48
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +75 -21
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.json +39 -0
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.dbg.json +4 -0
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.json +10 -0
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +4 -0
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.json +10 -0
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +15 -2
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +15 -2
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.json +13 -0
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +15 -2
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +15 -2
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +46 -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 +52 -8
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +15 -2
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/WeekMath.sol/WeekMath.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +4 -0
- package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +699 -0
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +4 -0
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +515 -0
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +4 -0
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +10 -0
- 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 +77 -17
- 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/PYIndex.sol/PYIndexLib.json +2 -2
- 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/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 +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +1003 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +1068 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.json +10 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.json +10 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.json +10 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/{ConvexCurveLP → base}/PendleConvexLPSY.sol/PendleConvexLPSY.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +856 -0
- 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 +15 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +85 -4
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +17 -4
- package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
- package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.json +2 -2
- package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
- package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.json +2 -2
- package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.json +3 -38
- package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.json +2 -2
- package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.json +13 -0
- package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.json +2 -2
- package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +319 -35
- package/build/artifacts/contracts/core/libraries/StringLib.sol/StringLib.dbg.json +4 -0
- package/build/artifacts/contracts/core/libraries/StringLib.sol/StringLib.json +10 -0
- package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.json +1 -1
- package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.json +39 -85
- package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.json +213 -0
- package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.json +119 -0
- package/build/artifacts/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.json +39 -0
- package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.json +30 -0
- package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.json +76 -0
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +91 -17
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +50 -0
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +20 -0
- package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +20 -0
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +181 -17
- package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.json +173 -0
- package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.json +86 -0
- package/build/artifacts/contracts/interfaces/IPBulkSellerSYCallback.sol/IPBulkSellerCallback.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPBulkSellerSYCallback.sol/IPBulkSellerCallback.json +34 -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/IPMarketFactory.sol/IPMarketFactory.json +2 -2
- package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.json +12 -2
- package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.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/IPYieldContractFactory.sol/IPYieldContractFactory.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
- 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/ISJoe.sol/ISJoe.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.json +45 -0
- package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.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/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.json +15 -2
- package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +4 -0
- package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +35 -0
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +2 -80
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +299 -60
- package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +118 -41
- package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +2 -2
- package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +61 -24
- package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +31 -24
- package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +31 -24
- package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
- package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +15 -2
- package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.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/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +191 -2
- package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.dbg.json +4 -0
- package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.json +35 -0
- package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.json +1 -1
- package/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol +58 -27
- package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol +46 -12
- package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol +31 -7
- package/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol +133 -0
- package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +27 -0
- package/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +9 -10
- package/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +9 -23
- package/contracts/core/BulkSeller/BulkSeller.sol +259 -0
- package/contracts/core/BulkSeller/BulkSellerFactory.sol +88 -0
- package/contracts/core/BulkSeller/BulkSellerMathCore.sol +143 -0
- package/contracts/core/Market/PendleMarket.sol +18 -7
- package/contracts/core/Market/PendleMarketFactory.sol +15 -5
- package/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol +102 -0
- package/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol +160 -0
- package/contracts/core/StandardizedYield/implementations/Convex/README.md +29 -0
- package/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol +215 -0
- package/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol +127 -0
- package/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol +152 -0
- package/contracts/core/StandardizedYield/implementations/Convex/{ConvexCurveLP → base}/PendleConvexLPSY.sol +2 -4
- package/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol +122 -0
- package/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol +17 -8
- package/contracts/core/YieldContracts/PendlePrincipalToken.sol +3 -3
- package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +38 -11
- package/contracts/core/YieldContracts/PendleYieldToken.sol +54 -21
- package/contracts/core/erc20/PendleERC20.sol +4 -7
- package/contracts/core/libraries/BaseSplitCodeFactory.sol +1 -1
- package/contracts/core/libraries/BoringOwnableUpgradeable.sol +1 -1
- package/contracts/core/libraries/Errors.sol +32 -4
- package/contracts/core/libraries/StringLib.sol +782 -0
- package/contracts/core/libraries/TokenHelper.sol +9 -0
- package/contracts/interfaces/ConvexCurve/IBooster.sol +1 -1
- package/contracts/interfaces/Curve/ICrvPool.sol +12 -31
- package/contracts/interfaces/Curve/ITriCrvPool.sol +41 -0
- package/contracts/interfaces/ILayerZeroEndpoint.sol +39 -0
- package/contracts/interfaces/ILayerZeroReceiver.sol +12 -0
- package/contracts/interfaces/ILooksFeeSharing.sol +5 -0
- package/contracts/interfaces/ILooksStaking.sol +13 -0
- package/contracts/interfaces/IPActionAddRemoveLiq.sol +3 -5
- package/contracts/interfaces/IPActionMintRedeem.sol +2 -0
- package/contracts/interfaces/IPBulkSeller.sol +28 -0
- package/contracts/interfaces/IPBulkSellerFactory.sol +12 -0
- package/contracts/interfaces/IPBulkSellerSYCallback.sol +10 -0
- package/contracts/interfaces/IPMarketFactory.sol +1 -1
- package/contracts/interfaces/IPMsgSendEndpoint.sol +4 -2
- package/contracts/interfaces/IPYieldContractFactory.sol +1 -1
- package/contracts/interfaces/IStETH.sol +6 -0
- package/contracts/interfaces/IStandardizedYield.sol +15 -10
- package/contracts/offchain-helpers/BulkSellerOffchain.sol +43 -0
- package/contracts/offchain-helpers/MarketMathStatic.sol +0 -173
- package/contracts/offchain-helpers/RouterStatic.sol +189 -50
- package/contracts/router/ActionAddRemoveLiq.sol +71 -52
- package/contracts/router/ActionCallback.sol +4 -8
- package/contracts/router/ActionMintRedeem.sol +27 -18
- package/contracts/router/ActionSwapPT.sol +8 -9
- package/contracts/router/ActionSwapPTYT.sol +3 -7
- package/contracts/router/ActionSwapYT.sol +15 -10
- package/contracts/router/PendleRouter.sol +3 -0
- package/contracts/router/base/ActionBaseMintRedeem.sol +78 -83
- package/contracts/router/base/MarketApproxLib.sol +1 -1
- package/contracts/router/kyberswap/AggregationRouterHelper.sol +17 -1
- package/contracts/router/kyberswap/IAggregatorRouterHelper.sol +10 -0
- package/contracts/router/kyberswap/KyberSwapHelper.sol +21 -8
- package/deployments/1-markets/FRAX_30_MAR_23.json +8 -0
- package/deployments/1-markets/LOOKS_30_MAR_23.json +8 -0
- package/deployments/1-markets/STETH_MARCH_30.json +1 -1
- package/deployments/1-markets/USDD_MARCH_30.json +8 -0
- package/deployments/1-offchain-helper.json +3 -0
- package/package.json +3 -2
- package/typechain-types/AccessControl.ts +360 -0
- package/typechain-types/AccessControlUpgradeable.ts +369 -0
- package/typechain-types/ActionAddRemoveLiq.ts +64 -52
- package/typechain-types/ActionBaseMintRedeem.ts +8 -8
- package/typechain-types/ActionMintRedeem.ts +48 -16
- package/typechain-types/ActionSwapPT.ts +34 -12
- package/typechain-types/ActionSwapYT.ts +34 -12
- package/typechain-types/AggregationRouterHelper.ts +287 -3
- package/typechain-types/BaseSplitCodeFactoryContract.ts +9 -0
- package/typechain-types/BeaconProxy.ts +97 -0
- package/typechain-types/BoringOwnableUpgradeable.ts +9 -0
- package/typechain-types/BulkSeller.ts +777 -0
- package/typechain-types/BulkSellerFactory.ts +707 -0
- package/typechain-types/BulkSellerOffchain.ts +117 -0
- package/typechain-types/ContextUpgradeable.ts +68 -0
- package/typechain-types/Curve3CrvPoolHelper.ts +236 -0
- package/typechain-types/CurveFraxUsdcPoolHelper.ts +158 -0
- package/typechain-types/CurveUsdd3CrvPoolHelper.ts +184 -0
- package/typechain-types/ERC165.ts +102 -0
- package/typechain-types/ERC165Upgradeable.ts +113 -0
- package/typechain-types/IAccessControl.ts +305 -0
- package/typechain-types/IAccessControlUpgradeable.ts +305 -0
- package/typechain-types/IAggregationRouterHelper.ts +108 -0
- package/typechain-types/IBooster.ts +9 -3
- package/typechain-types/ICrvPool.ts +69 -172
- package/typechain-types/IERC165.ts +102 -0
- package/typechain-types/IERC165Upgradeable.ts +102 -0
- package/typechain-types/ILayerZeroEndpoint.ts +256 -0
- package/typechain-types/ILayerZeroReceiver.ts +117 -0
- package/typechain-types/ILooksFeeSharing.ts +102 -0
- package/typechain-types/ILooksStaking.ts +189 -0
- package/typechain-types/IPActionAddRemoveLiq.ts +56 -44
- package/typechain-types/IPActionMintRedeem.ts +40 -8
- package/typechain-types/IPActionSwapPT.ts +26 -4
- package/typechain-types/IPActionSwapYT.ts +26 -4
- package/typechain-types/IPAllAction.ts +76 -54
- package/typechain-types/IPBulkSeller.ts +290 -0
- package/typechain-types/IPBulkSellerCallback.ts +115 -0
- package/typechain-types/IPBulkSellerFactory.ts +147 -0
- package/typechain-types/IPMarketFactory.ts +2 -2
- package/typechain-types/IPMsgSendEndpoint.ts +24 -14
- package/typechain-types/IPYieldContractFactory.ts +3 -3
- package/typechain-types/IStETH.ts +56 -0
- package/typechain-types/ITriCrvPool.ts +345 -0
- package/typechain-types/ImplicitSwapfeeContract.ts +9 -17
- package/typechain-types/Initializable.ts +68 -0
- package/typechain-types/KyberSwapHelper.ts +8 -8
- package/typechain-types/MarketMathStatic.ts +0 -117
- package/typechain-types/PendleConvex2TokensSY.ts +1215 -0
- package/typechain-types/PendleCurveFraxUsdcSY.ts +1228 -0
- package/typechain-types/PendleCurveUsdd3CrvSY.ts +1299 -0
- package/typechain-types/PendleFeeDistributor.ts +9 -0
- package/typechain-types/PendleFeeDistributorFactory.ts +9 -0
- package/typechain-types/PendleGaugeControllerBaseUpg.ts +9 -0
- package/typechain-types/PendleGaugeControllerMainchainUpg.ts +9 -0
- package/typechain-types/PendleGaugeControllerSidechainUpg.ts +9 -0
- package/typechain-types/PendleLooksStaking.ts +1052 -0
- package/typechain-types/PendleLooksStakingSY.ts +1052 -0
- package/typechain-types/PendleMarketFactory.ts +51 -2
- package/typechain-types/PendleMsgReceiveEndpointUpg.ts +135 -68
- package/typechain-types/PendleMsgSendEndpointUpg.ts +108 -39
- package/typechain-types/PendleMsgSenderAppUpg.ts +64 -0
- package/typechain-types/PendlePrincipalToken.ts +9 -0
- package/typechain-types/PendleRouter.ts +9 -0
- package/typechain-types/PendleVotingControllerUpg.ts +64 -0
- package/typechain-types/PendleYieldContractFactory.ts +57 -8
- package/typechain-types/PendleYieldToken.ts +21 -0
- package/typechain-types/ReentrancyGuardUpgradeable.ts +68 -0
- package/typechain-types/RouterStatic.ts +302 -20
- package/typechain-types/VotingEscrowPendleMainchain.ts +70 -6
- package/typechain-types/VotingEscrowPendleSidechain.ts +9 -0
- package/typechain-types/factories/AccessControlUpgradeable__factory.ts +247 -0
- package/typechain-types/factories/AccessControl__factory.ts +227 -0
- package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +122 -59
- package/typechain-types/factories/ActionBaseMintRedeem__factory.ts +1 -1
- package/typechain-types/factories/ActionCallback__factory.ts +1 -1
- package/typechain-types/factories/ActionMintRedeem__factory.ts +65 -42
- package/typechain-types/factories/ActionMisc__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapPTYT__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapPT__factory.ts +35 -42
- package/typechain-types/factories/ActionSwapYT__factory.ts +35 -42
- package/typechain-types/factories/AggregationRouterHelper__factory.ts +190 -1
- package/typechain-types/factories/BaseSplitCodeFactoryContract__factory.ts +14 -1
- package/typechain-types/factories/BaseSplitCodeFactory__factory.ts +1 -1
- package/typechain-types/factories/BeaconProxy__factory.ts +141 -0
- package/typechain-types/factories/BoringOwnableUpgradeableData__factory.ts +1 -1
- package/typechain-types/factories/BoringOwnableUpgradeable__factory.ts +13 -0
- package/typechain-types/factories/BulkSellerFactory__factory.ts +568 -0
- package/typechain-types/factories/BulkSellerOffchain__factory.ts +88 -0
- package/typechain-types/factories/BulkSeller__factory.ts +749 -0
- package/typechain-types/factories/ContextUpgradeable__factory.ts +39 -0
- package/typechain-types/factories/Curve3CrvPoolHelper__factory.ts +220 -0
- package/typechain-types/factories/CurveFraxUsdcPoolHelper__factory.ts +146 -0
- package/typechain-types/factories/CurveUsdd3CrvPoolHelper__factory.ts +172 -0
- package/typechain-types/factories/ERC165Upgradeable__factory.ts +58 -0
- package/typechain-types/factories/ERC165__factory.ts +39 -0
- package/typechain-types/factories/ERC20__factory.ts +1 -1
- package/typechain-types/factories/Errors__factory.ts +318 -34
- package/typechain-types/factories/IAccessControlUpgradeable__factory.ts +202 -0
- package/typechain-types/factories/IAccessControl__factory.ts +198 -0
- package/typechain-types/factories/IAggregationRouterHelper__factory.ts +54 -0
- package/typechain-types/factories/IBooster__factory.ts +1 -1
- package/typechain-types/factories/ICrvPool__factory.ts +39 -85
- package/typechain-types/factories/IERC165Upgradeable__factory.ts +45 -0
- package/typechain-types/factories/IERC165__factory.ts +42 -0
- package/typechain-types/factories/ILayerZeroEndpoint__factory.ts +134 -0
- package/typechain-types/factories/ILayerZeroReceiver__factory.ts +54 -0
- package/typechain-types/factories/ILooksFeeSharing__factory.ts +45 -0
- package/typechain-types/factories/ILooksStaking__factory.ts +88 -0
- package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +91 -17
- package/typechain-types/factories/IPActionMintRedeem__factory.ts +50 -0
- package/typechain-types/factories/IPActionSwapPT__factory.ts +20 -0
- package/typechain-types/factories/IPActionSwapYT__factory.ts +20 -0
- package/typechain-types/factories/IPAllAction__factory.ts +181 -17
- package/typechain-types/factories/IPBulkSellerCallback__factory.ts +53 -0
- package/typechain-types/factories/IPBulkSellerFactory__factory.ts +101 -0
- package/typechain-types/factories/IPBulkSeller__factory.ts +185 -0
- package/typechain-types/factories/IPMarketFactory__factory.ts +2 -2
- package/typechain-types/factories/IPMsgSendEndpoint__factory.ts +12 -2
- package/typechain-types/factories/IPYieldContractFactory__factory.ts +1 -1
- package/typechain-types/factories/IStETH__factory.ts +45 -0
- package/typechain-types/factories/ITriCrvPool__factory.ts +225 -0
- package/typechain-types/factories/ImplicitSwapfeeContract__factory.ts +4 -12
- package/typechain-types/factories/Initializable__factory.ts +36 -0
- package/typechain-types/factories/KyberSwapHelper__factory.ts +1 -1
- package/typechain-types/factories/MarketMathStatic__factory.ts +1 -79
- package/typechain-types/factories/OracleLib__factory.ts +1 -1
- package/typechain-types/factories/Pendle3CrvAndTokenSY__factory.ts +1 -1
- package/typechain-types/factories/PendleConvex2TokensSY__factory.ts +1093 -0
- package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1068 -0
- package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1133 -0
- package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
- package/typechain-types/factories/PendleERC20__factory.ts +1 -1
- package/typechain-types/factories/PendleFeeDistributorFactory__factory.ts +14 -1
- package/typechain-types/factories/PendleFeeDistributor__factory.ts +14 -1
- package/typechain-types/factories/PendleGaugeControllerBaseUpg__factory.ts +13 -0
- package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +14 -1
- package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +14 -1
- package/typechain-types/factories/PendleLooksStakingSY__factory.ts +937 -0
- package/typechain-types/factories/PendleLooksStaking__factory.ts +933 -0
- package/typechain-types/factories/PendleMarketFactory__factory.ts +76 -16
- package/typechain-types/factories/PendleMarket__factory.ts +1 -1
- package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +113 -51
- package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +84 -23
- package/typechain-types/factories/PendleMsgSenderAppUpg__factory.ts +39 -0
- package/typechain-types/factories/PendlePrincipalToken__factory.ts +14 -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 +14 -1
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +57 -2
- package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +84 -3
- package/typechain-types/factories/PendleYieldToken__factory.ts +16 -3
- package/typechain-types/factories/ReentrancyGuardUpgradeable__factory.ts +43 -0
- package/typechain-types/factories/RouterStatic__factory.ts +244 -1
- package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +63 -8
- package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +14 -1
- package/typechain-types/hardhat.d.ts +260 -35
- package/typechain-types/index.ts +56 -10
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSY.sol/Pendle3CrvAndTokenSY.dbg.json +0 -4
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSY.sol/Pendle3CrvAndTokenSY.json +0 -1018
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/ConvexCurveLP/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +0 -4
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/Pendle3CrvHelper.sol/Pendle3CrvHelper.dbg.json +0 -4
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/Pendle3CrvHelper.sol/Pendle3CrvHelper.json +0 -76
- package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.json +0 -53
- package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.json +0 -45
- package/contracts/core/StandardizedYield/implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSY.sol +0 -167
- package/contracts/core/StandardizedYield/implementations/Convex/Pendle3CrvHelper.sol +0 -83
- package/contracts/interfaces/ICelerMessageBus.sol +0 -28
- package/contracts/interfaces/ICelerMessageReceiverApp.sol +0 -25
|
@@ -12,12 +12,12 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
12
12
|
using MarketMathCore for MarketState;
|
|
13
13
|
using MarketApproxPtInLib for MarketState;
|
|
14
14
|
using MarketApproxPtOutLib for MarketState;
|
|
15
|
-
using SafeERC20 for IERC20;
|
|
16
15
|
using PYIndexLib for IPYieldToken;
|
|
16
|
+
using BulkSellerMathCore for BulkSellerState;
|
|
17
17
|
|
|
18
18
|
/// @dev since this contract will be proxied, it must not contains non-immutable variables
|
|
19
|
-
constructor(address
|
|
20
|
-
ActionBaseMintRedeem(
|
|
19
|
+
constructor(address _kyberScalingLib)
|
|
20
|
+
ActionBaseMintRedeem(_kyberScalingLib) //solhint-disable-next-line no-empty-blocks
|
|
21
21
|
{}
|
|
22
22
|
|
|
23
23
|
function addLiquidityDualSyAndPt(
|
|
@@ -36,6 +36,7 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
36
36
|
{
|
|
37
37
|
(IStandardizedYield SY, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
|
|
38
38
|
|
|
39
|
+
// calculate the amount of SY and PT to be used
|
|
39
40
|
MarketState memory state = IPMarket(market).readState();
|
|
40
41
|
(, netLpOut, netSyUsed, netPtUsed) = state.addLiquidity(
|
|
41
42
|
netSyDesired,
|
|
@@ -46,8 +47,9 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
46
47
|
// early-check
|
|
47
48
|
if (netLpOut < minLpOut) revert Errors.RouterInsufficientLpOut(netLpOut, minLpOut);
|
|
48
49
|
|
|
49
|
-
|
|
50
|
-
IERC20(
|
|
50
|
+
// execute the addLiquidity
|
|
51
|
+
_transferFrom(IERC20(SY), msg.sender, market, netSyUsed);
|
|
52
|
+
_transferFrom(IERC20(PT), msg.sender, market, netPtUsed);
|
|
51
53
|
|
|
52
54
|
(netLpOut, , ) = IPMarket(market).mint(receiver, netSyUsed, netPtUsed);
|
|
53
55
|
|
|
@@ -57,11 +59,13 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
57
59
|
emit AddLiquidityDualSyAndPt(msg.sender, market, receiver, netSyUsed, netPtUsed, netLpOut);
|
|
58
60
|
}
|
|
59
61
|
|
|
62
|
+
/**
|
|
63
|
+
* @dev this function assumes that netTokenDesired = netTokenUsed, and fails if this does not hold
|
|
64
|
+
*/
|
|
60
65
|
function addLiquidityDualTokenAndPt(
|
|
61
66
|
address receiver,
|
|
62
67
|
address market,
|
|
63
|
-
|
|
64
|
-
uint256 netTokenDesired,
|
|
68
|
+
TokenInput calldata input,
|
|
65
69
|
uint256 netPtDesired,
|
|
66
70
|
uint256 minLpOut
|
|
67
71
|
)
|
|
@@ -75,45 +79,38 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
75
79
|
{
|
|
76
80
|
(IStandardizedYield SY, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
|
|
77
81
|
|
|
78
|
-
uint256 netSyDesired =
|
|
82
|
+
uint256 netSyDesired = _mintSyFromToken(market, address(SY), 1, input);
|
|
79
83
|
uint256 netSyUsed;
|
|
80
84
|
|
|
81
85
|
{
|
|
86
|
+
// calc the amount of SY and PT to be used
|
|
82
87
|
MarketState memory state = IPMarket(market).readState();
|
|
83
88
|
(, netLpOut, netSyUsed, netPtUsed) = state.addLiquidity(
|
|
84
89
|
netSyDesired,
|
|
85
90
|
netPtDesired,
|
|
86
91
|
block.timestamp
|
|
87
92
|
);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (netLpOut < minLpOut) revert Errors.RouterInsufficientLpOut(netLpOut, minLpOut);
|
|
91
|
-
|
|
92
|
-
IERC20(PT).safeTransferFrom(msg.sender, market, netPtUsed);
|
|
93
93
|
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
if (netSyDesired != netSyUsed)
|
|
95
|
+
revert Errors.RouterNotAllSyUsed(netSyDesired, netSyUsed);
|
|
96
|
+
if (netLpOut < minLpOut) revert Errors.RouterInsufficientLpOut(netLpOut, minLpOut);
|
|
96
97
|
|
|
97
|
-
|
|
98
|
-
_transferIn(tokenIn, msg.sender, netTokenDesired);
|
|
99
|
-
SY.deposit{ value: netTokenUsed }(market, tokenIn, netTokenUsed, netSyUsed);
|
|
100
|
-
_transferOut(tokenIn, msg.sender, netTokenDesired - netTokenUsed);
|
|
101
|
-
} else {
|
|
102
|
-
_transferIn(tokenIn, msg.sender, netTokenUsed);
|
|
103
|
-
_safeApproveInf(tokenIn, address(SY));
|
|
104
|
-
SY.deposit(market, tokenIn, netTokenUsed, netSyUsed);
|
|
98
|
+
netTokenUsed = input.netTokenIn;
|
|
105
99
|
}
|
|
106
100
|
|
|
101
|
+
// SY has been minted and transferred to the market
|
|
102
|
+
_transferFrom(IERC20(PT), msg.sender, market, netPtUsed);
|
|
107
103
|
(netLpOut, , ) = IPMarket(market).mint(receiver, netSyUsed, netPtUsed);
|
|
108
104
|
|
|
105
|
+
// fail-safe
|
|
109
106
|
if (netLpOut < minLpOut) assert(false);
|
|
110
107
|
|
|
111
108
|
emit AddLiquidityDualTokenAndPt(
|
|
112
109
|
msg.sender,
|
|
113
110
|
market,
|
|
114
111
|
receiver,
|
|
115
|
-
tokenIn,
|
|
116
|
-
|
|
112
|
+
input.tokenIn,
|
|
113
|
+
netTokenUsed,
|
|
117
114
|
netPtUsed,
|
|
118
115
|
netLpOut
|
|
119
116
|
);
|
|
@@ -128,6 +125,7 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
128
125
|
) external returns (uint256 netLpOut, uint256 netSyFee) {
|
|
129
126
|
(, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
|
|
130
127
|
|
|
128
|
+
// calculate the amount of PT to swap
|
|
131
129
|
MarketState memory state = IPMarket(market).readState();
|
|
132
130
|
|
|
133
131
|
(uint256 netPtSwap, , ) = state.approxSwapPtToAddLiquidity(
|
|
@@ -137,15 +135,17 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
137
135
|
guessPtSwapToSy
|
|
138
136
|
);
|
|
139
137
|
|
|
140
|
-
|
|
138
|
+
// execute the swap
|
|
139
|
+
_transferFrom(IERC20(PT), msg.sender, market, netPtIn);
|
|
141
140
|
|
|
142
141
|
uint256 netSyReceived;
|
|
143
142
|
(netSyReceived, netSyFee) = IPMarket(market).swapExactPtForSy(
|
|
144
143
|
market,
|
|
145
144
|
netPtSwap,
|
|
146
145
|
EMPTY_BYTES
|
|
147
|
-
);
|
|
146
|
+
);
|
|
148
147
|
|
|
148
|
+
// execute the addLiquidity
|
|
149
149
|
(netLpOut, , ) = IPMarket(market).mint(receiver, netSyReceived, netPtIn - netPtSwap);
|
|
150
150
|
|
|
151
151
|
if (netLpOut < minLpOut) revert Errors.RouterInsufficientLpOut(netLpOut, minLpOut);
|
|
@@ -161,8 +161,11 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
161
161
|
ApproxParams calldata guessPtReceivedFromSy
|
|
162
162
|
) external returns (uint256 netLpOut, uint256 netSyFee) {
|
|
163
163
|
(IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
164
|
-
IERC20(SY).safeTransferFrom(msg.sender, market, netSyIn);
|
|
165
164
|
|
|
165
|
+
// transfer SY to market
|
|
166
|
+
_transferFrom(IERC20(SY), msg.sender, market, netSyIn);
|
|
167
|
+
|
|
168
|
+
// mint LP
|
|
166
169
|
(netLpOut, netSyFee) = _addLiquiditySingleSy(
|
|
167
170
|
receiver,
|
|
168
171
|
market,
|
|
@@ -184,9 +187,10 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
184
187
|
) external payable returns (uint256 netLpOut, uint256 netSyFee) {
|
|
185
188
|
(IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
186
189
|
|
|
187
|
-
//
|
|
188
|
-
uint256 netSyUsed = _mintSyFromToken(
|
|
190
|
+
// mint SY directly to the market
|
|
191
|
+
uint256 netSyUsed = _mintSyFromToken(market, address(SY), 1, input);
|
|
189
192
|
|
|
193
|
+
// mint LP
|
|
190
194
|
(netLpOut, netSyFee) = _addLiquiditySingleSy(
|
|
191
195
|
receiver,
|
|
192
196
|
market,
|
|
@@ -213,7 +217,7 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
213
217
|
uint256 minSyOut,
|
|
214
218
|
uint256 minPtOut
|
|
215
219
|
) external returns (uint256 netSyOut, uint256 netPtOut) {
|
|
216
|
-
IERC20(market)
|
|
220
|
+
_transferFrom(IERC20(market), msg.sender, market, netLpToRemove);
|
|
217
221
|
|
|
218
222
|
(netSyOut, netPtOut) = IPMarket(market).burn(receiver, receiver, netLpToRemove);
|
|
219
223
|
|
|
@@ -234,28 +238,33 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
234
238
|
address receiver,
|
|
235
239
|
address market,
|
|
236
240
|
uint256 netLpToRemove,
|
|
237
|
-
|
|
238
|
-
uint256 minTokenOut,
|
|
241
|
+
TokenOutput calldata output,
|
|
239
242
|
uint256 minPtOut
|
|
240
243
|
) external returns (uint256 netTokenOut, uint256 netPtOut) {
|
|
241
244
|
(IStandardizedYield SY, , ) = IPMarket(market).readTokens();
|
|
242
245
|
|
|
243
|
-
|
|
246
|
+
// burn LP, SY sent to either SY or bulk, PT sent to receiver
|
|
247
|
+
_transferFrom(IERC20(market), msg.sender, market, netLpToRemove);
|
|
244
248
|
|
|
245
249
|
uint256 netSyOut;
|
|
246
|
-
(netSyOut, netPtOut) = IPMarket(market).burn(
|
|
247
|
-
|
|
248
|
-
|
|
250
|
+
(netSyOut, netPtOut) = IPMarket(market).burn(
|
|
251
|
+
_syOrBulk(address(SY), output),
|
|
252
|
+
receiver,
|
|
253
|
+
netLpToRemove
|
|
254
|
+
);
|
|
249
255
|
|
|
250
256
|
if (netPtOut < minPtOut) revert Errors.RouterInsufficientPtOut(netPtOut, minPtOut);
|
|
251
257
|
|
|
258
|
+
// redeem SY to token
|
|
259
|
+
netTokenOut = _redeemSyToToken(receiver, address(SY), netSyOut, output, false);
|
|
260
|
+
|
|
252
261
|
emit RemoveLiquidityDualTokenAndPt(
|
|
253
262
|
msg.sender,
|
|
254
263
|
market,
|
|
255
264
|
receiver,
|
|
256
265
|
netLpToRemove,
|
|
257
266
|
netPtOut,
|
|
258
|
-
tokenOut,
|
|
267
|
+
output.tokenOut,
|
|
259
268
|
netTokenOut
|
|
260
269
|
);
|
|
261
270
|
}
|
|
@@ -269,8 +278,7 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
269
278
|
) external returns (uint256 netPtOut, uint256 netSyFee) {
|
|
270
279
|
(, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
271
280
|
|
|
272
|
-
|
|
273
|
-
|
|
281
|
+
// calculate the total amount of PT received from burning & selling SY
|
|
274
282
|
MarketState memory state = IPMarket(market).readState();
|
|
275
283
|
(uint256 syFromBurn, uint256 ptFromBurn) = state.removeLiquidity(netLpToRemove);
|
|
276
284
|
(uint256 ptFromSwap, ) = state.approxSwapExactSyForPt(
|
|
@@ -283,14 +291,17 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
283
291
|
if (ptFromBurn + ptFromSwap < minPtOut)
|
|
284
292
|
revert Errors.RouterInsufficientPtOut(ptFromBurn + ptFromSwap, minPtOut);
|
|
285
293
|
|
|
294
|
+
// execute the burn & the swap
|
|
295
|
+
_transferFrom(IERC20(market), msg.sender, market, netLpToRemove);
|
|
296
|
+
|
|
286
297
|
(, ptFromBurn) = IPMarket(market).burn(market, receiver, netLpToRemove);
|
|
287
298
|
(, netSyFee) = IPMarket(market).swapSyForExactPt(receiver, ptFromSwap, EMPTY_BYTES);
|
|
288
299
|
|
|
289
|
-
// fail-safe
|
|
290
|
-
if (ptFromBurn + ptFromSwap < minPtOut) assert(false);
|
|
291
|
-
|
|
292
300
|
netPtOut = ptFromBurn + ptFromSwap;
|
|
293
301
|
|
|
302
|
+
// fail-safe
|
|
303
|
+
if (netPtOut < minPtOut) assert(false);
|
|
304
|
+
|
|
294
305
|
emit RemoveLiquiditySinglePt(msg.sender, market, receiver, netLpToRemove, netPtOut);
|
|
295
306
|
}
|
|
296
307
|
|
|
@@ -300,8 +311,12 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
300
311
|
uint256 netLpToRemove,
|
|
301
312
|
uint256 minSyOut
|
|
302
313
|
) external returns (uint256 netSyOut, uint256 netSyFee) {
|
|
303
|
-
|
|
314
|
+
// transfer LP to market
|
|
315
|
+
_transferFrom(IERC20(market), msg.sender, market, netLpToRemove);
|
|
316
|
+
|
|
317
|
+
// burn LP, SY sent to receiver
|
|
304
318
|
(netSyOut, netSyFee) = _removeLiquiditySingleSy(receiver, market, netLpToRemove, minSyOut);
|
|
319
|
+
|
|
305
320
|
emit RemoveLiquiditySingleSy(msg.sender, market, receiver, netLpToRemove, netSyOut);
|
|
306
321
|
}
|
|
307
322
|
|
|
@@ -313,19 +328,19 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
313
328
|
) external returns (uint256 netTokenOut, uint256 netSyFee) {
|
|
314
329
|
(IStandardizedYield SY, , ) = IPMarket(market).readTokens();
|
|
315
330
|
|
|
316
|
-
|
|
331
|
+
// transfer LP to market, burn LP, SY sent to either SY or bulk
|
|
332
|
+
_transferFrom(IERC20(market), msg.sender, market, netLpToRemove);
|
|
317
333
|
|
|
318
|
-
// all output SY is directly transferred to the SY contract
|
|
319
334
|
uint256 netSyReceived;
|
|
320
335
|
|
|
321
336
|
(netSyReceived, netSyFee) = _removeLiquiditySingleSy(
|
|
322
|
-
address(SY),
|
|
337
|
+
_syOrBulk(address(SY), output),
|
|
323
338
|
market,
|
|
324
339
|
netLpToRemove,
|
|
325
340
|
1
|
|
326
341
|
);
|
|
327
342
|
|
|
328
|
-
//
|
|
343
|
+
// redeem SY to token
|
|
329
344
|
netTokenOut = _redeemSyToToken(receiver, address(SY), netSyReceived, output, false);
|
|
330
345
|
|
|
331
346
|
emit RemoveLiquiditySingleToken(
|
|
@@ -348,20 +363,23 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
348
363
|
) internal returns (uint256 netLpOut, uint256 netSyFee) {
|
|
349
364
|
MarketState memory state = IPMarket(market).readState();
|
|
350
365
|
|
|
351
|
-
|
|
366
|
+
// calculate the PT amount needed to add liquidity
|
|
367
|
+
(uint256 netPtFromSwap, , ) = state.approxSwapSyToAddLiquidity(
|
|
352
368
|
YT.newIndex(),
|
|
353
369
|
netSyIn,
|
|
354
370
|
block.timestamp,
|
|
355
371
|
guessPtReceivedFromSy
|
|
356
372
|
);
|
|
357
373
|
|
|
374
|
+
// execute the swap & the addLiquidity
|
|
358
375
|
uint256 netSySwapped;
|
|
359
376
|
(netSySwapped, netSyFee) = IPMarket(market).swapSyForExactPt(
|
|
360
377
|
market,
|
|
361
|
-
|
|
378
|
+
netPtFromSwap,
|
|
362
379
|
EMPTY_BYTES
|
|
363
|
-
);
|
|
364
|
-
|
|
380
|
+
);
|
|
381
|
+
|
|
382
|
+
(netLpOut, , ) = IPMarket(market).mint(receiver, netSyIn - netSySwapped, netPtFromSwap);
|
|
365
383
|
|
|
366
384
|
if (netLpOut < minLpOut) revert Errors.RouterInsufficientLpOut(netLpOut, minLpOut);
|
|
367
385
|
}
|
|
@@ -408,6 +426,7 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
|
|
|
408
426
|
ptFromBurn,
|
|
409
427
|
EMPTY_BYTES
|
|
410
428
|
);
|
|
429
|
+
|
|
411
430
|
netSyOut = syFromBurn + syFromSwap;
|
|
412
431
|
}
|
|
413
432
|
}
|
|
@@ -12,13 +12,9 @@ import "./base/CallbackHelper.sol";
|
|
|
12
12
|
|
|
13
13
|
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
14
14
|
|
|
15
|
-
contract ActionCallback is IPMarketSwapCallback, CallbackHelper {
|
|
15
|
+
contract ActionCallback is IPMarketSwapCallback, CallbackHelper, TokenHelper {
|
|
16
16
|
using Math for int256;
|
|
17
17
|
using Math for uint256;
|
|
18
|
-
using SafeERC20 for IStandardizedYield;
|
|
19
|
-
using SafeERC20 for IPYieldToken;
|
|
20
|
-
using SafeERC20 for IPPrincipalToken;
|
|
21
|
-
using SafeERC20 for IERC20;
|
|
22
18
|
using PYIndexLib for PYIndex;
|
|
23
19
|
using PYIndexLib for IPYieldToken;
|
|
24
20
|
|
|
@@ -114,7 +110,7 @@ contract ActionCallback is IPMarketSwapCallback, CallbackHelper {
|
|
|
114
110
|
/// mint & transfer
|
|
115
111
|
/// ------------------------------------------------------------
|
|
116
112
|
if (netSyToPull > 0) {
|
|
117
|
-
SY
|
|
113
|
+
_transferFrom(IERC20(SY), vars.payer, address(YT), netSyToPull);
|
|
118
114
|
}
|
|
119
115
|
|
|
120
116
|
uint256 netPyOut = YT.mintPY(market, vars.receiver);
|
|
@@ -175,7 +171,7 @@ contract ActionCallback is IPMarketSwapCallback, CallbackHelper {
|
|
|
175
171
|
|
|
176
172
|
uint256 netSyOwed = syToAccount.abs();
|
|
177
173
|
|
|
178
|
-
|
|
174
|
+
_transferOut(address(PT), address(YT), exactYtIn);
|
|
179
175
|
uint256 netSyToMarket = YT.redeemPY(market);
|
|
180
176
|
|
|
181
177
|
if (netSyToMarket < netSyOwed)
|
|
@@ -184,6 +180,6 @@ contract ActionCallback is IPMarketSwapCallback, CallbackHelper {
|
|
|
184
180
|
uint256 netPtOut = ptToAccount.Uint() - exactYtIn;
|
|
185
181
|
if (netPtOut < minPtOut) revert Errors.RouterInsufficientPtOut(netPtOut, minPtOut);
|
|
186
182
|
|
|
187
|
-
PT
|
|
183
|
+
_transferOut(address(PT), receiver, netPtOut);
|
|
188
184
|
}
|
|
189
185
|
}
|
|
@@ -10,14 +10,12 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
10
10
|
using MarketMathCore for MarketState;
|
|
11
11
|
using Math for uint256;
|
|
12
12
|
using Math for int256;
|
|
13
|
-
using SafeERC20 for IERC20;
|
|
14
13
|
|
|
15
14
|
/// @dev since this contract will be proxied, it must not contains non-immutable variables
|
|
16
|
-
constructor(address
|
|
17
|
-
ActionBaseMintRedeem(
|
|
15
|
+
constructor(address _kyberScalingLib)
|
|
16
|
+
ActionBaseMintRedeem(_kyberScalingLib) //solhint-disable-next-line no-empty-blocks
|
|
18
17
|
{}
|
|
19
18
|
|
|
20
|
-
/// @dev refer to the internal function
|
|
21
19
|
function mintSyFromToken(
|
|
22
20
|
address receiver,
|
|
23
21
|
address SY,
|
|
@@ -25,11 +23,9 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
25
23
|
TokenInput calldata input
|
|
26
24
|
) external payable returns (uint256 netSyOut) {
|
|
27
25
|
netSyOut = _mintSyFromToken(receiver, SY, minSyOut, input);
|
|
28
|
-
|
|
29
26
|
emit MintSyFromToken(msg.sender, receiver, SY, input.tokenIn, input.netTokenIn, netSyOut);
|
|
30
27
|
}
|
|
31
28
|
|
|
32
|
-
/// @dev refer to the internal function
|
|
33
29
|
function redeemSyToToken(
|
|
34
30
|
address receiver,
|
|
35
31
|
address SY,
|
|
@@ -40,25 +36,31 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
40
36
|
emit RedeemSyToToken(msg.sender, receiver, SY, netSyIn, output.tokenOut, netTokenOut);
|
|
41
37
|
}
|
|
42
38
|
|
|
43
|
-
/// @dev refer to the internal function
|
|
44
39
|
function mintPyFromToken(
|
|
45
40
|
address receiver,
|
|
46
41
|
address YT,
|
|
47
42
|
uint256 minPyOut,
|
|
48
43
|
TokenInput calldata input
|
|
49
44
|
) external payable returns (uint256 netPyOut) {
|
|
50
|
-
|
|
45
|
+
address SY = IPYieldToken(YT).SY();
|
|
46
|
+
|
|
47
|
+
uint256 netSyToMint = _mintSyFromToken(YT, SY, 0, input);
|
|
48
|
+
netPyOut = _mintPyFromSy(receiver, YT, netSyToMint, minPyOut, false);
|
|
49
|
+
|
|
51
50
|
emit MintPyFromToken(msg.sender, receiver, YT, input.tokenIn, input.netTokenIn, netPyOut);
|
|
52
51
|
}
|
|
53
52
|
|
|
54
|
-
/// @dev refer to the internal function
|
|
55
53
|
function redeemPyToToken(
|
|
56
54
|
address receiver,
|
|
57
55
|
address YT,
|
|
58
56
|
uint256 netPyIn,
|
|
59
57
|
TokenOutput calldata output
|
|
60
58
|
) external returns (uint256 netTokenOut) {
|
|
61
|
-
|
|
59
|
+
address SY = IPYieldToken(YT).SY();
|
|
60
|
+
|
|
61
|
+
uint256 netSyToRedeem = _redeemPyToSy(_syOrBulk(SY, output), YT, netPyIn, 1);
|
|
62
|
+
netTokenOut = _redeemSyToToken(receiver, SY, netSyToRedeem, output, false);
|
|
63
|
+
|
|
62
64
|
emit RedeemPyToToken(msg.sender, receiver, YT, netPyIn, output.tokenOut, netTokenOut);
|
|
63
65
|
}
|
|
64
66
|
|
|
@@ -78,7 +80,7 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
78
80
|
uint256 netPyIn,
|
|
79
81
|
uint256 minSyOut
|
|
80
82
|
) external returns (uint256 netSyOut) {
|
|
81
|
-
netSyOut = _redeemPyToSy(receiver, YT, netPyIn, minSyOut
|
|
83
|
+
netSyOut = _redeemPyToSy(receiver, YT, netPyIn, minSyOut);
|
|
82
84
|
emit RedeemPyToSy(msg.sender, receiver, YT, netPyIn, netSyOut);
|
|
83
85
|
}
|
|
84
86
|
|
|
@@ -181,13 +183,14 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
181
183
|
|
|
182
184
|
// guaranteed no ETH, all rewards are ERC20
|
|
183
185
|
for (uint256 i = 0; i < tokensOut.tokens.length; ++i) {
|
|
184
|
-
|
|
186
|
+
_transferFrom(
|
|
187
|
+
IERC20(tokensOut.tokens[i]),
|
|
185
188
|
msg.sender,
|
|
186
189
|
address(this),
|
|
187
190
|
tokensOut.amounts[i]
|
|
188
191
|
);
|
|
189
192
|
}
|
|
190
|
-
_redeemAllSys(sysOut, dataYT.tokenRedeemSys, tokensOut);
|
|
193
|
+
_redeemAllSys(sysOut, dataYT.bulks, dataYT.tokenRedeemSys, tokensOut);
|
|
191
194
|
|
|
192
195
|
// now swap all to outputToken
|
|
193
196
|
netTokenOut = _swapAllToOutputToken(tokensOut, dataSwap);
|
|
@@ -218,18 +221,19 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
218
221
|
/// @dev pull SYs from users & redeem them, then add to tokensOut
|
|
219
222
|
function _redeemAllSys(
|
|
220
223
|
RouterTokenAmounts memory sys,
|
|
224
|
+
address[] calldata bulks,
|
|
221
225
|
address[] calldata tokenRedeemSys,
|
|
222
226
|
RouterTokenAmounts memory tokensOut
|
|
223
227
|
) internal {
|
|
224
228
|
for (uint256 i = 0; i < sys.tokens.length; ++i) {
|
|
225
229
|
if (sys.amounts[i] == 0) continue;
|
|
226
230
|
|
|
227
|
-
|
|
228
|
-
uint256 amountOut =
|
|
231
|
+
TokenOutput memory output = _wrapTokenOutput(tokenRedeemSys[i], 1, bulks[i]);
|
|
232
|
+
uint256 amountOut = _redeemSyToToken(
|
|
229
233
|
address(this),
|
|
234
|
+
sys.tokens[i],
|
|
230
235
|
sys.amounts[i],
|
|
231
|
-
|
|
232
|
-
1,
|
|
236
|
+
output,
|
|
233
237
|
true
|
|
234
238
|
);
|
|
235
239
|
|
|
@@ -243,7 +247,12 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
243
247
|
) internal returns (uint256 netTokenOut) {
|
|
244
248
|
for (uint256 i = 0; i < tokens.tokens.length; ++i) {
|
|
245
249
|
if (tokens.amounts[i] == 0) continue;
|
|
246
|
-
_kyberswap(
|
|
250
|
+
_kyberswap(
|
|
251
|
+
tokens.tokens[i],
|
|
252
|
+
tokens.amounts[i],
|
|
253
|
+
dataSwap.kyberRouter,
|
|
254
|
+
dataSwap.kybercalls[i]
|
|
255
|
+
);
|
|
247
256
|
}
|
|
248
257
|
netTokenOut = _selfBalance(dataSwap.outputToken);
|
|
249
258
|
_transferOut(dataSwap.outputToken, msg.sender, netTokenOut);
|
|
@@ -12,12 +12,11 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
12
12
|
using MarketApproxPtOutLib for MarketState;
|
|
13
13
|
using Math for uint256;
|
|
14
14
|
using Math for int256;
|
|
15
|
-
using SafeERC20 for IERC20;
|
|
16
15
|
using PYIndexLib for IPYieldToken;
|
|
17
16
|
|
|
18
17
|
/// @dev since this contract will be proxied, it must not contains non-immutable variables
|
|
19
|
-
constructor(address
|
|
20
|
-
ActionBaseMintRedeem(
|
|
18
|
+
constructor(address _kyberScalingLib)
|
|
19
|
+
ActionBaseMintRedeem(_kyberScalingLib) //solhint-disable-next-line no-empty-blocks
|
|
21
20
|
{}
|
|
22
21
|
|
|
23
22
|
function swapExactPtForSy(
|
|
@@ -27,7 +26,7 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
27
26
|
uint256 minSyOut
|
|
28
27
|
) external returns (uint256 netSyOut, uint256 netSyFee) {
|
|
29
28
|
(, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
|
|
30
|
-
IERC20(
|
|
29
|
+
_transferFrom(IERC20(PT), msg.sender, market, exactPtIn);
|
|
31
30
|
|
|
32
31
|
(netSyOut, netSyFee) = IPMarket(market).swapExactPtForSy(receiver, exactPtIn, EMPTY_BYTES);
|
|
33
32
|
|
|
@@ -59,7 +58,7 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
59
58
|
|
|
60
59
|
if (netPtIn > maxPtIn) revert Errors.RouterExceededLimitPtIn(netPtIn, maxPtIn);
|
|
61
60
|
|
|
62
|
-
IERC20(PT)
|
|
61
|
+
_transferFrom(IERC20(PT), msg.sender, market, netPtIn);
|
|
63
62
|
|
|
64
63
|
uint256 netSyOut;
|
|
65
64
|
(netSyOut, netSyFee) = IPMarket(market).swapExactPtForSy(receiver, netPtIn, EMPTY_BYTES);
|
|
@@ -83,7 +82,7 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
83
82
|
|
|
84
83
|
if (netSyIn > maxSyIn) revert Errors.RouterExceededLimitSyIn(netSyIn, maxSyIn);
|
|
85
84
|
|
|
86
|
-
IERC20(SY)
|
|
85
|
+
_transferFrom(IERC20(SY), msg.sender, market, netSyIn);
|
|
87
86
|
|
|
88
87
|
(, netSyFee) = IPMarket(market).swapSyForExactPt(receiver, exactPtOut, EMPTY_BYTES); // ignore return
|
|
89
88
|
|
|
@@ -100,7 +99,7 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
100
99
|
) external returns (uint256 netPtOut, uint256 netSyFee) {
|
|
101
100
|
(IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
102
101
|
|
|
103
|
-
IERC20(SY)
|
|
102
|
+
_transferFrom(IERC20(SY), msg.sender, market, exactSyIn);
|
|
104
103
|
|
|
105
104
|
(netPtOut, netSyFee) = _swapExactSyForPt(
|
|
106
105
|
receiver,
|
|
@@ -163,12 +162,12 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
163
162
|
) external returns (uint256 netTokenOut, uint256 netSyFee) {
|
|
164
163
|
(IStandardizedYield SY, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
|
|
165
164
|
|
|
166
|
-
IERC20(
|
|
165
|
+
_transferFrom(IERC20(PT), msg.sender, market, exactPtIn);
|
|
167
166
|
|
|
168
167
|
// all output SY is directly transferred to the SY contract
|
|
169
168
|
uint256 netSyReceived;
|
|
170
169
|
(netSyReceived, netSyFee) = IPMarket(market).swapExactPtForSy(
|
|
171
|
-
address(SY),
|
|
170
|
+
_syOrBulk(address(SY), output),
|
|
172
171
|
exactPtIn,
|
|
173
172
|
EMPTY_BYTES
|
|
174
173
|
);
|
|
@@ -5,17 +5,13 @@ import "../interfaces/IPActionSwapPTYT.sol";
|
|
|
5
5
|
import "../interfaces/IPMarket.sol";
|
|
6
6
|
import "./base/CallbackHelper.sol";
|
|
7
7
|
|
|
8
|
-
contract ActionSwapPTYT is IPActionSwapPTYT, CallbackHelper {
|
|
8
|
+
contract ActionSwapPTYT is IPActionSwapPTYT, CallbackHelper, TokenHelper {
|
|
9
9
|
using MarketMathCore for MarketState;
|
|
10
10
|
using MarketApproxPtInLib for MarketState;
|
|
11
11
|
using MarketApproxPtOutLib for MarketState;
|
|
12
12
|
using Math for uint256;
|
|
13
13
|
using Math for int256;
|
|
14
|
-
using SafeERC20 for IERC20;
|
|
15
14
|
using PYIndexLib for IPYieldToken;
|
|
16
|
-
using SafeERC20 for IStandardizedYield;
|
|
17
|
-
using SafeERC20 for IPYieldToken;
|
|
18
|
-
using SafeERC20 for IPPrincipalToken;
|
|
19
15
|
|
|
20
16
|
/// @dev since this contract will be proxied, it must not contains non-immutable variables
|
|
21
17
|
constructor() //solhint-disable-next-line no-empty-blocks
|
|
@@ -33,7 +29,7 @@ contract ActionSwapPTYT is IPActionSwapPTYT, CallbackHelper {
|
|
|
33
29
|
(, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
|
|
34
30
|
MarketState memory state = IPMarket(market).readState();
|
|
35
31
|
|
|
36
|
-
PT
|
|
32
|
+
_transferFrom(IERC20(PT), msg.sender, market, exactPtIn);
|
|
37
33
|
|
|
38
34
|
uint256 totalPtToSwap;
|
|
39
35
|
(netYtOut, totalPtToSwap, netSyFee) = state.approxSwapExactPtForYt(
|
|
@@ -64,7 +60,7 @@ contract ActionSwapPTYT is IPActionSwapPTYT, CallbackHelper {
|
|
|
64
60
|
(, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
65
61
|
MarketState memory state = IPMarket(market).readState();
|
|
66
62
|
|
|
67
|
-
YT
|
|
63
|
+
_transferFrom(IERC20(YT), msg.sender, address(YT), exactYtIn);
|
|
68
64
|
|
|
69
65
|
uint256 totalPtSwapped;
|
|
70
66
|
(netPtOut, totalPtSwapped, netSyFee) = state.approxSwapExactYtForPt(
|
|
@@ -13,13 +13,11 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
13
13
|
using MarketMathCore for MarketState;
|
|
14
14
|
using MarketApproxPtInLib for MarketState;
|
|
15
15
|
using MarketApproxPtOutLib for MarketState;
|
|
16
|
-
using SafeERC20 for IStandardizedYield;
|
|
17
|
-
using SafeERC20 for IPYieldToken;
|
|
18
16
|
using PYIndexLib for IPYieldToken;
|
|
19
17
|
|
|
20
18
|
/// @dev since this contract will be proxied, it must not contains non-immutable variables
|
|
21
|
-
constructor(address
|
|
22
|
-
ActionBaseMintRedeem(
|
|
19
|
+
constructor(address _kyberScalingLib)
|
|
20
|
+
ActionBaseMintRedeem(_kyberScalingLib) //solhint-disable-next-line no-empty-blocks
|
|
23
21
|
{}
|
|
24
22
|
|
|
25
23
|
/**
|
|
@@ -41,7 +39,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
41
39
|
) external returns (uint256 netYtOut, uint256 netSyFee) {
|
|
42
40
|
(IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
43
41
|
|
|
44
|
-
SY
|
|
42
|
+
_transferFrom(IERC20(SY), msg.sender, address(YT), exactSyIn);
|
|
45
43
|
|
|
46
44
|
(netYtOut, netSyFee) = _swapExactSyForYt(
|
|
47
45
|
receiver,
|
|
@@ -73,7 +71,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
73
71
|
) external returns (uint256 netSyOut, uint256 netSyFee) {
|
|
74
72
|
(IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
75
73
|
|
|
76
|
-
YT
|
|
74
|
+
_transferFrom(IERC20(YT), msg.sender, address(YT), exactYtIn);
|
|
77
75
|
|
|
78
76
|
(netSyOut, netSyFee) = _swapExactYtForSy(receiver, market, SY, YT, exactYtIn, minSyOut);
|
|
79
77
|
|
|
@@ -139,7 +137,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
139
137
|
|
|
140
138
|
if (netYtIn > maxYtIn) revert Errors.RouterExceededLimitYtIn(netYtIn, maxYtIn);
|
|
141
139
|
|
|
142
|
-
YT
|
|
140
|
+
_transferFrom(IERC20(YT), msg.sender, address(YT), netYtIn);
|
|
143
141
|
|
|
144
142
|
(, netSyFee) = IPMarket(market).swapSyForExactPt(
|
|
145
143
|
address(YT),
|
|
@@ -188,11 +186,18 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
188
186
|
) external returns (uint256 netTokenOut, uint256 netSyFee) {
|
|
189
187
|
(IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
190
188
|
|
|
191
|
-
YT
|
|
189
|
+
_transferFrom(IERC20(YT), msg.sender, address(YT), netYtIn);
|
|
192
190
|
|
|
193
191
|
uint256 netSyOut;
|
|
194
192
|
|
|
195
|
-
(netSyOut, netSyFee) = _swapExactYtForSy(
|
|
193
|
+
(netSyOut, netSyFee) = _swapExactYtForSy(
|
|
194
|
+
_syOrBulk(address(SY), output),
|
|
195
|
+
market,
|
|
196
|
+
SY,
|
|
197
|
+
YT,
|
|
198
|
+
netYtIn,
|
|
199
|
+
1
|
|
200
|
+
);
|
|
196
201
|
|
|
197
202
|
netTokenOut = _redeemSyToToken(receiver, address(SY), netSyOut, output, false);
|
|
198
203
|
|
|
@@ -247,7 +252,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
247
252
|
address(YT),
|
|
248
253
|
exactYtIn, // exactPtOut = exactYtIn
|
|
249
254
|
_encodeSwapYtForSy(receiver, minSyOut)
|
|
250
|
-
);
|
|
255
|
+
);
|
|
251
256
|
|
|
252
257
|
netSyOut = SY.balanceOf(receiver) - preSyBalance;
|
|
253
258
|
}
|